xref: /freebsd/sys/kern/syscalls.master (revision 4a0f765fbf09711e612e86fce8bb09ec43f482d9)
1	$Id$
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/param.h>
28#include <sys/sysent.h>
29#include <sys/sysproto.h>
30
31; Reserved/unimplemented system calls in the range 0-150 inclusive
32; are reserved for use in future Berkeley releases.
33; Additional system calls implemented in vendor and other
34; redistributions should be placed in the reserved range at the end
35; of the current calls.
36
370	STD	NOHIDE	{ int nosys(void); } syscall nosys_args int
381	STD	NOHIDE	{ void exit(int rval); } exit rexit_args void
392	STD	POSIX	{ int fork(void); }
403	STD	POSIX	{ int read(int fd, char *buf, u_int nbyte); }
414	STD	POSIX	{ int write(int fd, char *buf, u_int nbyte); }
425	STD	POSIX	{ int open(char *path, int flags, int mode); }
43; XXX should be		{ int open(const char *path, int flags, ...); }
44; but we're not ready for `const' or varargs.
45; XXX man page says `mode_t mode'.
466	STD	POSIX	{ int close(int fd); }
477	STD	BSD	{ int wait4(int pid, int *status, int options, \
48			    struct rusage *rusage); } wait4 wait_args int
498	COMPAT	BSD	{ int creat(char *path, int mode); }
509	STD	POSIX	{ int link(char *path, char *link); }
5110	STD	POSIX	{ int unlink(char *path); }
5211	OBSOL	NOHIDE	execv
5312	STD	POSIX	{ int chdir(char *path); }
5413	STD	BSD	{ int fchdir(int fd); }
5514	STD	POSIX	{ int mknod(char *path, int mode, int dev); }
5615	STD	POSIX	{ int chmod(char *path, int mode); }
5716	STD	POSIX	{ int chown(char *path, int uid, int gid); }
5817	STD	BSD	{ int obreak(char *nsize); } break obreak_args int
5918	STD	BSD	{ int getfsstat(struct statfs *buf, long bufsize, \
60			    int flags); }
6119	COMPAT	POSIX	{ long lseek(int fd, long offset, int whence); }
6220	STD	POSIX	{ pid_t getpid(void); }
6321	STD	BSD	{ int mount(char *type, char *path, int flags, \
64			    caddr_t data); }
65; XXX 4.4lite2 uses `char *type' but we're not ready for that.
66; XXX `path' should have type `const char *' but we're not ready for that.
6722	STD	BSD	{ int unmount(char *path, int flags); }
6823	STD	POSIX	{ int setuid(uid_t uid); }
6924	STD	POSIX	{ uid_t getuid(void); }
7025	STD	POSIX	{ uid_t geteuid(void); }
7126	STD	BSD	{ int ptrace(int req, pid_t pid, caddr_t addr, \
72			    int data); }
7327	STD	BSD	{ int recvmsg(int s, struct msghdr *msg, int flags); }
7428	STD	BSD	{ int sendmsg(int s, caddr_t msg, int flags); }
7529	STD	BSD	{ int recvfrom(int s, caddr_t buf, size_t len, \
76			    int flags, caddr_t from, int *fromlenaddr); }
7730	STD	BSD	{ int accept(int s, caddr_t name, int *anamelen); }
7831	STD	BSD	{ int getpeername(int fdes, caddr_t asa, int *alen); }
7932	STD	BSD	{ int getsockname(int fdes, caddr_t asa, int *alen); }
8033	STD	POSIX	{ int access(char *path, int flags); }
8134	STD	BSD	{ int chflags(char *path, int flags); }
8235	STD	BSD	{ int fchflags(int fd, int flags); }
8336	STD	BSD	{ int sync(void); }
8437	STD	POSIX	{ int kill(int pid, int signum); }
8538	COMPAT	POSIX	{ int stat(char *path, struct ostat *ub); }
8639	STD	POSIX	{ pid_t getppid(void); }
8740	COMPAT	POSIX	{ int lstat(char *path, struct ostat *ub); }
8841	STD	POSIX	{ int dup(u_int fd); }
8942	STD	POSIX	{ int pipe(void); }
9043	STD	POSIX	{ gid_t getegid(void); }
9144	STD	BSD	{ int profil(caddr_t samples, u_int size, \
92			    u_int offset, u_int scale); }
9345	STD	BSD	{ int ktrace(char *fname, int ops, int facs, \
94			    int pid); }
9546	STD	POSIX	{ int sigaction(int signum, struct sigaction *nsa, \
96			    struct sigaction *osa); }
9747	STD	POSIX	{ gid_t getgid(void); }
9848	STD	POSIX	{ int sigprocmask(int how, sigset_t mask); }
99; XXX note nonstandard (bogus) calling convention - the libc stub passes
100; us the mask, not a pointer to it, and we return the old mask as the
101; (int) return value.
10249	STD	BSD	{ int getlogin(char *namebuf, u_int namelen); }
10350	STD	BSD	{ int setlogin(char *namebuf); }
10451	STD	BSD	{ int acct(char *path); }
10552	STD	POSIX	{ int sigpending(void); }
10653	STD	BSD	{ int sigaltstack(struct sigaltstack *nss, \
107			    struct sigaltstack *oss); }
10854	STD	POSIX	{ int ioctl(int fd, u_long com, caddr_t data); }
10955	STD	BSD	{ int reboot(int opt); }
11056	STD	POSIX	{ int revoke(char *path); }
11157	STD	POSIX	{ int symlink(char *path, char *link); }
11258	STD	POSIX	{ int readlink(char *path, char *buf, int count); }
11359	STD	POSIX	{ int execve(char *fname, char **argv, char **envv); }
11460	STD	POSIX	{ int umask(int newmask); } umask umask_args int
11561	STD	BSD	{ int chroot(char *path); }
11662	COMPAT	POSIX	{ int fstat(int fd, struct ostat *sb); }
11763	COMPAT	BSD	{ int getkerninfo(int op, char *where, int *size, \
118			    int arg); } getkerninfo getkerninfo_args int
11964	COMPAT	BSD	{ int getpagesize(void); } \
120			    getpagesize getpagesize_args int
12165	STD	BSD	{ int msync(caddr_t addr, size_t len, int flags); }
12266	STD	BSD	{ int vfork(void); }
12367	OBSOL	NOHIDE	vread
12468	OBSOL	NOHIDE	vwrite
12569	STD	BSD	{ int sbrk(int incr); }
12670	STD	BSD	{ int sstk(int incr); }
12771	COMPAT	BSD	{ int mmap(caddr_t addr, int len, int prot, \
128			    int flags, int fd, long pos); }
12972	STD	BSD	{ int ovadvise(int anom); } vadvise ovadvise_args int
13073	STD	BSD	{ int munmap(caddr_t addr, size_t len); }
13174	STD	BSD	{ int mprotect(caddr_t addr, size_t len, int prot); }
13275	STD	BSD	{ int madvise(caddr_t addr, size_t len, int behav); }
13376	OBSOL	NOHIDE	vhangup
13477	OBSOL	NOHIDE	vlimit
13578	STD	BSD	{ int mincore(caddr_t addr, size_t len, char *vec); }
13679	STD	POSIX	{ int getgroups(u_int gidsetsize, gid_t *gidset); }
13780	STD	POSIX	{ int setgroups(u_int gidsetsize, gid_t *gidset); }
13881	STD	POSIX	{ int getpgrp(void); }
13982	STD	POSIX	{ int setpgid(int pid, int pgid); }
14083	STD	BSD	{ int setitimer(u_int which, struct itimerval *itv, \
141			    struct itimerval *oitv); }
14284	COMPAT	BSD	{ int wait(void); }
14385	STD	BSD	{ int swapon(char *name); }
14486	STD	BSD	{ int getitimer(u_int which, struct itimerval *itv); }
14587	COMPAT	BSD	{ int gethostname(char *hostname, u_int len); } \
146			    gethostname gethostname_args int
14788	COMPAT	BSD	{ int sethostname(char *hostname, u_int len); } \
148			    sethostname sethostname_args int
14989	STD	BSD	{ int getdtablesize(void); }
15090	STD	POSIX	{ int dup2(u_int from, u_int to); }
15191	UNIMPL	BSD	getdopt
15292	STD	POSIX	{ int fcntl(int fd, int cmd, int arg); }
153; XXX should be		{ int fcntl(int fd, int cmd, ...); }
154; but we're not ready for varargs.
155; XXX man page says `int arg' too.
15693	STD	BSD	{ int select(int nd, fd_set *in, fd_set *ou, \
157			    fd_set *ex, struct timeval *tv); }
15894	UNIMPL	BSD	setdopt
15995	STD	POSIX	{ int fsync(int fd); }
16096	STD	BSD	{ int setpriority(int which, int who, int prio); }
16197	STD	BSD	{ int socket(int domain, int type, int protocol); }
16298	STD	BSD	{ int connect(int s, caddr_t name, int namelen); }
16399	CPT_NOA	BSD	{ int accept(int s, caddr_t name, int *anamelen); } \
164			    accept accept_args int
165100	STD	BSD	{ int getpriority(int which, int who); }
166101	COMPAT	BSD	{ int send(int s, caddr_t buf, int len, int flags); }
167102	COMPAT	BSD	{ int recv(int s, caddr_t buf, int len, int flags); }
168103	STD	BSD	{ int sigreturn(struct sigcontext *sigcntxp); }
169104	STD	BSD	{ int bind(int s, caddr_t name, int namelen); }
170105	STD	BSD	{ int setsockopt(int s, int level, int name, \
171			    caddr_t val, int valsize); }
172106	STD	BSD	{ int listen(int s, int backlog); }
173107	OBSOL	NOHIDE	vtimes
174108	COMPAT	BSD	{ int sigvec(int signum, struct sigvec *nsv, \
175			    struct sigvec *osv); }
176109	COMPAT	BSD	{ int sigblock(int mask); }
177110	COMPAT	BSD	{ int sigsetmask(int mask); }
178111	STD	POSIX	{ int sigsuspend(sigset_t mask); }
179; XXX note nonstandard (bogus) calling convention - the libc stub passes
180; us the mask, not a pointer to it.
181112	COMPAT	BSD	{ int sigstack(struct sigstack *nss, \
182			    struct sigstack *oss); }
183113	COMPAT	BSD	{ int recvmsg(int s, struct omsghdr *msg, int flags); }
184114	COMPAT	BSD	{ int sendmsg(int s, caddr_t msg, int flags); }
185115	OBSOL	NOHIDE	vtrace
186116	STD	BSD	{ int gettimeofday(struct timeval *tp, \
187			    struct timezone *tzp); }
188117	STD	BSD	{ int getrusage(int who, struct rusage *rusage); }
189118	STD	BSD	{ int getsockopt(int s, int level, int name, \
190			    caddr_t val, int *avalsize); }
191119	UNIMPL	NOHIDE	resuba (BSD/OS 2.x)
192120	STD	BSD	{ int readv(int fd, struct iovec *iovp, u_int iovcnt); }
193121	STD	BSD	{ int writev(int fd, struct iovec *iovp, \
194			    u_int iovcnt); }
195122	STD	BSD	{ int settimeofday(struct timeval *tv, \
196			    struct timezone *tzp); }
197123	STD	BSD	{ int fchown(int fd, int uid, int gid); }
198124	STD	BSD	{ int fchmod(int fd, int mode); }
199125	CPT_NOA	BSD	{ int recvfrom(int s, caddr_t buf, size_t len, \
200			    int flags, caddr_t from, int *fromlenaddr); } \
201			    recvfrom recvfrom_args int
202126	STD	BSD	{ int setreuid(int ruid, int euid); }
203127	STD	BSD	{ int setregid(int rgid, int egid); }
204128	STD	POSIX	{ int rename(char *from, char *to); }
205129	COMPAT	BSD	{ int truncate(char *path, long length); }
206130	COMPAT	BSD	{ int ftruncate(int fd, long length); }
207131	STD	BSD	{ int flock(int fd, int how); }
208132	STD	POSIX	{ int mkfifo(char *path, int mode); }
209133	STD	BSD	{ int sendto(int s, caddr_t buf, size_t len, \
210			    int flags, caddr_t to, int tolen); }
211134	STD	BSD	{ int shutdown(int s, int how); }
212135	STD	BSD	{ int socketpair(int domain, int type, int protocol, \
213			    int *rsv); }
214136	STD	POSIX	{ int mkdir(char *path, int mode); }
215137	STD	POSIX	{ int rmdir(char *path); }
216138	STD	BSD	{ int utimes(char *path, struct timeval *tptr); }
217139	OBSOL	NOHIDE	4.2 sigreturn
218140	STD	BSD	{ int adjtime(struct timeval *delta, \
219			    struct timeval *olddelta); }
220141	COMPAT	BSD	{ int getpeername(int fdes, caddr_t asa, int *alen); }
221142	COMPAT	BSD	{ long gethostid(void); }
222143	COMPAT	BSD	{ int sethostid(long hostid); }
223144	COMPAT	BSD	{ int getrlimit(u_int which, struct ogetrlimit *rlp); }
224145	COMPAT	BSD	{ int setrlimit(u_int which, struct ogetrlimit *rlp); }
225146	COMPAT	BSD	{ int killpg(int pgid, int signum); }
226147	STD	POSIX	{ int setsid(void); }
227148	STD	BSD	{ int quotactl(char *path, int cmd, int uid, \
228			    caddr_t arg); }
229149	COMPAT	BSD	{ int quota(void); }
230150	CPT_NOA	BSD	{ int getsockname(int fdec, caddr_t asa, int *alen); }\
231			    getsockname getsockname_args int
232
233; Syscalls 151-180 inclusive are reserved for vendor-specific
234; system calls.  (This includes various calls added for compatibity
235; with other Unix variants.)
236; Some of these calls are now supported by BSD...
237151	UNIMPL	NOHIDE	sem_lock (BSD/OS 2.x)
238152	UNIMPL	NOHIDE	sem_wakeup (BSD/OS 2.x)
239153	UNIMPL	NOHIDE	asyncdaemon (BSD/OS 2.x)
240154	UNIMPL	NOHIDE	nosys
241#ifdef NFS
242155	STD	BSD	{ int nfssvc(int flag, caddr_t argp); }
243#else
244155	UNIMPL	BSD	nosys
245#endif
246156	COMPAT	BSD	{ int getdirentries(int fd, char *buf, u_int count, \
247			    long *basep); }
248157	STD	BSD	{ int statfs(char *path, struct statfs *buf); }
249158	STD	BSD	{ int fstatfs(int fd, struct statfs *buf); }
250159	UNIMPL	NOHIDE	nosys
251160	UNIMPL	NOHIDE	nosys
252#if defined(NFS) && !defined (NFS_NOSERVER)
253161	STD	BSD	{ int getfh(char *fname, struct fhandle *fhp); }
254#else
255161	UNIMPL	BSD	nosys
256#endif
257162	STD	BSD	{ int getdomainname(char *domainname, int len); }
258163	STD	BSD	{ int setdomainname(char *domainname, int len); }
259164	STD	BSD	{ int uname(struct utsname *name); }
260165	STD	BSD	{ int sysarch(int op, char *parms); }
261166	STD	BSD	{ int rtprio(int function, pid_t pid, \
262			    struct rtprio *rtp); }
263167	UNIMPL	NOHIDE	nosys
264168	UNIMPL	NOHIDE	nosys
265169	STD	BSD	{ int semsys(int which, int a2, int a3, int a4, \
266			    int a5); }
267; XXX should be		{ int semsys(int which, ...); }
268170	STD	BSD	{ int msgsys(int which, int a2, int a3, int a4, \
269			    int a5, int a6); }
270; XXX should be		{ int msgsys(int which, ...); }
271171	STD	BSD	{ int shmsys(int which, int a2, int a3, int a4); }
272; XXX should be		{ int shmsys(int which, ...); }
273172	UNIMPL	NOHIDE	nosys
274173	UNIMPL	NOHIDE	nosys
275174	UNIMPL	NOHIDE	nosys
276175	UNIMPL	NOHIDE	nosys
277176	STD	BSD	{ int ntp_adjtime(struct timex *tp); }
278177	UNIMPL	NOHIDE	sfork (BSD/OS 2.x)
279178	UNIMPL	NOHIDE	getdescriptor (BSD/OS 2.x)
280179	UNIMPL	NOHIDE	setdescriptor (BSD/OS 2.x)
281180	UNIMPL	NOHIDE	nosys
282
283; Syscalls 180-199 are used by/reserved for BSD
284181	STD	POSIX	{ int setgid(gid_t gid); }
285182	STD	BSD	{ int setegid(gid_t egid); }
286183	STD	BSD	{ int seteuid(uid_t euid); }
287#ifdef LFS
288184	STD	BSD	{ int lfs_bmapv(struct fsid **fsidp, \
289			    struct block_info *blkiov, int blkcnt); }
290185	STD	BSD	{ int lfs_markv(struct fsid **fsidp, \
291			    struct block_info *blkiov, int blkcnt); }
292186	STD	BSD	{ int lfs_segclean(struct fsid **fsidp, \
293			    u_long segment); }
294187	STD	BSD	{ int lfs_segwait(struct fsid **fsidp, \
295			    struct timeval *tv); }
296#else
297184	UNIMPL	BSD	nosys
298185	UNIMPL	BSD	nosys
299186	UNIMPL	BSD	nosys
300187	UNIMPL	BSD	nosys
301#endif
302188	STD	POSIX	{ int stat(char *path, struct stat *ub); }
303189	STD	POSIX	{ int fstat(int fd, struct stat *sb); }
304190	STD	POSIX	{ int lstat(char *path, struct stat *ub); }
305191	STD	POSIX	{ int pathconf(char *path, int name); }
306192	STD	POSIX	{ int fpathconf(int fd, int name); }
307193	UNIMPL	NOHIDE	nosys
308194	STD	BSD	{ int getrlimit(u_int which, \
309			    struct orlimit *rlp); } \
310			    getrlimit __getrlimit_args int
311195	STD	BSD	{ int setrlimit(u_int which, \
312			    struct orlimit *rlp); } \
313			    setrlimit __setrlimit_args int
314196	STD	BSD	{ int getdirentries(int fd, char *buf, u_int count, \
315			    long *basep); }
316197	STD	BSD	{ caddr_t mmap(caddr_t addr, size_t len, int prot, \
317			    int flags, int fd, long pad, off_t pos); }
318198	STD	NOHIDE	{ int nosys(void); } __syscall __syscall_args int
319199	STD	POSIX	{ off_t lseek(int fd, int pad, off_t offset, \
320			    int whence); }
321200	STD	BSD	{ int truncate(char *path, int pad, off_t length); }
322201	STD	BSD	{ int ftruncate(int fd, int pad, off_t length); }
323202	STD	BSD	{ int __sysctl(int *name, u_int namelen, void *old, \
324			    size_t *oldlenp, void *new, size_t newlen); } \
325			    __sysctl sysctl_args int
326; properly, __sysctl should be a NOHIDE, but making an exception
327; here allows to avoid one in libc/sys/Makefile.inc.
328203	STD	BSD	{ int mlock(caddr_t addr, size_t len); }
329204	STD	BSD	{ int munlock(caddr_t addr, size_t len); }
330205	STD	BSD	{ int utrace(caddr_t addr, size_t len); }
331206	STD	BSD	{ int undelete(char *path); }
332207	UNIMPL	NOHIDE	nosys
333208	UNIMPL	NOHIDE	nosys
334209	UNIMPL	NOHIDE	nosys
335
336;
337; The following are reserved for loadable syscalls
338;
339210	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
340211	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
341212	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
342213	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
343214	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
344215	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
345216	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
346217	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
347218	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
348219	NODEF	NOHIDE	lkmnosys lkmnosys nosys_args int
349
350;
351; The following were introduced with NetBSD/4.4Lite-2
352;
353220	STD	BSD	{ int __semctl(int semid, int semnum, int cmd, \
354			    union semun *arg); }
355221	STD	BSD	{ int semget(key_t key, int nsems, int semflg); }
356222	STD	BSD	{ int semop(int semid, struct sembuf *sops, \
357			    u_int nsops); }
358223	STD	BSD	{ int semconfig(int flag); }
359224	STD	BSD	{ int msgctl(int msqid, int cmd, \
360			    struct msqid_ds *buf); }
361225	STD	BSD	{ int msgget(key_t key, int msgflg); }
362226	STD	BSD	{ int msgsnd(int msqid, void *msgp, size_t msgsz, \
363			    int msgflg); }
364227	STD	BSD	{ int msgrcv(int msqid, void *msgp, size_t msgsz, \
365			    long msgtyp, int msgflg); }
366228	STD	BSD	{ int shmat(int shmid, void *shmaddr, int shmflg); }
367229	STD	BSD	{ int shmctl(int shmid, int cmd, \
368			    struct shmid_ds *buf); }
369230	STD	BSD	{ int shmdt(void *shmaddr); }
370231	STD	BSD	{ int shmget(key_t key, int size, int shmflg); }
371;
372232	UNIMPL	NOHIDE	nosys
373233	UNIMPL	NOHIDE	nosys
374234	UNIMPL	NOHIDE	nosys
375235	UNIMPL	NOHIDE	nosys
376236	UNIMPL	NOHIDE	nosys
377237	UNIMPL	NOHIDE	nosys
378238	UNIMPL	NOHIDE	nosys
379239	UNIMPL	NOHIDE	nosys
380240	UNIMPL	NOHIDE	nosys
381241	UNIMPL	NOHIDE	nosys
382242	UNIMPL	NOHIDE	nosys
383243	UNIMPL	NOHIDE	nosys
384244	UNIMPL	NOHIDE	nosys
385245	UNIMPL	NOHIDE	nosys
386246	UNIMPL	NOHIDE	nosys
387247	UNIMPL	NOHIDE	nosys
388248	UNIMPL	NOHIDE	nosys
389249	UNIMPL	NOHIDE	nosys
390; syscall numbers initially used in OpenBSD
391250	STD	BSD	{ int minherit(caddr_t addr, size_t len, int inherit); }
392251	STD	BSD	{ int rfork(int flags); }
393