makesyscalls: permit a range of syscall numbers for UNIMPL

Some ABIs have large gaps in syscall numbers.  Allow gaps to be filled
as ranges of UNIMPL, with an entry like:

248-1023	AUE_NULL	UNIMPL	unimplemented

Reviewed by:	jhb, gnn
Sponsored by:	Turing Robotic Industries Inc.
Differential Revision:	https://reviews.freebsd.org/D14122
This commit is contained in:
Ed Maste 2018-01-30 18:29:38 +00:00
parent e5c2ece714
commit 37880089ac
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=328598

View File

@ -254,13 +254,6 @@ sed -e '
print > systraceret
next
}
syscall != $1 {
printf "%s: line %d: syscall number out of sync at %d\n",
infile, NR, syscall
printf "line is:\n"
print
exit 1
}
# Returns true if the type "name" is the first flag in the type field
function type(name, flags, n) {
n = split($3, flags, /\|/)
@ -274,6 +267,29 @@ sed -e '
return 1
return 0
}
{
n = split($1, syscall_range, /-/)
if (n == 1) {
syscall_range[2] = syscall_range[1]
} else if (n == 2) {
if (!type("UNIMPL")) {
printf "%s: line %d: range permitted only with UNIMPL\n",
infile, NR
exit 1
}
} else {
printf "%s: line %d: invalid syscall number or range %s\n",
infile, NR, $1
exit 1
}
}
syscall != syscall_range[1] {
printf "%s: line %d: syscall number out of sync at %d\n",
infile, NR, syscall
printf "line is:\n"
print
exit 1
}
function align_sysent_comment(column) {
printf("\t") > sysent
column = column + 8 - column % 8
@ -614,11 +630,13 @@ sed -e '
next
}
type("UNIMPL") {
printf("\t{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },\t\t\t/* %d = %s */\n",
syscall, comment) > sysent
printf("\t\"#%d\",\t\t\t/* %d = %s */\n",
syscall, syscall, comment) > sysnames
syscall++
while (syscall <= syscall_range[2]) {
printf("\t{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },\t\t\t/* %d = %s */\n",
syscall, comment) > sysent
printf("\t\"#%d\",\t\t\t/* %d = %s */\n",
syscall, syscall, comment) > sysnames
syscall++
}
next
}
{