The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/amd64/linux/linux.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
    3  *
    4  * Copyright (c) 1994-1996 Søren Schmidt
    5  * All rights reserved.
    6  * Copyright (c) 2013 Dmitry Chagin <dchagin@FreeBSD.org>
    7  *
    8  * Redistribution and use in source and binary forms, with or without
    9  * modification, are permitted provided that the following conditions
   10  * are met:
   11  * 1. Redistributions of source code must retain the above copyright
   12  *    notice, this list of conditions and the following disclaimer.
   13  * 2. Redistributions in binary form must reproduce the above copyright
   14  *    notice, this list of conditions and the following disclaimer in the
   15  *    documentation and/or other materials provided with the distribution.
   16  *
   17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   20  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   27  * SUCH DAMAGE.
   28  *
   29  * $FreeBSD$
   30  */
   31 
   32 #ifndef _AMD64_LINUX_H_
   33 #define _AMD64_LINUX_H_
   34 
   35 #include <sys/abi_compat.h>
   36 
   37 #include <compat/linux/linux.h>
   38 #include <amd64/linux/linux_syscall.h>
   39 
   40 #define LINUX_LEGACY_SYSCALLS
   41 
   42 #define LINUX_DTRACE    linuxulator
   43 
   44 /*
   45  * Provide a separate set of types for the Linux types.
   46  */
   47 typedef int32_t         l_int;
   48 typedef int64_t         l_long;
   49 typedef int16_t         l_short;
   50 typedef uint32_t        l_uint;
   51 typedef uint64_t        l_ulong;
   52 typedef uint16_t        l_ushort;
   53 
   54 typedef l_ulong         l_uintptr_t;
   55 typedef l_long          l_clock_t;
   56 typedef l_int           l_daddr_t;
   57 typedef l_ulong         l_dev_t;
   58 typedef l_uint          l_gid_t;
   59 typedef l_ushort        l_gid16_t;
   60 typedef l_uint          l_uid_t;
   61 typedef l_ushort        l_uid16_t;
   62 typedef l_ulong         l_ino_t;
   63 typedef l_int           l_key_t;
   64 typedef l_long          l_loff_t;
   65 typedef l_uint          l_mode_t;
   66 typedef l_long          l_off_t;
   67 typedef l_int           l_pid_t;
   68 typedef l_ulong         l_size_t;
   69 typedef l_long          l_ssize_t;
   70 typedef l_long          l_suseconds_t;
   71 typedef l_long          l_time_t;
   72 typedef l_int           l_timer_t;
   73 typedef l_int           l_mqd_t;
   74 typedef l_size_t        l_socklen_t;
   75 typedef l_ulong         l_fd_mask;
   76 
   77 #include <compat/linux/linux_siginfo.h>
   78 
   79 typedef struct {
   80         l_int           val[2];
   81 } l_fsid_t;
   82 
   83 typedef struct {
   84         l_time_t        tv_sec;
   85         l_suseconds_t   tv_usec;
   86 } l_timeval;
   87 
   88 #define l_fd_set        fd_set
   89 
   90 /*
   91  * Miscellaneous
   92  */
   93 #define LINUX_AT_COUNT          20      /* Count of used aux entry types. */
   94 
   95 struct l___sysctl_args
   96 {
   97         l_uintptr_t     name;
   98         l_int           nlen;
   99         l_uintptr_t     oldval;
  100         l_uintptr_t     oldlenp;
  101         l_uintptr_t     newval;
  102         l_size_t        newlen;
  103         l_ulong         __spare[4];
  104 };
  105 
  106 /* Resource limits */
  107 #define LINUX_RLIMIT_CPU        0
  108 #define LINUX_RLIMIT_FSIZE      1
  109 #define LINUX_RLIMIT_DATA       2
  110 #define LINUX_RLIMIT_STACK      3
  111 #define LINUX_RLIMIT_CORE       4
  112 #define LINUX_RLIMIT_RSS        5
  113 #define LINUX_RLIMIT_NPROC      6
  114 #define LINUX_RLIMIT_NOFILE     7
  115 #define LINUX_RLIMIT_MEMLOCK    8
  116 #define LINUX_RLIMIT_AS         9       /* Address space limit */
  117 
  118 #define LINUX_RLIM_NLIMITS      10
  119 
  120 struct l_rlimit {
  121         l_ulong         rlim_cur;
  122         l_ulong         rlim_max;
  123 };
  124 
  125 /*
  126  * stat family of syscalls
  127  */
  128 struct l_timespec {
  129         l_time_t        tv_sec;
  130         l_long          tv_nsec;
  131 };
  132 
  133 struct l_newstat {
  134         l_dev_t         st_dev;
  135         l_ino_t         st_ino;
  136         l_ulong         st_nlink;
  137         l_uint          st_mode;
  138         l_uid_t         st_uid;
  139         l_gid_t         st_gid;
  140         l_uint          __st_pad1;
  141         l_dev_t         st_rdev;
  142         l_off_t         st_size;
  143         l_long          st_blksize;
  144         l_long          st_blocks;
  145         struct l_timespec       st_atim;
  146         struct l_timespec       st_mtim;
  147         struct l_timespec       st_ctim;
  148         l_long          __unused1;
  149         l_long          __unused2;
  150         l_long          __unused3;
  151 };
  152 
  153 /* sigaction flags */
  154 #define LINUX_SA_NOCLDSTOP      0x00000001
  155 #define LINUX_SA_NOCLDWAIT      0x00000002
  156 #define LINUX_SA_SIGINFO        0x00000004
  157 #define LINUX_SA_RESTORER       0x04000000
  158 #define LINUX_SA_ONSTACK        0x08000000
  159 #define LINUX_SA_RESTART        0x10000000
  160 #define LINUX_SA_INTERRUPT      0x20000000
  161 #define LINUX_SA_NOMASK         0x40000000
  162 #define LINUX_SA_ONESHOT        0x80000000
  163 
  164 /* sigaltstack */
  165 #define LINUX_MINSIGSTKSZ       2048
  166 
  167 typedef void    (*l_handler_t)(l_int);
  168 
  169 typedef struct {
  170         l_handler_t     lsa_handler;
  171         l_ulong         lsa_flags;
  172         l_uintptr_t     lsa_restorer;
  173         l_sigset_t      lsa_mask;
  174 } l_sigaction_t;
  175 
  176 typedef struct {
  177         l_uintptr_t     ss_sp;
  178         l_int           ss_flags;
  179         l_size_t        ss_size;
  180 } l_stack_t;
  181 
  182 /*
  183  * mount flags
  184  */
  185 #define LINUX_MS_RDONLY         0x0001
  186 #define LINUX_MS_NOSUID         0x0002
  187 #define LINUX_MS_NODEV          0x0004
  188 #define LINUX_MS_NOEXEC         0x0008
  189 #define LINUX_MS_REMOUNT        0x0020
  190 
  191 /*
  192  * SystemV IPC defines
  193  */
  194 #define LINUX_IPC_RMID          0
  195 #define LINUX_IPC_SET           1
  196 #define LINUX_IPC_STAT          2
  197 #define LINUX_IPC_INFO          3
  198 
  199 #define LINUX_SHM_LOCK          11
  200 #define LINUX_SHM_UNLOCK        12
  201 #define LINUX_SHM_STAT          13
  202 #define LINUX_SHM_INFO          14
  203 
  204 #define LINUX_SHM_RDONLY        0x1000
  205 #define LINUX_SHM_RND           0x2000
  206 #define LINUX_SHM_REMAP         0x4000
  207 
  208 /* semctl commands */
  209 #define LINUX_GETPID            11
  210 #define LINUX_GETVAL            12
  211 #define LINUX_GETALL            13
  212 #define LINUX_GETNCNT           14
  213 #define LINUX_GETZCNT           15
  214 #define LINUX_SETVAL            16
  215 #define LINUX_SETALL            17
  216 #define LINUX_SEM_STAT          18
  217 #define LINUX_SEM_INFO          19
  218 
  219 union l_semun {
  220         l_int           val;
  221         l_uintptr_t     buf;
  222         l_uintptr_t     array;
  223         l_uintptr_t     __buf;
  224         l_uintptr_t     __pad;
  225 };
  226 
  227 struct l_ifmap {
  228         l_ulong         mem_start;
  229         l_ulong         mem_end;
  230         l_ushort        base_addr;
  231         u_char          irq;
  232         u_char          dma;
  233         u_char          port;
  234         /* 3 bytes spare */
  235 };
  236 
  237 struct l_ifreq {
  238         union {
  239                 char    ifrn_name[LINUX_IFNAMSIZ];
  240         } ifr_ifrn;
  241 
  242         union {
  243                 struct l_sockaddr       ifru_addr;
  244                 struct l_sockaddr       ifru_dstaddr;
  245                 struct l_sockaddr       ifru_broadaddr;
  246                 struct l_sockaddr       ifru_netmask;
  247                 struct l_sockaddr       ifru_hwaddr;
  248                 l_short         ifru_flags[1];
  249                 l_int           ifru_ivalue;
  250                 l_int           ifru_mtu;
  251                 struct l_ifmap  ifru_map;
  252                 char            ifru_slave[LINUX_IFNAMSIZ];
  253                 l_uintptr_t     ifru_data;
  254         } ifr_ifru;
  255 };
  256 
  257 #define ifr_name        ifr_ifrn.ifrn_name      /* Interface name */
  258 #define ifr_hwaddr      ifr_ifru.ifru_hwaddr    /* MAC address */
  259 #define ifr_ifindex     ifr_ifru.ifru_ivalue    /* Interface index */
  260 
  261 struct l_ifconf {
  262         int     ifc_len;
  263         union {
  264                 l_uintptr_t     ifcu_buf;
  265                 l_uintptr_t     ifcu_req;
  266         } ifc_ifcu;
  267 };
  268 
  269 #define ifc_buf         ifc_ifcu.ifcu_buf
  270 #define ifc_req         ifc_ifcu.ifcu_req
  271 
  272 #define LINUX_ARCH_SET_GS               0x1001
  273 #define LINUX_ARCH_SET_FS               0x1002
  274 #define LINUX_ARCH_GET_FS               0x1003
  275 #define LINUX_ARCH_GET_GS               0x1004
  276 #define LINUX_ARCH_CET_STATUS           0x3001
  277 
  278 #define linux_copyout_rusage(r, u)      copyout(r, u, sizeof(*r))
  279 
  280 /* robust futexes */
  281 struct linux_robust_list {
  282         l_uintptr_t                     next;
  283 };
  284 
  285 struct linux_robust_list_head {
  286         struct linux_robust_list        list;
  287         l_long                          futex_offset;
  288         l_uintptr_t                     pending_list;
  289 };
  290 
  291 /* This corresponds to 'struct user_regs_struct' in Linux. */
  292 struct linux_pt_regset {
  293         l_ulong r15;
  294         l_ulong r14;
  295         l_ulong r13;
  296         l_ulong r12;
  297         l_ulong rbp;
  298         l_ulong rbx;
  299         l_ulong r11;
  300         l_ulong r10;
  301         l_ulong r9;
  302         l_ulong r8;
  303         l_ulong rax;
  304         l_ulong rcx;
  305         l_ulong rdx;
  306         l_ulong rsi;
  307         l_ulong rdi;
  308         l_ulong orig_rax;
  309         l_ulong rip;
  310         l_ulong cs;
  311         l_ulong eflags;
  312         l_ulong rsp;
  313         l_ulong ss;
  314         l_ulong fs_base;
  315         l_ulong gs_base;
  316         l_ulong ds;
  317         l_ulong es;
  318         l_ulong fs;
  319         l_ulong gs;
  320 };
  321 
  322 #ifdef _KERNEL
  323 struct reg;
  324 struct syscall_info;
  325 
  326 void    bsd_to_linux_regset(const struct reg *b_reg,
  327             struct linux_pt_regset *l_regset);
  328 void    linux_to_bsd_regset(struct reg *b_reg,
  329             const struct linux_pt_regset *l_regset);
  330 void    linux_ptrace_get_syscall_info_machdep(const struct reg *reg,
  331             struct syscall_info *si);
  332 int     linux_ptrace_getregs_machdep(struct thread *td, pid_t pid,
  333             struct linux_pt_regset *l_regset);
  334 #endif /* _KERNEL */
  335 
  336 #endif /* !_AMD64_LINUX_H_ */

Cache object: 7903fb6223085348305b5b115390dc32


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.