$OpenBSD: syscalls.master,v 1.15 2004/07/13 21:04:28 millert Exp $

; OpenBSD COMPAT_BSDOS system call name/number "master" file.
; (See syscalls.conf to see what it is processed into.)
;
; Fields: number type [type-dependent ...]
;	number	system call number, must be in order
;	type	one of NOARGS, OBSOL, UNIMPL, NODEF, NOARGS, or one of
;		the compatibility options defined in syscalls.conf.
;
; types:
;	NOARGS	always included
;	OBSOL	obsolete, not included in system
;	UNIMPL	unimplemented, not included in system
;	NODEF	included, but don't define the syscall number
;	NOARGS	included, but don't define the syscall args structure
;
; The compat options are defined in the syscalls.conf file, and the
; compat option name is prefixed to the syscall name.  Other than
; that, they're like NODEF (for 'compat' options), or NOARGS (for
; 'libcompat' options).
;
; The type-dependent arguments are as follows:
; For NOARGS, NODEF, NOARGS, and compat syscalls:
;	{ pseudo-proto } [alias]
; For other syscalls:
;	[comment]
;
; #ifdef's, etc. may be included, and are copied to the output files.
; #include's are copied to the syscall switch definition file only.

#include <sys/param.h>
#include <sys/systm.h>
#include <sys/signal.h>
#include <sys/mount.h>
#include <sys/syscallargs.h>

#include <compat/bsdos/bsdos_syscallargs.h>

; Reserved/unimplemented system calls in the range 0-150 inclusive
; are reserved for use in future Berkeley releases.
; Additional system calls implemented in vendor and other
; redistributions should be placed in the reserved range at the end
; of the current calls.

0	NOARGS		{ int sys_nosys(void); } syscall
1	NOARGS		{ int sys_exit(int rval); }
2	NOARGS		{ int sys_fork(void); }
3	NOARGS		{ int sys_read(int fd, char *buf, u_int nbyte); }
4	NOARGS		{ int sys_write(int fd, char *buf, u_int nbyte); }
5	NOARGS		{ int sys_open(char *path, int flags, int mode); }
6	NOARGS		{ int sys_close(int fd); }
7	NOARGS		{ int sys_wait4(int pid, int *status, int options, \
			    struct rusage *rusage); }
8	NOARGS		{ int compat_43_sys_creat(char *path, \
			    int mode); } ocreat
9	NOARGS		{ int sys_link(char *path, char *link); }
10	NOARGS		{ int sys_unlink(char *path); }
11	OBSOL		execv
12	NOARGS		{ int sys_chdir(char *path); }
13	NOARGS		{ int sys_fchdir(int fd); }
14	NOARGS		{ int sys_mknod(char *path, int mode, int dev); }
15	NOARGS		{ int sys_chmod(char *path, int mode); }
16	NOARGS		{ int sys_chown(char *path, int uid, int gid); }
17	NOARGS		{ int sys_obreak(char *nsize); } break
18	NOARGS		{ int compat_25_sys_getfsstat(struct ostatfs *buf, \
			    long bufsize, int flags); }
19	NOARGS		{ long compat_43_sys_lseek(int fd, long offset, \
			    int whence); } olseek
20	NOARGS		{ pid_t sys_getpid(void); }
21	NOARGS		{ int sys_mount(int type, char *path, \
			    int flags, caddr_t data); }
22	NOARGS		{ int sys_unmount(char *path, int flags); }
23	NOARGS		{ int sys_setuid(uid_t uid); }
24	NOARGS		{ uid_t sys_getuid(void); }
25	NOARGS		{ uid_t sys_geteuid(void); }
#ifdef PTRACE
26	NOARGS		{ int sys_ptrace(int req, pid_t pid, \
			    caddr_t addr, int data); }
#else
26	UNIMPL		ptrace
#endif
27	NOARGS		{ int sys_recvmsg(int s, struct msghdr *msg, \
			    int flags); }
28	NOARGS		{ int sys_sendmsg(int s, caddr_t msg, int flags); }
29	NOARGS		{ int sys_recvfrom(int s, caddr_t buf, size_t len, \
			    int flags, caddr_t from, int *fromlenaddr); }
30	NOARGS		{ int sys_accept(int s, caddr_t name, int *anamelen); }
31	NOARGS		{ int sys_getpeername(int fdes, caddr_t asa, \
			    int *alen); }
