1c21dee17SSøren Schmidt /*- 2e1743d02SSøren Schmidt * Copyright (c) 1994-1996 S�ren Schmidt 3c21dee17SSøren Schmidt * All rights reserved. 4c21dee17SSøren Schmidt * 5c21dee17SSøren Schmidt * Redistribution and use in source and binary forms, with or without 6c21dee17SSøren Schmidt * modification, are permitted provided that the following conditions 7c21dee17SSøren Schmidt * are met: 8c21dee17SSøren Schmidt * 1. Redistributions of source code must retain the above copyright 9c21dee17SSøren Schmidt * notice, this list of conditions and the following disclaimer 10c21dee17SSøren Schmidt * in this position and unchanged. 11c21dee17SSøren Schmidt * 2. Redistributions in binary form must reproduce the above copyright 12c21dee17SSøren Schmidt * notice, this list of conditions and the following disclaimer in the 13c21dee17SSøren Schmidt * documentation and/or other materials provided with the distribution. 14c21dee17SSøren Schmidt * 3. The name of the author may not be used to endorse or promote products 156c5e9bbdSMike Pritchard * derived from this software without specific prior written permission 16c21dee17SSøren Schmidt * 17c21dee17SSøren Schmidt * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18c21dee17SSøren Schmidt * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19c21dee17SSøren Schmidt * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20c21dee17SSøren Schmidt * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21c21dee17SSøren Schmidt * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22c21dee17SSøren Schmidt * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23c21dee17SSøren Schmidt * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24c21dee17SSøren Schmidt * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25c21dee17SSøren Schmidt * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26c21dee17SSøren Schmidt * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27c21dee17SSøren Schmidt * 28c3aac50fSPeter Wemm * $FreeBSD$ 29c21dee17SSøren Schmidt */ 30c21dee17SSøren Schmidt 311f3dad5aSBruce Evans #ifndef _I386_LINUX_LINUX_H_ 321f3dad5aSBruce Evans #define _I386_LINUX_LINUX_H_ 3362c3734cSBruce Evans 3479363394SAndrew Gallatin #include <sys/signal.h> /* for sigval union */ 3579363394SAndrew Gallatin 36ebea8660SMarcel Moolenaar #include <i386/linux/linux_syscall.h> 37c21dee17SSøren Schmidt 3843bef515SMarcel Moolenaar #ifdef MALLOC_DECLARE 3943bef515SMarcel Moolenaar MALLOC_DECLARE(M_LINUX); 4043bef515SMarcel Moolenaar #endif 4143bef515SMarcel Moolenaar 4243bef515SMarcel Moolenaar /* 4343bef515SMarcel Moolenaar * Miscellaneous 4443bef515SMarcel Moolenaar */ 4543bef515SMarcel Moolenaar #define LINUX_NAME_MAX 255 4643bef515SMarcel Moolenaar #define LINUX_MAX_UTSNAME 65 4743bef515SMarcel Moolenaar 4843bef515SMarcel Moolenaar /* Scheduling policies */ 4943bef515SMarcel Moolenaar #define LINUX_SCHED_OTHER 0 5043bef515SMarcel Moolenaar #define LINUX_SCHED_FIFO 1 5143bef515SMarcel Moolenaar #define LINUX_SCHED_RR 2 5243bef515SMarcel Moolenaar 5343bef515SMarcel Moolenaar /* Resource limits */ 5443bef515SMarcel Moolenaar #define LINUX_RLIMIT_CPU 0 5543bef515SMarcel Moolenaar #define LINUX_RLIMIT_FSIZE 1 5643bef515SMarcel Moolenaar #define LINUX_RLIMIT_DATA 2 5743bef515SMarcel Moolenaar #define LINUX_RLIMIT_STACK 3 5843bef515SMarcel Moolenaar #define LINUX_RLIMIT_CORE 4 5943bef515SMarcel Moolenaar #define LINUX_RLIMIT_RSS 5 6043bef515SMarcel Moolenaar #define LINUX_RLIMIT_NPROC 6 6143bef515SMarcel Moolenaar #define LINUX_RLIMIT_NOFILE 7 6243bef515SMarcel Moolenaar #define LINUX_RLIMIT_MEMLOCK 8 6343bef515SMarcel Moolenaar #define LINUX_RLIMIT_AS 9 /* address space limit */ 6443bef515SMarcel Moolenaar 6543bef515SMarcel Moolenaar #define LINUX_RLIM_NLIMITS 10 6643bef515SMarcel Moolenaar 6743bef515SMarcel Moolenaar /* mmap options */ 6843bef515SMarcel Moolenaar #define LINUX_MAP_SHARED 0x0001 6943bef515SMarcel Moolenaar #define LINUX_MAP_PRIVATE 0x0002 7043bef515SMarcel Moolenaar #define LINUX_MAP_FIXED 0x0010 7143bef515SMarcel Moolenaar #define LINUX_MAP_ANON 0x0020 7243bef515SMarcel Moolenaar #define LINUX_MAP_GROWSDOWN 0x0100 7343bef515SMarcel Moolenaar 74c21dee17SSøren Schmidt typedef char * linux_caddr_t; 7543bef515SMarcel Moolenaar typedef long linux_clock_t; 7643bef515SMarcel Moolenaar typedef u_short linux_dev_t; 7743bef515SMarcel Moolenaar typedef u_short linux_gid_t; 7843bef515SMarcel Moolenaar typedef u_long linux_ino_t; 7943bef515SMarcel Moolenaar typedef int linux_key_t; /* XXX */ 8043bef515SMarcel Moolenaar typedef u_short linux_mode_t; 8143bef515SMarcel Moolenaar typedef u_short linux_nlink_t; 82c21dee17SSøren Schmidt typedef long linux_off_t; 8343bef515SMarcel Moolenaar typedef int linux_pid_t; 8443bef515SMarcel Moolenaar typedef u_int linux_size_t; 8543bef515SMarcel Moolenaar typedef long linux_time_t; 8643bef515SMarcel Moolenaar typedef u_short linux_uid_t; 8743bef515SMarcel Moolenaar 88c21dee17SSøren Schmidt typedef struct { 89c21dee17SSøren Schmidt long val[2]; 90c21dee17SSøren Schmidt } linux_fsid_t; 9143bef515SMarcel Moolenaar 9243bef515SMarcel Moolenaar struct linux_new_utsname { 9343bef515SMarcel Moolenaar char sysname[LINUX_MAX_UTSNAME]; 9443bef515SMarcel Moolenaar char nodename[LINUX_MAX_UTSNAME]; 9543bef515SMarcel Moolenaar char release[LINUX_MAX_UTSNAME]; 9643bef515SMarcel Moolenaar char version[LINUX_MAX_UTSNAME]; 9743bef515SMarcel Moolenaar char machine[LINUX_MAX_UTSNAME]; 9843bef515SMarcel Moolenaar char domainname[LINUX_MAX_UTSNAME]; 9943bef515SMarcel Moolenaar }; 100c21dee17SSøren Schmidt 101956d3333SMarcel Moolenaar /* 10243bef515SMarcel Moolenaar * Signalling 103956d3333SMarcel Moolenaar */ 10443bef515SMarcel Moolenaar #define LINUX_SIGHUP 1 10543bef515SMarcel Moolenaar #define LINUX_SIGINT 2 10643bef515SMarcel Moolenaar #define LINUX_SIGQUIT 3 10743bef515SMarcel Moolenaar #define LINUX_SIGILL 4 10843bef515SMarcel Moolenaar #define LINUX_SIGTRAP 5 10943bef515SMarcel Moolenaar #define LINUX_SIGABRT 6 11043bef515SMarcel Moolenaar #define LINUX_SIGIOT LINUX_SIGABRT 11143bef515SMarcel Moolenaar #define LINUX_SIGBUS 7 11243bef515SMarcel Moolenaar #define LINUX_SIGFPE 8 11343bef515SMarcel Moolenaar #define LINUX_SIGKILL 9 11443bef515SMarcel Moolenaar #define LINUX_SIGUSR1 10 11543bef515SMarcel Moolenaar #define LINUX_SIGSEGV 11 11643bef515SMarcel Moolenaar #define LINUX_SIGUSR2 12 11743bef515SMarcel Moolenaar #define LINUX_SIGPIPE 13 11843bef515SMarcel Moolenaar #define LINUX_SIGALRM 14 11943bef515SMarcel Moolenaar #define LINUX_SIGTERM 15 12043bef515SMarcel Moolenaar #define LINUX_SIGSTKFLT 16 12143bef515SMarcel Moolenaar #define LINUX_SIGCHLD 17 12243bef515SMarcel Moolenaar #define LINUX_SIGCONT 18 12343bef515SMarcel Moolenaar #define LINUX_SIGSTOP 19 12443bef515SMarcel Moolenaar #define LINUX_SIGTSTP 20 12543bef515SMarcel Moolenaar #define LINUX_SIGTTIN 21 12643bef515SMarcel Moolenaar #define LINUX_SIGTTOU 22 12743bef515SMarcel Moolenaar #define LINUX_SIGURG 23 12843bef515SMarcel Moolenaar #define LINUX_SIGXCPU 24 12943bef515SMarcel Moolenaar #define LINUX_SIGXFSZ 25 13043bef515SMarcel Moolenaar #define LINUX_SIGVTALRM 26 13143bef515SMarcel Moolenaar #define LINUX_SIGPROF 27 13243bef515SMarcel Moolenaar #define LINUX_SIGWINCH 28 13343bef515SMarcel Moolenaar #define LINUX_SIGIO 29 13443bef515SMarcel Moolenaar #define LINUX_SIGPOLL LINUX_SIGIO 13543bef515SMarcel Moolenaar #define LINUX_SIGPWR 30 13643bef515SMarcel Moolenaar #define LINUX_SIGUNUSED 31 137956d3333SMarcel Moolenaar 13843bef515SMarcel Moolenaar #define LINUX_NSIG 64 13943bef515SMarcel Moolenaar #define LINUX_SIGTBLSZ 31 14043bef515SMarcel Moolenaar 14143bef515SMarcel Moolenaar /* sigaction flags */ 14243bef515SMarcel Moolenaar #define LINUX_SA_NOCLDSTOP 0x00000001 14343bef515SMarcel Moolenaar #define LINUX_SA_NOCLDWAIT 0x00000002 14443bef515SMarcel Moolenaar #define LINUX_SA_SIGINFO 0x00000004 14543bef515SMarcel Moolenaar #define LINUX_SA_RESTORER 0x04000000 14643bef515SMarcel Moolenaar #define LINUX_SA_ONSTACK 0x08000000 14743bef515SMarcel Moolenaar #define LINUX_SA_RESTART 0x10000000 14843bef515SMarcel Moolenaar #define LINUX_SA_INTERRUPT 0x20000000 14943bef515SMarcel Moolenaar #define LINUX_SA_NOMASK 0x40000000 15043bef515SMarcel Moolenaar #define LINUX_SA_ONESHOT 0x80000000 15143bef515SMarcel Moolenaar 15243bef515SMarcel Moolenaar /* sigprocmask actions */ 15343bef515SMarcel Moolenaar #define LINUX_SIG_BLOCK 0 15443bef515SMarcel Moolenaar #define LINUX_SIG_UNBLOCK 1 15543bef515SMarcel Moolenaar #define LINUX_SIG_SETMASK 2 15643bef515SMarcel Moolenaar 15743bef515SMarcel Moolenaar /* sigset_t macros */ 15843bef515SMarcel Moolenaar #define LINUX_SIGEMPTYSET(set) (set).__bits[0] = (set).__bits[1] = 0 15943bef515SMarcel Moolenaar #define LINUX_SIGISMEMBER(set, sig) SIGISMEMBER(set, sig) 16043bef515SMarcel Moolenaar #define LINUX_SIGADDSET(set, sig) SIGADDSET(set, sig) 16143bef515SMarcel Moolenaar 162dee4ec33SMarcel Moolenaar /* sigaltstack */ 163dee4ec33SMarcel Moolenaar #define LINUX_MINSIGSTKSZ 2048 164931a7258SAndrew Gallatin #define LINUX_SS_ONSTACK_BC 0 /* backwards compat SS_ONSTACK */ 165931a7258SAndrew Gallatin #define LINUX_SS_ONSTACK 1 166931a7258SAndrew Gallatin #define LINUX_SS_DISABLE 2 167931a7258SAndrew Gallatin 168931a7258SAndrew Gallatin 169931a7258SAndrew Gallatin int linux_to_bsd_sigaltstack(int lsa); 170931a7258SAndrew Gallatin int bsd_to_linux_sigaltstack(int bsa); 171931a7258SAndrew Gallatin 172dee4ec33SMarcel Moolenaar 17343bef515SMarcel Moolenaar typedef void (*linux_handler_t)(int); 17443bef515SMarcel Moolenaar typedef u_long linux_osigset_t; 175956d3333SMarcel Moolenaar 17606ebbe77SMarcel Moolenaar typedef struct { 17743bef515SMarcel Moolenaar u_int __bits[2]; 178956d3333SMarcel Moolenaar } linux_sigset_t; 179956d3333SMarcel Moolenaar 180956d3333SMarcel Moolenaar typedef struct { 18143bef515SMarcel Moolenaar linux_handler_t lsa_handler; 182956d3333SMarcel Moolenaar linux_osigset_t lsa_mask; 18343bef515SMarcel Moolenaar u_long lsa_flags; 184956d3333SMarcel Moolenaar void (*lsa_restorer)(void); 185956d3333SMarcel Moolenaar } linux_osigaction_t; 186956d3333SMarcel Moolenaar 18706ebbe77SMarcel Moolenaar typedef struct { 18843bef515SMarcel Moolenaar linux_handler_t lsa_handler; 18943bef515SMarcel Moolenaar u_long lsa_flags; 19006ebbe77SMarcel Moolenaar void (*lsa_restorer)(void); 191956d3333SMarcel Moolenaar linux_sigset_t lsa_mask; 192956d3333SMarcel Moolenaar } linux_sigaction_t; 19306ebbe77SMarcel Moolenaar 19443bef515SMarcel Moolenaar typedef struct { 195ec99e322SMarcel Moolenaar void *ss_sp; 196ec99e322SMarcel Moolenaar int ss_flags; 197ec99e322SMarcel Moolenaar linux_size_t ss_size; 198ec99e322SMarcel Moolenaar } linux_stack_t; 199ec99e322SMarcel Moolenaar 20043bef515SMarcel Moolenaar /* The Linux sigcontext, pretty much a standard 386 trapframe. */ 201d66a5066SPeter Wemm struct linux_sigcontext { 202d66a5066SPeter Wemm int sc_gs; 203d66a5066SPeter Wemm int sc_fs; 204d66a5066SPeter Wemm int sc_es; 205d66a5066SPeter Wemm int sc_ds; 206d66a5066SPeter Wemm int sc_edi; 207d66a5066SPeter Wemm int sc_esi; 208d66a5066SPeter Wemm int sc_ebp; 209d66a5066SPeter Wemm int sc_esp; 210d66a5066SPeter Wemm int sc_ebx; 211d66a5066SPeter Wemm int sc_edx; 212d66a5066SPeter Wemm int sc_ecx; 213d66a5066SPeter Wemm int sc_eax; 214d66a5066SPeter Wemm int sc_trapno; 215d66a5066SPeter Wemm int sc_err; 216d66a5066SPeter Wemm int sc_eip; 217d66a5066SPeter Wemm int sc_cs; 218d66a5066SPeter Wemm int sc_eflags; 219d66a5066SPeter Wemm int sc_esp_at_signal; 220d66a5066SPeter Wemm int sc_ss; 221d66a5066SPeter Wemm int sc_387; 222d66a5066SPeter Wemm int sc_mask; 223d66a5066SPeter Wemm int sc_cr2; 224d66a5066SPeter Wemm }; 225d66a5066SPeter Wemm 22679363394SAndrew Gallatin struct linux_ucontext { 22779363394SAndrew Gallatin unsigned long uc_flags; 22879363394SAndrew Gallatin void *uc_link; 22979363394SAndrew Gallatin linux_stack_t uc_stack; 23079363394SAndrew Gallatin struct linux_sigcontext uc_mcontext; 23179363394SAndrew Gallatin linux_sigset_t uc_sigmask; 23279363394SAndrew Gallatin }; 23379363394SAndrew Gallatin 23479363394SAndrew Gallatin 23579363394SAndrew Gallatin #define LINUX_SI_MAX_SIZE 128 23679363394SAndrew Gallatin #define LINUX_SI_PAD_SIZE ((LINUX_SI_MAX_SIZE/sizeof(int)) - 3) 23779363394SAndrew Gallatin 23879363394SAndrew Gallatin typedef struct siginfo { 23979363394SAndrew Gallatin int lsi_signo; 24079363394SAndrew Gallatin int lsi_errno; 24179363394SAndrew Gallatin int lsi_code; 24279363394SAndrew Gallatin 24379363394SAndrew Gallatin union { 24479363394SAndrew Gallatin int _pad[LINUX_SI_PAD_SIZE]; 24579363394SAndrew Gallatin struct { 24679363394SAndrew Gallatin linux_pid_t _pid; 24779363394SAndrew Gallatin linux_uid_t _uid; 24879363394SAndrew Gallatin } _kill; 24979363394SAndrew Gallatin 25079363394SAndrew Gallatin struct { 25179363394SAndrew Gallatin unsigned int _timer1; 25279363394SAndrew Gallatin unsigned int _timer2; 25379363394SAndrew Gallatin } _timer; 25479363394SAndrew Gallatin 25579363394SAndrew Gallatin struct { 25679363394SAndrew Gallatin linux_pid_t _pid; /* sender's pid */ 25779363394SAndrew Gallatin linux_uid_t _uid; /* sender's uid */ 25879363394SAndrew Gallatin union sigval _sigval; 25979363394SAndrew Gallatin } _rt; 26079363394SAndrew Gallatin 26179363394SAndrew Gallatin struct { 26279363394SAndrew Gallatin linux_pid_t _pid; /* which child */ 26379363394SAndrew Gallatin linux_uid_t _uid; /* sender's uid */ 26479363394SAndrew Gallatin int _status; /* exit code */ 26579363394SAndrew Gallatin linux_clock_t _utime; 26679363394SAndrew Gallatin linux_clock_t _stime; 26779363394SAndrew Gallatin } _sigchld; 26879363394SAndrew Gallatin 26979363394SAndrew Gallatin struct { 27079363394SAndrew Gallatin void *_addr; /* faulting insn/memory ref. */ 27179363394SAndrew Gallatin } _sigfault; 27279363394SAndrew Gallatin 27379363394SAndrew Gallatin struct { 27479363394SAndrew Gallatin int _band; /* POLL_IN, POLL_OUT, POLL_MSG */ 27579363394SAndrew Gallatin int _fd; 27679363394SAndrew Gallatin } _sigpoll; 27779363394SAndrew Gallatin } _sifields; 27879363394SAndrew Gallatin } linux_siginfo_t; 27979363394SAndrew Gallatin 28079363394SAndrew Gallatin #define lsi_pid _sifields._kill._pid 28179363394SAndrew Gallatin #define lsi_uid _sifields._kill._uid 28279363394SAndrew Gallatin #define lsi_status _sifields._sigchld._status 28379363394SAndrew Gallatin #define lsi_utime _sifields._sigchld._utime 28479363394SAndrew Gallatin #define lsi_stime _sifields._sigchld._stime 28579363394SAndrew Gallatin #define lsi_value _sifields._rt._sigval 28679363394SAndrew Gallatin #define lsi_int _sifields._rt._sigval.sival_int 28779363394SAndrew Gallatin #define lsi_ptr _sifields._rt._sigval.sival_ptr 28879363394SAndrew Gallatin #define lsi_addr _sifields._sigfault._addr 28979363394SAndrew Gallatin #define lsi_band _sifields._sigpoll._band 29079363394SAndrew Gallatin #define lsi_fd _sifields._sigpoll._fd 29179363394SAndrew Gallatin 29279363394SAndrew Gallatin 293d66a5066SPeter Wemm /* 294d66a5066SPeter Wemm * We make the stack look like Linux expects it when calling a signal 295d66a5066SPeter Wemm * handler, but use the BSD way of calling the handler and sigreturn(). 296d66a5066SPeter Wemm * This means that we need to pass the pointer to the handler too. 297d66a5066SPeter Wemm * It is appended to the frame to not interfere with the rest of it. 298d66a5066SPeter Wemm */ 299d66a5066SPeter Wemm struct linux_sigframe { 300d66a5066SPeter Wemm int sf_sig; 301d66a5066SPeter Wemm struct linux_sigcontext sf_sc; 30243bef515SMarcel Moolenaar linux_handler_t sf_handler; 303d66a5066SPeter Wemm }; 304d66a5066SPeter Wemm 30579363394SAndrew Gallatin struct linux_rt_sigframe { 30679363394SAndrew Gallatin int sf_sig; 30779363394SAndrew Gallatin linux_siginfo_t *sf_siginfo;; 30879363394SAndrew Gallatin struct linux_ucontext *sf_ucontext; 30979363394SAndrew Gallatin linux_siginfo_t sf_si; 31079363394SAndrew Gallatin struct linux_ucontext sf_sc; 31179363394SAndrew Gallatin linux_handler_t sf_handler; 31279363394SAndrew Gallatin }; 31379363394SAndrew Gallatin 31479363394SAndrew Gallatin 315c21dee17SSøren Schmidt extern int bsd_to_linux_signal[]; 316c21dee17SSøren Schmidt extern int linux_to_bsd_signal[]; 317d323ddf3SMatthew Dillon extern struct sysentvec linux_sysvec; 318d323ddf3SMatthew Dillon extern struct sysentvec elf_linux_sysvec; 31979363394SAndrew Gallatin void bsd_to_linux_sigset(sigset_t *bss, linux_sigset_t *lss); 320c21dee17SSøren Schmidt 32143bef515SMarcel Moolenaar /* 32243bef515SMarcel Moolenaar * Pluggable ioctl handlers 32343bef515SMarcel Moolenaar */ 32443bef515SMarcel Moolenaar struct linker_set; 32543bef515SMarcel Moolenaar struct linux_ioctl_args; 32643bef515SMarcel Moolenaar struct proc; 327c21dee17SSøren Schmidt 32843bef515SMarcel Moolenaar typedef int linux_ioctl_function_t(struct proc *, struct linux_ioctl_args *); 329c21dee17SSøren Schmidt 33043bef515SMarcel Moolenaar struct linux_ioctl_handler { 33143bef515SMarcel Moolenaar linux_ioctl_function_t *func; 33243bef515SMarcel Moolenaar int low, high; 333956d3333SMarcel Moolenaar }; 334956d3333SMarcel Moolenaar 33543bef515SMarcel Moolenaar int linux_ioctl_register_handler(struct linux_ioctl_handler *h); 33643bef515SMarcel Moolenaar int linux_ioctl_register_handlers(struct linker_set *s); 33743bef515SMarcel Moolenaar int linux_ioctl_unregister_handler(struct linux_ioctl_handler *h); 33843bef515SMarcel Moolenaar int linux_ioctl_unregister_handlers(struct linker_set *s); 339956d3333SMarcel Moolenaar 34043bef515SMarcel Moolenaar /* 34143bef515SMarcel Moolenaar * open/fcntl flags 34243bef515SMarcel Moolenaar */ 343c21dee17SSøren Schmidt #define LINUX_O_RDONLY 00 344c21dee17SSøren Schmidt #define LINUX_O_WRONLY 01 345c21dee17SSøren Schmidt #define LINUX_O_RDWR 02 346c21dee17SSøren Schmidt #define LINUX_O_CREAT 0100 347c21dee17SSøren Schmidt #define LINUX_O_EXCL 0200 348c21dee17SSøren Schmidt #define LINUX_O_NOCTTY 0400 349c21dee17SSøren Schmidt #define LINUX_O_TRUNC 01000 350c21dee17SSøren Schmidt #define LINUX_O_APPEND 02000 351c21dee17SSøren Schmidt #define LINUX_O_NONBLOCK 04000 352c21dee17SSøren Schmidt #define LINUX_O_NDELAY LINUX_O_NONBLOCK 353c21dee17SSøren Schmidt #define LINUX_O_SYNC 010000 354c21dee17SSøren Schmidt #define LINUX_FASYNC 020000 355c21dee17SSøren Schmidt 356c21dee17SSøren Schmidt #define LINUX_F_DUPFD 0 357c21dee17SSøren Schmidt #define LINUX_F_GETFD 1 358c21dee17SSøren Schmidt #define LINUX_F_SETFD 2 359c21dee17SSøren Schmidt #define LINUX_F_GETFL 3 360c21dee17SSøren Schmidt #define LINUX_F_SETFL 4 361c21dee17SSøren Schmidt #define LINUX_F_GETLK 5 362c21dee17SSøren Schmidt #define LINUX_F_SETLK 6 363c21dee17SSøren Schmidt #define LINUX_F_SETLKW 7 364c21dee17SSøren Schmidt #define LINUX_F_SETOWN 8 365c21dee17SSøren Schmidt #define LINUX_F_GETOWN 9 366c21dee17SSøren Schmidt 367c21dee17SSøren Schmidt #define LINUX_F_RDLCK 0 368c21dee17SSøren Schmidt #define LINUX_F_WRLCK 1 369c21dee17SSøren Schmidt #define LINUX_F_UNLCK 2 370c21dee17SSøren Schmidt 37143bef515SMarcel Moolenaar /* 37243bef515SMarcel Moolenaar * SystemV IPC defines 37343bef515SMarcel Moolenaar */ 374c21dee17SSøren Schmidt #define LINUX_SEMOP 1 375c21dee17SSøren Schmidt #define LINUX_SEMGET 2 376c21dee17SSøren Schmidt #define LINUX_SEMCTL 3 377c21dee17SSøren Schmidt #define LINUX_MSGSND 11 378c21dee17SSøren Schmidt #define LINUX_MSGRCV 12 379c21dee17SSøren Schmidt #define LINUX_MSGGET 13 380c21dee17SSøren Schmidt #define LINUX_MSGCTL 14 381c21dee17SSøren Schmidt #define LINUX_SHMAT 21 382c21dee17SSøren Schmidt #define LINUX_SHMDT 22 383c21dee17SSøren Schmidt #define LINUX_SHMGET 23 384c21dee17SSøren Schmidt #define LINUX_SHMCTL 24 385c21dee17SSøren Schmidt 386c21dee17SSøren Schmidt #define LINUX_IPC_RMID 0 387c21dee17SSøren Schmidt #define LINUX_IPC_SET 1 388c21dee17SSøren Schmidt #define LINUX_IPC_STAT 2 389c21dee17SSøren Schmidt #define LINUX_IPC_INFO 3 390c21dee17SSøren Schmidt 391c21dee17SSøren Schmidt #define LINUX_SHM_LOCK 11 392c21dee17SSøren Schmidt #define LINUX_SHM_UNLOCK 12 393c21dee17SSøren Schmidt #define LINUX_SHM_STAT 13 394c21dee17SSøren Schmidt #define LINUX_SHM_INFO 14 395c21dee17SSøren Schmidt 396c21dee17SSøren Schmidt #define LINUX_SHM_RDONLY 0x1000 397c21dee17SSøren Schmidt #define LINUX_SHM_RND 0x2000 398c21dee17SSøren Schmidt #define LINUX_SHM_REMAP 0x4000 399c21dee17SSøren Schmidt 40043bef515SMarcel Moolenaar /* semctl commands */ 4019b86a416SKATO Takenori #define LINUX_GETPID 11 4029b86a416SKATO Takenori #define LINUX_GETVAL 12 4039b86a416SKATO Takenori #define LINUX_GETALL 13 4049b86a416SKATO Takenori #define LINUX_GETNCNT 14 4059b86a416SKATO Takenori #define LINUX_GETZCNT 15 4069b86a416SKATO Takenori #define LINUX_SETVAL 16 4079b86a416SKATO Takenori #define LINUX_SETALL 17 4089b86a416SKATO Takenori 40943bef515SMarcel Moolenaar /* 41043bef515SMarcel Moolenaar * Socket defines 41143bef515SMarcel Moolenaar */ 412c21dee17SSøren Schmidt #define LINUX_SOCKET 1 413c21dee17SSøren Schmidt #define LINUX_BIND 2 414c21dee17SSøren Schmidt #define LINUX_CONNECT 3 415c21dee17SSøren Schmidt #define LINUX_LISTEN 4 416c21dee17SSøren Schmidt #define LINUX_ACCEPT 5 417c21dee17SSøren Schmidt #define LINUX_GETSOCKNAME 6 418c21dee17SSøren Schmidt #define LINUX_GETPEERNAME 7 419c21dee17SSøren Schmidt #define LINUX_SOCKETPAIR 8 420c21dee17SSøren Schmidt #define LINUX_SEND 9 421c21dee17SSøren Schmidt #define LINUX_RECV 10 422c21dee17SSøren Schmidt #define LINUX_SENDTO 11 423c21dee17SSøren Schmidt #define LINUX_RECVFROM 12 424c21dee17SSøren Schmidt #define LINUX_SHUTDOWN 13 425c21dee17SSøren Schmidt #define LINUX_SETSOCKOPT 14 426c21dee17SSøren Schmidt #define LINUX_GETSOCKOPT 15 427e76bba09SSøren Schmidt #define LINUX_SENDMSG 16 428e76bba09SSøren Schmidt #define LINUX_RECVMSG 17 429c21dee17SSøren Schmidt 430c21dee17SSøren Schmidt #define LINUX_AF_UNSPEC 0 431c21dee17SSøren Schmidt #define LINUX_AF_UNIX 1 432c21dee17SSøren Schmidt #define LINUX_AF_INET 2 433c21dee17SSøren Schmidt #define LINUX_AF_AX25 3 434c21dee17SSøren Schmidt #define LINUX_AF_IPX 4 435c21dee17SSøren Schmidt #define LINUX_AF_APPLETALK 5 436c21dee17SSøren Schmidt 437c21dee17SSøren Schmidt #define LINUX_SOL_SOCKET 1 438c21dee17SSøren Schmidt #define LINUX_SOL_IP 0 439c21dee17SSøren Schmidt #define LINUX_SOL_IPX 256 440c21dee17SSøren Schmidt #define LINUX_SOL_AX25 257 441c21dee17SSøren Schmidt #define LINUX_SOL_TCP 6 442c21dee17SSøren Schmidt #define LINUX_SOL_UDP 17 443c21dee17SSøren Schmidt 444c21dee17SSøren Schmidt #define LINUX_SO_DEBUG 1 445c21dee17SSøren Schmidt #define LINUX_SO_REUSEADDR 2 446c21dee17SSøren Schmidt #define LINUX_SO_TYPE 3 447c21dee17SSøren Schmidt #define LINUX_SO_ERROR 4 448c21dee17SSøren Schmidt #define LINUX_SO_DONTROUTE 5 449c21dee17SSøren Schmidt #define LINUX_SO_BROADCAST 6 450c21dee17SSøren Schmidt #define LINUX_SO_SNDBUF 7 451c21dee17SSøren Schmidt #define LINUX_SO_RCVBUF 8 452c21dee17SSøren Schmidt #define LINUX_SO_KEEPALIVE 9 453c21dee17SSøren Schmidt #define LINUX_SO_OOBINLINE 10 454c21dee17SSøren Schmidt #define LINUX_SO_NO_CHECK 11 455c21dee17SSøren Schmidt #define LINUX_SO_PRIORITY 12 456c21dee17SSøren Schmidt #define LINUX_SO_LINGER 13 457c21dee17SSøren Schmidt 458c21dee17SSøren Schmidt #define LINUX_IP_TOS 1 459c21dee17SSøren Schmidt #define LINUX_IP_TTL 2 46066ff6a3cSBill Fenner #define LINUX_IP_HDRINCL 3 46166ff6a3cSBill Fenner #define LINUX_IP_OPTIONS 4 46266ff6a3cSBill Fenner 46366ff6a3cSBill Fenner #define LINUX_IP_MULTICAST_IF 32 46466ff6a3cSBill Fenner #define LINUX_IP_MULTICAST_TTL 33 46566ff6a3cSBill Fenner #define LINUX_IP_MULTICAST_LOOP 34 46666ff6a3cSBill Fenner #define LINUX_IP_ADD_MEMBERSHIP 35 46766ff6a3cSBill Fenner #define LINUX_IP_DROP_MEMBERSHIP 36 468c21dee17SSøren Schmidt 46943bef515SMarcel Moolenaar struct linux_sockaddr { 47043bef515SMarcel Moolenaar u_short sa_family; 4713713cbffSMike Smith char sa_data[14]; 4723713cbffSMike Smith }; 4733713cbffSMike Smith 47443bef515SMarcel Moolenaar struct linux_ifmap { 47543bef515SMarcel Moolenaar u_long mem_start; 47643bef515SMarcel Moolenaar u_long mem_end; 47743bef515SMarcel Moolenaar u_short base_addr; 47843bef515SMarcel Moolenaar u_char irq; 47943bef515SMarcel Moolenaar u_char dma; 48043bef515SMarcel Moolenaar u_char port; 4813713cbffSMike Smith }; 4823713cbffSMike Smith 4833713cbffSMike Smith #define LINUX_IFHWADDRLEN 6 4843713cbffSMike Smith #define LINUX_IFNAMSIZ 16 48543bef515SMarcel Moolenaar 48643bef515SMarcel Moolenaar struct linux_ifreq { 48743bef515SMarcel Moolenaar union { 48843bef515SMarcel Moolenaar char ifrn_name[LINUX_IFNAMSIZ]; 4893713cbffSMike Smith } ifr_ifrn; 4903713cbffSMike Smith 4913713cbffSMike Smith union { 4923713cbffSMike Smith struct linux_sockaddr ifru_addr; 4933713cbffSMike Smith struct linux_sockaddr ifru_dstaddr; 4943713cbffSMike Smith struct linux_sockaddr ifru_broadaddr; 4953713cbffSMike Smith struct linux_sockaddr ifru_netmask; 4963713cbffSMike Smith struct linux_sockaddr ifru_hwaddr; 4973713cbffSMike Smith short ifru_flags; 4983713cbffSMike Smith int ifru_metric; 4993713cbffSMike Smith int ifru_mtu; 5003713cbffSMike Smith struct linux_ifmap ifru_map; 5013713cbffSMike Smith char ifru_slave[LINUX_IFNAMSIZ]; /* Just fits the size */ 50243bef515SMarcel Moolenaar linux_caddr_t ifru_data; 5033713cbffSMike Smith } ifr_ifru; 5043713cbffSMike Smith }; 5053713cbffSMike Smith 5063713cbffSMike Smith #define ifr_name ifr_ifrn.ifrn_name /* interface name */ 5073713cbffSMike Smith #define ifr_hwaddr ifr_ifru.ifru_hwaddr /* MAC address */ 5083713cbffSMike Smith 5091f3dad5aSBruce Evans #endif /* !_I386_LINUX_LINUX_H_ */ 510