Add new functionality to makesyscalls.sh:

o  optional config-file to set vars: sysnames, sysproto, sysproto_h,
	syshdr, syssw, syshide, syscallprefix, switchname, namesname, sysvec.
  o  change syntax of syscalls.master entry:
	remove argument count.
	add pseudo-prototype field defining function name and arguments.
  o  generates correct structure definitions for all system calls
	in sys/sysproto.h
  o  add type NOARGS:  same as STD except do not create structure in
	sys/sysproto.h
  o  add type NOPROTO:  same as STD except do not create structure or function
	prototype in sys/sysproto.h

New functionality provides complete prototype definitions.
Usefull for generating files for emulated systems like my new ibcs2 code.

Update syscalls.master to reflect new changes.  For example, read()
entry now looks like:

3	STD	POSIX	{ int ibcs2_read(int fd, char *buf, u_int nbytes); }

This is similar to how NetBSD generates these files.
This commit is contained in:
Steven Wallace 1995-10-07 06:24:08 +00:00
parent baf849c9b0
commit f171307e84
2 changed files with 500 additions and 305 deletions

View File

@ -1,6 +1,6 @@
#! /bin/sh -
# @(#)makesyscalls.sh 8.1 (Berkeley) 6/10/93
# $Id: makesyscalls.sh,v 1.13 1995/09/19 13:30:51 bde Exp $
# $Id: makesyscalls.sh,v 1.14 1995/09/19 13:50:26 bde Exp $
set -e
@ -14,39 +14,69 @@ sysproto_h=_SYS_SYSPROTO_H_
syshdr="../sys/syscall.h"
syssw="init_sysent.c"
syshide="../sys/syscall-hide.h"
syscallprefix="SYS_"
switchname="sysent"
namesname="syscallnames"
sysvec=""
# tmp files:
sysdcl="sysent.dcl"
syscompat="sysent.compat"
syscompatdcl="sysent.compatdcl"
sysent="sysent.switch"
sysinc="sysinc.switch"
sysarg="sysarg.switch"
trap "rm $sysdcl $syscompat $sysent" 0
trap "rm $sysdcl $syscompat $syscompatdcl $sysent $sysinc $sysarg" 0
case $# in
0) echo "Usage: $0 input-file" 1>&2
0) echo "Usage: $0 input-file <config-file>" 1>&2
exit 1
;;
esac
awk < $1 "
if [ -f $2 ]; then
. $2
fi
sed -e '
s/\$//g
:join
/\\$/{a\
N
s/\\\n//
b join
}
2,${
/^#/!s/\([{}()*,]\)/ \1 /g
}
' < $1 | awk "
BEGIN {
sysdcl = \"$sysdcl\"
sysproto = \"$sysproto\"
sysproto_h = \"$sysproto_h\"
syscompat = \"$syscompat\"
syscompatdcl = \"$syscompatdcl\"
sysent = \"$sysent\"
sysinc = \"$sysinc\"
sysarg = \"$sysarg\"
sysnames = \"$sysnames\"
syshdr = \"$syshdr\"
compat = \"$compat\"
syshide = \"$syshide\"
syscallprefix = \"$syscallprefix\"
switchname = \"$switchname\"
namesname = \"$namesname\"
sysvec = \"$sysvec\"
infile = \"$1\"
"'
printf "/*\n * System call switch table.\n *\n" > sysent
printf " * DO NOT EDIT-- this file is automatically generated.\n" > sysent
printf "/*\n * System call switch table.\n *\n" > sysinc
printf " * DO NOT EDIT-- this file is automatically generated.\n" > sysinc
printf "/*\n * System call prototypes.\n *\n" > sysdcl
printf " * DO NOT EDIT-- this file is automatically generated.\n" > sysdcl
printf "/*\n * System call prototypes.\n *\n" > sysarg
printf " * DO NOT EDIT-- this file is automatically generated.\n" > sysarg
printf "\n#ifdef %s\n\n", compat > syscompat
@ -61,26 +91,27 @@ awk < $1 "
NR == 1 {
gsub("[$]Id: ", "", $0)
gsub(" [$]", "", $0)
printf " * created from%s\n */\n\n", $0 > sysent
printf "#include <sys/param.h>\n" > sysent
printf "#include <sys/sysent.h>\n" > sysent
printf "#include <sys/sysproto.h>\n\n" > sysent
printf "#ifdef %s\n", compat > sysent
printf " * created from%s\n */\n\n", $0 > sysinc
printf "\n#ifdef %s\n", compat > sysent
printf "#define compat(n, name) n, (sy_call_t *)__CONCAT(o,name)\n" > sysent
printf("#else\n") > sysent
printf("#define compat(n, name) 0, (sy_call_t *)nosys\n") > sysent
printf("#endif\n\n") > sysent
printf("/* The casts are bogus but will do for now. */\n") > sysent
printf "struct sysent sysent[] = {\n" > sysent
printf "struct sysent %s[] = {\n",switchname > sysent
printf " * created from%s\n */\n\n", $0 > sysdcl
printf("#ifndef %s\n", sysproto_h) > sysdcl
printf("#define\t%s\n\n", sysproto_h) > sysdcl
printf "#include <sys/types.h>\n\n", $0 > sysdcl
printf "struct proc;\n\n", $0 > sysdcl
printf " * created from%s\n */\n\n", $0 > sysarg
printf("#ifndef %s\n", sysproto_h) > sysarg
printf("#define\t%s\n\n", sysproto_h) > sysarg
printf "#include <sys/types.h>\n", $0 > sysarg
printf "#include <sys/param.h>\n", $0 > sysarg
printf "#include <sys/mount.h>\n\n", $0 > sysarg
printf "struct args { int dummy; };\n\n", $0 > sysarg
printf " * created from%s\n */\n\n", $0 > sysnames
printf "char *syscallnames[] = {\n" > sysnames
printf "char *%s[] = {\n", namesname > sysnames
printf " * created from%s\n */\n\n", $0 > syshdr
@ -90,9 +121,14 @@ awk < $1 "
NF == 0 || $1 ~ /^;/ {
next
}
$1 ~ /^#[ ]*include/ {
print > sysinc
next
}
$1 ~ /^#[ ]*if/ {
print > sysent
print > sysdcl
print > sysarg
print > syscompat
print > sysnames
print > syshide
@ -102,6 +138,7 @@ awk < $1 "
$1 ~ /^#[ ]*else/ {
print > sysent
print > sysdcl
print > sysarg
print > syscompat
print > sysnames
print > syshide
@ -111,6 +148,7 @@ awk < $1 "
$1 ~ /^#/ {
print > sysent
print > sysdcl
print > sysarg
print > syscompat
print > sysnames
print > syshide
@ -123,64 +161,163 @@ awk < $1 "
print
exit 1
}
{ comment = $5
if (NF < 8)
for (i = 6; i <= NF; i++)
comment = comment " " $i
if (NF < 6) {
$6 = $5
$7 = $5 "_args"
if ($2 == "COMPAT")
$7 = "o" $7
$8 = "int"
}
if ($4 != "NOHIDE")
printf("HIDE_%s(%s)\n", $4, $5) > syshide
function parserr(was, wanted) {
printf "%s: line %d: unexpected %s (expected %s)\n", \
infile, NR, was, wanted
exit 1
}
$2 == "STD" || $2 == "NODEF" {
if (( !nosys || $5 != "nosys" ) && ( !lkmnosys ||
$5 != "lkmnosys")) {
printf("struct\t%s;\n", $7) > sysdcl
if ($5 == "exit")
printf("__dead ") > sysdcl
printf("%s\t%s __P((struct proc *, struct %s *, int []));\n", \
$8, $5, $7) > sysdcl
function parseline() {
f=4 # toss number and type
argc= 0;
bigargc = 0;
if ($NF != "}") {
funcalias=$(NF-2)
argalias=$(NF-1)
rettype=$NF
end=NF-3
} else {
funcalias=""
argalias=""
rettype="int"
end=NF
}
if ($5 == "nosys")
if ($2 == "NODEF") {
funcname=$4
return
}
if ($f != "{")
parserr($f, "{")
f++
if ($end != "}")
parserr($end, "}")
end--
if ($end != ";")
parserr($end, ";")
end--
if ($end != ")")
parserr($end, ")")
end--
f++ #function return type
funcname=$f
if (funcalias == "")
funcalias = funcname
if (argalias == "") {
argalias = funcname "_args"
}
f++
if ($2 == "COMPAT")
argalias = "o" argalias
if ($f != "(")
parserr($f, ")")
f++
if (f == end) {
if ($f != "void")
parserr($f, "argument definition")
return
}
while (f <= end) {
argc++
argtype[argc]=""
oldf=""
while (f < end && $(f+1) != ",") {
if (argtype[argc] != "" && oldf != "*")
argtype[argc] = argtype[argc]" ";
argtype[argc] = argtype[argc]$f;
oldf = $f;
f++
}
if (argtype[argc] == "")
parserr($f, "argument definition")
if (argtype[argc] == "off_t")
bigargc++
argname[argc]=$f;
f += 2; # skip name, and any comma
}
}
{ comment = $4
if (NF < 7)
for (i = 5; i <= NF; i++)
comment = comment " " $i
}
$2 == "STD" || $2 == "NODEF" || $2 == "NOARGS" || $2 == "NOPROTO" {
parseline()
if (( !nosys || funcname != "nosys" ) && ( !lkmnosys ||
funcname != "lkmnosys")) {
if (argc != 0 && $2 != "NOARGS" && $2 != "NOPROTO") {
printf("struct\t%s {\n", argalias) > sysarg
for (i = 1; i <= argc; i++)
printf("\t%s %s;\n", argtype[i],
argname[i]) > sysarg
printf("};\n") > sysarg
}
else
argalias = "args"
if ($2 != "NOPROTO") {
if (funcname == "exit")
printf("__dead ") > sysdcl
printf("%s\t%s __P((struct proc *, struct %s *, int []));\n", \
rettype, funcname, argalias) > sysdcl
}
}
if (funcname == "nosys")
nosys = 1
if ($5 == "lkmnosys")
if (funcname == "lkmnosys")
lkmnosys = 1
printf("\t{ %d, (sy_call_t *)%s },\t\t\t/* %d = %s */\n", \
$3, $5, syscall, $6) > sysent
printf("\t{ %d, (sy_call_t *)%s },\t\t", \
argc+bigargc, funcname) > sysent
if(length(funcname) < 11)
printf("\t") > sysent
printf("/* %d = %s */\n", syscall, funcalias) > sysent
printf("\t\"%s\",\t\t\t/* %d = %s */\n", \
$6, syscall, $6) > sysnames
if ($2 == "STD")
printf("#define\tSYS_%s\t%d\n", \
$6, syscall) > syshdr
funcalias, syscall, funcalias) > sysnames
if ($2 != "NODEF")
printf("#define\t%s%s\t%d\n", syscallprefix, \
funcalias, syscall) > syshdr
if ($3 != "NOHIDE")
printf("HIDE_%s(%s)\n", $3, funcname) > syshide
syscall++
next
}
$2 == "COMPAT" {
printf("struct\t%s;\n", $7) > syscompat
parseline()
if (argc != 0) {
printf("struct\t%s {\n", argalias) > syscompat
for (i = 1; i <= argc; i++)
printf("\t%s %s;\n", argtype[i],
argname[i]) > syscompat
printf("};\n") > syscompat
}
else
argalias = "args"
printf("%s\to%s __P((struct proc *, struct %s *, int []));\n", \
$8, $5, $7) > syscompat
rettype, funcname, argalias) > syscompatdcl
printf("\t{ compat(%d,%s) },\t\t/* %d = old %s */\n", \
$3, $5, syscall, $6) > sysent
argc+bigargc, funcname, syscall, funcalias) > sysent
printf("\t\"old.%s\",\t\t/* %d = old %s */\n", \
$6, syscall, $6) > sysnames
funcalias, syscall, funcalias) > sysnames
printf("\t\t\t\t/* %d is old %s */\n", \
syscall, comment) > syshdr
syscall, funcalias) > syshdr
if ($3 != "NOHIDE")
printf("HIDE_%s(%s)\n", $3, funcname) > syshide
syscall++
next
}
$2 == "LIBCOMPAT" {
printf("%s\to%s();\n", $8, $5) > syscompat
parseline()
printf("%s\to%s();\n", rettype, funcname) > syscompatdcl
printf("\t{ compat(%d,%s) },\t\t/* %d = old %s */\n", \
$3, $5, syscall, $6) > sysent
argc+bigargc, funcname, syscall, funcalias) > sysent
printf("\t\"old.%s\",\t\t/* %d = old %s */\n", \
$6, syscall, $6) > sysnames
printf("#define\tSYS_%s\t%d\t/* compatibility; still used by libc */\n", \
$6, syscall) > syshdr
funcalias, syscall, funcalias) > sysnames
printf("#define\t%s%s\t%d\t/* compatibility; still used by libc */\n", \
syscallprefix, funcalias, syscall) > syshdr
if ($3 != "NOHIDE")
printf("HIDE_%s(%s)\n", $3, funcname) > syshide
syscall++
next
}
@ -188,9 +325,11 @@ awk < $1 "
printf("\t{ 0, (sy_call_t *)nosys },\t\t\t/* %d = obsolete %s */\n", \
syscall, comment) > sysent
printf("\t\"obs_%s\",\t\t\t/* %d = obsolete %s */\n", \
$5, syscall, comment) > sysnames
$4, syscall, comment) > sysnames
printf("\t\t\t\t/* %d is obsolete %s */\n", \
syscall, comment) > syshdr
if ($3 != "NOHIDE")
printf("HIDE_%s(%s)\n", $3, $4) > syshide
syscall++
next
}
@ -199,6 +338,8 @@ awk < $1 "
syscall, comment) > sysent
printf("\t\"#%d\",\t\t\t/* %d = %s */\n", \
syscall, syscall, comment) > sysnames
if ($3 != "NOHIDE")
printf("HIDE_%s(%s)\n", $3, $4) > syshide
syscall++
next
}
@ -207,16 +348,24 @@ awk < $1 "
exit 1
}
END {
printf("\n#endif /* %s */\n", compat) > syscompat
printf("\n#endif /* !%s */\n", sysproto_h) > syscompat
printf("\n#endif /* %s */\n", compat) > syscompatdcl
printf("\n#endif /* !%s */\n", sysproto_h) > syscompatdcl
printf("};\n\n") > sysent
printf ("struct sysentvec aout_sysvec = {\n") > sysent
printf ("\tsizeof (sysent) / sizeof (sysent[0]),\n") > sysent
printf ("\tsysent,\n") > sysent
printf ("\t0,\n\t0,\n\t0,\n\t0,\n\t0,\n\t0\n};\n") > sysent
if(sysvec != "")
printf(sysvec) > sysent;
else {
printf ("struct sysentvec aout_sysvec = {\n") > sysent
printf ("\tsizeof (%s) / sizeof (%s[0]),\n", \
switchname, switchname) > sysent
printf ("\t%s,\n", switchname) > sysent
printf ("\t0,\n\t0,\n\t0,\n\t0,\n\t0,\n\t0\n};\n") \
> sysent
}
printf("};\n") > sysnames
printf("#define\t%sMAXSYSCALL\t%d\n", syscallprefix, syscall) \
> syshdr
} '
cat $sysent >$syssw
cat $sysdcl $syscompat >$sysproto
cat $sysinc $sysent >$syssw
cat $sysarg $sysdcl $syscompat $syscompatdcl > $sysproto