32	NOARGS		{ int sys_getsockname(int fdes, caddr_t asa, \
			    int *alen); }
33	NOARGS		{ int sys_access(char *path, int flags); }
34	NOARGS		{ int sys_chflags(char *path, int flags); }
35	NOARGS		{ int sys_fchflags(int fd, int flags); }
36	NOARGS		{ int sys_sync(void); }
37	NOARGS		{ int sys_kill(int pid, int signum); }
38	NOARGS		{ int compat_43_sys_stat(char *path, \
			    struct stat43 *ub); } stat43
39	NOARGS		{ pid_t sys_getppid(void); }
40	NOARGS		{ int compat_43_sys_lstat(char *path, \
			    struct stat43 *ub); } lstat43
41	NOARGS		{ int sys_dup(u_int fd); }
42	NOARGS		{ int sys_opipe(void); }
43	NOARGS		{ gid_t sys_getegid(void); }
44	NOARGS		{ int sys_profil(caddr_t samples, u_int size, \
			    u_int offset, u_int scale); }
#ifdef KTRACE
45	NOARGS		{ int sys_ktrace(char *fname, int ops, int facs, \
			    int pid); }
#else
45	UNIMPL		ktrace
#endif
46	NOARGS		{ int sys_sigaction(int signum, struct sigaction *nsa, \
			    struct sigaction *osa); }
47	NOARGS		{ gid_t sys_getgid(void); }
48	NOARGS		{ int sys_sigprocmask(int how, sigset_t mask); }
49	NOARGS		{ int sys_getlogin(char *namebuf, u_int namelen); }
50	NOARGS		{ int sys_setlogin(char *namebuf); }
#ifdef ACCOUNTING
51	NOARGS		{ int sys_acct(char *path); }
#else
51	UNIMPL		acct
#endif
52	NOARGS		{ int sys_sigpending(void); }
53	NOARGS		{ int sys_osigaltstack(struct osigaltstack *nss, \
			    struct osigaltstack *oss); }
54	STD		{ int bsdos_sys_ioctl(int fd, u_long com, \
			    caddr_t data); }
55	NOARGS		{ int sys_reboot(int opt); }
56	NOARGS		{ int sys_revoke(char *path); }
57	NOARGS		{ int sys_symlink(char *path, char *link); }
58	NOARGS		{ int sys_readlink(char *path, char *buf, int count); }
59	NOARGS		{ int sys_execve(char *path, char **argp, \
			    char **envp); }
60	NOARGS		{ int sys_umask(int newmask); }
61	NOARGS		{ int sys_chroot(char *path); }
62	NOARGS		{ int compat_43_sys_fstat(int fd, struct stat43 *sb); } \
			    fstat43
63	NOARGS		{ int compat_43_sys_getkerninfo(int op, char *where, \
			    int *size, int arg); } ogetkerninfo
64	NOARGS		{ int compat_43_sys_getpagesize(void); } ogetpagesize
65	NOARGS		{ int sys_msync(void *addr, size_t len, int flags); }
66	NOARGS		{ int sys_vfork(void); }
67	OBSOL		vread
68	OBSOL		vwrite
69	NOARGS		{ int sys_sbrk(int incr); }
70	NOARGS		{ int sys_sstk(int incr); }
71	NOARGS		{ int compat_43_sys_mmap(caddr_t addr, size_t len, \
			    int prot, int flags, int fd, long pos); } ommap
72	NOARGS		{ int sys_ovadvise(int anom); } vadvise
73	NOARGS		{ int sys_munmap(caddr_t addr, size_t len); }
74	NOARGS		{ int sys_mprotect(caddr_t addr, size_t len, \
			    int prot); }
75	NOARGS		{ int sys_madvise(caddr_t addr, size_t len, \
			    int behav); }
76	OBSOL		vhangup
77	OBSOL		vlimit
78	NOARGS		{ int sys_mincore(caddr_t addr, size_t len, char *vec); }
79	NOARGS		{ int sys_getgroups(u_int gidsetsize, gid_t *gidset); }
80	NOARGS		{ int sys_setgroups(u_int gidsetsize, gid_t *gidset); }
81	NOARGS		{ int sys_getpgrp(void); }
82	NOARGS		{ int sys_setpgid(int pid, int pgid); }
83	NOARGS		{ int sys_setitimer(u_int which, \
			    struct itimerval *itv, struct itimerval *oitv); }
