syscalls.master revision 13203
1	$Id: syscalls.master,v 1.20 1995/12/15 04:36:01 peter Exp $
2;	from: @(#)syscalls.master	8.2 (Berkeley) 1/13/94
3;
4; System call name/number master file.
5; Processed to created init_sysent.c, syscalls.c and syscall.h.
6
7; Columns: number type nargs namespc name alt{name,tag,rtyp}/comments
8;	number	system call number, must be in order
9;	type	one of STD, OBSOL, UNIMPL, COMPAT
10;	namespc one of POSIX, BSD, NOHIDE
11;	name	psuedo-prototype of syscall routine
12;		If one of the following alts is different, then all appear:
13;	altname	name of system call if different
14;	alttag	name of args struct tag if different from [o]`name'"_args"
15;	altrtyp	return type if not int (bogus - syscalls always return int)
16;		for UNIMPL/OBSOL, name continues with comments
17
18; types:
19;	STD	always included
20;	COMPAT	included on COMPAT #ifdef
21;	LIBCOMPAT included on COMPAT #ifdef, and placed in syscall.h
22;	OBSOL	obsolete, not included in system, only specifies name
23;	UNIMPL	not implemented, placeholder only
24
25; #ifdef's, etc. may be included, and are copied to the output files.
26
27#include <sys/types.h>
28#include <sys/param.h>
29#include <sys/mount.h>
30#include <sys/sysent.h>
31#include <sys/sysproto.h>
32
33; Reserved/unimplemented system calls in the range 0-150 inclusive
34; are reserved for use in future Berkeley releases.
35; Additional system calls implemented in vendor and other
36; redistributions should be placed in the reserved range at the end
37; of the current calls.
38
390	STD	NOHIDE	{ int nosys(void); } syscall nosys_args int
401	STD	NOHIDE	{ void exit(int rval); } exit rexit_args void
412	STD	POSIX	{ int fork(void); }
423	STD	POSIX	{ int read(int fd, char *buf, u_int nbyte); }
434	STD	POSIX	{ int write(int fd, char *buf, u_int nbyte); }
445	STD	POSIX	{ int open(char *path, int flags, int mode); }
45; XXX should be		{ int open(const char *path, int flags, ...); }
46; but we're not ready for `const' or varargs.
47; XXX man page says `mode_t mode'.
486	STD	POSIX	{ int close(int fd); }
497	STD	BSD	{ int wait4(int pid, int *status, int options, \
50			    struct rusage *rusage); } wait4 wait_args int
518	COMPAT	BSD	{ int creat(char *path, int mode); }
529	STD	POSIX	{ int link(char *path, char *link); }
5310	STD	POSIX	{ int unlink(char *path); }
5411	OBSOL	NOHIDE	execv
5512	STD	POSIX	{ int chdir(char *path); }
5613	STD	BSD	{ int fchdir(int fd); }
5714	STD	POSIX	{ int mknod(char *path, int mode, int dev); }
5815	STD	POSIX	{ int chmod(char *path, int mode); }
5916	STD	POSIX	{ int chown(char *path, int uid, int gid); }
6017	STD	BSD	{ int obreak(char *nsize); } break obreak_args int
6118	STD	BSD	{ int getfsstat(struct statfs *buf, long bufsize, \
62			    int flags); }
6319	COMPAT	POSIX	{ long lseek(int fd, long offset, int whence); }
6420	STD	POSIX	{ pid_t getpid(void); }
6521	STD	BSD	{ int mount(int type, char *path, int flags, \
66			    caddr_t data); }
67; XXX 4.4lite2 uses `char *type' but we're not ready for that.
68; XXX `path' should have type `const char *' but we're not ready for that.
6922	STD	BSD	{ int unmount(char *path, int flags); }
7023	STD	POSIX	{ int setuid(uid_t uid); }
7124	STD	POSIX	{ uid_t getuid(void); }
7225	STD	POSIX	{ uid_t geteuid(void); }
7326	STD	BSD	{ int ptrace(int req, pid_t pid, caddr_t addr, \
74			    int data); }
7527	STD	BSD	{ int recvmsg(int s, struct msghdr *msg, int flags); }
7628	STD	BSD	{ int sendmsg(int s, caddr_t msg, int flags); }
7729	STD	BSD	{ int recvfrom(int s, caddr_t buf, size_t len, \
78			    int flags, caddr_t from, int *fromlenaddr); }
7930	STD	BSD	{ int accept(int s, caddr_t name, int *anamelen); }
8031	STD	BSD	{ int getpeername(int fdes, caddr_t asa, int *alen); }
8132	STD	BSD	{ int getsockname(int fdes, caddr_t asa, int *alen); }
8233	STD	POSIX	{ int access(char *path, int flags); }
8334	STD	BSD	{ int chflags(char *path, int flags); }
8435	STD	BSD	{ int fchflags(int fd, int flags); }
8536	STD	BSD	{ int sync(void); }
8637	STD	POSIX	{ int kill(int pid, int signum); }
8738	COMPAT	POSIX	{ int stat(char *path, struct ostat *ub); }
8839	STD	POSIX	{ pid_t getppid(void); }
8940	COMPAT	POSIX	{ int lstat(char *path, struct ostat *ub); }
9041	STD	POSIX	{ int dup(u_int fd); }
9142	STD	POSIX	{ int pipe(void); }
9243	STD	POSIX	{ gid_t getegid(void); }
9344	STD	BSD	{ int profil(caddr_t samples, u_int size, \
94			    u_int offset, u_int scale); }
9545	STD	BSD	{ int ktrace(char *fname, int ops, int facs, \
96			    int pid); }
9746	STD	POSIX	{ int sigaction(int signum, struct sigaction *nsa, \
98			    struct sigaction *osa); }
9947	STD	POSIX	{ gid_t getgid(void); }
10048	STD	POSIX	{ int sigprocmask(int how, sigset_t mask); }
10149	STD	BSD	{ int getlogin(char *namebuf, u_int namelen); }
10250	STD	BSD	{ int setlogin(char *namebuf); }
10351	STD	BSD	{ int acct(char *path); }
10452	STD	POSIX	{ int sigpending(void); }
10553	STD	BSD	{ int sigaltstack(struct sigaltstack *nss, \
106			    struct sigaltstack *oss); }
10754	STD	POSIX	{ int ioctl(int fd, u_long com, caddr_t data); }
10855	STD	BSD	{ int reboot(int opt); }
10956	STD	POSIX	{ int revoke(char *path); }
11057	STD	POSIX	{ int symlink(char *path, char *link); }
11158	STD	POSIX	{ int readlink(char *path, char *buf, int count); }
11259	STD	POSIX	{ int execve(char *fname, char **argv, char **envv); }
11360	STD	POSIX	{ int umask(int newmask); } umask umask_args mode_t
11461	STD	BSD	{ int chroot(char *path); }
11562	COMPAT	POSIX	{ int fstat(int fd, struct ostat *sb); }
11663	COMPAT	BSD	{ int getkerninfo(int op, char *where, int *size, \
117			    int arg); } getkerninfo getkerninfo_args int
11864	COMPAT	BSD	{ int getpagesize(void); } \
119			    getpagesize getpagesize_args int
12065	STD	BSD	{ int msync(caddr_t addr, int len, int flags); }
121; XXX should be		{ int msync(caddr_t addr, size_t len, int flags); }
122; but man page and old args struct have `int len'.
12366	NOARGS	BSD	{ int vfork(void); } vfork fork_args int
12467	OBSOL	NOHIDE	vread
12568	OBSOL	NOHIDE	vwrite
12669	STD	BSD	{ int sbrk(int incr); }
12770	STD	BSD	{ int sstk(int incr); }
12871	COMPAT	BSD	{ int mmap(caddr_t addr, int len, int prot, \
129			    int flags, int fd, long pos); }
130; XXX should be		{ int mmap(caddr_t addr, size_t len, int prot,
131;			    int flags, int fd, long pos); }
132; but old args struct has `int len'.
13372	STD	BSD	{ int ovadvise(int anom); } vadvise ovadvise_args int
13473	STD	BSD	{ int munmap(caddr_t addr, int len); }
135; XXX should be		{ int munmap(caddr_t addr, size_t len); }
136; but man page and old args struct have `int len'.
13774	STD	BSD	{ int mprotect(caddr_t addr, int len, int prot); }
138; XXX should be		{ int mprotect(caddr_t addr, size_t len, int prot); }
139; but man page and old args struct have `int len'.
14075	STD	BSD	{ int madvise(caddr_t addr, int len, int behav); }
141; XXX should be		{ int madvise(caddr_t addr, size_t len, int behav); }
142; but man page, madvise() prototype and old args struct have `int len'.
14376	OBSOL	NOHIDE	vhangup
14477	OBSOL	NOHIDE	vlimit
14578	STD	BSD	{ int mincore(caddr_t addr, int len, char *vec); }
146; XXX should be		{ int mincore(caddr_t addr, size_t len, char *vec); }
147; but man page, and old args struct have `int len'.
148; XXX mincore() prototype isn't in <sys/mman.h>.
14979	STD	POSIX	{ int getgroups(u_int gidsetsize, gid_t *gidset); }
15080	STD	POSIX	{ int setgroups(u_int gidsetsize, gid_t *gidset); }
15181	STD	POSIX	{ int getpgrp(void); }
15282	STD	POSIX	{ int setpgid(int pid, int pgid); }
15383	STD	BSD	{ int setitimer(u_int which, struct itimerval *itv, \
154			    struct itimerval *oitv); }
15584	COMPAT	BSD	{ int wait(void); }
15685	STD	BSD	{ int swapon(char *name); }
15786	STD	BSD	{ int getitimer(u_int which, struct itimerval *itv); }
15887	COMPAT	BSD	{ int gethostname(char *hostname, u_int len); } \
159			    gethostname gethostname_args int
16088	COMPAT	BSD	{ int sethostname(char *hostname, u_int len); } \
161			    sethostname sethostname_args int
16289	STD	BSD	{ int getdtablesize(void); }
16390	STD	POSIX	{ int dup2(u_int from, u_int to); }
16491	UNIMPL	BSD	getdopt
16592	STD	POSIX	{ int fcntl(int fd, int cmd, int arg); }
166; XXX should be		{ int fcntl(int fd, int cmd, ...); }
167; but we're not ready for varargs.
168; XXX man page says `int arg' too.
16993	STD	BSD	{ int select(u_int nd, fd_set *in, fd_set *ou, \
170			    fd_set *ex, struct timeval *tv); }
17194	UNIMPL	BSD	setdopt
17295	STD	POSIX	{ int fsync(int fd); }
17396	STD	BSD	{ int setpriority(int which, int who, int prio); }
17497	STD	BSD	{ int socket(int domain, int type, int protocol); }
17598	STD	BSD	{ int connect(int s, caddr_t name, int namelen); }
17699	CPT_NOA	BSD	{ int accept(int s, caddr_t name, int *anamelen); } \
177			    accept accept_args int
178100	STD	BSD	{ int getpriority(int which, int who); }
179101	COMPAT	BSD	{ int send(int s, caddr_t buf, int len, int flags); }
180102	COMPAT	BSD	{ int recv(int s, caddr_t buf, int len, int flags); }
181103	STD	BSD	{ int sigreturn(struct sigcontext *sigcntxp); }
182104	STD	BSD	{ int bind(int s, caddr_t name, int namelen); }
183105	STD	BSD	{ int setsockopt(int s, int level, int name, \
184			    caddr_t val, int valsize); }
185106	STD	BSD	{ int listen(int s, int backlog); }
186107	OBSOL	NOHIDE	vtimes
187108	COMPAT	BSD	{ int sigvec(int signum, struct sigvec *nsv, \
188			    struct sigvec *osv); }
189109	COMPAT	BSD	{ int sigblock(int mask); }
190110	COMPAT	BSD	{ int sigsetmask(int mask); }
191111	STD	POSIX	{ int sigsuspend(int mask); }
192112	COMPAT	BSD	{ int sigstack(struct sigstack *nss, \
193			    struct sigstack *oss); }
194113	COMPAT	BSD	{ int recvmsg(int s, struct omsghdr *msg, int flags); }
195114	COMPAT	BSD	{ int sendmsg(int s, caddr_t msg, int flags); }
196115	OBSOL	NOHIDE	vtrace
197116	STD	BSD	{ int gettimeofday(struct timeval *tp, \
198			    struct timezone *tzp); }
199117	STD	BSD	{ int getrusage(int who, struct rusage *rusage); }
200118	STD	BSD	{ int getsockopt(int s, int level, int name, \
201			    caddr_t val, int *avalsize); }
202119	UNIMPL	NOHIDE	nosys
203120	STD	BSD	{ int readv(int fd, struct iovec *iovp, u_int iovcnt); }
204121	STD	BSD	{ int writev(int fd, struct iovec *iovp, \
205			    u_int iovcnt); }
206122	STD	BSD	{ int settimeofday(struct timeval *tv, \
207			    struct timezone *tzp); }
208123	STD	BSD	{ int fchown(int fd, int uid, int gid); }
209124	STD	BSD	{ int fchmod(int fd, int mode); }
210125	CPT_NOA	BSD	{ int recvfrom(int s, caddr_t buf, size_t len, \
211			    int flags, caddr_t from, int *fromlenaddr); } \
212			    recvfrom recvfrom_args int
213126	STD	BSD	{ int setreuid(int ruid, int euid); }
214127	STD	BSD	{ int setregid(int rgid, int egid); }
215128	STD	POSIX	{ int rename(char *from, char *to); }
216129	COMPAT	BSD	{ int truncate(char *path, long length); }
217130	COMPAT	BSD	{ int ftruncate(int fd, long length); }
218131	STD	BSD	{ int flock(int fd, int how); }
219132	STD	POSIX	{ int mkfifo(char *path, int mode); }
220133	STD	BSD	{ int sendto(int s, caddr_t buf, size_t len, \
221			    int flags, caddr_t to, int tolen); }
222134	STD	BSD	{ int shutdown(int s, int how); }
223135	STD	BSD	{ int socketpair(int domain, int type, int protocol, \
224			    int *rsv); }
225136	STD	POSIX	{ int mkdir(char *path, int mode); }
226137	STD	POSIX	{ int rmdir(char *path); }
227138	STD	BSD	{ int utimes(char *path, struct timeval *tptr); }
228139	OBSOL	NOHIDE	4.2 sigreturn
229140	STD	BSD	{ int adjtime(struct timeval *delta, \
230			    struct timeval *olddelta); }
231141	COMPAT	BSD	{ int getpeername(int fdes, caddr_t asa, int *alen); }
232142	COMPAT	BSD	{ long gethostid(void); }
233143	COMPAT	BSD	{ int sethostid(long hostid); }
234144	COMPAT	BSD	{ int getrlimit(u_int which, struct ogetrlimit *rlp); }
235145	COMPAT	BSD	{ int setrlimit(u_int which, struct ogetrlimit *rlp); }
236146	COMPAT	BSD	{ int killpg(int pgid, int signum); }
237147	STD	POSIX	{ int setsid(void); }
238148	STD	BSD	{ int quotactl(char *path, int cmd, int uid, \
239			    caddr_t arg); }
240149	COMPAT	BSD	{ int quota(void); }
241150	CPT_NOA	BSD	{ int getsockname(int fdec, caddr_t asa, int *alen); }\
242			    getsockname getsockname_args int
243
244; Syscalls 151-180 inclusive are reserved for vendor-specific
245; system calls.  (This includes various calls added for compatibity
246; with other Unix variants.)
247; Some of these calls are now supported by BSD...
248151	UNIMPL	NOHIDE	nosys
249152	UNIMPL	NOHIDE	nosys
250153	UNIMPL	NOHIDE	nosys
251154	UNIMPL	NOHIDE	nosys
252#ifdef NFS
253155	STD	BSD	{ int nfssvc(int flag, caddr_t argp); }
254#else
255155	UNIMPL	BSD	nosys
256#endif
257156	COMPAT	BSD	{ int getdirentries(int fd, char *buf, u_int count, \
258			    long *basep); }
259157	STD	BSD	{ int statfs(char *path, struct statfs *buf); }
260158	STD	BSD	{ int fstatfs(int fd, struct statfs *buf); }
261159	UNIMPL	NOHIDE	nosys
262160	UNIMPL	NOHIDE	nosys
263#ifdef NFS
264161	STD	BSD	{ int getfh(char *fname, fhandle_t *fhp); }
265#else
266161	UNIMPL	BSD	nosys
267#endif
268162	STD	BSD	{ int getdomainname(char *domainname, int len); }
269163	STD	BSD	{ int setdomainname(char *domainname, int len); }
270164	STD	BSD	{ int uname(struct utsname *name); }
271165	STD	BSD	{ int sysarch(int op, char *parms); }
272166	STD	BSD	{ int rtprio(int function, pid_t pid, \
273			    struct rtprio *rtp); }
274167	UNIMPL	NOHIDE	nosys
275168	UNIMPL	NOHIDE	nosys
276#ifdef SYSVSEM
277169	STD	BSD	{ int semsys(int which, int a2, int a3, int a4, \
278			    int a5); }
279; XXX should be		{ int semsys(int which, ...); }
280#else
281169	UNIMPL	NOHIDE	nosys
282#endif
283#ifdef SYSVMSG
284170	STD	BSD	{ int msgsys(int which, int a2, int a3, int a4, \
285			    int a5, int a6); }
286; XXX should be		{ int msgsys(int which, ...); }
287#else
288170	UNIMPL	NOHIDE nosys
289#endif
290#ifdef SYSVSHM
291171	STD	BSD	{ int shmsys(int which, int a2, int a3, int a4); }
292; XXX should be		{ int shmsys(int which, ...); }
293#else
294171	UNIMPL	BSD	nosys
295#endif
296172	UNIMPL	NOHIDE	nosys
297173	UNIMPL	NOHIDE	nosys
298174	UNIMPL	NOHIDE	nosys
299175	UNIMPL	NOHIDE	nosys
300176	STD	BSD	{ int ntp_adjtime(struct timex *tp); }
301177	UNIMPL	NOHIDE	nosys
302178	UNIMPL	NOHIDE	nosys
303179	UNIMPL	NOHIDE	nosys
304180	UNIMPL	NOHIDE	nosys
305
306; Syscalls 180-199 are used by/reserved for BSD
307181	STD	POSIX	{ int setgid(gid_t gid); }
308182	STD	BSD	{ int setegid(gid_t egid); }
309183	STD	BSD	{ int seteuid(uid_t euid); }
310#ifdef LFS
311184	STD	BSD	{ int lfs_bmapv(fsid_t *fsidp, \
312			    struct block_info *blkiov, int blkcnt); }
313185	STD	BSD	{ int lfs_markv(fsid_t *fsidp, \
314			    struct block_info *blkiov, int blkcnt); }
315186	STD	BSD	{ int lfs_segclean(fsid_t *fsidp, u_long segment); }
316187	STD	BSD	{ int lfs_segwait(fsid_t *fsidp, struct timeval *tv); }
317#else
318184	UNIMPL	BSD	nosys
319185	UNIMPL	BSD	nosys
320186	UNIMPL	BSD	nosys
321187	UNIMPL	BSD	nosys
322#endif
323188	STD	POSIX	{ int stat(char *path, struct stat *ub); }
324189	STD	POSIX	{ int fstat(int fd, struct stat *sb); }
325190	STD	POSIX	{ int lstat(char *path, struct stat *ub); }
326191	STD	POSIX	{ int pathconf(char *path, int name); }
327192	STD	POSIX	{ int fpathconf(int fd, int name); }
328193	UNIMPL	NOHIDE	nosys
329194	STD	BSD	{ int getrlimit(u_int which, \
330			    struct orlimit *rlp); } \
331			    getrlimit __getrlimit_args int
332195	STD	BSD	{ int setrlimit(u_int which, \
333			    struct orlimit *rlp); } \
334			    setrlimit __setrlimit_args int
335196	STD	BSD	{ int getdirentries(int fd, char *buf, u_int count, \
336			    long *basep); }
337197	STD	BSD	{ caddr_t mmap(caddr_t addr, size_t len, int prot, \
338			    int flags, int fd, long pad, off_t pos); }
339198	STD	NOHIDE	{ int nosys(void); } __syscall __syscall_args int
340199	STD	POSIX	{ off_t lseek(int fd, int pad, off_t offset, \
341			    int whence); }
342200	STD	BSD	{ int truncate(char *path, int pad, off_t length); }
343201	STD	BSD	{ int ftruncate(int fd, int pad, off_t length); }
344202	STD	BSD	{ int __sysctl(int *name, u_int namelen, void *old, \
345			    size_t *oldlenp, void *new, size_t newlen); } \
346			    __sysctl sysctl_args int
347; properly, __sysctl should be a NOHIDE, but making an exception
348; here allows to avoid one in libc/sys/Makefile.inc.
349203	STD	BSD	{ int mlock(caddr_t addr, size_t len); }
350204	STD	BSD	{ int munlock(caddr_t addr, size_t len); }
351205	UNIMPL	NOHIDE	nosys
352206	UNIMPL	NOHIDE	nosys
353207	UNIMPL	NOHIDE	nosys
354208	UNIMPL	NOHIDE	nosys
355209	UNIMPL	NOHIDE	nosys
356
357;
358; The following are reserved for loadable syscalls
359;
360210	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
361211	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
362212	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
363213	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
364214	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
365215	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
366216	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
367217	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
368218	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
369219	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
370
371;
372; The following were originally used in NetBSD.
373;
374#ifdef SYSVSEM
375220	STD	BSD	{ int __semctl(int semid, int semnum, int cmd, \
376			    union semun *arg); }
377221	STD	BSD	{ int semget(key_t key, int nsems, int semflg); }
378222	STD	BSD	{ int semop(int semid, struct sembuf *sops, \
379			    u_int nsops); }
380223	STD	BSD	{ int semconfig(int flag); }
381#else
382220	UNIMPL	BSD	semctl
383221	UNIMPL	BSD	semget
384222	UNIMPL	BSD	semop
385223	UNIMPL	BSD	semconfig
386#endif
387#ifdef SYSVMSG
388224	STD	BSD	{ int msgctl(int msqid, int cmd, \
389			    struct msqid_ds *buf); }
390225	STD	BSD	{ int msgget(key_t key, int msgflg); }
391226	STD	BSD	{ int msgsnd(int msqid, void *msgp, size_t msgsz, \
392			    int msgflg); }
393227	STD	BSD	{ int msgrcv(int msqid, void *msgp, size_t msgsz, \
394			    long msgtyp, int msgflg); }
395#else
396224	UNIMPL	BSD	msgctl
397225	UNIMPL	BSD	msgget
398226	UNIMPL	BSD	msgsnd
399227	UNIMPL	BSD	msgrcv
400#endif
401#ifdef SYSVSHM
402228	STD	BSD	{ int shmat(int shmid, void *shmaddr, int shmflg); }
403229	STD	BSD	{ int shmctl(int shmid, int cmd, \
404			    struct shmid_ds *buf); }
405230	STD	BSD	{ int shmdt(void *shmaddr); }
406231	STD	BSD	{ int shmget(key_t key, int size, int shmflg); }
407#else
408228	UNIMPL	BSD	shmat
409229	UNIMPL	BSD	shmctl
410230	UNIMPL	BSD	shmdt
411231	UNIMPL	BSD	shmget
412#endif
413