xref: /csrg-svn/sys/kern/syscalls.awk (revision 35764)
1*35764Smarcawk < syscalls '\
2*35764Smarc	BEGIN { \
3*35764Smarc		sysent = "sysent";
4*35764Smarc		sysnames = "syscall.c";
5*35764Smarc		syshdr = "syscall.h";
6*35764Smarc		printf "/*\n * System call names.\n */\n" > sysnames; \
7*35764Smarc		printf "char *syscallnames[] = {\n" > sysnames; \
8*35764Smarc		printf "/*\n * System call numbers.\n */\n" > syshdr; \
9*35764Smarc	} \
10*35764Smarc	$1 ~ /^#[ 	]*if/ { \
11*35764Smarc		print > sysent; \
12*35764Smarc		savesyscall = syscall; \
13*35764Smarc		next;
14*35764Smarc	} \
15*35764Smarc	$1 ~ /^#[ 	]*el/ { \
16*35764Smarc		print > sysent; \
17*35764Smarc		syscall = savesyscall; \
18*35764Smarc		next; \
19*35764Smarc	} \
20*35764Smarc	$1 ~ /^#/ { \
21*35764Smarc		print > sysent; \
22*35764Smarc		next; \
23*35764Smarc	} \
24*35764Smarc	syscall != $1 { \
25*35764Smarc		printf "syscall number out of sync at %d; line is:\n", syscall; \
26*35764Smarc		print; \
27*35764Smarc		exit 1; \
28*35764Smarc	} \
29*35764Smarc	{	comment = $4; \
30*35764Smarc		for (i = 5; i <= NF; i++) \
31*35764Smarc			comment = comment " " $i; \
32*35764Smarc		if (NF < 5) \
33*35764Smarc			$5 = $4; \
34*35764Smarc	} \
35*35764Smarc	$2 == "STD" { \
36*35764Smarc		printf("\t%d, %s,\t\t\t/* %d = %s */\n", \
37*35764Smarc		    $3, $4, syscall, $5) > sysent; \
38*35764Smarc		printf("\t\"%s\",\t\t\t/* %d = %s */\n", \
39*35764Smarc		    $5, syscall, $5) > sysnames; \
40*35764Smarc		printf("#define\tSYS_%s\t%d\n", \
41*35764Smarc		    $5, syscall) > syshdr; \
42*35764Smarc	} \
43*35764Smarc	$2 == "COMPAT" { \
44*35764Smarc		printf("\tcompat(%d, %s),\t\t/* %d = old %s */\n", \
45*35764Smarc		    $3, $4, syscall, $5) > sysent; \
46*35764Smarc		printf("\t\"old %s\",\t\t/* %d = old %s */\n", \
47*35764Smarc		    $5, syscall, $5) > sysnames; \
48*35764Smarc		printf("\t\t\t\t/* %d is old %s */\n", \
49*35764Smarc		    syscall, comment) > syshdr; \
50*35764Smarc	} \
51*35764Smarc	$2 == "OBSOL" { \
52*35764Smarc		printf("\t0, nosys,\t\t\t/* %d = old %s */\n", \
53*35764Smarc		    syscall, comment) > sysent; \
54*35764Smarc		printf("\t\"#%d\",\t\t\t/* %d = old %s */\n", \
55*35764Smarc		    syscall, syscall, comment) > sysnames; \
56*35764Smarc		printf("\t\t\t\t/* %d is old %s */\n", \
57*35764Smarc		    syscall, comment) > syshdr; \
58*35764Smarc	} \
59*35764Smarc	$2 == "UNIMPL" { \
60*35764Smarc		printf("\t0, nosys,\t\t\t/* %d = %s */\n", \
61*35764Smarc		    syscall, comment) > sysent; \
62*35764Smarc		printf("\t\"#%d\",\t\t\t/* %d = %s */\n", \
63*35764Smarc		    syscall, syscall, comment) > sysnames; \
64*35764Smarc	} \
65*35764Smarc	{ syscall++ }\
66*35764Smarc	END { \
67*35764Smarc		printf("};\n") > sysnames; \
68*35764Smarc	}
69*35764Smarc	'
70