makesyscalls.sh revision 164184
11541Srgrimes#! /bin/sh - 21541Srgrimes# @(#)makesyscalls.sh 8.1 (Berkeley) 6/10/93 350477Speter# $FreeBSD: head/sys/kern/makesyscalls.sh 164184 2006-11-11 16:26:58Z trhodes $ 41541Srgrimes 51541Srgrimesset -e 61541Srgrimes 799854Salfred# name of compat options: 81541Srgrimescompat=COMPAT_43 999854Salfredcompat4=COMPAT_FREEBSD4 101541Srgrimes 111541Srgrimes# output files: 121541Srgrimessysnames="syscalls.c" 1310905Sbdesysproto="../sys/sysproto.h" 1410905Sbdesysproto_h=_SYS_SYSPROTO_H_ 151541Srgrimessyshdr="../sys/syscall.h" 1634354Sjbsysmk="../sys/syscall.mk" 171541Srgrimessyssw="init_sysent.c" 1811294Sswallacesyscallprefix="SYS_" 1911294Sswallaceswitchname="sysent" 2011294Sswallacenamesname="syscallnames" 21160942Sjbsystrace="systrace_args.c" 221541Srgrimes 231541Srgrimes# tmp files: 24161327Sjhbsysaue="sysent.aue.$$" 2531627Sjmgsysdcl="sysent.dcl.$$" 2631627Sjmgsyscompat="sysent.compat.$$" 2731627Sjmgsyscompatdcl="sysent.compatdcl.$$" 2899854Salfredsyscompat4="sysent.compat4.$$" 2999854Salfredsyscompat4dcl="sysent.compat4dcl.$$" 3031627Sjmgsysent="sysent.switch.$$" 3131627Sjmgsysinc="sysinc.switch.$$" 3231627Sjmgsysarg="sysarg.switch.$$" 3399854Salfredsysprotoend="sysprotoend.$$" 341541Srgrimes 35161327Sjhbtrap "rm $sysaue $sysdcl $syscompat $syscompatdcl $syscompat4 $syscompat4dcl $sysent $sysinc $sysarg $sysprotoend" 0 361541Srgrimes 37161327Sjhbtouch $sysaue $sysdcl $syscompat $syscompatdcl $syscompat4 $syscompat4dcl $sysent $sysinc $sysarg $sysprotoend 3824373Speter 391541Srgrimescase $# in 4095258Sdes 0) echo "usage: $0 input-file <config-file>" 1>&2 411541Srgrimes exit 1 421541Srgrimes ;; 431541Srgrimesesac 441541Srgrimes 4536735Sdfrif [ -n "$2" -a -f "$2" ]; then 4611294Sswallace . $2 4711294Sswallacefi 4811294Sswallace 4911294Sswallacesed -e ' 5011294Sswallaces/\$//g 5111294Sswallace:join 5211294Sswallace /\\$/{a\ 5311294Sswallace 5411294Sswallace N 5511294Sswallace s/\\\n// 5611294Sswallace b join 5711294Sswallace } 5811294Sswallace2,${ 5911294Sswallace /^#/!s/\([{}()*,]\)/ \1 /g 6011294Sswallace} 6111294Sswallace' < $1 | awk " 621541Srgrimes BEGIN { 63161327Sjhb sysaue = \"$sysaue\" 641541Srgrimes sysdcl = \"$sysdcl\" 6510905Sbde sysproto = \"$sysproto\" 6699854Salfred sysprotoend = \"$sysprotoend\" 6710905Sbde sysproto_h = \"$sysproto_h\" 681541Srgrimes syscompat = \"$syscompat\" 6911294Sswallace syscompatdcl = \"$syscompatdcl\" 7099854Salfred syscompat4 = \"$syscompat4\" 7199854Salfred syscompat4dcl = \"$syscompat4dcl\" 721541Srgrimes sysent = \"$sysent\" 7336782Sbde syssw = \"$syssw\" 7411294Sswallace sysinc = \"$sysinc\" 7511294Sswallace sysarg = \"$sysarg\" 761541Srgrimes sysnames = \"$sysnames\" 771541Srgrimes syshdr = \"$syshdr\" 7834354Sjb sysmk = \"$sysmk\" 79160942Sjb systrace = \"$systrace\" 801541Srgrimes compat = \"$compat\" 8199854Salfred compat4 = \"$compat4\" 8211294Sswallace syscallprefix = \"$syscallprefix\" 8311294Sswallace switchname = \"$switchname\" 8411294Sswallace namesname = \"$namesname\" 851541Srgrimes infile = \"$1\" 861541Srgrimes "' 871541Srgrimes 8836782Sbde printf "/*\n * System call switch table.\n *\n" > syssw 8936782Sbde printf " * DO NOT EDIT-- this file is automatically generated.\n" > syssw 9089977Sbde printf " * $%s$\n", "FreeBSD" > syssw 9110905Sbde 9211294Sswallace printf "/*\n * System call prototypes.\n *\n" > sysarg 9311294Sswallace printf " * DO NOT EDIT-- this file is automatically generated.\n" > sysarg 9489977Sbde printf " * $%s$\n", "FreeBSD" > sysarg 951541Srgrimes 9631785Seivind printf "\n#ifdef %s\n\n", compat > syscompat 9799854Salfred printf "\n#ifdef %s\n\n", compat4 > syscompat4 981541Srgrimes 991541Srgrimes printf "/*\n * System call names.\n *\n" > sysnames 1001541Srgrimes printf " * DO NOT EDIT-- this file is automatically generated.\n" > sysnames 10189977Sbde printf " * $%s$\n", "FreeBSD" > sysnames 1021541Srgrimes 1031541Srgrimes printf "/*\n * System call numbers.\n *\n" > syshdr 1041541Srgrimes printf " * DO NOT EDIT-- this file is automatically generated.\n" > syshdr 10589977Sbde printf " * $%s$\n", "FreeBSD" > syshdr 10634354Sjb printf "# FreeBSD system call names.\n" > sysmk 10734354Sjb printf "# DO NOT EDIT-- this file is automatically generated.\n" > sysmk 10889984Sbde printf "# $%s$\n", "FreeBSD" > sysmk 109160942Sjb 110160942Sjb printf "/*\n * System call argument to DTrace register array converstion.\n *\n" > systrace 111160942Sjb printf " * DO NOT EDIT-- this file is automatically generated.\n" > systrace 112160942Sjb printf " * $%s$\n", "FreeBSD" > systrace 1131541Srgrimes } 1141541Srgrimes NR == 1 { 11550478Speter gsub("[$]FreeBSD: ", "", $0) 11610906Sbde gsub(" [$]", "", $0) 11711294Sswallace 11836782Sbde printf " * created from%s\n */\n\n", $0 > syssw 11911294Sswallace 12036782Sbde printf "\n/* The casts are bogus but will do for now. */\n" > sysent 12111294Sswallace printf "struct sysent %s[] = {\n",switchname > sysent 12210905Sbde 12311294Sswallace printf " * created from%s\n */\n\n", $0 > sysarg 12433039Sbde printf "#ifndef %s\n", sysproto_h > sysarg 12533039Sbde printf "#define\t%s\n\n", sysproto_h > sysarg 126103574Salfred printf "#include <sys/signal.h>\n" > sysarg 127103574Salfred printf "#include <sys/acl.h>\n" > sysarg 128164184Strhodes printf "#include <sys/_semaphore.h>\n" > sysarg 129112903Sjeff printf "#include <sys/ucontext.h>\n\n" > sysarg 130161327Sjhb printf "#include <bsm/audit_kevents.h>\n\n" > sysarg 13133039Sbde printf "struct proc;\n\n" > sysarg 13283366Sjulian printf "struct thread;\n\n" > sysarg 13336770Sbde printf "#define\tPAD_(t)\t(sizeof(register_t) <= sizeof(t) ? \\\n" > sysarg 13436770Sbde printf "\t\t0 : sizeof(register_t) - sizeof(t))\n\n" > sysarg 13582149Stmm printf "#if BYTE_ORDER == LITTLE_ENDIAN\n"> sysarg 13682149Stmm printf "#define\tPADL_(t)\t0\n" > sysarg 13782149Stmm printf "#define\tPADR_(t)\tPAD_(t)\n" > sysarg 13882149Stmm printf "#else\n" > sysarg 13982149Stmm printf "#define\tPADL_(t)\tPAD_(t)\n" > sysarg 14082149Stmm printf "#define\tPADR_(t)\t0\n" > sysarg 14182149Stmm printf "#endif\n\n" > sysarg 1421541Srgrimes 1431541Srgrimes printf " * created from%s\n */\n\n", $0 > sysnames 144106149Sdwmalone printf "const char *%s[] = {\n", namesname > sysnames 1451541Srgrimes 1461541Srgrimes printf " * created from%s\n */\n\n", $0 > syshdr 1472700Swollman 14834354Sjb printf "# created from%s\nMIASM = ", $0 > sysmk 14934354Sjb 150160942Sjb printf " * This file is part of the DTrace syscall provider.\n */\n\n" > systrace 151160942Sjb printf "static void\nsystrace_args(int sysnum, void *params, u_int64_t *uarg, int *n_args)\n{\n" > systrace 152160942Sjb printf "\tint64_t *iarg = (int64_t *) uarg;\n" > systrace 153160942Sjb printf "\tswitch (sysnum) {\n" > systrace 154160942Sjb 1551541Srgrimes next 1561541Srgrimes } 1571541Srgrimes NF == 0 || $1 ~ /^;/ { 1581541Srgrimes next 1591541Srgrimes } 16011294Sswallace $1 ~ /^#[ ]*include/ { 16111294Sswallace print > sysinc 16211294Sswallace next 16311294Sswallace } 1641541Srgrimes $1 ~ /^#[ ]*if/ { 1651541Srgrimes print > sysent 1661541Srgrimes print > sysdcl 16711294Sswallace print > sysarg 1681541Srgrimes print > syscompat 16999854Salfred print > syscompat4 1701541Srgrimes print > sysnames 1711541Srgrimes savesyscall = syscall 1721541Srgrimes next 1731541Srgrimes } 1741541Srgrimes $1 ~ /^#[ ]*else/ { 1751541Srgrimes print > sysent 1761541Srgrimes print > sysdcl 17711294Sswallace print > sysarg 1781541Srgrimes print > syscompat 17999854Salfred print > syscompat4 1801541Srgrimes print > sysnames 1811541Srgrimes syscall = savesyscall 1821541Srgrimes next 1831541Srgrimes } 1841541Srgrimes $1 ~ /^#/ { 1851541Srgrimes print > sysent 1861541Srgrimes print > sysdcl 18711294Sswallace print > sysarg 1881541Srgrimes print > syscompat 18999854Salfred print > syscompat4 1901541Srgrimes print > sysnames 1911541Srgrimes next 1921541Srgrimes } 1931541Srgrimes syscall != $1 { 19436770Sbde printf "%s: line %d: syscall number out of sync at %d\n", 19536770Sbde infile, NR, syscall 1961541Srgrimes printf "line is:\n" 1971541Srgrimes print 1981541Srgrimes exit 1 1991541Srgrimes } 20060287Sbde function align_sysent_comment(column) { 20160287Sbde printf("\t") > sysent 20260287Sbde column = column + 8 - column % 8 20360287Sbde while (column < 56) { 20460287Sbde printf("\t") > sysent 20560287Sbde column = column + 8 20660287Sbde } 20760287Sbde } 20811294Sswallace function parserr(was, wanted) { 20936770Sbde printf "%s: line %d: unexpected %s (expected %s)\n", 21011294Sswallace infile, NR, was, wanted 21111294Sswallace exit 1 21211294Sswallace } 21311294Sswallace function parseline() { 214146806Srwatson f=4 # toss number, type, audit event 21511294Sswallace argc= 0; 21660287Sbde argssize = "0" 21711294Sswallace if ($NF != "}") { 21811294Sswallace funcalias=$(NF-2) 21911294Sswallace argalias=$(NF-1) 22011294Sswallace rettype=$NF 22111294Sswallace end=NF-3 22211294Sswallace } else { 22311294Sswallace funcalias="" 22411294Sswallace argalias="" 22511294Sswallace rettype="int" 22611294Sswallace end=NF 22710905Sbde } 228146806Srwatson if ($3 == "NODEF") { 229146806Srwatson auditev="AUE_NULL" 230146806Srwatson funcname=$4 231146806Srwatson argssize = "AS(" $6 ")" 23211294Sswallace return 23311294Sswallace } 23411294Sswallace if ($f != "{") 23511294Sswallace parserr($f, "{") 23611294Sswallace f++ 23711294Sswallace if ($end != "}") 23811294Sswallace parserr($end, "}") 23911294Sswallace end-- 24011294Sswallace if ($end != ";") 24111294Sswallace parserr($end, ";") 24211294Sswallace end-- 24311294Sswallace if ($end != ")") 24411294Sswallace parserr($end, ")") 24511294Sswallace end-- 24611294Sswallace 24711294Sswallace f++ #function return type 24811294Sswallace 24911294Sswallace funcname=$f 25011294Sswallace if (funcalias == "") 25111294Sswallace funcalias = funcname 25211294Sswallace if (argalias == "") { 25311294Sswallace argalias = funcname "_args" 254146806Srwatson if ($3 == "COMPAT") 25511330Sswallace argalias = "o" argalias 256146806Srwatson if ($3 == "COMPAT4") 25799854Salfred argalias = "freebsd4_" argalias 25811294Sswallace } 25911294Sswallace f++ 26011294Sswallace 26111294Sswallace if ($f != "(") 26211294Sswallace parserr($f, ")") 26311294Sswallace f++ 26411294Sswallace 26511294Sswallace if (f == end) { 26611294Sswallace if ($f != "void") 26711294Sswallace parserr($f, "argument definition") 26811294Sswallace return 26911294Sswallace } 27011294Sswallace 27111294Sswallace while (f <= end) { 27211294Sswallace argc++ 27311294Sswallace argtype[argc]="" 27411294Sswallace oldf="" 27511294Sswallace while (f < end && $(f+1) != ",") { 27611294Sswallace if (argtype[argc] != "" && oldf != "*") 27711294Sswallace argtype[argc] = argtype[argc]" "; 27811294Sswallace argtype[argc] = argtype[argc]$f; 27911294Sswallace oldf = $f; 28011294Sswallace f++ 28111294Sswallace } 28211294Sswallace if (argtype[argc] == "") 28311294Sswallace parserr($f, "argument definition") 28411294Sswallace argname[argc]=$f; 28511294Sswallace f += 2; # skip name, and any comma 28611294Sswallace } 28760287Sbde if (argc != 0) 28860287Sbde argssize = "AS(" argalias ")" 2891541Srgrimes } 290146806Srwatson { comment = $4 291146806Srwatson if (NF < 7) 292146806Srwatson for (i = 5; i <= NF; i++) 29311294Sswallace comment = comment " " $i 29411294Sswallace } 29582585Sdillon 296146806Srwatson # 297146806Srwatson # The AUE_ audit event identifier. 298146806Srwatson # 299146806Srwatson { 300146806Srwatson auditev = $2; 301146806Srwatson } 302146806Srwatson 303146806Srwatson $3 == "STD" || $3 == "NODEF" || $3 == "NOARGS" || $3 == "NOPROTO" \ 304146806Srwatson || $3 == "NOIMPL" || $3 == "NOSTD" { 30511294Sswallace parseline() 306160942Sjb printf("\t/* %s */\n\tcase %d: {\n", funcname, syscall) > systrace 307160942Sjb if (argc > 0) { 308160942Sjb printf("\t\tstruct %s *p = params;\n", argalias) > systrace 309160942Sjb for (i = 1; i <= argc; i++) { 310160942Sjb if (index(argtype[i], "*") > 0 || argtype[i] == "caddr_t") 311160942Sjb printf("\t\tuarg[%d] = (intptr_t) p->%s; /* %s */\n", \ 312160942Sjb i - 1, \ 313160942Sjb argname[i], argtype[i]) > systrace 314160942Sjb else if (substr(argtype[i], 1, 1) == "u" || argtype[i] == "size_t") 315160942Sjb printf("\t\tuarg[%d] = p->%s; /* %s */\n", \ 316160942Sjb i - 1, \ 317160942Sjb argname[i], argtype[i]) > systrace 318160942Sjb else 319160942Sjb printf("\t\tiarg[%d] = p->%s; /* %s */\n", \ 320160942Sjb i - 1, \ 321160942Sjb argname[i], argtype[i]) > systrace 322160942Sjb } 323160942Sjb } 324160942Sjb printf("\t\t*n_args = %d;\n\t\tbreak;\n\t}\n", argc) > systrace 32511330Sswallace if ((!nosys || funcname != "nosys") && \ 32669448Salfred (funcname != "lkmnosys") && (funcname != "lkmressys")) { 327146806Srwatson if (argc != 0 && $3 != "NOARGS" && $3 != "NOPROTO") { 32883046Sobrien printf("struct %s {\n", argalias) > sysarg 32911294Sswallace for (i = 1; i <= argc; i++) 33082149Stmm printf("\tchar %s_l_[PADL_(%s)]; " \ 33182149Stmm "%s %s; char %s_r_[PADR_(%s)];\n", 33282149Stmm argname[i], argtype[i], 33336735Sdfr argtype[i], argname[i], 33436735Sdfr argname[i], argtype[i]) > sysarg 33511294Sswallace printf("};\n") > sysarg 33611294Sswallace } 337146806Srwatson else if ($3 != "NOARGS" && $3 != "NOPROTO" && \ 338146806Srwatson $3 != "NODEF") 33983046Sobrien printf("struct %s {\n\tregister_t dummy;\n};\n", 34036770Sbde argalias) > sysarg 34110905Sbde } 342146806Srwatson if (($3 != "NOPROTO" && $3 != "NODEF" && \ 34384600Smarcel (funcname != "nosys" || !nosys)) || \ 34484600Smarcel (funcname == "lkmnosys" && !lkmnosys) || \ 34584600Smarcel funcname == "lkmressys") { 34692721Salfred printf("%s\t%s(struct thread *, struct %s *)", 34718277Sbde rettype, funcname, argalias) > sysdcl 34818277Sbde printf(";\n") > sysdcl 349161327Sjhb printf("#define\t%sAUE_%s\t%s\n", syscallprefix, 350161327Sjhb funcalias, auditev) > sysaue 35111330Sswallace } 35211294Sswallace if (funcname == "nosys") 3532671Sats nosys = 1 35411294Sswallace if (funcname == "lkmnosys") 3554216Sats lkmnosys = 1 356160798Sjhb printf("\t{ %s, (sy_call_t *)", argssize) > sysent 357160798Sjhb column = 8 + 2 + length(argssize) + 15 358146806Srwatson if ($3 == "NOIMPL") { 359160942Sjb printf("%s },", "nosys, AUE_NULL, NULL, 0, 0") > sysent 36069445Salfred column = column + length("nosys") + 3 361146806Srwatson } else if ($3 == "NOSTD") { 362160942Sjb printf("%s },", "lkmressys, AUE_NULL, NULL, 0, 0") > sysent 36384600Smarcel column = column + length("lkmressys") + 3 36469445Salfred } else { 365160942Sjb printf("%s, %s, NULL, 0, 0 },", funcname, auditev) > sysent 366146806Srwatson column = column + length(funcname) + length(auditev) + 3 36769445Salfred } 36860287Sbde align_sysent_comment(column) 36958963Salfred printf("/* %d = %s */\n", syscall, funcalias) > sysent 37036770Sbde printf("\t\"%s\",\t\t\t/* %d = %s */\n", 37111294Sswallace funcalias, syscall, funcalias) > sysnames 372146806Srwatson if ($3 != "NODEF") { 37336770Sbde printf("#define\t%s%s\t%d\n", syscallprefix, 37411294Sswallace funcalias, syscall) > syshdr 37534354Sjb printf(" \\\n\t%s.o", funcalias) > sysmk 37634354Sjb } 3771541Srgrimes syscall++ 3781541Srgrimes next 3791541Srgrimes } 380146806Srwatson $3 == "COMPAT" || $3 == "COMPAT4" || $3 == "CPT_NOA" { 381146806Srwatson if ($3 == "COMPAT" || $3 == "CPT_NOA") { 38299854Salfred ncompat++ 38399854Salfred out = syscompat 38499854Salfred outdcl = syscompatdcl 38599854Salfred wrap = "compat" 38699854Salfred prefix = "o" 387146806Srwatson } else if ($3 == "COMPAT4") { 38899854Salfred ncompat4++ 38999854Salfred out = syscompat4 39099854Salfred outdcl = syscompat4dcl 39199854Salfred wrap = "compat4" 39299854Salfred prefix = "freebsd4_" 39399854Salfred } 39411294Sswallace parseline() 395146806Srwatson if (argc != 0 && $3 != "CPT_NOA") { 39699854Salfred printf("struct %s {\n", argalias) > out 39711294Sswallace for (i = 1; i <= argc; i++) 39882149Stmm printf("\tchar %s_l_[PADL_(%s)]; %s %s; " \ 39982149Stmm "char %s_r_[PADR_(%s)];\n", 40082149Stmm argname[i], argtype[i], 40136735Sdfr argtype[i], argname[i], 40299854Salfred argname[i], argtype[i]) > out 40399854Salfred printf("};\n") > out 40411294Sswallace } 405146806Srwatson else if($3 != "CPT_NOA") 40683046Sobrien printf("struct %s {\n\tregister_t dummy;\n};\n", 40736770Sbde argalias) > sysarg 40899854Salfred printf("%s\t%s%s(struct thread *, struct %s *);\n", 40999854Salfred rettype, prefix, funcname, argalias) > outdcl 410160942Sjb printf("\t{ %s(%s,%s), %s, NULL, 0, 0 },", 411160798Sjhb wrap, argssize, funcname, auditev) > sysent 412160798Sjhb align_sysent_comment(8 + 9 + \ 413146806Srwatson length(argssize) + 1 + length(funcname) + length(auditev) + 4) 41460287Sbde printf("/* %d = old %s */\n", syscall, funcalias) > sysent 41536770Sbde printf("\t\"old.%s\",\t\t/* %d = old %s */\n", 41611294Sswallace funcalias, syscall, funcalias) > sysnames 41736770Sbde printf("\t\t\t\t/* %d is old %s */\n", 41811294Sswallace syscall, funcalias) > syshdr 4191541Srgrimes syscall++ 4201541Srgrimes next 4211541Srgrimes } 422146806Srwatson $3 == "LIBCOMPAT" { 42336782Sbde ncompat++ 42411294Sswallace parseline() 42511294Sswallace printf("%s\to%s();\n", rettype, funcname) > syscompatdcl 426160942Sjb printf("\t{ compat(%s,%s), %s, NULL, 0, 0 },", 427160798Sjhb argssize, funcname, auditev) > sysent 428160798Sjhb align_sysent_comment(8 + 9 + \ 429146806Srwatson length(argssize) + 1 + length(funcname) + length(auditev) + 4) 43060287Sbde printf("/* %d = old %s */\n", syscall, funcalias) > sysent 43136770Sbde printf("\t\"old.%s\",\t\t/* %d = old %s */\n", 43211294Sswallace funcalias, syscall, funcalias) > sysnames 43336770Sbde printf("#define\t%s%s\t%d\t/* compatibility; still used by libc */\n", 43411294Sswallace syscallprefix, funcalias, syscall) > syshdr 43534354Sjb printf(" \\\n\t%s.o", funcalias) > sysmk 4361541Srgrimes syscall++ 4371541Srgrimes next 4381541Srgrimes } 439146806Srwatson $3 == "OBSOL" { 440160942Sjb printf("\t{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },") > sysent 44160287Sbde align_sysent_comment(34) 44260287Sbde printf("/* %d = obsolete %s */\n", syscall, comment) > sysent 44336770Sbde printf("\t\"obs_%s\",\t\t\t/* %d = obsolete %s */\n", 444146806Srwatson $4, syscall, comment) > sysnames 44536770Sbde printf("\t\t\t\t/* %d is obsolete %s */\n", 4461541Srgrimes syscall, comment) > syshdr 4471541Srgrimes syscall++ 4481541Srgrimes next 4491541Srgrimes } 450146806Srwatson $3 == "UNIMPL" { 451160942Sjb printf("\t{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },\t\t\t/* %d = %s */\n", 4521541Srgrimes syscall, comment) > sysent 45336770Sbde printf("\t\"#%d\",\t\t\t/* %d = %s */\n", 4541541Srgrimes syscall, syscall, comment) > sysnames 4551541Srgrimes syscall++ 4561541Srgrimes next 4571541Srgrimes } 4581541Srgrimes { 459146806Srwatson printf "%s: line %d: unrecognized keyword %s\n", infile, NR, $3 4601541Srgrimes exit 1 4611541Srgrimes } 4621541Srgrimes END { 46360287Sbde printf "\n#define AS(name) (sizeof(struct name) / sizeof(register_t))\n" > sysinc 46499854Salfred 46599854Salfred if (ncompat != 0 || ncompat4 != 0) 46699854Salfred printf "#include \"opt_compat.h\"\n\n" > syssw 467146806Srwatson printf "#include \<bsm/audit_kevents.h\>\n" > syssw 46899854Salfred 46936782Sbde if (ncompat != 0) { 47036782Sbde printf "\n#ifdef %s\n", compat > sysinc 47136782Sbde printf "#define compat(n, name) n, (sy_call_t *)__CONCAT(o,name)\n" > sysinc 47236782Sbde printf "#else\n" > sysinc 47336782Sbde printf "#define compat(n, name) 0, (sy_call_t *)nosys\n" > sysinc 47436782Sbde printf "#endif\n" > sysinc 47536782Sbde } 47636782Sbde 47799854Salfred if (ncompat4 != 0) { 47899854Salfred printf "\n#ifdef %s\n", compat4 > sysinc 47999854Salfred printf "#define compat4(n, name) n, (sy_call_t *)__CONCAT(freebsd4_,name)\n" > sysinc 48099854Salfred printf "#else\n" > sysinc 48199854Salfred printf "#define compat4(n, name) 0, (sy_call_t *)nosys\n" > sysinc 48299854Salfred printf "#endif\n" > sysinc 48399854Salfred } 48499854Salfred 48536735Sdfr printf("\n#endif /* %s */\n\n", compat) > syscompatdcl 4861541Srgrimes 48799854Salfred printf("\n#endif /* %s */\n\n", compat4) > syscompat4dcl 48899854Salfred 489161327Sjhb printf("\n#undef PAD_\n") > sysprotoend 49099854Salfred printf("#undef PADL_\n") > sysprotoend 49199854Salfred printf("#undef PADR_\n") > sysprotoend 49299854Salfred printf("\n#endif /* !%s */\n", sysproto_h) > sysprotoend 49399854Salfred 49437227Sphk printf("\n") > sysmk 49514331Speter printf("};\n") > sysent 4961541Srgrimes printf("};\n") > sysnames 49711294Sswallace printf("#define\t%sMAXSYSCALL\t%d\n", syscallprefix, syscall) \ 49836770Sbde > syshdr 499160942Sjb printf "\tdefault:\n\t\t*n_args = 0;\n\t\tbreak;\n\t};\n}\n" > systrace 5001541Srgrimes } ' 5011541Srgrimes 50236782Sbdecat $sysinc $sysent >> $syssw 50399854Salfredcat $sysarg $sysdcl \ 50499854Salfred $syscompat $syscompatdcl \ 50599854Salfred $syscompat4 $syscompat4dcl \ 506161327Sjhb $sysaue $sysprotoend > $sysproto 50799854Salfred 508