aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrooks Davis <brooks@FreeBSD.org>2021-01-26 18:27:44 +0000
committerBrooks Davis <brooks@FreeBSD.org>2021-01-26 18:27:44 +0000
commit119fa6ee8a8056aab5e4ab1719d3c563cdb4a95a (patch)
tree51782a2025654c82b9c42e03401b095ac6ad778c
parent65a524b499aef18bcc4144a0f7c65d95483b9269 (diff)
downloadsrc-119fa6ee8a8056aab5e4ab1719d3c563cdb4a95a.tar.gz
src-119fa6ee8a8056aab5e4ab1719d3c563cdb4a95a.zip
syscalls.master: Add a new syscall type: RESERVED
RESERVED syscall number are reserved for local/vendor use. RESERVED is identical to UNIMPL except that comments are ignored. Reviewed by: kevans Sponsored by: DARPA Differential Revision: https://reviews.freebsd.org/D27988
-rw-r--r--sys/kern/syscalls.master3
-rw-r--r--sys/tools/makesyscalls.lua23
2 files changed, 17 insertions, 9 deletions
diff --git a/sys/kern/syscalls.master b/sys/kern/syscalls.master
index c4841ffed3ee..2ddf984549a7 100644
--- a/sys/kern/syscalls.master
+++ b/sys/kern/syscalls.master
@@ -11,7 +11,7 @@
; there is no audit event for the call at this time. For the
; case where the event exists, but we don't want auditing, the
; event should be #defined to AUE_NULL in audit_kevents.h.
-; type one of STD, OBSOL, UNIMPL, COMPAT, COMPAT4, COMPAT6,
+; type one of STD, OBSOL, RESERVED, UNIMPL, COMPAT, COMPAT4, COMPAT6,
; COMPAT7, COMPAT11, COMPAT12, NODEF, NOARGS, NOPROTO, NOSTD
; The COMPAT* options may be combined with one or more NO*
; options separated by '|' with no spaces (e.g. COMPAT|NOARGS)
@@ -32,6 +32,7 @@
; COMPAT11 included on COMPAT_FREEBSD11 #ifdef (FreeBSD 11 compat)
; COMPAT12 included on COMPAT_FREEBSD12 #ifdef (FreeBSD 12 compat)
; OBSOL obsolete, not included in system, only specifies name
+; RESERVED reserved for local or vendor use
; UNIMPL not implemented, placeholder only
; NOSTD implemented but as a lkm that can be statically
; compiled in; sysent entry will be filled with lkmressys
diff --git a/sys/tools/makesyscalls.lua b/sys/tools/makesyscalls.lua
index e225e9f7ebbe..3b88c65c4440 100644
--- a/sys/tools/makesyscalls.lua
+++ b/sys/tools/makesyscalls.lua
@@ -144,12 +144,13 @@ local known_abi_flags = {
local known_flags = {
STD = 0x00000001,
OBSOL = 0x00000002,
- UNIMPL = 0x00000004,
- NODEF = 0x00000008,
- NOARGS = 0x00000010,
- NOPROTO = 0x00000020,
- NOSTD = 0x00000040,
- NOTSTATIC = 0x00000080,
+ RESERVED = 0x00000004,
+ UNIMPL = 0x00000008,
+ NODEF = 0x00000010,
+ NOARGS = 0x00000020,
+ NOPROTO = 0x00000040,
+ NOSTD = 0x00000080,
+ NOTSTATIC = 0x00000100,
-- Compat flags start from here. We have plenty of space.
}
@@ -905,6 +906,10 @@ local function handle_unimpl(sysnum, sysstart, sysend, comment)
end
end
+local function handle_reserved(sysnum, sysstart, sysend, comment)
+ handle_unimpl(sysnum, sysstart, sysend, "reserved for local use")
+end
+
process_syscall_def = function(line)
local sysstart, sysend, flags, funcname, sysflags
local thr_flag, syscallret
@@ -949,8 +954,8 @@ process_syscall_def = function(line)
flags = flags | known_flags[flag]
end
- if (flags & known_flags["UNIMPL"]) == 0 and sysnum == nil then
- abort(1, "Range only allowed with UNIMPL: " .. line)
+ if (flags & get_mask({"RESERVED", "UNIMPL"})) == 0 and sysnum == nil then
+ abort(1, "Range only allowed with RESERVED and UNIMPL: " .. line)
end
if (flags & known_flags["NOTSTATIC"]) ~= 0 then
@@ -1114,6 +1119,8 @@ process_syscall_def = function(line)
argalias)
elseif flags & known_flags["OBSOL"] ~= 0 then
handle_obsol(sysnum, funcname, funcomment)
+ elseif flags & known_flags["RESERVED"] ~= 0 then
+ handle_reserved(sysnum, sysstart, sysend)
elseif flags & known_flags["UNIMPL"] ~= 0 then
handle_unimpl(sysnum, sysstart, sysend, funcomment)
else