84	NOARGS		{ int compat_43_sys_wait(void); } owait
85	NOARGS		{ int compat_25_sys_swapon(char *name); }
86	NOARGS		{ int sys_getitimer(u_int which, \
			    struct itimerval *itv); }
87	NOARGS		{ int compat_43_sys_gethostname(char *hostname, \
			    u_int len); } ogethostname
88	NOARGS		{ int compat_43_sys_sethostname(char *hostname, \
			    u_int len); } osethostname
89	NOARGS		{ int compat_43_sys_getdtablesize(void); } \
			    ogetdtablesize
90	NOARGS		{ int sys_dup2(u_int from, u_int to); }
91	UNIMPL		getdopt
92	NOARGS		{ int sys_fcntl(int fd, int cmd, void *arg); }
93	NOARGS		{ int sys_select(u_int nd, fd_set *in, fd_set *ou, \
			    fd_set *ex, struct timeval *tv); }
94	UNIMPL		setdopt
95	NOARGS		{ int sys_fsync(int fd); }
96	NOARGS		{ int sys_setpriority(int which, int who, int prio); }
97	NOARGS		{ int sys_socket(int domain, int type, int protocol); }
98	NOARGS		{ int sys_connect(int s, caddr_t name, int namelen); }
99	NOARGS		{ int compat_43_sys_accept(int s, caddr_t name, \
			    int *anamelen); } oaccept
100	NOARGS		{ int sys_getpriority(int which, int who); }
101	NOARGS		{ int compat_43_sys_send(int s, caddr_t buf, int len, \
			    int flags); } osend
102	NOARGS		{ int compat_43_sys_recv(int s, caddr_t buf, int len, \
			    int flags); } orecv
103	NOARGS		{ int sys_sigreturn( struct sigcontext *scp); }
104	NOARGS		{ int sys_bind(int s, caddr_t name, int namelen); }
105	NOARGS		{ int sys_setsockopt(int s, int level, int name, \
			    caddr_t val, int valsize); }
106	NOARGS		{ int sys_listen(int s, int backlog); }
107	OBSOL		vtimes
108	NOARGS		{ int compat_43_sys_sigvec(int signum, \
			    struct sigvec *nsv, struct sigvec *osv); } osigvec
109	NOARGS		{ int compat_43_sys_sigblock(int mask); } osigblock
110	NOARGS		{ int compat_43_sys_sigsetmask(int mask); } osigsetmask
111	NOARGS		{ int sys_sigsuspend(int mask); }
112	NOARGS		{ int compat_43_sys_sigstack(struct sigstack *nss, \
			    struct sigstack *oss); } osigstack
113	NOARGS		{ int compat_43_sys_recvmsg(int s, \
			    struct omsghdr *msg, int flags); } orecvmsg
114	NOARGS		{ int compat_43_sys_sendmsg(int s, caddr_t msg, \
			    int flags); } osendmsg
#ifdef TRACE
115	NOARGS		{ int sys_vtrace(int request, int value); }
#else
115	OBSOL		vtrace
#endif
116	NOARGS		{ int sys_gettimeofday(struct timeval *tp, \
			    struct timezone *tzp); }
117	NOARGS		{ int sys_getrusage(int who, struct rusage *rusage); }
118	NOARGS		{ int sys_getsockopt(int s, int level, int name, \
			    caddr_t val, int *avalsize); }
119	OBSOL		resuba
120	NOARGS		{ int sys_readv(int fd, struct iovec *iovp, \
			    u_int iovcnt); }
121	NOARGS		{ int sys_writev(int fd, struct iovec *iovp, \
			    u_int iovcnt); }
122	NOARGS		{ int sys_settimeofday(struct timeval *tv, \
			    struct timezone *tzp); }
123	NOARGS		{ int sys_fchown(int fd, int uid, int gid); }
124	NOARGS		{ int sys_fchmod(int fd, int mode); }
125	NOARGS		{ int compat_43_sys_recvfrom(int s, caddr_t buf, \
			    size_t len, int flags, caddr_t from, \
			    int *fromlenaddr); } orecvfrom
126	NOARGS		{ int sys_setreuid(uid_t ruid, uid_t euid); }
127	NOARGS		{ int sys_setregid(gid_t rgid, gid_t egid); }
128	NOARGS		{ int sys_rename(char *from, char *to); }
129	NOARGS		{ int compat_43_sys_truncate(char *path, \
			    long length); } otruncate
