svn commit: r328598 - head/sys/kern
Ed Maste
emaste at FreeBSD.org
Tue Jan 30 18:29:38 UTC 2018
Author: emaste
Date: Tue Jan 30 18:29:38 2018
New Revision: 328598
URL: https://svnweb.freebsd.org/changeset/base/328598
Log:
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
Modified:
head/sys/kern/makesyscalls.sh
Modified: head/sys/kern/makesyscalls.sh
==============================================================================
--- head/sys/kern/makesyscalls.sh Tue Jan 30 17:20:28 2018 (r328597)
+++ head/sys/kern/makesyscalls.sh Tue Jan 30 18:29:38 2018 (r328598)
@@ -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
}
{
More information about the svn-src-head
mailing list