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
        }
        {
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to