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/5.4/sys/i386/linux/linux.h 133815 2004-08-16 07:05:44Z tjr $
   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 
  488 #define LINUX_F_DUPFD           0
  489 #define LINUX_F_GETFD           1
  490 #define LINUX_F_SETFD           2
  491 #define LINUX_F_GETFL           3
  492 #define LINUX_F_SETFL           4
  493 #define LINUX_F_GETLK           5
  494 #define LINUX_F_SETLK           6
  495 #define LINUX_F_SETLKW          7
  496 #define LINUX_F_SETOWN          8
  497 #define LINUX_F_GETOWN          9
  498 
  499 #define LINUX_F_GETLK64         12
  500 #define LINUX_F_SETLK64         13
  501 #define LINUX_F_SETLKW64        14
  502 
  503 #define LINUX_F_RDLCK           0
  504 #define LINUX_F_WRLCK           1
  505 #define LINUX_F_UNLCK           2
  506 
  507 /*
  508  * mount flags
  509  */
  510 #define LINUX_MS_RDONLY         0x0001
  511 #define LINUX_MS_NOSUID         0x0002
  512 #define LINUX_MS_NODEV          0x0004
  513 #define LINUX_MS_NOEXEC         0x0008
  514 #define LINUX_MS_REMOUNT        0x0020
  515         
  516 /*
  517  * SystemV IPC defines
  518  */
  519 #define LINUX_SEMOP             1
  520 #define LINUX_SEMGET            2
  521 #define LINUX_SEMCTL            3
  522 #define LINUX_MSGSND            11
  523 #define LINUX_MSGRCV            12
  524 #define LINUX_MSGGET            13
  525 #define LINUX_MSGCTL            14
  526 #define LINUX_SHMAT             21
  527 #define LINUX_SHMDT             22
  528 #define LINUX_SHMGET            23
  529 #define LINUX_SHMCTL            24
  530 
  531 #define LINUX_IPC_RMID          0
  532 #define LINUX_IPC_SET           1
  533 #define LINUX_IPC_STAT          2
  534 #define LINUX_IPC_INFO          3
  535 
  536 #define LINUX_SHM_LOCK          11
  537 #define LINUX_SHM_UNLOCK        12
  538 #define LINUX_SHM_STAT          13
  539 #define LINUX_SHM_INFO          14
  540 
  541 #define LINUX_SHM_RDONLY        0x1000
  542 #define LINUX_SHM_RND           0x2000
  543 #define LINUX_SHM_REMAP         0x4000
  544 
  545 /* semctl commands */
  546 #define LINUX_GETPID            11
  547 #define LINUX_GETVAL            12
  548 #define LINUX_GETALL            13
  549 #define LINUX_GETNCNT           14
  550 #define LINUX_GETZCNT           15
  551 #define LINUX_SETVAL            16
  552 #define LINUX_SETALL            17
  553 #define LINUX_SEM_STAT          18
  554 #define LINUX_SEM_INFO          19
  555 
  556 union l_semun {
  557         l_int           val;
  558         struct l_semid_ds       *buf;
  559         l_ushort        *array;
  560         struct l_seminfo        *__buf;
  561         void            *__pad;
  562 };
  563 
  564 /*
  565  * Socket defines
  566  */
  567 #define LINUX_SOCKET            1
  568 #define LINUX_BIND              2
  569 #define LINUX_CONNECT           3
  570 #define LINUX_LISTEN            4
  571 #define LINUX_ACCEPT            5
  572 #define LINUX_GETSOCKNAME       6
  573 #define LINUX_GETPEERNAME       7
  574 #define LINUX_SOCKETPAIR        8
  575 #define LINUX_SEND              9
  576 #define LINUX_RECV              10
  577 #define LINUX_SENDTO            11
  578 #define LINUX_RECVFROM          12
  579 #define LINUX_SHUTDOWN          13
  580 #define LINUX_SETSOCKOPT        14
  581 #define LINUX_GETSOCKOPT        15
  582 #define LINUX_SENDMSG           16
  583 #define LINUX_RECVMSG           17
  584 
  585 #define LINUX_AF_UNSPEC         0
  586 #define LINUX_AF_UNIX           1
  587 #define LINUX_AF_INET           2
  588 #define LINUX_AF_AX25           3
  589 #define LINUX_AF_IPX            4
  590 #define LINUX_AF_APPLETALK      5
  591 #define LINUX_AF_INET6          10
  592 
  593 #define LINUX_SOL_SOCKET        1
  594 #define LINUX_SOL_IP            0
  595 #define LINUX_SOL_IPX           256
  596 #define LINUX_SOL_AX25          257
  597 #define LINUX_SOL_TCP           6
  598 #define LINUX_SOL_UDP           17
  599 
  600 #define LINUX_SO_DEBUG          1
  601 #define LINUX_SO_REUSEADDR      2
  602 #define LINUX_SO_TYPE           3
  603 #define LINUX_SO_ERROR          4
  604 #define LINUX_SO_DONTROUTE      5
  605 #define LINUX_SO_BROADCAST      6
  606 #define LINUX_SO_SNDBUF         7
  607 #define LINUX_SO_RCVBUF         8
  608 #define LINUX_SO_KEEPALIVE      9
  609 #define LINUX_SO_OOBINLINE      10
  610 #define LINUX_SO_NO_CHECK       11
  611 #define LINUX_SO_PRIORITY       12
  612 #define LINUX_SO_LINGER         13
  613 
  614 #define LINUX_IP_TOS            1
  615 #define LINUX_IP_TTL            2
  616 #define LINUX_IP_HDRINCL        3
  617 #define LINUX_IP_OPTIONS        4
  618 
  619 #define LINUX_IP_MULTICAST_IF           32
  620 #define LINUX_IP_MULTICAST_TTL          33
  621 #define LINUX_IP_MULTICAST_LOOP         34
  622 #define LINUX_IP_ADD_MEMBERSHIP         35
  623 #define LINUX_IP_DROP_MEMBERSHIP        36
  624 
  625 struct l_sockaddr {
  626         l_ushort        sa_family;
  627         char            sa_data[14];
  628 };
  629 
  630 struct l_ifmap {
  631         l_ulong         mem_start;
  632         l_ulong         mem_end;
  633         l_ushort        base_addr;
  634         u_char          irq;
  635         u_char          dma;
  636         u_char          port;
  637 };
  638 
  639 #define LINUX_IFHWADDRLEN       6
  640 #define LINUX_IFNAMSIZ          16
  641 
  642 struct l_ifreq {
  643         union {
  644                 char    ifrn_name[LINUX_IFNAMSIZ];
  645         } ifr_ifrn;
  646 
  647         union {
  648                 struct l_sockaddr       ifru_addr;
  649                 struct l_sockaddr       ifru_dstaddr;
  650                 struct l_sockaddr       ifru_broadaddr;
  651                 struct l_sockaddr       ifru_netmask;
  652                 struct l_sockaddr       ifru_hwaddr;
  653                 l_short         ifru_flags[1];
  654                 l_int           ifru_metric;
  655                 l_int           ifru_mtu;
  656                 struct l_ifmap  ifru_map;
  657                 char            ifru_slave[LINUX_IFNAMSIZ];
  658                 l_caddr_t       ifru_data;
  659         } ifr_ifru;
  660 };
  661 
  662 #define ifr_name        ifr_ifrn.ifrn_name      /* interface name */
  663 #define ifr_hwaddr      ifr_ifru.ifru_hwaddr    /* MAC address */
  664 
  665 /*
  666  * poll()
  667  */
  668 #define LINUX_POLLIN            0x0001
  669 #define LINUX_POLLPRI           0x0002
  670 #define LINUX_POLLOUT           0x0004
  671 #define LINUX_POLLERR           0x0008
  672 #define LINUX_POLLHUP           0x0010
  673 #define LINUX_POLLNVAL          0x0020
  674 #define LINUX_POLLRDNORM        0x0040
  675 #define LINUX_POLLRDBAND        0x0080
  676 #define LINUX_POLLWRNORM        0x0100
  677 #define LINUX_POLLWRBAND        0x0200
  678 #define LINUX_POLLMSG           0x0400
  679 
  680 struct l_pollfd {
  681         l_int           fd;
  682         l_short         events;
  683         l_short         revents;
  684 };
  685 
  686 #endif /* !_I386_LINUX_LINUX_H_ */

Cache object: d7457f5a06431f148c5eaa3b596a709a


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