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/i386/linux/linux.h

Version: -  FREEBSD  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-2  -  FREEBSD-11-1  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-4  -  FREEBSD-10-3  -  FREEBSD-10-2  -  FREEBSD-10-1  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-3  -  FREEBSD-9-2  -  FREEBSD-9-1  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-4  -  FREEBSD-8-3  -  FREEBSD-8-2  -  FREEBSD-8-1  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-4  -  FREEBSD-7-3  -  FREEBSD-7-2  -  FREEBSD-7-1  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-4  -  FREEBSD-6-3  -  FREEBSD-6-2  -  FREEBSD-6-1  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-5  -  FREEBSD-5-4  -  FREEBSD-5-3  -  FREEBSD-5-2  -  FREEBSD-5-1  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  linux-2.6  -  linux-2.4.22  -  MK83  -  MK84  -  PLAN9  -  DFBSD  -  NETBSD  -  NETBSD5  -  NETBSD4  -  NETBSD3  -  NETBSD20  -  OPENBSD  -  xnu-517  -  xnu-792  -  xnu-792.6.70  -  xnu-1228  -  xnu-1456.1.26  -  xnu-1699.24.8  -  xnu-2050.18.24  -  OPENSOLARIS  -  minix-3-1-1 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * Copyright (c) 1994-1996 Søren Schmidt
    3  * All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1. Redistributions of source code must retain the above copyright
    9  *    notice, this list of conditions and the following disclaimer 
   10  *    in this position and unchanged.
   11  * 2. Redistributions in binary form must reproduce the above copyright
   12  *    notice, this list of conditions and the following disclaimer in the
   13  *    documentation and/or other materials provided with the distribution.
   14  * 3. The name of the author may not be used to endorse or promote products
   15  *    derived from this software without specific prior written permission
   16  *
   17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   19  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   20  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   21  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   22  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   27  *
   28  * $FreeBSD: releng/6.0/sys/i386/linux/linux.h 144987 2005-04-13 04:31:43Z mdodd $
   29  */
   30 
   31 #ifndef _I386_LINUX_LINUX_H_
   32 #define _I386_LINUX_LINUX_H_
   33 
   34 #include <sys/signal.h> /* for sigval union */
   35 
   36 #include <i386/linux/linux_syscall.h>
   37 
   38 /*
   39  * debugging support
   40  */
   41 extern u_char linux_debug_map[];
   42 #define ldebug(name)    isclr(linux_debug_map, LINUX_SYS_linux_ ## name)
   43 #define ARGS(nm, fmt)   "linux(%ld): "#nm"("fmt")\n", (long)td->td_proc->p_pid
   44 #define LMSG(fmt)       "linux(%ld): "fmt"\n", (long)td->td_proc->p_pid
   45 
   46 #ifdef MALLOC_DECLARE
   47 MALLOC_DECLARE(M_LINUX);
   48 #endif
   49 
   50 #define PTRIN(v)        (void *)(v)
   51 #define PTROUT(v)       (l_uintptr_t)(v)
   52 
   53 /*
   54  * Provide a separate set of types for the Linux types.
   55  */
   56 typedef int             l_int;
   57 typedef int32_t         l_long;
   58 typedef int64_t         l_longlong;
   59 typedef short           l_short;
   60 typedef unsigned int    l_uint;
   61 typedef uint32_t        l_ulong;
   62 typedef uint64_t        l_ulonglong;
   63 typedef unsigned short  l_ushort;
   64 
   65 typedef char            *l_caddr_t;
   66 typedef l_ulong         l_uintptr_t;
   67 typedef l_long          l_clock_t;
   68 typedef l_int           l_daddr_t;
   69 typedef l_ushort        l_dev_t;
   70 typedef l_uint          l_gid_t;
   71 typedef l_ushort        l_gid16_t;
   72 typedef l_ulong         l_ino_t;
   73 typedef l_int           l_key_t;
   74 typedef l_longlong      l_loff_t;
   75 typedef l_ushort        l_mode_t;
   76 typedef l_long          l_off_t;
   77 typedef l_int           l_pid_t;
   78 typedef l_uint          l_size_t;
   79 typedef l_long          l_suseconds_t;
   80 typedef l_long          l_time_t;
   81 typedef l_uint          l_uid_t;
   82 typedef l_ushort        l_uid16_t;
   83 
   84 typedef struct {
   85         l_int           val[2];
   86 } l_fsid_t;
   87 
   88 typedef struct {
   89         l_time_t        tv_sec;
   90         l_suseconds_t   tv_usec;
   91 } l_timeval;
   92 
   93 #define l_fd_set        fd_set
   94 
   95 /*
   96  * Miscellaneous
   97  */
   98 #define LINUX_NAME_MAX          255
   99 #define LINUX_MAX_UTSNAME       65
  100 
  101 #define LINUX_CTL_MAXNAME       10
  102 
  103 struct l___sysctl_args
  104 {
  105         l_int           *name;
  106         l_int           nlen;
  107         void            *oldval;
  108         l_size_t        *oldlenp;
  109         void            *newval;
  110         l_size_t        newlen;
  111         l_ulong         __spare[4];
  112 };
  113 
  114 /* Scheduling policies */
  115 #define LINUX_SCHED_OTHER       0
  116 #define LINUX_SCHED_FIFO        1
  117 #define LINUX_SCHED_RR          2
  118 
  119 /* Resource limits */
  120 #define LINUX_RLIMIT_CPU        0
  121 #define LINUX_RLIMIT_FSIZE      1
  122 #define LINUX_RLIMIT_DATA       2
  123 #define LINUX_RLIMIT_STACK      3
  124 #define LINUX_RLIMIT_CORE       4
  125 #define LINUX_RLIMIT_RSS        5
  126 #define LINUX_RLIMIT_NPROC      6
  127 #define LINUX_RLIMIT_NOFILE     7
  128 #define LINUX_RLIMIT_MEMLOCK    8
  129 #define LINUX_RLIMIT_AS         9       /* address space limit */
  130 
  131 #define LINUX_RLIM_NLIMITS      10
  132 
  133 struct l_rlimit {
  134         l_ulong rlim_cur;
  135         l_ulong rlim_max;
  136 };
  137 
  138 /* mmap options */
  139 #define LINUX_MAP_SHARED        0x0001
  140 #define LINUX_MAP_PRIVATE       0x0002
  141 #define LINUX_MAP_FIXED         0x0010
  142 #define LINUX_MAP_ANON          0x0020
  143 #define LINUX_MAP_GROWSDOWN     0x0100
  144 
  145 /*
  146  * stat family of syscalls
  147  */
  148 struct l_timespec {
  149         l_ulong         tv_sec;
  150         l_ulong         tv_nsec;
  151 };
  152 
  153 struct l_newstat {
  154         l_ushort        st_dev;
  155         l_ushort        __pad1;
  156         l_ulong         st_ino;
  157         l_ushort        st_mode;
  158         l_ushort        st_nlink;
  159         l_ushort        st_uid;
  160         l_ushort        st_gid;
  161         l_ushort        st_rdev;
  162         l_ushort        __pad2;
  163         l_ulong         st_size;
  164         l_ulong         st_blksize;
  165         l_ulong         st_blocks;
  166         struct l_timespec       st_atimespec;
  167         struct l_timespec       st_mtimespec;
  168         struct l_timespec       st_ctimespec;
  169         l_ulong         __unused4;
  170         l_ulong         __unused5;
  171 };
  172 
  173 struct l_stat64 {
  174         l_ushort        st_dev;
  175         u_char          __pad0[10];
  176         l_ulong         __st_ino;
  177         l_uint          st_mode;
  178         l_uint          st_nlink;
  179         l_ulong         st_uid;
  180         l_ulong         st_gid;
  181         l_ushort        st_rdev;
  182         u_char          __pad3[10];
  183         l_longlong      st_size;
  184         l_ulong         st_blksize;
  185         l_ulong         st_blocks;
  186         l_ulong         __pad4;
  187         struct l_timespec       st_atimespec;
  188         struct l_timespec       st_mtimespec;
  189         struct l_timespec       st_ctimespec;
  190         l_ulonglong     st_ino;
  191 };
  192 
  193 struct l_new_utsname {
  194         char    sysname[LINUX_MAX_UTSNAME];
  195         char    nodename[LINUX_MAX_UTSNAME];
  196         char    release[LINUX_MAX_UTSNAME];
  197         char    version[LINUX_MAX_UTSNAME];
  198         char    machine[LINUX_MAX_UTSNAME];
  199         char    domainname[LINUX_MAX_UTSNAME];
  200 };
  201 
  202 /*
  203  * Signalling
  204  */
  205 #define LINUX_SIGHUP            1
  206 #define LINUX_SIGINT            2
  207 #define LINUX_SIGQUIT           3
  208 #define LINUX_SIGILL            4
  209 #define LINUX_SIGTRAP           5
  210 #define LINUX_SIGABRT           6
  211 #define LINUX_SIGIOT            LINUX_SIGABRT
  212 #define LINUX_SIGBUS            7
  213 #define LINUX_SIGFPE            8
  214 #define LINUX_SIGKILL           9
  215 #define LINUX_SIGUSR1           10
  216 #define LINUX_SIGSEGV           11
  217 #define LINUX_SIGUSR2           12
  218 #define LINUX_SIGPIPE           13
  219 #define LINUX_SIGALRM           14
  220 #define LINUX_SIGTERM           15
  221 #define LINUX_SIGSTKFLT         16
  222 #define LINUX_SIGCHLD           17
  223 #define LINUX_SIGCONT           18
  224 #define LINUX_SIGSTOP           19
  225 #define LINUX_SIGTSTP           20
  226 #define LINUX_SIGTTIN           21
  227 #define LINUX_SIGTTOU           22
  228 #define LINUX_SIGURG            23
  229 #define LINUX_SIGXCPU           24
  230 #define LINUX_SIGXFSZ           25
  231 #define LINUX_SIGVTALRM         26
  232 #define LINUX_SIGPROF           27
  233 #define LINUX_SIGWINCH          28
  234 #define LINUX_SIGIO             29
  235 #define LINUX_SIGPOLL           LINUX_SIGIO
  236 #define LINUX_SIGPWR            30
  237 #define LINUX_SIGSYS            31
  238 
  239 #define LINUX_SIGTBLSZ          31
  240 #define LINUX_NSIG_WORDS        2
  241 #define LINUX_NBPW              32
  242 #define LINUX_NSIG              (LINUX_NBPW * LINUX_NSIG_WORDS)
  243 
  244 /* sigaction flags */
  245 #define LINUX_SA_NOCLDSTOP      0x00000001
  246 #define LINUX_SA_NOCLDWAIT      0x00000002
  247 #define LINUX_SA_SIGINFO        0x00000004
  248 #define LINUX_SA_RESTORER       0x04000000
  249 #define LINUX_SA_ONSTACK        0x08000000
  250 #define LINUX_SA_RESTART        0x10000000
  251 #define LINUX_SA_INTERRUPT      0x20000000
  252 #define LINUX_SA_NOMASK         0x40000000
  253 #define LINUX_SA_ONESHOT        0x80000000
  254 
  255 /* sigprocmask actions */
  256 #define LINUX_SIG_BLOCK         0
  257 #define LINUX_SIG_UNBLOCK       1
  258 #define LINUX_SIG_SETMASK       2
  259 
  260 /* sigset_t macros */
  261 #define LINUX_SIGEMPTYSET(set)          (set).__bits[0] = (set).__bits[1] = 0
  262 #define LINUX_SIGISMEMBER(set, sig)     SIGISMEMBER(set, sig)
  263 #define LINUX_SIGADDSET(set, sig)       SIGADDSET(set, sig)
  264 
  265 /* sigaltstack */
  266 #define LINUX_MINSIGSTKSZ       2048
  267 #define LINUX_SS_ONSTACK        1
  268 #define LINUX_SS_DISABLE        2
  269 
  270 int linux_to_bsd_sigaltstack(int lsa);
  271 int bsd_to_linux_sigaltstack(int bsa);
  272 
  273 typedef void    (*l_handler_t)(l_int);
  274 typedef l_ulong l_osigset_t;
  275 
  276 typedef struct {
  277         l_uint  __bits[LINUX_NSIG_WORDS];
  278 } l_sigset_t;
  279 
  280 typedef struct {
  281         l_handler_t     lsa_handler;
  282         l_osigset_t     lsa_mask;
  283         l_ulong         lsa_flags;
  284         void    (*lsa_restorer)(void);
  285 } l_osigaction_t;
  286 
  287 typedef struct {
  288         l_handler_t     lsa_handler;
  289         l_ulong         lsa_flags;
  290         void    (*lsa_restorer)(void);
  291         l_sigset_t      lsa_mask;
  292 } l_sigaction_t;
  293 
  294 typedef struct {
  295         void            *ss_sp;
  296         l_int           ss_flags;
  297         l_size_t        ss_size;
  298 } l_stack_t;
  299 
  300 /* The Linux sigcontext, pretty much a standard 386 trapframe. */
  301 struct l_sigcontext {
  302         l_int           sc_gs;
  303         l_int           sc_fs;
  304         l_int           sc_es;
  305         l_int           sc_ds;
  306         l_int           sc_edi;
  307         l_int           sc_esi;
  308         l_int           sc_ebp;
  309         l_int           sc_esp;
  310         l_int           sc_ebx;
  311         l_int           sc_edx;
  312         l_int           sc_ecx;
  313         l_int           sc_eax;
  314         l_int           sc_trapno;
  315         l_int           sc_err;
  316         l_int           sc_eip;
  317         l_int           sc_cs;
  318         l_int           sc_eflags;
  319         l_int           sc_esp_at_signal;
  320         l_int           sc_ss;
  321         l_int           sc_387;
  322         l_int           sc_mask;
  323         l_int           sc_cr2;
  324 };
  325 
  326 struct l_ucontext {
  327         l_ulong         uc_flags;
  328         void            *uc_link;
  329         l_stack_t       uc_stack;
  330         struct l_sigcontext     uc_mcontext;
  331         l_sigset_t      uc_sigmask;
  332 };
  333 
  334 #define LINUX_SI_MAX_SIZE     128
  335 #define LINUX_SI_PAD_SIZE     ((LINUX_SI_MAX_SIZE/sizeof(l_int)) - 3)
  336 
  337 typedef struct l_siginfo {
  338         l_int           lsi_signo;
  339         l_int           lsi_errno;
  340         l_int           lsi_code;
  341         union {
  342                 l_int   _pad[LINUX_SI_PAD_SIZE];
  343 
  344                 struct {
  345                         l_pid_t         _pid;
  346                         l_uid16_t       _uid;
  347                 } _kill;
  348 
  349                 struct {
  350                         l_uint          _timer1;
  351                         l_uint          _timer2;
  352                 } _timer;
  353 
  354                 struct {
  355                         l_pid_t         _pid;           /* sender's pid */
  356                         l_uid16_t       _uid;           /* sender's uid */
  357                         union sigval _sigval;
  358                 } _rt;
  359 
  360                 struct {
  361                         l_pid_t         _pid;           /* which child */
  362                         l_uid16_t       _uid;           /* sender's uid */
  363                         l_int           _status;        /* exit code */
  364                         l_clock_t       _utime;
  365                         l_clock_t       _stime;
  366                 } _sigchld;
  367 
  368                 struct {
  369                         void            *_addr; /* faulting insn/memory ref. */
  370                 } _sigfault;
  371 
  372                 struct {
  373                         l_int           _band;  /* POLL_IN,POLL_OUT,POLL_MSG */
  374                         l_int           _fd;
  375                 } _sigpoll;
  376         } _sifields;
  377 } l_siginfo_t;
  378 
  379 #define lsi_pid          _sifields._kill._pid
  380 #define lsi_uid          _sifields._kill._uid
  381 #define lsi_status       _sifields._sigchld._status
  382 #define lsi_utime        _sifields._sigchld._utime
  383 #define lsi_stime        _sifields._sigchld._stime
  384 #define lsi_value        _sifields._rt._sigval
  385 #define lsi_int          _sifields._rt._sigval.sival_int
  386 #define lsi_ptr          _sifields._rt._sigval.sival_ptr
  387 #define lsi_addr         _sifields._sigfault._addr
  388 #define lsi_band         _sifields._sigpoll._band
  389 #define lsi_fd           _sifields._sigpoll._fd
  390 
  391 struct l_fpreg {
  392         u_int16_t significand[4];
  393         u_int16_t exponent;
  394 };
  395 
  396 struct l_fpxreg {
  397         u_int16_t significand[4];
  398         u_int16_t exponent;
  399         u_int16_t padding[3];
  400 };
  401 
  402 struct l_xmmreg {
  403         u_int32_t element[4];
  404 };
  405 
  406 struct l_fpstate {
  407         /* Regular FPU environment */
  408         u_int32_t               cw;
  409         u_int32_t               sw;
  410         u_int32_t               tag;
  411         u_int32_t               ipoff;
  412         u_int32_t               cssel;
  413         u_int32_t               dataoff;
  414         u_int32_t               datasel;
  415         struct l_fpreg          _st[8];
  416         u_int16_t               status;
  417         u_int16_t               magic;  /* 0xffff = regular FPU data */
  418 
  419         /* FXSR FPU environment */
  420         u_int32_t               _fxsr_env[6]; /* env is ignored */
  421         u_int32_t               mxcsr;
  422         u_int32_t               reserved;
  423         struct l_fpxreg         _fxsr_st[8];  /* reg data is ignored */
  424         struct l_xmmreg         _xmm[8];
  425         u_int32_t               padding[56];
  426 };
  427 
  428 /*
  429  * We make the stack look like Linux expects it when calling a signal
  430  * handler, but use the BSD way of calling the handler and sigreturn().
  431  * This means that we need to pass the pointer to the handler too.
  432  * It is appended to the frame to not interfere with the rest of it.
  433  */
  434 struct l_sigframe {
  435         l_int                   sf_sig;
  436         struct l_sigcontext     sf_sc;
  437         struct l_fpstate        sf_fpstate;
  438         l_uint                  sf_extramask[LINUX_NSIG_WORDS-1];
  439         l_handler_t             sf_handler;
  440 };
  441 
  442 struct l_rt_sigframe {
  443         l_int                   sf_sig;
  444         l_siginfo_t             *sf_siginfo;
  445         struct l_ucontext       *sf_ucontext;
  446         l_siginfo_t             sf_si;
  447         struct l_ucontext       sf_sc;
  448         l_handler_t             sf_handler;
  449 };
  450 
  451 extern int bsd_to_linux_signal[];
  452 extern int linux_to_bsd_signal[];
  453 extern struct sysentvec linux_sysvec;
  454 extern struct sysentvec elf_linux_sysvec;
  455 
  456 /*
  457  * Pluggable ioctl handlers
  458  */
  459 struct linux_ioctl_args;
  460 struct thread;
  461 
  462 typedef int linux_ioctl_function_t(struct thread *, struct linux_ioctl_args *);
  463 
  464 struct linux_ioctl_handler {
  465         linux_ioctl_function_t *func;
  466         int     low, high;
  467 };
  468 
  469 int     linux_ioctl_register_handler(struct linux_ioctl_handler *h);
  470 int     linux_ioctl_unregister_handler(struct linux_ioctl_handler *h);
  471 
  472 /*
  473  * open/fcntl flags
  474  */
  475 #define LINUX_O_RDONLY          00
  476 #define LINUX_O_WRONLY          01
  477 #define LINUX_O_RDWR            02
  478 #define LINUX_O_CREAT           0100
  479 #define LINUX_O_EXCL            0200
  480 #define LINUX_O_NOCTTY          0400
  481 #define LINUX_O_TRUNC           01000
  482 #define LINUX_O_APPEND          02000
  483 #define LINUX_O_NONBLOCK        04000
  484 #define LINUX_O_NDELAY          LINUX_O_NONBLOCK
  485 #define LINUX_O_SYNC            010000
  486 #define LINUX_FASYNC            020000
  487 #define LINUX_O_DIRECT          040000  /* direct disk access hint */
  488 #define LINUX_O_LARGEFILE       0100000
  489 #define LINUX_O_DIRECTORY       0200000 /* must be a directory */
  490 #define LINUX_O_NOFOLLOW        0400000 /* don't follow links */
  491 #define LINUX_O_NOATIME         01000000
  492 
  493 #define LINUX_F_DUPFD           0
  494 #define LINUX_F_GETFD           1
  495 #define LINUX_F_SETFD           2
  496 #define LINUX_F_GETFL           3
  497 #define LINUX_F_SETFL           4
  498 #define LINUX_F_GETLK           5
  499 #define LINUX_F_SETLK           6
  500 #define LINUX_F_SETLKW          7
  501 #define LINUX_F_SETOWN          8
  502 #define LINUX_F_GETOWN          9
  503 
  504 #define LINUX_F_GETLK64         12
  505 #define LINUX_F_SETLK64         13
  506 #define LINUX_F_SETLKW64        14
  507 
  508 #define LINUX_F_RDLCK           0
  509 #define LINUX_F_WRLCK           1
  510 #define LINUX_F_UNLCK           2
  511 
  512 /*
  513  * mount flags
  514  */
  515 #define LINUX_MS_RDONLY         0x0001
  516 #define LINUX_MS_NOSUID         0x0002
  517 #define LINUX_MS_NODEV          0x0004
  518 #define LINUX_MS_NOEXEC         0x0008
  519 #define LINUX_MS_REMOUNT        0x0020
  520         
  521 /*
  522  * SystemV IPC defines
  523  */
  524 #define LINUX_SEMOP             1
  525 #define LINUX_SEMGET            2
  526 #define LINUX_SEMCTL            3
  527 #define LINUX_MSGSND            11
  528 #define LINUX_MSGRCV            12
  529 #define LINUX_MSGGET            13
  530 #define LINUX_MSGCTL            14
  531 #define LINUX_SHMAT             21
  532 #define LINUX_SHMDT             22
  533 #define LINUX_SHMGET            23
  534 #define LINUX_SHMCTL            24
  535 
  536 #define LINUX_IPC_RMID          0
  537 #define LINUX_IPC_SET           1
  538 #define LINUX_IPC_STAT          2
  539 #define LINUX_IPC_INFO          3
  540 
  541 #define LINUX_SHM_LOCK          11
  542 #define LINUX_SHM_UNLOCK        12
  543 #define LINUX_SHM_STAT          13
  544 #define LINUX_SHM_INFO          14
  545 
  546 #define LINUX_SHM_RDONLY        0x1000
  547 #define LINUX_SHM_RND           0x2000
  548 #define LINUX_SHM_REMAP         0x4000
  549 
  550 /* semctl commands */
  551 #define LINUX_GETPID            11
  552 #define LINUX_GETVAL            12
  553 #define LINUX_GETALL            13
  554 #define LINUX_GETNCNT           14
  555 #define LINUX_GETZCNT           15
  556 #define LINUX_SETVAL            16
  557 #define LINUX_SETALL            17
  558 #define LINUX_SEM_STAT          18
  559 #define LINUX_SEM_INFO          19
  560 
  561 union l_semun {
  562         l_int           val;
  563         struct l_semid_ds       *buf;
  564         l_ushort        *array;
  565         struct l_seminfo        *__buf;
  566         void            *__pad;
  567 };
  568 
  569 /*
  570  * Socket defines
  571  */
  572 #define LINUX_SOCKET            1
  573 #define LINUX_BIND              2
  574 #define LINUX_CONNECT           3
  575 #define LINUX_LISTEN            4
  576 #define LINUX_ACCEPT            5
  577 #define LINUX_GETSOCKNAME       6
  578 #define LINUX_GETPEERNAME       7
  579 #define LINUX_SOCKETPAIR        8
  580 #define LINUX_SEND              9
  581 #define LINUX_RECV              10
  582 #define LINUX_SENDTO            11
  583 #define LINUX_RECVFROM          12
  584 #define LINUX_SHUTDOWN          13
  585 #define LINUX_SETSOCKOPT        14
  586 #define LINUX_GETSOCKOPT        15
  587 #define LINUX_SENDMSG           16
  588 #define LINUX_RECVMSG           17
  589 
  590 #define LINUX_AF_UNSPEC         0
  591 #define LINUX_AF_UNIX           1
  592 #define LINUX_AF_INET           2
  593 #define LINUX_AF_AX25           3
  594 #define LINUX_AF_IPX            4
  595 #define LINUX_AF_APPLETALK      5
  596 #define LINUX_AF_INET6          10
  597 
  598 #define LINUX_SOL_SOCKET        1
  599 #define LINUX_SOL_IP            0
  600 #define LINUX_SOL_IPX           256
  601 #define LINUX_SOL_AX25          257
  602 #define LINUX_SOL_TCP           6
  603 #define LINUX_SOL_UDP           17
  604 
  605 #define LINUX_SO_DEBUG          1
  606 #define LINUX_SO_REUSEADDR      2
  607 #define LINUX_SO_TYPE           3
  608 #define LINUX_SO_ERROR          4
  609 #define LINUX_SO_DONTROUTE      5
  610 #define LINUX_SO_BROADCAST      6
  611 #define LINUX_SO_SNDBUF         7
  612 #define LINUX_SO_RCVBUF         8
  613 #define LINUX_SO_KEEPALIVE      9
  614 #define LINUX_SO_OOBINLINE      10
  615 #define LINUX_SO_NO_CHECK       11
  616 #define LINUX_SO_PRIORITY       12
  617 #define LINUX_SO_LINGER         13
  618 
  619 #define LINUX_IP_TOS            1
  620 #define LINUX_IP_TTL            2
  621 #define LINUX_IP_HDRINCL        3
  622 #define LINUX_IP_OPTIONS        4
  623 
  624 #define LINUX_IP_MULTICAST_IF           32
  625 #define LINUX_IP_MULTICAST_TTL          33
  626 #define LINUX_IP_MULTICAST_LOOP         34
  627 #define LINUX_IP_ADD_MEMBERSHIP         35
  628 #define LINUX_IP_DROP_MEMBERSHIP        36
  629 
  630 struct l_sockaddr {
  631         l_ushort        sa_family;
  632         char            sa_data[14];
  633 };
  634 
  635 struct l_ifmap {
  636         l_ulong         mem_start;
  637         l_ulong         mem_end;
  638         l_ushort        base_addr;
  639         u_char          irq;
  640         u_char          dma;
  641         u_char          port;
  642 };
  643 
  644 #define LINUX_IFHWADDRLEN       6
  645 #define LINUX_IFNAMSIZ          16
  646 
  647 struct l_ifreq {
  648         union {
  649                 char    ifrn_name[LINUX_IFNAMSIZ];
  650         } ifr_ifrn;
  651 
  652         union {
  653                 struct l_sockaddr       ifru_addr;
  654                 struct l_sockaddr       ifru_dstaddr;
  655                 struct l_sockaddr       ifru_broadaddr;
  656                 struct l_sockaddr       ifru_netmask;
  657                 struct l_sockaddr       ifru_hwaddr;
  658                 l_short         ifru_flags[1];
  659                 l_int           ifru_metric;
  660                 l_int           ifru_mtu;
  661                 struct l_ifmap  ifru_map;
  662                 char            ifru_slave[LINUX_IFNAMSIZ];
  663                 l_caddr_t       ifru_data;
  664         } ifr_ifru;
  665 };
  666 
  667 #define ifr_name        ifr_ifrn.ifrn_name      /* interface name */
  668 #define ifr_hwaddr      ifr_ifru.ifru_hwaddr    /* MAC address */
  669 
  670 /*
  671  * poll()
  672  */
  673 #define LINUX_POLLIN            0x0001
  674 #define LINUX_POLLPRI           0x0002
  675 #define LINUX_POLLOUT           0x0004
  676 #define LINUX_POLLERR           0x0008
  677 #define LINUX_POLLHUP           0x0010
  678 #define LINUX_POLLNVAL          0x0020
  679 #define LINUX_POLLRDNORM        0x0040
  680 #define LINUX_POLLRDBAND        0x0080
  681 #define LINUX_POLLWRNORM        0x0100
  682 #define LINUX_POLLWRBAND        0x0200
  683 #define LINUX_POLLMSG           0x0400
  684 
  685 struct l_pollfd {
  686         l_int           fd;
  687         l_short         events;
  688         l_short         revents;
  689 };
  690 
  691 #endif /* !_I386_LINUX_LINUX_H_ */

Cache object: e715ab67ffdb97ef4f30602032495109


[ 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.