Changeset View
Changeset View
Standalone View
Standalone View
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 | ||||