Changeset View
Changeset View
Standalone View
Standalone View
head/sys/kern/makesyscalls.sh
#! /bin/sh - | #! /bin/sh - | ||||
# @(#)makesyscalls.sh 8.1 (Berkeley) 6/10/93 | # @(#)makesyscalls.sh 8.1 (Berkeley) 6/10/93 | ||||
# $FreeBSD$ | # $FreeBSD$ | ||||
set -e | set -e | ||||
# name of compat options: | # name of compat options: | ||||
compat=COMPAT_43 | compat=COMPAT_43 | ||||
compat4=COMPAT_FREEBSD4 | compat4=COMPAT_FREEBSD4 | ||||
compat6=COMPAT_FREEBSD6 | compat6=COMPAT_FREEBSD6 | ||||
compat7=COMPAT_FREEBSD7 | compat7=COMPAT_FREEBSD7 | ||||
compat10=COMPAT_FREEBSD10 | compat10=COMPAT_FREEBSD10 | ||||
compat11=COMPAT_FREEBSD11 | compat11=COMPAT_FREEBSD11 | ||||
compat12=COMPAT_FREEBSD12 | |||||
# output files: | # output files: | ||||
sysnames="syscalls.c" | sysnames="syscalls.c" | ||||
sysproto="../sys/sysproto.h" | sysproto="../sys/sysproto.h" | ||||
sysproto_h=_SYS_SYSPROTO_H_ | sysproto_h=_SYS_SYSPROTO_H_ | ||||
syshdr="../sys/syscall.h" | syshdr="../sys/syscall.h" | ||||
sysmk="../sys/syscall.mk" | sysmk="../sys/syscall.mk" | ||||
syssw="init_sysent.c" | syssw="init_sysent.c" | ||||
Show All 12 Lines | |||||
syscompat6="sysent.compat6.$$" | syscompat6="sysent.compat6.$$" | ||||
syscompat6dcl="sysent.compat6dcl.$$" | syscompat6dcl="sysent.compat6dcl.$$" | ||||
syscompat7="sysent.compat7.$$" | syscompat7="sysent.compat7.$$" | ||||
syscompat7dcl="sysent.compat7dcl.$$" | syscompat7dcl="sysent.compat7dcl.$$" | ||||
syscompat10="sysent.compat10.$$" | syscompat10="sysent.compat10.$$" | ||||
syscompat10dcl="sysent.compat10dcl.$$" | syscompat10dcl="sysent.compat10dcl.$$" | ||||
syscompat11="sysent.compat11.$$" | syscompat11="sysent.compat11.$$" | ||||
syscompat11dcl="sysent.compat11dcl.$$" | syscompat11dcl="sysent.compat11dcl.$$" | ||||
syscompat12="sysent.compat12.$$" | |||||
syscompat12dcl="sysent.compat12dcl.$$" | |||||
sysent="sysent.switch.$$" | sysent="sysent.switch.$$" | ||||
sysinc="sysinc.switch.$$" | sysinc="sysinc.switch.$$" | ||||
sysarg="sysarg.switch.$$" | sysarg="sysarg.switch.$$" | ||||
sysprotoend="sysprotoend.$$" | sysprotoend="sysprotoend.$$" | ||||
systracetmp="systrace.$$" | systracetmp="systrace.$$" | ||||
systraceret="systraceret.$$" | systraceret="systraceret.$$" | ||||
capabilities_conf="capabilities.conf" | capabilities_conf="capabilities.conf" | ||||
trap "rm $sysaue $sysdcl $syscompat $syscompatdcl $syscompat4 $syscompat4dcl $syscompat6 $syscompat6dcl $syscompat7 $syscompat7dcl $syscompat10 $syscompat10dcl $syscompat11 $syscompat11dcl $sysent $sysinc $sysarg $sysprotoend $systracetmp $systraceret" 0 | trap "rm $sysaue $sysdcl $syscompat $syscompatdcl $syscompat4 $syscompat4dcl $syscompat6 $syscompat6dcl $syscompat7 $syscompat7dcl $syscompat10 $syscompat10dcl $syscompat11 $syscompat11dcl $syscompat12 $syscompat12dcl $sysent $sysinc $sysarg $sysprotoend $systracetmp $systraceret" 0 | ||||
touch $sysaue $sysdcl $syscompat $syscompatdcl $syscompat4 $syscompat4dcl $syscompat6 $syscompat6dcl $syscompat7 $syscompat7dcl $syscompat10 $syscompat10dcl $syscompat11 $syscompat11dcl $sysent $sysinc $sysarg $sysprotoend $systracetmp $systraceret | touch $sysaue $sysdcl $syscompat $syscompatdcl $syscompat4 $syscompat4dcl $syscompat6 $syscompat6dcl $syscompat7 $syscompat7dcl $syscompat10 $syscompat10dcl $syscompat11 $syscompat11dcl $syscompat12 $syscompat12dcl $sysent $sysinc $sysarg $sysprotoend $systracetmp $systraceret | ||||
case $# in | case $# in | ||||
0) echo "usage: $0 input-file <config-file>" 1>&2 | 0) echo "usage: $0 input-file <config-file>" 1>&2 | ||||
exit 1 | exit 1 | ||||
;; | ;; | ||||
esac | esac | ||||
if [ -n "$2" ]; then | if [ -n "$2" ]; then | ||||
▲ Show 20 Lines • Show All 52 Lines • ▼ Show 20 Lines | BEGIN { | ||||
syscompat6 = \"$syscompat6\" | syscompat6 = \"$syscompat6\" | ||||
syscompat6dcl = \"$syscompat6dcl\" | syscompat6dcl = \"$syscompat6dcl\" | ||||
syscompat7 = \"$syscompat7\" | syscompat7 = \"$syscompat7\" | ||||
syscompat7dcl = \"$syscompat7dcl\" | syscompat7dcl = \"$syscompat7dcl\" | ||||
syscompat10 = \"$syscompat10\" | syscompat10 = \"$syscompat10\" | ||||
syscompat10dcl = \"$syscompat10dcl\" | syscompat10dcl = \"$syscompat10dcl\" | ||||
syscompat11 = \"$syscompat11\" | syscompat11 = \"$syscompat11\" | ||||
syscompat11dcl = \"$syscompat11dcl\" | syscompat11dcl = \"$syscompat11dcl\" | ||||
syscompat12 = \"$syscompat12\" | |||||
syscompat12dcl = \"$syscompat12dcl\" | |||||
sysent = \"$sysent\" | sysent = \"$sysent\" | ||||
syssw = \"$syssw\" | syssw = \"$syssw\" | ||||
sysinc = \"$sysinc\" | sysinc = \"$sysinc\" | ||||
sysarg = \"$sysarg\" | sysarg = \"$sysarg\" | ||||
sysnames = \"$sysnames\" | sysnames = \"$sysnames\" | ||||
syshdr = \"$syshdr\" | syshdr = \"$syshdr\" | ||||
sysmk = \"$sysmk\" | sysmk = \"$sysmk\" | ||||
systrace = \"$systrace\" | systrace = \"$systrace\" | ||||
systracetmp = \"$systracetmp\" | systracetmp = \"$systracetmp\" | ||||
systraceret = \"$systraceret\" | systraceret = \"$systraceret\" | ||||
compat = \"$compat\" | compat = \"$compat\" | ||||
compat4 = \"$compat4\" | compat4 = \"$compat4\" | ||||
compat6 = \"$compat6\" | compat6 = \"$compat6\" | ||||
compat7 = \"$compat7\" | compat7 = \"$compat7\" | ||||
compat10 = \"$compat10\" | compat10 = \"$compat10\" | ||||
compat11 = \"$compat11\" | compat11 = \"$compat11\" | ||||
compat12 = \"$compat12\" | |||||
syscallprefix = \"$syscallprefix\" | syscallprefix = \"$syscallprefix\" | ||||
switchname = \"$switchname\" | switchname = \"$switchname\" | ||||
namesname = \"$namesname\" | namesname = \"$namesname\" | ||||
infile = \"$1\" | infile = \"$1\" | ||||
abi_func_prefix = \"$abi_func_prefix\" | abi_func_prefix = \"$abi_func_prefix\" | ||||
capenabled_string = \"$capenabled\" | capenabled_string = \"$capenabled\" | ||||
"' | "' | ||||
Show All 38 Lines | BEGIN { | ||||
printf "#endif\n\n" > sysarg | printf "#endif\n\n" > sysarg | ||||
printf "\n#ifdef %s\n\n", compat > syscompat | printf "\n#ifdef %s\n\n", compat > syscompat | ||||
printf "\n#ifdef %s\n\n", compat4 > syscompat4 | printf "\n#ifdef %s\n\n", compat4 > syscompat4 | ||||
printf "\n#ifdef %s\n\n", compat6 > syscompat6 | printf "\n#ifdef %s\n\n", compat6 > syscompat6 | ||||
printf "\n#ifdef %s\n\n", compat7 > syscompat7 | printf "\n#ifdef %s\n\n", compat7 > syscompat7 | ||||
printf "\n#ifdef %s\n\n", compat10 > syscompat10 | printf "\n#ifdef %s\n\n", compat10 > syscompat10 | ||||
printf "\n#ifdef %s\n\n", compat11 > syscompat11 | printf "\n#ifdef %s\n\n", compat11 > syscompat11 | ||||
printf "\n#ifdef %s\n\n", compat12 > syscompat12 | |||||
printf "/*\n * System call names.\n *\n" > sysnames | printf "/*\n * System call names.\n *\n" > sysnames | ||||
printf " * DO NOT EDIT-- this file is automatically " generated ".\n" > sysnames | printf " * DO NOT EDIT-- this file is automatically " generated ".\n" > sysnames | ||||
printf " * $%s$\n", "FreeBSD" > sysnames | printf " * $%s$\n", "FreeBSD" > sysnames | ||||
printf " */\n\n" > sysnames | printf " */\n\n" > sysnames | ||||
printf "const char *%s[] = {\n", namesname > sysnames | printf "const char *%s[] = {\n", namesname > sysnames | ||||
printf "/*\n * System call numbers.\n *\n" > syshdr | printf "/*\n * System call numbers.\n *\n" > syshdr | ||||
Show All 35 Lines | $1 ~ /^#[ ]*if/ { | ||||
print > sysdcl | print > sysdcl | ||||
print > sysarg | print > sysarg | ||||
print > syscompat | print > syscompat | ||||
print > syscompat4 | print > syscompat4 | ||||
print > syscompat6 | print > syscompat6 | ||||
print > syscompat7 | print > syscompat7 | ||||
print > syscompat10 | print > syscompat10 | ||||
print > syscompat11 | print > syscompat11 | ||||
print > syscompat12 | |||||
print > sysnames | print > sysnames | ||||
print > systrace | print > systrace | ||||
print > systracetmp | print > systracetmp | ||||
print > systraceret | print > systraceret | ||||
savesyscall = syscall | savesyscall = syscall | ||||
next | next | ||||
} | } | ||||
$1 ~ /^#[ ]*else/ { | $1 ~ /^#[ ]*else/ { | ||||
print > sysent | print > sysent | ||||
print > sysdcl | print > sysdcl | ||||
print > sysarg | print > sysarg | ||||
print > syscompat | print > syscompat | ||||
print > syscompat4 | print > syscompat4 | ||||
print > syscompat6 | print > syscompat6 | ||||
print > syscompat7 | print > syscompat7 | ||||
print > syscompat10 | print > syscompat10 | ||||
print > syscompat11 | print > syscompat11 | ||||
print > syscompat12 | |||||
print > sysnames | print > sysnames | ||||
print > systrace | print > systrace | ||||
print > systracetmp | print > systracetmp | ||||
print > systraceret | print > systraceret | ||||
syscall = savesyscall | syscall = savesyscall | ||||
next | next | ||||
} | } | ||||
$1 ~ /^#/ { | $1 ~ /^#/ { | ||||
print > sysent | print > sysent | ||||
print > sysdcl | print > sysdcl | ||||
print > sysarg | print > sysarg | ||||
print > syscompat | print > syscompat | ||||
print > syscompat4 | print > syscompat4 | ||||
print > syscompat6 | print > syscompat6 | ||||
print > syscompat7 | print > syscompat7 | ||||
print > syscompat10 | print > syscompat10 | ||||
print > syscompat11 | print > syscompat11 | ||||
print > syscompat12 | |||||
print > sysnames | print > sysnames | ||||
print > systrace | print > systrace | ||||
print > systracetmp | print > systracetmp | ||||
print > systraceret | print > systraceret | ||||
next | next | ||||
} | } | ||||
# Returns true if the type "name" is the first flag in the type field | # Returns true if the type "name" is the first flag in the type field | ||||
function type(name, flags, n) { | function type(name, flags, n) { | ||||
▲ Show 20 Lines • Show All 120 Lines • ▼ Show 20 Lines | if (argalias == "") { | ||||
if (flag("COMPAT6")) | if (flag("COMPAT6")) | ||||
argalias = "freebsd6_" argalias | argalias = "freebsd6_" argalias | ||||
if (flag("COMPAT7")) | if (flag("COMPAT7")) | ||||
argalias = "freebsd7_" argalias | argalias = "freebsd7_" argalias | ||||
if (flag("COMPAT10")) | if (flag("COMPAT10")) | ||||
argalias = "freebsd10_" argalias | argalias = "freebsd10_" argalias | ||||
if (flag("COMPAT11")) | if (flag("COMPAT11")) | ||||
argalias = "freebsd11_" argalias | argalias = "freebsd11_" argalias | ||||
if (flag("COMPAT12")) | |||||
argalias = "freebsd12_" argalias | |||||
} | } | ||||
f++ | f++ | ||||
if ($f != "(") | if ($f != "(") | ||||
parserr($f, ")") | parserr($f, ")") | ||||
f++ | f++ | ||||
if (f == end) { | if (f == end) { | ||||
▲ Show 20 Lines • Show All 144 Lines • ▼ Show 20 Lines | if (!flag("NODEF")) { | ||||
printf("#define\t%s%s\t%d\n", syscallprefix, | printf("#define\t%s%s\t%d\n", syscallprefix, | ||||
funcalias, syscall) > syshdr | funcalias, syscall) > syshdr | ||||
printf(" \\\n\t%s.o", funcalias) > sysmk | printf(" \\\n\t%s.o", funcalias) > sysmk | ||||
} | } | ||||
syscall++ | syscall++ | ||||
next | next | ||||
} | } | ||||
type("COMPAT") || type("COMPAT4") || type("COMPAT6") || \ | type("COMPAT") || type("COMPAT4") || type("COMPAT6") || \ | ||||
type("COMPAT7") || type("COMPAT10") || type("COMPAT11") { | type("COMPAT7") || type("COMPAT10") || type("COMPAT11") || \ | ||||
type("COMPAT12") { | |||||
if (flag("COMPAT")) { | if (flag("COMPAT")) { | ||||
ncompat++ | ncompat++ | ||||
out = syscompat | out = syscompat | ||||
outdcl = syscompatdcl | outdcl = syscompatdcl | ||||
wrap = "compat" | wrap = "compat" | ||||
prefix = "o" | prefix = "o" | ||||
descr = "old" | descr = "old" | ||||
} else if (flag("COMPAT4")) { | } else if (flag("COMPAT4")) { | ||||
Show All 26 Lines | if (flag("COMPAT")) { | ||||
descr = "freebsd10" | descr = "freebsd10" | ||||
} else if (flag("COMPAT11")) { | } else if (flag("COMPAT11")) { | ||||
ncompat11++ | ncompat11++ | ||||
out = syscompat11 | out = syscompat11 | ||||
outdcl = syscompat11dcl | outdcl = syscompat11dcl | ||||
wrap = "compat11" | wrap = "compat11" | ||||
prefix = "freebsd11_" | prefix = "freebsd11_" | ||||
descr = "freebsd11" | descr = "freebsd11" | ||||
} else if (flag("COMPAT12")) { | |||||
ncompat12++ | |||||
out = syscompat12 | |||||
outdcl = syscompat12dcl | |||||
wrap = "compat12" | |||||
prefix = "freebsd12_" | |||||
descr = "freebsd12" | |||||
} | } | ||||
parseline() | parseline() | ||||
if (argc != 0 && !flag("NOARGS") && !flag("NOPROTO") && \ | if (argc != 0 && !flag("NOARGS") && !flag("NOPROTO") && \ | ||||
!flag("NODEF")) { | !flag("NODEF")) { | ||||
printf("struct %s {\n", argalias) > out | printf("struct %s {\n", argalias) > out | ||||
for (i = 1; i <= argc; i++) | for (i = 1; i <= argc; i++) | ||||
printf("\tchar %s_l_[PADL_(%s)]; %s %s; " \ | printf("\tchar %s_l_[PADL_(%s)]; %s %s; " \ | ||||
"char %s_r_[PADR_(%s)];\n", | "char %s_r_[PADR_(%s)];\n", | ||||
▲ Show 20 Lines • Show All 106 Lines • ▼ Show 20 Lines | END { | ||||
} | } | ||||
if (ncompat11 != 0) { | if (ncompat11 != 0) { | ||||
printf "\n#ifdef %s\n", compat11 > sysinc | printf "\n#ifdef %s\n", compat11 > sysinc | ||||
printf "#define compat11(n, name) n, (sy_call_t *)__CONCAT(freebsd11_,name)\n" > sysinc | printf "#define compat11(n, name) n, (sy_call_t *)__CONCAT(freebsd11_,name)\n" > sysinc | ||||
printf "#else\n" > sysinc | printf "#else\n" > sysinc | ||||
printf "#define compat11(n, name) 0, (sy_call_t *)nosys\n" > sysinc | printf "#define compat11(n, name) 0, (sy_call_t *)nosys\n" > sysinc | ||||
printf "#endif\n" > sysinc | printf "#endif\n" > sysinc | ||||
} | } | ||||
if (ncompat12 != 0) { | |||||
printf "\n#ifdef %s\n", compat12 > sysinc | |||||
printf "#define compat12(n, name) n, (sy_call_t *)__CONCAT(freebsd12_,name)\n" > sysinc | |||||
printf "#else\n" > sysinc | |||||
printf "#define compat12(n, name) 0, (sy_call_t *)nosys\n" > sysinc | |||||
printf "#endif\n" > sysinc | |||||
} | |||||
printf("\n#endif /* %s */\n\n", compat) > syscompatdcl | printf("\n#endif /* %s */\n\n", compat) > syscompatdcl | ||||
printf("\n#endif /* %s */\n\n", compat4) > syscompat4dcl | printf("\n#endif /* %s */\n\n", compat4) > syscompat4dcl | ||||
printf("\n#endif /* %s */\n\n", compat6) > syscompat6dcl | printf("\n#endif /* %s */\n\n", compat6) > syscompat6dcl | ||||
printf("\n#endif /* %s */\n\n", compat7) > syscompat7dcl | printf("\n#endif /* %s */\n\n", compat7) > syscompat7dcl | ||||
printf("\n#endif /* %s */\n\n", compat10) > syscompat10dcl | printf("\n#endif /* %s */\n\n", compat10) > syscompat10dcl | ||||
printf("\n#endif /* %s */\n\n", compat11) > syscompat11dcl | printf("\n#endif /* %s */\n\n", compat11) > syscompat11dcl | ||||
printf("\n#endif /* %s */\n\n", compat12) > syscompat12dcl | |||||
printf("\n#undef PAD_\n") > sysprotoend | printf("\n#undef PAD_\n") > sysprotoend | ||||
printf("#undef PADL_\n") > sysprotoend | printf("#undef PADL_\n") > sysprotoend | ||||
printf("#undef PADR_\n") > sysprotoend | printf("#undef PADR_\n") > sysprotoend | ||||
printf("\n#endif /* !%s */\n", sysproto_h) > sysprotoend | printf("\n#endif /* !%s */\n", sysproto_h) > sysprotoend | ||||
printf("\n") > sysmk | printf("\n") > sysmk | ||||
printf("};\n") > sysent | printf("};\n") > sysent | ||||
printf("};\n") > sysnames | printf("};\n") > sysnames | ||||
printf("#define\t%sMAXSYSCALL\t%d\n", syscallprefix, syscall) \ | printf("#define\t%sMAXSYSCALL\t%d\n", syscallprefix, syscall) \ | ||||
> syshdr | > syshdr | ||||
printf "\tdefault:\n\t\t*n_args = 0;\n\t\tbreak;\n\t};\n}\n" > systrace | printf "\tdefault:\n\t\t*n_args = 0;\n\t\tbreak;\n\t};\n}\n" > systrace | ||||
printf "\tdefault:\n\t\tbreak;\n\t};\n\tif (p != NULL)\n\t\tstrlcpy(desc, p, descsz);\n}\n" > systracetmp | printf "\tdefault:\n\t\tbreak;\n\t};\n\tif (p != NULL)\n\t\tstrlcpy(desc, p, descsz);\n}\n" > systracetmp | ||||
printf "\tdefault:\n\t\tbreak;\n\t};\n\tif (p != NULL)\n\t\tstrlcpy(desc, p, descsz);\n}\n" > systraceret | printf "\tdefault:\n\t\tbreak;\n\t};\n\tif (p != NULL)\n\t\tstrlcpy(desc, p, descsz);\n}\n" > systraceret | ||||
} ' | } ' | ||||
cat $sysinc $sysent >> $syssw | cat $sysinc $sysent >> $syssw | ||||
cat $sysarg $sysdcl \ | cat $sysarg $sysdcl \ | ||||
$syscompat $syscompatdcl \ | $syscompat $syscompatdcl \ | ||||
$syscompat4 $syscompat4dcl \ | $syscompat4 $syscompat4dcl \ | ||||
$syscompat6 $syscompat6dcl \ | $syscompat6 $syscompat6dcl \ | ||||
$syscompat7 $syscompat7dcl \ | $syscompat7 $syscompat7dcl \ | ||||
$syscompat10 $syscompat10dcl \ | $syscompat10 $syscompat10dcl \ | ||||
$syscompat11 $syscompat11dcl \ | $syscompat11 $syscompat11dcl \ | ||||
$syscompat12 $syscompat12dcl \ | |||||
$sysaue $sysprotoend > $sysproto | $sysaue $sysprotoend > $sysproto | ||||
cat $systracetmp >> $systrace | cat $systracetmp >> $systrace | ||||
cat $systraceret >> $systrace | cat $systraceret >> $systrace | ||||