130	NOARGS		{ int compat_43_sys_ftruncate(int fd, long length); } \
			    oftruncate
131	NOARGS		{ int sys_flock(int fd, int how); }
132	NOARGS		{ int sys_mkfifo(char *path, int mode); }
133	NOARGS		{ int sys_sendto(int s, caddr_t buf, size_t len, \
			    int flags, caddr_t to, int tolen); }
134	NOARGS		{ int sys_shutdown(int s, int how); }
135	NOARGS		{ int sys_socketpair(int domain, int type, \
			    int protocol, int *rsv); }
136	NOARGS		{ int sys_mkdir(char *path, int mode); }
137	NOARGS		{ int sys_rmdir(char *path); }
138	NOARGS		{ int sys_utimes(char *path, struct timeval *tptr); }
139	OBSOL		4.2 sigreturn
140	NOARGS		{ int sys_adjtime(struct timeval *delta, \
			    struct timeval *olddelta); }
141	NOARGS		{ int compat_43_sys_getpeername(int fdes, caddr_t asa, \
			    int *alen); } ogetpeername
142	NOARGS		{ int32_t compat_43_sys_gethostid(void); } ogethostid
143	NOARGS		{ int compat_43_sys_sethostid(int32_t hostid); } \
			    osethostid
144	NOARGS		{ int compat_43_sys_getrlimit(u_int which, \
			    struct ogetrlimit *rlp); } ogetrlimit
145	NOARGS		{ int compat_43_sys_setrlimit(u_int which, \
			    struct ogetrlimit *rlp); } osetrlimit
146	NOARGS		{ int compat_43_sys_killpg(int pgid, int signum); } \
			    okillpg
147	NOARGS		{ int sys_setsid(void); }
148	NOARGS		{ int sys_quotactl(char *path, int cmd, int uid, \
			    caddr_t arg); }
149	NOARGS		{ int compat_43_sys_quota(void); } oquota
150	NOARGS		{ int compat_43_sys_getsockname(int fdec, caddr_t asa, \
			    int *alen); } ogetsockname

; Syscalls 151-180 inclusive are reserved for vendor-specific
; system calls.  (This includes various calls added for compatibity
; with other Unix variants.)
; Some of these calls are now supported by BSD...
;
151	UNIMPL		sem_lock
152	UNIMPL		sem_wakeup
153	UNIMPL		asyncdaemon
154	UNIMPL
#if defined(NFSCLIENT) || defined(NFSSERVER)
155	NOARGS		{ int sys_nfssvc(int flag, caddr_t argp); }
#else
155	UNIMPL
#endif
156	NOARGS		{ int compat_43_sys_getdirentries(int fd, char *buf, \
			    u_int count, long *basep); } ogetdirentries
157	NOARGS		{ int compat_25_sys_statfs(char *path, \
			    struct ostatfs *buf); }
158	NOARGS		{ int compat_25_sys_fstatfs(int fd, \
			    struct ostatfs *buf); }
159	UNIMPL
160	UNIMPL
#ifdef NFSCLIENT
161	NOARGS		{ int sys_getfh(char *fname, fhandle_t *fhp); }
#else
161	UNIMPL		getfh
#endif
162	UNIMPL
163	UNIMPL
164	UNIMPL
165	UNIMPL
166	UNIMPL
167	UNIMPL
168	UNIMPL
169	UNIMPL
170	UNIMPL
; XXX more generally, never on machines where sizeof(void *) != sizeof(int)
#if defined(SYSVSHM) && !defined(alpha)
171	NOARGS		{ int compat_10_sys_shmsys(int which, int a2, int a3, \
			    int a4); }
#else
171	UNIMPL		shmsys
#endif
172	UNIMPL
173	UNIMPL
174	UNIMPL
175	UNIMPL
176	UNIMPL
177	UNIMPL		sfork
178	UNIMPL
179	UNIMPL		getdescriptor
180	UNIMPL		setdescriptor

; Syscalls 180-199 are used by/reserved for BSD
181	NOARGS		{ int sys_setgid(gid_t gid); }
182	NOARGS		{ int sys_setegid(gid_t egid); }
183	NOARGS		{ int sys_seteuid(uid_t euid); }
#ifdef LFS
184	NOARGS		{ int lfs_bmapv(fsid_t *fsidp, \
			    struct block_info *blkiov, int blkcnt); }