View File

@ -1,4 +1,4 @@
$Id: syscalls.master,v 1.15 1995/04/23 12:20:52 ache Exp $
$Id: syscalls.master,v 1.16 1995/09/19 13:30:51 bde Exp $
; from: @(#)syscalls.master 8.2 (Berkeley) 1/13/94
;
; System call name/number master file.
@ -7,9 +7,8 @@
; Columns: number type nargs namespc name alt{name,tag,rtyp}/comments
; number system call number, must be in order
; type one of STD, OBSOL, UNIMPL, COMPAT
; nargs number of arguments
; namespc one of POSIX, BSD, NOHIDE
; name name of syscall routine
; name psuedo-prototype of syscall routine
; If one of the following alts is different, then all appear:
; altname name of system call if different
; alttag name of args struct tag if different from [o]`name'"_args"
@ -25,277 +24,324 @@
; #ifdef's, etc. may be included, and are copied to the output files.
#include <sys/types.h>
#include <sys/param.h>
#include <sys/mount.h>
#include <sys/sysent.h>
#include <sys/sysproto.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 STD 0 NOHIDE nosys syscall nosys_args int
1 STD 1 NOHIDE exit exit rexit_args void
2 STD 0 POSIX fork
3 STD 3 POSIX read
4 STD 3 POSIX write
5 STD 3 POSIX open
6 STD 1 POSIX close
7 STD 4 BSD wait4 wait4 wait_args int
8 COMPAT 2 BSD creat
9 STD 2 POSIX link
10 STD 1 POSIX unlink
11 OBSOL 2 NOHIDE execv
12 STD 1 POSIX chdir
13 STD 1 BSD fchdir
14 STD 3 POSIX mknod
15 STD 2 POSIX chmod
16 STD 3 POSIX chown
17 STD 1 BSD obreak break obreak_args int
18 STD 3 BSD getfsstat
19 COMPAT 3 POSIX lseek
20 STD 0 POSIX getpid getpid args int
21 STD 4 BSD mount
22 STD 2 BSD unmount
23 STD 1 POSIX setuid
24 STD 0 POSIX getuid getuid args int
25 STD 0 POSIX geteuid geteuid args int
26 STD 4 BSD ptrace
27 STD 3 BSD recvmsg
28 STD 3 BSD sendmsg
29 STD 6 BSD recvfrom
30 STD 3 BSD accept
31 STD 3 BSD getpeername
32 STD 3 BSD getsockname
33 STD 2 POSIX access
34 STD 2 BSD chflags
35 STD 2 BSD fchflags
36 STD 0 BSD sync
37 STD 2 POSIX kill
38 COMPAT 2 POSIX stat
39 STD 0 POSIX getppid getppid args int
40 COMPAT 2 POSIX lstat
41 STD 2 POSIX dup
42 STD 0 POSIX pipe
43 STD 0 POSIX getegid getegid args int
44 STD 4 BSD profil
0 STD NOHIDE { int nosys(void); } syscall nosys_args int
1 STD NOHIDE { void exit(int rval); } exit rexit_args void
2 STD POSIX { int fork(void); }
3 STD POSIX { int read(int fd, char *buf, u_int nbyte); }
4 STD POSIX { int write(int fd, char *buf, u_int nbyte); }
5 STD POSIX { int open(char *path, int flags, int mode); }
6 STD POSIX { int close(int fd); }
7 STD BSD { int wait4(int pid, int *status, int options, \
struct rusage *rusage); } wait4 wait_args int
8 COMPAT BSD { int creat(char *path, int mode); }
9 STD POSIX { int link(char *path, char *link); }
10 STD POSIX { int unlink(char *path); }
11 OBSOL NOHIDE execv
12 STD POSIX { int chdir(char *path); }
13 STD BSD { int fchdir(int fd); }
14 STD POSIX { int mknod(char *path, int mode, int dev); }
15 STD POSIX { int chmod(char *path, int mode); }
16 STD POSIX { int chown(char *path, int uid, int gid); }
17 STD BSD { int obreak(char *nsize); } break obreak_args int
18 STD BSD { int getfsstat(struct statfs *buf, long bufsize, \
int flags); }
19 COMPAT POSIX { long lseek(int fd, long offset, int whence); }
20 STD POSIX { pid_t getpid(void); }
21 STD BSD { int mount(char *type, char *path, int flags, \
caddr_t data); }
22 STD BSD { int unmount(char *path, int flags); }
23 STD POSIX { int setuid(uid_t uid); }
24 STD POSIX { uid_t getuid(void); }
25 STD POSIX { uid_t geteuid(void); }
26 STD BSD { int ptrace(int req, pid_t pid, caddr_t addr, \
int data); }
27 STD BSD { int recvmsg(int s, struct msghdr *msg, int flags); }
28 STD BSD { int sendmsg(int s, caddr_t msg, int flags); }
29 STD BSD { int recvfrom(int s, caddr_t buf, size_t len, \
int flags, caddr_t from, int *fromlenaddr); }
30 STD BSD { int accept(int s, caddr_t name, int *anamelen); }
31 STD BSD { int getpeername(int fdes, caddr_t asa, int *alen); }
32 STD BSD { int getsockname(int fdes, caddr_t asa, int *alen); }
33 STD POSIX { int access(char *path, int flags); }
34 STD BSD { int chflags(char *path, int flags); }
35 STD BSD { int fchflags(int fd, int flags); }
36 STD BSD { int sync(void); }
37 STD POSIX { int kill(int pid, int signum); }
38 COMPAT POSIX { int stat(char *path, struct ostat *ub); }
39 STD POSIX { pid_t getppid(void); }
40 COMPAT POSIX { int lstat(char *path, struct ostat *ub); }
41 STD POSIX { int dup(u_int fd); }
42 STD POSIX { int pipe(void); }
43 STD POSIX { gid_t getegid(void); }
44 STD BSD { int profil(caddr_t samples, u_int size, \
u_int offset, u_int scale); }
#ifdef KTRACE
45 STD 4 BSD ktrace
45 STD BSD { int ktrace(char *fname, int ops, int facs, \
int pid); }
#else
45 UNIMPL 0 BSD ktrace
45 UNIMPL BSD ktrace
#endif
46 STD 3 POSIX sigaction
47 STD 0 POSIX getgid getgid args int
48 STD 2 POSIX sigprocmask
49 STD 2 BSD getlogin
50 STD 1 BSD setlogin
51 STD 1 BSD acct
52 STD 0 POSIX sigpending
53 STD 2 BSD sigaltstack
54 STD 3 POSIX ioctl
55 STD 1 BSD reboot
56 STD 1 POSIX revoke
57 STD 2 POSIX symlink
58 STD 3 POSIX readlink
59 STD 3 POSIX execve
60 STD 1 POSIX umask umask umask_args mode_t
61 STD 1 BSD chroot
62 COMPAT 2 POSIX fstat
63 COMPAT 4 BSD getkerninfo getkerninfo getkerninfo_args int
64 COMPAT 0 BSD getpagesize getpagesize getpagesize_args int
65 STD 3 BSD msync
66 STD 0 BSD vfork vfork fork_args int
67 OBSOL 0 NOHIDE vread
68 OBSOL 0 NOHIDE vwrite
69 STD 1 BSD sbrk
70 STD 1 BSD sstk
71 COMPAT 6 BSD mmap
72 STD 1 BSD ovadvise vadvise ovadvise_args int
73 STD 2 BSD munmap
74 STD 3 BSD mprotect
75 STD 3 BSD madvise
76 OBSOL 0 NOHIDE vhangup
77 OBSOL 0 NOHIDE vlimit
78 STD 3 BSD mincore
79 STD 2 POSIX getgroups
80 STD 2 POSIX setgroups
81 STD 0 POSIX getpgrp getpgrp args int
82 STD 2 POSIX setpgid
83 STD 3 BSD setitimer
84 COMPAT 0 BSD wait wait wait_args int
85 STD 1 BSD swapon
86 STD 2 BSD getitimer
87 COMPAT 2 BSD gethostname gethostname gethostname_args int
88 COMPAT 2 BSD sethostname sethostname sethostname_args int
89 STD 0 BSD getdtablesize
90 STD 2 POSIX dup2
91 UNIMPL 2 BSD getdopt
92 STD 3 POSIX fcntl
93 STD 5 BSD select
94 UNIMPL 2 BSD setdopt
95 STD 1 POSIX fsync
96 STD 3 BSD setpriority
97 STD 3 BSD socket
98 STD 3 BSD connect
99 COMPAT 3 BSD accept accept accept_args int
100 STD 2 BSD getpriority
101 COMPAT 4 BSD send
102 COMPAT 4 BSD recv
103 STD 1 BSD sigreturn
104 STD 3 BSD bind
105 STD 5 BSD setsockopt
106 STD 2 BSD listen
107 OBSOL 0 NOHIDE vtimes
108 COMPAT 3 BSD sigvec
109 COMPAT 1 BSD sigblock
110 COMPAT 1 BSD sigsetmask
111 STD 1 POSIX sigsuspend
112 COMPAT 2 BSD sigstack
113 COMPAT 3 BSD recvmsg
114 COMPAT 3 BSD sendmsg
115 OBSOL 2 NOHIDE vtrace
116 STD 2 BSD gettimeofday
117 STD 2 BSD getrusage
118 STD 5 BSD getsockopt
#ifdef vax
119 STD 1 BSD resuba
#else
119 UNIMPL 0 NOHIDE nosys
#endif
120 STD 3 BSD readv
121 STD 3 BSD writev
122 STD 2 BSD settimeofday
123 STD 3 BSD fchown
124 STD 2 BSD fchmod
125 COMPAT 6 BSD recvfrom recvfrom recvfrom_args int
126 STD 2 BSD setreuid
127 STD 2 BSD setregid
128 STD 2 POSIX rename
129 COMPAT 2 BSD truncate
130 COMPAT 2 BSD ftruncate
131 STD 2 BSD flock
132 STD 2 POSIX mkfifo
133 STD 6 BSD sendto
134 STD 2 BSD shutdown
135 STD 5 BSD socketpair
136 STD 2 POSIX mkdir
137 STD 1 POSIX rmdir
138 STD 2 BSD utimes
139 OBSOL 0 NOHIDE 4.2 sigreturn
140 STD 2 BSD adjtime
141 COMPAT 3 BSD getpeername getpeername getpeername_args int
142 COMPAT 0 BSD gethostid gethostid gethostid_args int
143 COMPAT 1 BSD sethostid sethostid sethostid_args int
144 COMPAT 2 BSD getrlimit getrlimit getrlimit_args int
145 COMPAT 2 BSD setrlimit setrlimit setrlimit_args int
146 COMPAT 2 BSD killpg
147 STD 0 POSIX setsid setsid args int
148 STD 4 BSD quotactl
149 COMPAT 4 BSD quota quota quota_args int
150 COMPAT 3 BSD getsockname getsockname getsockname_args int
46 STD POSIX { int sigaction(int signum, struct sigaction *nsa, \
struct sigaction *osa); }
47 STD POSIX { gid_t getgid(void); }
48 STD POSIX { int sigprocmask(int how, sigset_t mask); }
49 STD BSD { int getlogin(char *namebuf, u_int namelen); }
50 STD BSD { int setlogin(char *namebuf); }
51 STD BSD { int acct(char *path); }
52 STD POSIX { int sigpending(void); }
53 STD BSD { int sigaltstack(struct sigaltstack *nss, \
struct sigaltstack *oss); }
54 STD POSIX { int ioctl(int fd, u_long com, caddr_t data); }
55 STD BSD { int reboot(int opt); }
56 STD POSIX { int revoke(char *path); }
57 STD POSIX { int symlink(char *path, char *link); }
58 STD POSIX { int readlink(char *path, char *buf, int count); }
59 STD POSIX { int execve(char *fname, char **argv, char **envv); }
60 STD POSIX { int umask(int newmask); } umask umask_args mode_t
61 STD BSD { int chroot(char *path); }
62 COMPAT POSIX { int fstat(int fd, struct ostat *sb); }
63 COMPAT BSD { int getkerninfo(int op, char *where, int *size, \
int arg); } getkerninfo getkerninfo_args int
64 COMPAT BSD { int getpagesize(void); } \
getpagesize getpagesize_args int
65 STD BSD { int msync(caddr_t addr, size_t len, int flags); }
66 STD BSD { int vfork(void); } vfork fork_args int
67 OBSOL NOHIDE vread
68 OBSOL NOHIDE vwrite
69 STD BSD { int sbrk(int incr); }
70 STD BSD { int sstk(int incr); }
71 COMPAT BSD { int mmap(caddr_t addr, size_t len, int prot, \
int flags, int fd, long pos); }
72 STD BSD { int ovadvise(int anom); } vadvise ovadvise_args int
73 STD BSD { int munmap(caddr_t addr, size_t len); }
74 STD BSD { int mprotect(caddr_t addr, size_t len, int prot); }
75 STD BSD { int madvise(caddr_t addr, size_t len, int behav); }
76 OBSOL NOHIDE vhangup
77 OBSOL NOHIDE vlimit
78 STD BSD { int mincore(caddr_t addr, size_t len, char *vec); }
79 STD POSIX { int getgroups(u_int gidsetsize, gid_t *gidset); }
80 STD POSIX { int setgroups(u_int gidsetsize, gid_t *gidset); }
81 STD POSIX { int getpgrp(void); }
82 STD POSIX { int setpgid(int pid, int pgid); }
83 STD BSD { int setitimer(u_int which, struct itimerval *itv, \
struct itimerval *oitv); }
84 COMPAT BSD { int wait(void); } wait wait_args int
85 STD BSD { int swapon(char *name); }
86 STD BSD { int getitimer(u_int which, struct itimerval *itv); }
87 COMPAT BSD { int gethostname(char *hostname, u_int len); } \
gethostname gethostname_args int
88 COMPAT BSD { int sethostname(char *hostname, u_int len); } \
sethostname sethostname_args int
89 STD BSD { int getdtablesize(void); }
90 STD POSIX { int dup2(u_int from, u_int to); }
91 UNIMPL BSD getdopt
92 STD POSIX { int fcntl(int fd, int cmd, void *arg); }
93 STD BSD { int select(u_int nd, fd_set *in, fd_set *ou, \
fd_set *ex, struct timeval *tv); }
94 UNIMPL BSD setdopt
95 STD POSIX { int fsync(int fd); }
96 STD BSD { int setpriority(int which, int who, int prio); }
97 STD BSD { int socket(int domain, int type, int protocol); }
98 STD BSD { int connect(int s, caddr_t name, int namelen); }
99 COMPAT BSD { int accept(int s, caddr_t name, int *anamelen); } \
accept accept_args int
100 STD BSD { int getpriority(int which, int who); }
101 COMPAT BSD { int send(int s, caddr_t buf, int len, int flags); }
102 COMPAT BSD { int recv(int s, caddr_t buf, int len, int flags); }
103 STD BSD { int sigreturn(struct sigcontext *sigcntxp); }
104 STD BSD { int bind(int s, caddr_t name, int namelen); }
105 STD BSD { int setsockopt(int s, int level, int name, \
caddr_t val, int valsize); }
106 STD BSD { int listen(int s, int backlog); }
107 OBSOL NOHIDE vtimes
108 COMPAT BSD { int sigvec(int signum, struct sigvec *nsv, \
struct sigvec *osv); }
109 COMPAT BSD { int sigblock(int mask); }
110 COMPAT BSD { int sigsetmask(int mask); }
111 STD POSIX { int sigsuspend(int mask); }
112 COMPAT BSD { int sigstack(struct sigstack *nss, \
struct sigstack *oss); }
113 COMPAT BSD { int recvmsg(int s, struct omsghdr *msg, int flags); }
114 COMPAT BSD { int sendmsg(int s, caddr_t msg, int flags); }
115 OBSOL NOHIDE vtrace
116 STD BSD { int gettimeofday(struct timeval *tp, \
struct timezone *tzp); }
117 STD BSD { int getrusage(int who, struct rusage *rusage); }
118 STD BSD { int getsockopt(int s, int level, int name, \
caddr_t val, int *avalsize); }
119 UNIMPL NOHIDE nosys
120 STD BSD { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
121 STD BSD { int writev(int fd, struct iovec *iovp, \
u_int iovcnt); }
122 STD BSD { int settimeofday(struct timeval *tv, \
struct timezone *tzp); }
123 STD BSD { int fchown(int fd, int uid, int gid); }
124 STD BSD { int fchmod(int fd, int mode); }
125 COMPAT BSD { int recvfrom(int s, caddr_t buf, size_t len, \
int flags, caddr_t from, int *fromlenaddr); } \
recvfrom recvfrom_args int
126 STD BSD { int setreuid(int ruid, int euid); }
127 STD BSD { int setregid(int rgid, int egid); }
128 STD POSIX { int rename(char *from, char *to); }
129 COMPAT BSD { int truncate(char *path, long length); }
130 COMPAT BSD { int ftruncate(int fd, long length); }
131 STD BSD { int flock(int fd, int how); }
132 STD POSIX { int mkfifo(char *path, int mode); }
133 STD BSD { int sendto(int s, caddr_t buf, size_t len, \
int flags, caddr_t to, int tolen); }
134 STD BSD { int shutdown(int s, int how); }
135 STD BSD { int socketpair(int domain, int type, int protocol, \
int *rsv); }
136 STD POSIX { int mkdir(char *path, int mode); }
137 STD POSIX { int rmdir(char *path); }
138 STD BSD { int utimes(char *path, struct timeval *tptr); }
139 OBSOL NOHIDE 4.2 sigreturn
140 STD BSD { int adjtime(struct timeval *delta, \
struct timeval *olddelta); }
141 COMPAT BSD { int getpeername(int fdes, caddr_t asa, int *alen); }
142 COMPAT BSD { long gethostid(void); }
143 COMPAT BSD { int sethostid(long hostid); }
144 COMPAT BSD { int getrlimit(u_int which, struct ogetrlimit *rlp); }
145 COMPAT BSD { int setrlimit(u_int which, struct ogetrlimit *rlp); }
146 COMPAT BSD { int killpg(int pgid, int signum); }
147 STD POSIX { int setsid(void); }
148 STD BSD { int quotactl(char *path, int cmd, int uid, \
caddr_t arg); }
149 COMPAT BSD { int quota(void); }
150 COMPAT BSD { int getsockname(int fdec, caddr_t asa, int *alen); }
; 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 0 NOHIDE nosys
152 UNIMPL 0 NOHIDE nosys
153 UNIMPL 0 NOHIDE nosys
154 UNIMPL 0 NOHIDE nosys
151 UNIMPL NOHIDE nosys
152 UNIMPL NOHIDE nosys
153 UNIMPL NOHIDE nosys
154 UNIMPL NOHIDE nosys
#ifdef NFS
155 STD 2 BSD nfssvc
155 STD BSD { int nfssvc(int flag, caddr_t argp); }
#else
155 UNIMPL 0 BSD nosys
155 UNIMPL BSD nosys
#endif
156 COMPAT 4 BSD getdirentries
157 STD 2 BSD statfs
158 STD 2 BSD fstatfs
159 UNIMPL 0 NOHIDE nosys
160 UNIMPL 0 NOHIDE nosys
156 COMPAT BSD { int getdirentries(int fd, char *buf, u_int count, \
long *basep); }
157 STD BSD { int statfs(char *path, struct statfs *buf); }
158 STD BSD { int fstatfs(int fd, struct statfs *buf); }
159 UNIMPL NOHIDE nosys
160 UNIMPL NOHIDE nosys
#ifdef NFS
161 STD 2 BSD getfh
161 STD BSD { int getfh(char *fname, fhandle_t *fhp); }
#else
161 UNIMPL 0 BSD nosys
161 UNIMPL BSD nosys
#endif
162 STD 2 BSD getdomainname
163 STD 2 BSD setdomainname
164 STD 1 BSD uname
165 STD 2 BSD sysarch
166 STD 3 BSD rtprio
167 UNIMPL 0 NOHIDE nosys
168 UNIMPL 0 NOHIDE nosys
162 STD BSD { int getdomainname(char *domainname, int len); }
163 STD BSD { int setdomainname(char *domainname, int len); }
164 STD BSD { int uname(struct outsname *name); }
165 STD BSD { int sysarch(int op, char *parms); }
166 STD BSD { int rtprio(int function, pid_t pid, \
struct rtprio *rtp); }
167 UNIMPL NOHIDE nosys
168 UNIMPL NOHIDE nosys
#ifdef SYSVSEM
169 STD 5 BSD semsys
169 STD BSD { int semsys(int which, int a2, int a3, int a4, \
int a5); }
#else
169 UNIMPL 0 NOHIDE nosys
169 UNIMPL NOHIDE nosys
#endif
#ifdef SYSVMSG
170 STD 6 BSD msgsys
170 STD BSD { int msgsys(int which, int a2, int a3, int a4, \
int a5, int a6); }
#else
170 UNIMPL 0 NOHIDE nosys
170 UNIMPL NOHIDE nosys
#endif
#ifdef SYSVSHM
171 STD 4 BSD shmsys
171 STD BSD { int shmsys(int which, int a2, int a3, int a4); }
#else
171 UNIMPL 0 BSD nosys
171 UNIMPL BSD nosys
#endif
172 UNIMPL 0 NOHIDE nosys
173 UNIMPL 0 NOHIDE nosys
174 UNIMPL 0 NOHIDE nosys
175 UNIMPL 0 NOHIDE nosys
176 STD 1 BSD ntp_adjtime
177 UNIMPL 0 NOHIDE nosys
178 UNIMPL 0 NOHIDE nosys
179 UNIMPL 0 NOHIDE nosys
180 UNIMPL 0 NOHIDE nosys
172 UNIMPL NOHIDE nosys
173 UNIMPL NOHIDE nosys
174 UNIMPL NOHIDE nosys
175 UNIMPL NOHIDE nosys
176 STD BSD { int ntp_adjtime(struct timex *tp); }
177 UNIMPL NOHIDE nosys
178 UNIMPL NOHIDE nosys
179 UNIMPL NOHIDE nosys
180 UNIMPL NOHIDE nosys
; Syscalls 180-199 are used by/reserved for BSD
181 STD 1 POSIX setgid
182 STD 1 BSD setegid
183 STD 1 BSD seteuid
181 STD POSIX { int setgid(gid_t gid); }
182 STD BSD { int setegid(gid_t egid); }
183 STD BSD { int seteuid(uid_t euid); }
#ifdef LFS
184 STD 3 BSD lfs_bmapv
185 STD 3 BSD lfs_markv
186 STD 2 BSD lfs_segclean
187 STD 2 BSD lfs_segwait
184 STD BSD { int lfs_bmapv(fsid_t *fsidp, \
struct block_info *blkiov, int blkcnt); }
185 STD BSD { int lfs_markv(fsid_t *fsidp, \
struct block_info *blkiov, int blkcnt); }
186 STD BSD { int lfs_segclean(fsid_t *fsidp, u_long segment); }
187 STD BSD { int lfs_segwait(fsid_t *fsidp, struct timeval *tv); }
#else
184 UNIMPL 0 BSD nosys
185 UNIMPL 0 BSD nosys
186 UNIMPL 0 BSD nosys
187 UNIMPL 0 BSD nosys
184 UNIMPL BSD nosys
185 UNIMPL BSD nosys
186 UNIMPL BSD nosys
187 UNIMPL BSD nosys
#endif
188 STD 2 POSIX stat
189 STD 2 POSIX fstat
190 STD 2 POSIX lstat
191 STD 2 POSIX pathconf
192 STD 2 POSIX fpathconf
193 UNIMPL 0 NOHIDE nosys
194 STD 2 BSD getrlimit getrlimit __getrlimit_args int
195 STD 2 BSD setrlimit setrlimit __setrlimit_args int
196 STD 4 BSD getdirentries
197 STD 8 BSD mmap
198 STD 0 NOHIDE nosys __syscall __syscall_args int
199 STD 5 POSIX lseek
200 STD 4 BSD truncate
201 STD 4 BSD ftruncate
202 STD 6 BSD __sysctl __sysctl sysctl_args int
188 STD POSIX { int stat(char *path, struct stat *ub); }
189 STD POSIX { int fstat(int fd, struct stat *sb); }
190 STD POSIX { int lstat(char *path, struct stat *ub); }
191 STD POSIX { int pathconf(char *path, int name); }
192 STD POSIX { int fpathconf(int fd, int name); }
193 UNIMPL NOHIDE nosys
194 STD BSD { int getrlimit(u_int which, \
struct ogetrlimit *rlp); } \
getrlimit __getrlimit_args int
195 STD BSD { int setrlimit(u_int which, \
struct ogetrlimit *rlp); } \
setrlimit __setrlimit_args int
196 STD BSD { int getdirentries(int fd, char *buf, u_int count, \
long *basep); }
197 STD BSD { caddr_t mmap(caddr_t addr, size_t len, int prot, \
int flags, int fd, long pad, off_t pos); }
198 STD NOHIDE { int nosys(void); } __syscall __syscall_args int
199 STD POSIX { off_t lseek(int fd, int pad, off_t offset, \
int whence); }
200 STD BSD { int truncate(char *path, int pad, off_t length); }
201 STD BSD { int ftruncate(int fd, int pad, off_t length); }
202 STD BSD { int __sysctl(int *name, u_int namelen, void *old, \
size_t *oldlenp, void *new, size_t newlen); } \
__sysctl sysctl_args int
; properly, __sysctl should be a NOHIDE, but making an exception
; here allows to avoid one in libc/sys/Makefile.inc.
203 STD 2 BSD mlock
204 STD 2 BSD munlock
205 UNIMPL 0 NOHIDE nosys
206 UNIMPL 0 NOHIDE nosys
207 UNIMPL 0 NOHIDE nosys
208 UNIMPL 0 NOHIDE nosys
209 UNIMPL 0 NOHIDE nosys
203 STD BSD { int mlock(caddr_t addr, size_t len); }
204 STD BSD { int munlock(caddr_t addr, size_t len); }
205 UNIMPL NOHIDE nosys
206 UNIMPL NOHIDE nosys
207 UNIMPL NOHIDE nosys
208 UNIMPL NOHIDE nosys
209 UNIMPL NOHIDE nosys
;
; The following are reserved for loadable syscalls
;
210 NODEF 0 NOHIDE lkmnosys lkmnosys nosys_args int
211 NODEF 0 NOHIDE lkmnosys lkmnosys nosys_args int
212 NODEF 0 NOHIDE lkmnosys lkmnosys nosys_args int
213 NODEF 0 NOHIDE lkmnosys lkmnosys nosys_args int
214 NODEF 0 NOHIDE lkmnosys lkmnosys nosys_args int
215 NODEF 0 NOHIDE lkmnosys lkmnosys nosys_args int
216 NODEF 0 NOHIDE lkmnosys lkmnosys nosys_args int
217 NODEF 0 NOHIDE lkmnosys lkmnosys nosys_args int
218 NODEF 0 NOHIDE lkmnosys lkmnosys nosys_args int
219 NODEF 0 NOHIDE lkmnosys lkmnosys nosys_args int
210 NODEF NOHIDE lkmnosys lkmnosys nosys_args int
211 NODEF NOHIDE lkmnosys lkmnosys nosys_args int
212 NODEF NOHIDE lkmnosys lkmnosys nosys_args int
213 NODEF NOHIDE lkmnosys lkmnosys nosys_args int
214 NODEF NOHIDE lkmnosys lkmnosys nosys_args int
215 NODEF NOHIDE lkmnosys lkmnosys nosys_args int
216 NODEF NOHIDE lkmnosys lkmnosys nosys_args int
217 NODEF NOHIDE lkmnosys lkmnosys nosys_args int
218 NODEF NOHIDE lkmnosys lkmnosys nosys_args int
219 NODEF NOHIDE lkmnosys lkmnosys nosys_args int