aboutsummaryrefslogtreecommitdiff
path: root/sys/tools/syscalls
diff options
context:
space:
mode:
Diffstat (limited to 'sys/tools/syscalls')
-rw-r--r--sys/tools/syscalls/config.lua1
-rw-r--r--sys/tools/syscalls/core/syscall.lua1
-rwxr-xr-xsys/tools/syscalls/scripts/libsys_h.lua8
-rwxr-xr-xsys/tools/syscalls/scripts/syscall_h.lua4
-rwxr-xr-xsys/tools/syscalls/scripts/syscalls_map.lua2
5 files changed, 13 insertions, 3 deletions
diff --git a/sys/tools/syscalls/config.lua b/sys/tools/syscalls/config.lua
index fcf4c2217959..91a8a5af68dd 100644
--- a/sys/tools/syscalls/config.lua
+++ b/sys/tools/syscalls/config.lua
@@ -24,6 +24,7 @@ local util = require("tools.util")
local config = {
sysnames = "syscalls.c",
syshdr = "../sys/syscall.h",
+ syshdr_extra = nil;
sysmk = "/dev/null",
syssw = "init_sysent.c",
systrace = "systrace_args.c",
diff --git a/sys/tools/syscalls/core/syscall.lua b/sys/tools/syscalls/core/syscall.lua
index e7e3dc3aac33..277613ec27b7 100644
--- a/sys/tools/syscalls/core/syscall.lua
+++ b/sys/tools/syscalls/core/syscall.lua
@@ -28,6 +28,7 @@ syscall.known_flags = util.set {
-- flags beyond this point are modifiers
"CAPENABLED",
"NOLIB",
+ "NORETURN",
"NOTSTATIC",
"SYSMUX",
}
diff --git a/sys/tools/syscalls/scripts/libsys_h.lua b/sys/tools/syscalls/scripts/libsys_h.lua
index 91349d5dc870..8c1993ecf683 100755
--- a/sys/tools/syscalls/scripts/libsys_h.lua
+++ b/sys/tools/syscalls/scripts/libsys_h.lua
@@ -76,8 +76,12 @@ function libsys_h.generate(tbl, config, fh)
for _, v in pairs(s) do
if print_decl(v) then
- gen:write(string.format("%s __sys_%s(%s);\n",
- v.ret, v.name, v.argstr_type_var))
+ local ret_attr = "";
+ if v.type.NORETURN then
+ ret_attr = "_Noreturn "
+ end
+ gen:write(string.format("%s%s __sys_%s(%s);\n",
+ ret_attr, v.ret, v.name, v.argstr_type_var))
end
end
diff --git a/sys/tools/syscalls/scripts/syscall_h.lua b/sys/tools/syscalls/scripts/syscall_h.lua
index 5f8d8fb66889..d05a1799935b 100755
--- a/sys/tools/syscalls/scripts/syscall_h.lua
+++ b/sys/tools/syscalls/scripts/syscall_h.lua
@@ -38,6 +38,10 @@ function syscall_h.generate(tbl, config, fh)
-- Write the generated preamble.
gen:preamble("System call numbers.")
+ if config.syshdr_extra then
+ gen:write(string.format("%s\n\n", config.syshdr_extra))
+ end
+
for _, v in pairs(s) do
local c = v:compatLevel()
if v.num > max then
diff --git a/sys/tools/syscalls/scripts/syscalls_map.lua b/sys/tools/syscalls/scripts/syscalls_map.lua
index 52c3b294e338..dfd61ae75bc0 100755
--- a/sys/tools/syscalls/scripts/syscalls_map.lua
+++ b/sys/tools/syscalls/scripts/syscalls_map.lua
@@ -39,7 +39,7 @@ function syscalls_map.generate(tbl, config, fh)
for _, v in pairs(s) do
gen:write(v.prolog)
if v:native() and not v.type.NODEF and not v.type.NOLIB then
- if v.name ~= "exit" and v.name ~= "vfork" then
+ if v.name ~= "_exit" and v.name ~= "vfork" then
gen:write(string.format("\t_%s;\n", v.name))
end
gen:write(string.format("\t__sys_%s;\n", v.name))