185	NOARGS		{ int lfs_markv(fsid_t *fsidp, \
			    struct block_info *blkiov, int blkcnt); }
186	NOARGS		{ int lfs_segclean(fsid_t *fsidp, u_long segment); }
187	NOARGS		{ int lfs_segwait(fsid_t *fsidp, struct timeval *tv); }
#else
184	UNIMPL
185	UNIMPL
186	UNIMPL
187	UNIMPL
#endif
188	NOARGS		{ int compat_35_sys_stat(char *path, \
			    struct stat35 *ub); } stat35
189	NOARGS		{ int compat_35_sys_fstat(int fd, \
			    struct stat35 *sb); } fstat35
190	NOARGS		{ int compat_35_sys_lstat(char *path, \
			    struct stat35 *ub); } lstat35
191	NOARGS		{ int sys_pathconf(char *path, int name); }
192	NOARGS		{ int sys_fpathconf(int fd, int name); }
193	UNIMPL
194	NOARGS		{ int sys_getrlimit(u_int which, struct rlimit *rlp); }
195	NOARGS		{ int sys_setrlimit(u_int which, struct rlimit *rlp); }
196	NOARGS		{ int sys_getdirentries(int fd, char *buf, \
			    u_int count, long *basep); }
197	NOARGS		{ caddr_t sys_mmap(caddr_t addr, size_t len, int prot, \
			    int flags, int fd, long pad, off_t pos); }
198	NOARGS		{ int sys_nosys(void); } __syscall
199	NOARGS		{ off_t sys_lseek(int fd, int pad, off_t offset, \
			    int whence); }
200	NOARGS		{ int sys_truncate(char *path, int pad, off_t length); }
201	NOARGS		{ int sys_ftruncate(int fd, int pad, off_t length); }
202	NOARGS		{ int sys___sysctl(int *name, u_int namelen, \
			    void *old, size_t *oldlenp, void *new, \
			    size_t newlen); }
203	NOARGS		{ int sys_mlock(caddr_t addr, size_t len); }
204	NOARGS		{ int sys_munlock(caddr_t addr, size_t len); }
205	NOARGS		{ int sys_undelete(char *path); }
206	UNIMPL
207	UNIMPL
208	UNIMPL
209	UNIMPL
210	UNIMPL
211	UNIMPL
212	UNIMPL
213	UNIMPL
214	UNIMPL
215	UNIMPL
216	UNIMPL
217	UNIMPL
218	UNIMPL
219	UNIMPL
; BSD/OS 3.0 starts here with the Net/OpenBSD SYSV* syscalls.  This needs
; checking against manpages to see how/if these differ.  (Probably not at all.)
#ifdef SYSVSEM
220	NOARGS		{ int sys___semctl(int semid, int semnum, int cmd, \
			    union semun *arg); }
221	NOARGS		{ int sys_semget(key_t key, int nsems, int semflg); }
222	NOARGS		{ int sys_semop(int semid, struct sembuf *sops, \
			    u_int nsops); }
; 223 is UNIMPL in BSD/OS
223	OBSOL		sys_semconfig
#else
220	UNIMPL		semctl
221	UNIMPL		semget
222	UNIMPL		semop
223	UNIMPL		semconfig
#endif
#ifdef SYSVMSG
224	NOARGS		{ int sys_msgctl(int msqid, int cmd, \
			    struct msqid_ds *buf); }
225	NOARGS		{ int sys_msgget(key_t key, int msgflg); }
226	NOARGS		{ int sys_msgsnd(int msqid, void *msgp, size_t msgsz, \
			    int msgflg); }
227	NOARGS		{ int sys_msgrcv(int msqid, void *msgp, size_t msgsz, \
			    long msgtyp, int msgflg); }
#else
224	UNIMPL		msgctl
225	UNIMPL		msgget
226	UNIMPL		msgsnd
227	UNIMPL		msgrcv
#endif
#ifdef SYSVSHM
228	NOARGS		{ int sys_shmat(int shmid, void *shmaddr, int shmflg); }
229	NOARGS		{ int sys_shmctl(int shmid, int cmd, \
			    struct shmid_ds *buf); }
230	NOARGS		{ int sys_shmdt(void *shmaddr); }
231	NOARGS		{ int sys_shmget(key_t key, int size, int shmflg); }
#else
228	UNIMPL		shmat
229	UNIMPL		shmctl
230	UNIMPL		shmdt
231	UNIMPL		shmget
#endif