makesyscalls.lua: Make more luaish
x["y"] can be written as x.y, which looks better and is a more typical lua idiom. Sponsored by: Netflix Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D39709
This commit is contained in:
parent
170511589e
commit
1dd350fce0
@ -352,66 +352,66 @@ local function process_compat()
|
||||
|
||||
nval = nval << 1
|
||||
for _, v in pairs(compat_options) do
|
||||
if v["stdcompat"] ~= nil then
|
||||
local stdcompat = v["stdcompat"]
|
||||
v["definition"] = "COMPAT_" .. stdcompat:upper()
|
||||
v["compatlevel"] = tonumber(stdcompat:match("([0-9]+)$"))
|
||||
v["flag"] = stdcompat:gsub("FREEBSD", "COMPAT")
|
||||
v["prefix"] = stdcompat:lower() .. "_"
|
||||
v["descr"] = stdcompat:lower()
|
||||
if v.stdcompat ~= nil then
|
||||
local stdcompat = v.stdcompat
|
||||
v.definition = "COMPAT_" .. stdcompat:upper()
|
||||
v.compatlevel = tonumber(stdcompat:match("([0-9]+)$"))
|
||||
v.flag = stdcompat:gsub("FREEBSD", "COMPAT")
|
||||
v.prefix = stdcompat:lower() .. "_"
|
||||
v.descr = stdcompat:lower()
|
||||
end
|
||||
|
||||
local tmpname = "sys" .. v["flag"]:lower()
|
||||
local tmpname = "sys" .. v.flag:lower()
|
||||
local dcltmpname = tmpname .. "dcl"
|
||||
files[tmpname] = io.tmpfile()
|
||||
files[dcltmpname] = io.tmpfile()
|
||||
v["tmp"] = tmpname
|
||||
v["dcltmp"] = dcltmpname
|
||||
v.tmp = tmpname
|
||||
v.dcltmp = dcltmpname
|
||||
|
||||
known_flags[v["flag"]] = nval
|
||||
v["mask"] = nval
|
||||
known_flags[v.flag] = nval
|
||||
v.mask = nval
|
||||
nval = nval << 1
|
||||
|
||||
v["count"] = 0
|
||||
v.count = 0
|
||||
end
|
||||
end
|
||||
|
||||
local function process_abi_flags()
|
||||
local flags, mask = config["abi_flags"], 0
|
||||
local flags, mask = config.abi_flags, 0
|
||||
for txtflag in flags:gmatch("([^|]+)") do
|
||||
if known_abi_flags[txtflag] == nil then
|
||||
abort(1, "Unknown abi_flag: " .. txtflag)
|
||||
end
|
||||
|
||||
mask = mask | known_abi_flags[txtflag]["value"]
|
||||
mask = mask | known_abi_flags[txtflag].value
|
||||
end
|
||||
|
||||
config["abi_flags_mask"] = mask
|
||||
config.abi_flags_mask = mask
|
||||
end
|
||||
|
||||
local function process_obsol()
|
||||
local obsol = config["obsol"]
|
||||
local obsol = config.obsol
|
||||
for syscall in obsol:gmatch("([^ ]+)") do
|
||||
config["obsol_dict"][syscall] = true
|
||||
config.obsol_dict[syscall] = true
|
||||
end
|
||||
end
|
||||
|
||||
local function process_unimpl()
|
||||
local unimpl = config["unimpl"]
|
||||
local unimpl = config.unimpl
|
||||
for syscall in unimpl:gmatch("([^ ]+)") do
|
||||
config["unimpl_dict"][syscall] = true
|
||||
config.unimpl_dict[syscall] = true
|
||||
end
|
||||
end
|
||||
|
||||
local function process_syscall_abi_change()
|
||||
local changes_abi = config["syscall_abi_change"]
|
||||
local changes_abi = config.syscall_abi_change
|
||||
for syscall in changes_abi:gmatch("([^ ]+)") do
|
||||
config["sys_abi_change"][syscall] = true
|
||||
config.sys_abi_change[syscall] = true
|
||||
end
|
||||
|
||||
local no_changes = config["syscall_no_abi_change"]
|
||||
local no_changes = config.syscall_no_abi_change
|
||||
for syscall in no_changes:gmatch("([^ ]+)") do
|
||||
config["sys_no_abi_change"][syscall] = true
|
||||
config.sys_no_abi_change[syscall] = true
|
||||
end
|
||||
end
|
||||
|
||||
@ -420,11 +420,11 @@ local function abi_changes(name)
|
||||
abort(1, "abi_changes: unknown flag: " .. name)
|
||||
end
|
||||
|
||||
return config["abi_flags_mask"] & known_abi_flags[name]["value"] ~= 0
|
||||
return config.abi_flags_mask & known_abi_flags[name].value ~= 0
|
||||
end
|
||||
|
||||
local function strip_abi_prefix(funcname)
|
||||
local abiprefix = config["abi_func_prefix"]
|
||||
local abiprefix = config.abi_func_prefix
|
||||
local stripped_name
|
||||
if funcname == nil then
|
||||
return nil
|
||||
@ -469,7 +469,7 @@ end
|
||||
-- to work both before and after the substitution
|
||||
local function isptrtype(type)
|
||||
return type:find("*") or type:find("caddr_t") or
|
||||
type:find("intptr_t") or type:find(config['abi_intptr_t'])
|
||||
type:find("intptr_t") or type:find(config.abi_intptr_t)
|
||||
end
|
||||
|
||||
local function isptrarraytype(type)
|
||||
@ -486,7 +486,7 @@ local process_syscall_def
|
||||
-- These patterns are processed in order on any line that isn't empty.
|
||||
local pattern_table = {
|
||||
{
|
||||
pattern = "%s*$" .. config['os_id_keyword'],
|
||||
pattern = "%s*$" .. config.os_id_keyword,
|
||||
process = function(_, _)
|
||||
-- Ignore... ID tag
|
||||
end,
|
||||
@ -521,8 +521,8 @@ local pattern_table = {
|
||||
dump_prevline = true,
|
||||
pattern = "%%ABI_HEADERS%%",
|
||||
process = function()
|
||||
if config['abi_headers'] ~= "" then
|
||||
line = config['abi_headers'] .. "\n"
|
||||
if config.abi_headers ~= "" then
|
||||
line = config.abi_headers .. "\n"
|
||||
write_line('sysinc', line)
|
||||
end
|
||||
end,
|
||||
@ -572,9 +572,9 @@ local function process_sysfile(file)
|
||||
local function do_match(nextline, prevline)
|
||||
local pattern, handler, dump
|
||||
for _, v in pairs(pattern_table) do
|
||||
pattern = v['pattern']
|
||||
handler = v['process']
|
||||
dump = v['dump_prevline']
|
||||
pattern = v.pattern
|
||||
handler = v.process
|
||||
dump = v.dump_prevline
|
||||
if nextline:match(pattern) then
|
||||
if dump and prevline then
|
||||
process_syscall_def(prevline)
|
||||
@ -648,7 +648,7 @@ end
|
||||
|
||||
local function check_abi_changes(arg)
|
||||
for k, v in pairs(known_abi_flags) do
|
||||
local exprs = v["exprs"]
|
||||
local exprs = v.exprs
|
||||
if abi_changes(k) and exprs ~= nil then
|
||||
for _, e in pairs(exprs) do
|
||||
if arg:find(e) then
|
||||
@ -684,26 +684,26 @@ local function process_args(args)
|
||||
-- is removed
|
||||
changes_abi = changes_abi or (abi_changes("pair_64bit") and is64bittype(argtype))
|
||||
|
||||
argtype = argtype:gsub("intptr_t", config["abi_intptr_t"])
|
||||
argtype = argtype:gsub("semid_t", config["abi_semid_t"])
|
||||
argtype = argtype:gsub("intptr_t", config.abi_intptr_t)
|
||||
argtype = argtype:gsub("semid_t", config.abi_semid_t)
|
||||
if isptrtype(argtype) then
|
||||
argtype = argtype:gsub("size_t", config["abi_size_t"])
|
||||
argtype = argtype:gsub("^long", config["abi_long"]);
|
||||
argtype = argtype:gsub("^u_long", config["abi_u_long"]);
|
||||
argtype = argtype:gsub("^const u_long", "const " .. config["abi_u_long"]);
|
||||
argtype = argtype:gsub("size_t", config.abi_size_t)
|
||||
argtype = argtype:gsub("^long", config.abi_long);
|
||||
argtype = argtype:gsub("^u_long", config.abi_u_long);
|
||||
argtype = argtype:gsub("^const u_long", "const " .. config.abi_u_long);
|
||||
elseif argtype:find("^long$") then
|
||||
argtype = config["abi_long"]
|
||||
argtype = config.abi_long
|
||||
end
|
||||
if isptrarraytype(argtype) and config["abi_ptr_array_t"] ~= "" then
|
||||
if isptrarraytype(argtype) and config.abi_ptr_array_t ~= "" then
|
||||
-- `* const *` -> `**`
|
||||
argtype = argtype:gsub("[*][ ]*const[ ]*[*]", "**")
|
||||
-- e.g., `struct aiocb **` -> `uint32_t *`
|
||||
argtype = argtype:gsub("[^*]*[*]", config["abi_ptr_array_t"] .. " ", 1)
|
||||
argtype = argtype:gsub("[^*]*[*]", config.abi_ptr_array_t .. " ", 1)
|
||||
end
|
||||
|
||||
-- XX TODO: Forward declarations? See: sysstubfwd in CheriBSD
|
||||
if arg_abi_change then
|
||||
local abi_type_suffix = config["abi_type_suffix"]
|
||||
local abi_type_suffix = config.abi_type_suffix
|
||||
argtype = argtype:gsub("(struct [^ ]*)", "%1" ..
|
||||
abi_type_suffix)
|
||||
argtype = argtype:gsub("(union [^ ]*)", "%1" ..
|
||||
@ -741,9 +741,9 @@ local function handle_noncompat(sysnum, thr_flag, flags, sysflags, rettype,
|
||||
auditev, syscallret, funcname, funcalias, funcargs, argalias)
|
||||
local argssize
|
||||
|
||||
if flags & known_flags["SYSMUX"] ~= 0 then
|
||||
if flags & known_flags.SYSMUX ~= 0 then
|
||||
argssize = "0"
|
||||
elseif #funcargs > 0 or flags & known_flags["NODEF"] ~= 0 then
|
||||
elseif #funcargs > 0 or flags & known_flags.NODEF ~= 0 then
|
||||
argssize = "AS(" .. argalias .. ")"
|
||||
else
|
||||
argssize = "0"
|
||||
@ -762,7 +762,7 @@ local function handle_noncompat(sysnum, thr_flag, flags, sysflags, rettype,
|
||||
case %d:
|
||||
]], funcname, sysnum))
|
||||
|
||||
if #funcargs > 0 and flags & known_flags["SYSMUX"] == 0 then
|
||||
if #funcargs > 0 and flags & known_flags.SYSMUX == 0 then
|
||||
write_line("systracetmp", "\t\tswitch (ndx) {\n")
|
||||
write_line("systrace", string.format(
|
||||
"\t\tstruct %s *p = params;\n", argalias))
|
||||
@ -771,8 +771,8 @@ local function handle_noncompat(sysnum, thr_flag, flags, sysflags, rettype,
|
||||
local argtype, argname, desc, padding
|
||||
padding = ""
|
||||
for idx, arg in ipairs(funcargs) do
|
||||
argtype = arg["type"]
|
||||
argname = arg["name"]
|
||||
argtype = arg.type
|
||||
argname = arg.name
|
||||
|
||||
argtype = trim(argtype:gsub("__restrict$", ""), nil)
|
||||
if argtype == "int" and argname == "_pad" and abi_changes("pair_64bit") then
|
||||
@ -795,7 +795,7 @@ local function handle_noncompat(sysnum, thr_flag, flags, sysflags, rettype,
|
||||
if isptrtype(argtype) then
|
||||
write_line("systrace", string.format(
|
||||
"\t\tuarg[a++] = (%s)p->%s; /* %s */\n",
|
||||
config["ptr_intptr_t_cast"],
|
||||
config.ptr_intptr_t_cast,
|
||||
argname, argtype))
|
||||
elseif argtype == "union l_semun" then
|
||||
write_line("systrace", string.format(
|
||||
@ -831,7 +831,7 @@ local function handle_noncompat(sysnum, thr_flag, flags, sysflags, rettype,
|
||||
]], syscallret))
|
||||
end
|
||||
local n_args = #funcargs
|
||||
if flags & known_flags["SYSMUX"] ~= 0 then
|
||||
if flags & known_flags.SYSMUX ~= 0 then
|
||||
n_args = 0
|
||||
end
|
||||
write_line("systrace", string.format(
|
||||
@ -844,7 +844,7 @@ local function handle_noncompat(sysnum, thr_flag, flags, sysflags, rettype,
|
||||
write_line("sysarg", string.format("struct %s {\n",
|
||||
argalias))
|
||||
for _, v in ipairs(funcargs) do
|
||||
local argname, argtype = v["name"], v["type"]
|
||||
local argname, argtype = v.name, v.type
|
||||
if argtype == "int" and argname == "_pad" and abi_changes("pair_64bit") then
|
||||
write_line("sysarg", "#ifdef PAD64_REQUIRED\n")
|
||||
end
|
||||
@ -879,20 +879,20 @@ local function handle_noncompat(sysnum, thr_flag, flags, sysflags, rettype,
|
||||
end
|
||||
write_line("sysdcl", ";\n")
|
||||
write_line("sysaue", string.format("#define\t%sAUE_%s\t%s\n",
|
||||
config['syscallprefix'], funcalias, auditev))
|
||||
config.syscallprefix, funcalias, auditev))
|
||||
end
|
||||
|
||||
write_line("sysent",
|
||||
string.format("\t{ .sy_narg = %s, .sy_call = (sy_call_t *)", argssize))
|
||||
local column = 8 + 2 + #argssize + 15
|
||||
|
||||
if flags & known_flags["SYSMUX"] ~= 0 then
|
||||
if flags & known_flags.SYSMUX ~= 0 then
|
||||
write_line("sysent", string.format(
|
||||
"nosys, .sy_auevent = AUE_NULL, " ..
|
||||
".sy_flags = %s, .sy_thrcnt = SY_THR_STATIC },",
|
||||
sysflags))
|
||||
column = column + #"nosys" + #"AUE_NULL" + 3
|
||||
elseif flags & known_flags["NOSTD"] ~= 0 then
|
||||
elseif flags & known_flags.NOSTD ~= 0 then
|
||||
write_line("sysent", string.format(
|
||||
"lkmressys, .sy_auevent = AUE_NULL, " ..
|
||||
".sy_flags = %s, .sy_thrcnt = SY_THR_ABSENT },",
|
||||
@ -920,9 +920,9 @@ local function handle_noncompat(sysnum, thr_flag, flags, sysflags, rettype,
|
||||
write_line("sysnames", string.format("\t\"%s\",\t\t\t/* %d = %s */\n",
|
||||
funcalias, sysnum, funcalias))
|
||||
|
||||
if flags & known_flags["NODEF"] == 0 then
|
||||
if flags & known_flags.NODEF == 0 then
|
||||
write_line("syshdr", string.format("#define\t%s%s\t%d\n",
|
||||
config['syscallprefix'], funcalias, sysnum))
|
||||
config.syscallprefix, funcalias, sysnum))
|
||||
write_line("sysmk", string.format(" \\\n\t%s.o",
|
||||
funcalias))
|
||||
end
|
||||
@ -947,36 +947,36 @@ local function handle_compat(sysnum, thr_flag, flags, sysflags, rettype,
|
||||
auditev, funcname, funcalias, funcargs, argalias)
|
||||
local argssize, out, outdcl, wrap, prefix, descr
|
||||
|
||||
if #funcargs > 0 or flags & known_flags["NODEF"] ~= 0 then
|
||||
if #funcargs > 0 or flags & known_flags.NODEF ~= 0 then
|
||||
argssize = "AS(" .. argalias .. ")"
|
||||
else
|
||||
argssize = "0"
|
||||
end
|
||||
|
||||
for _, v in pairs(compat_options) do
|
||||
if flags & v["mask"] ~= 0 then
|
||||
if config["mincompat"] > v["compatlevel"] then
|
||||
if flags & v.mask ~= 0 then
|
||||
if config.mincompat > v.compatlevel then
|
||||
funcname = strip_abi_prefix(funcname)
|
||||
funcname = v["prefix"] .. funcname
|
||||
funcname = v.prefix .. funcname
|
||||
return handle_obsol(sysnum, funcname, funcname)
|
||||
end
|
||||
v["count"] = v["count"] + 1
|
||||
out = v["tmp"]
|
||||
outdcl = v["dcltmp"]
|
||||
wrap = v["flag"]:lower()
|
||||
prefix = v["prefix"]
|
||||
descr = v["descr"]
|
||||
v.count = v.count + 1
|
||||
out = v.tmp
|
||||
outdcl = v.dcltmp
|
||||
wrap = v.flag:lower()
|
||||
prefix = v.prefix
|
||||
descr = v.descr
|
||||
goto compatdone
|
||||
end
|
||||
end
|
||||
|
||||
::compatdone::
|
||||
local dprotoflags = get_mask({"NOPROTO", "NODEF"})
|
||||
local nargflags = dprotoflags | known_flags["NOARGS"]
|
||||
local nargflags = dprotoflags | known_flags.NOARGS
|
||||
if #funcargs > 0 and flags & nargflags == 0 then
|
||||
write_line(out, string.format("struct %s {\n", argalias))
|
||||
for _, v in ipairs(funcargs) do
|
||||
local argname, argtype = v["name"], v["type"]
|
||||
local argname, argtype = v.name, v.type
|
||||
write_line(out, string.format(
|
||||
"\tchar %s_l_[PADL_(%s)]; %s %s; char %s_r_[PADR_(%s)];\n",
|
||||
argname, argtype,
|
||||
@ -993,11 +993,11 @@ local function handle_compat(sysnum, thr_flag, flags, sysflags, rettype,
|
||||
"%s\t%s%s(struct thread *, struct %s *);\n",
|
||||
rettype, prefix, funcname, argalias))
|
||||
write_line("sysaue", string.format(
|
||||
"#define\t%sAUE_%s%s\t%s\n", config['syscallprefix'],
|
||||
"#define\t%sAUE_%s%s\t%s\n", config.syscallprefix,
|
||||
prefix, funcname, auditev))
|
||||
end
|
||||
|
||||
if flags & known_flags['NOSTD'] ~= 0 then
|
||||
if flags & known_flags.NOSTD ~= 0 then
|
||||
write_line("sysent", string.format(
|
||||
"\t{ .sy_narg = %s, .sy_call = (sy_call_t *)%s, " ..
|
||||
".sy_auevent = %s, .sy_flags = 0, " ..
|
||||
@ -1024,9 +1024,9 @@ local function handle_compat(sysnum, thr_flag, flags, sysflags, rettype,
|
||||
write_line("syshdr", string.format(
|
||||
"\t\t\t\t/* %d is %s %s */\n",
|
||||
sysnum, descr, funcalias))
|
||||
elseif flags & known_flags["NODEF"] == 0 then
|
||||
elseif flags & known_flags.NODEF == 0 then
|
||||
write_line("syshdr", string.format("#define\t%s%s%s\t%d\n",
|
||||
config['syscallprefix'], prefix, funcalias, sysnum))
|
||||
config.syscallprefix, prefix, funcalias, sysnum))
|
||||
write_line("sysmk", string.format(" \\\n\t%s%s.o",
|
||||
prefix, funcalias))
|
||||
end
|
||||
@ -1104,7 +1104,7 @@ process_syscall_def = function(line)
|
||||
abort(1, "Range only allowed with RESERVED and UNIMPL: " .. line)
|
||||
end
|
||||
|
||||
if (flags & known_flags["NOTSTATIC"]) ~= 0 then
|
||||
if (flags & known_flags.NOTSTATIC) ~= 0 then
|
||||
thr_flag = "SY_THR_ABSENT"
|
||||
end
|
||||
|
||||
@ -1195,37 +1195,37 @@ process_syscall_def = function(line)
|
||||
|
||||
funcname = trim(funcname)
|
||||
|
||||
if config["obsol_dict"][funcname] then
|
||||
if config.obsol_dict[funcname] then
|
||||
local compat_prefix = ""
|
||||
for _, v in pairs(compat_options) do
|
||||
if flags & v["mask"] ~= 0 then
|
||||
compat_prefix = v["prefix"]
|
||||
if flags & v.mask ~= 0 then
|
||||
compat_prefix = v.prefix
|
||||
goto obsol_compat_done
|
||||
end
|
||||
end
|
||||
::obsol_compat_done::
|
||||
args = nil
|
||||
flags = known_flags['OBSOL']
|
||||
flags = known_flags.OBSOL
|
||||
funcomment = compat_prefix .. funcname
|
||||
end
|
||||
if config["unimpl_dict"][funcname] then
|
||||
flags = known_flags['UNIMPL']
|
||||
if config.unimpl_dict[funcname] then
|
||||
flags = known_flags.UNIMPL
|
||||
funcomment = funcname
|
||||
end
|
||||
|
||||
sysflags = "0"
|
||||
|
||||
-- NODEF events do not get audited
|
||||
if flags & known_flags['NODEF'] ~= 0 then
|
||||
if flags & known_flags.NODEF ~= 0 then
|
||||
auditev = 'AUE_NULL'
|
||||
end
|
||||
|
||||
-- If applicable; strip the ABI prefix from the name
|
||||
local stripped_name = strip_abi_prefix(funcname)
|
||||
|
||||
if flags & known_flags['CAPENABLED'] ~= 0 or
|
||||
config["capenabled"][funcname] ~= nil or
|
||||
config["capenabled"][stripped_name] ~= nil then
|
||||
if flags & known_flags.CAPENABLED ~= 0 or
|
||||
config.capenabled[funcname] ~= nil or
|
||||
config.capenabled[stripped_name] ~= nil then
|
||||
sysflags = "SYF_CAPENABLED"
|
||||
end
|
||||
|
||||
@ -1234,17 +1234,17 @@ process_syscall_def = function(line)
|
||||
if args ~= nil then
|
||||
funcargs, changes_abi = process_args(args)
|
||||
end
|
||||
if config["sys_no_abi_change"][funcname] then
|
||||
if config.sys_no_abi_change[funcname] then
|
||||
changes_abi = false
|
||||
end
|
||||
local noproto = config["abi_flags"] ~= "" and not changes_abi
|
||||
local noproto = config.abi_flags ~= "" and not changes_abi
|
||||
|
||||
local argprefix = ''
|
||||
local funcprefix = ''
|
||||
if abi_changes("pointer_args") then
|
||||
for _, v in ipairs(funcargs) do
|
||||
if isptrtype(v["type"]) then
|
||||
if config["sys_no_abi_change"][funcname] then
|
||||
if isptrtype(v.type) then
|
||||
if config.sys_no_abi_change[funcname] then
|
||||
print("WARNING: " .. funcname ..
|
||||
" in syscall_no_abi_change, but pointers args are present")
|
||||
end
|
||||
@ -1254,14 +1254,14 @@ process_syscall_def = function(line)
|
||||
end
|
||||
::ptrfound::
|
||||
end
|
||||
if config["sys_abi_change"][funcname] then
|
||||
if config.sys_abi_change[funcname] then
|
||||
changes_abi = true
|
||||
end
|
||||
if changes_abi then
|
||||
-- argalias should be:
|
||||
-- COMPAT_PREFIX + ABI Prefix + funcname
|
||||
argprefix = config['abi_func_prefix']
|
||||
funcprefix = config['abi_func_prefix']
|
||||
argprefix = config.abi_func_prefix
|
||||
funcprefix = config.abi_func_prefix
|
||||
funcalias = funcprefix .. funcname
|
||||
noproto = false
|
||||
end
|
||||
@ -1275,11 +1275,11 @@ process_syscall_def = function(line)
|
||||
if argalias == nil and funcname ~= nil then
|
||||
argalias = funcname .. "_args"
|
||||
for _, v in pairs(compat_options) do
|
||||
local mask = v["mask"]
|
||||
local mask = v.mask
|
||||
if (flags & mask) ~= 0 then
|
||||
-- Multiple aliases doesn't seem to make
|
||||
-- sense.
|
||||
argalias = v["prefix"] .. argalias
|
||||
argalias = v.prefix .. argalias
|
||||
goto out
|
||||
end
|
||||
end
|
||||
@ -1291,17 +1291,17 @@ process_syscall_def = function(line)
|
||||
local ncompatflags = get_mask({"STD", "NODEF", "NOARGS", "NOPROTO",
|
||||
"NOSTD"})
|
||||
local compatflags = get_mask_pat("COMPAT.*")
|
||||
if noproto or flags & known_flags["SYSMUX"] ~= 0 then
|
||||
flags = flags | known_flags["NOPROTO"];
|
||||
if noproto or flags & known_flags.SYSMUX ~= 0 then
|
||||
flags = flags | known_flags.NOPROTO;
|
||||
end
|
||||
if flags & known_flags["OBSOL"] ~= 0 then
|
||||
if flags & known_flags.OBSOL ~= 0 then
|
||||
handle_obsol(sysnum, funcname, funcomment)
|
||||
elseif flags & known_flags["RESERVED"] ~= 0 then
|
||||
elseif flags & known_flags.RESERVED ~= 0 then
|
||||
handle_reserved(sysnum, sysstart, sysend)
|
||||
elseif flags & known_flags["UNIMPL"] ~= 0 then
|
||||
elseif flags & known_flags.UNIMPL ~= 0 then
|
||||
handle_unimpl(sysnum, sysstart, sysend, funcomment)
|
||||
elseif flags & compatflags ~= 0 then
|
||||
if flags & known_flags['STD'] ~= 0 then
|
||||
if flags & known_flags.STD ~= 0 then
|
||||
abort(1, "Incompatible COMPAT/STD: " .. line)
|
||||
end
|
||||
handle_compat(sysnum, thr_flag, flags, sysflags, rettype,
|
||||
@ -1342,7 +1342,7 @@ if configfile ~= nil then
|
||||
end
|
||||
end
|
||||
|
||||
local compat_set = config['compat_set']
|
||||
local compat_set = config.compat_set
|
||||
if compat_set ~= "" then
|
||||
if not compat_option_sets[compat_set] then
|
||||
abort(1, "Undefined compat set: " .. compat_set)
|
||||
@ -1354,18 +1354,18 @@ else
|
||||
end
|
||||
|
||||
-- We ignore errors here if we're relying on the default configuration.
|
||||
if not config_modified["capenabled"] then
|
||||
config["capenabled"] = grab_capenabled(config['capabilities_conf'],
|
||||
config_modified["capabilities_conf"] == nil)
|
||||
elseif config["capenabled"] ~= "" then
|
||||
if not config_modified.capenabled then
|
||||
config.capenabled = grab_capenabled(config.capabilities_conf,
|
||||
config_modified.capabilities_conf == nil)
|
||||
elseif config.capenabled ~= "" then
|
||||
-- Due to limitations in the config format mostly, we'll have a comma
|
||||
-- separated list. Parse it into lines
|
||||
local capenabled = {}
|
||||
-- print("here: " .. config["capenabled"])
|
||||
for sysc in config["capenabled"]:gmatch("([^,]+)") do
|
||||
-- print("here: " .. config.capenabled)
|
||||
for sysc in config.capenabled:gmatch("([^,]+)") do
|
||||
capenabled[sysc] = true
|
||||
end
|
||||
config["capenabled"] = capenabled
|
||||
config.capenabled = capenabled
|
||||
end
|
||||
process_compat()
|
||||
process_abi_flags()
|
||||
@ -1403,7 +1403,7 @@ write_line("sysent", string.format([[
|
||||
|
||||
/* The casts are bogus but will do for now. */
|
||||
struct sysent %s[] = {
|
||||
]], config['switchname']))
|
||||
]], config.switchname))
|
||||
|
||||
write_line("syssw", string.format([[/*
|
||||
* System call switch table.
|
||||
@ -1412,7 +1412,7 @@ write_line("syssw", string.format([[/*
|
||||
* $%s$
|
||||
*/
|
||||
|
||||
]], generated_tag, config['os_id_keyword']))
|
||||
]], generated_tag, config.os_id_keyword))
|
||||
|
||||
write_line("sysarg", string.format([[/*
|
||||
* System call prototypes.
|
||||
@ -1450,8 +1450,8 @@ struct thread;
|
||||
#define PADR_(t) 0
|
||||
#endif
|
||||
|
||||
]], generated_tag, config['os_id_keyword'], config['sysproto_h'],
|
||||
config['sysproto_h']))
|
||||
]], generated_tag, config.os_id_keyword, config.sysproto_h,
|
||||
config.sysproto_h))
|
||||
if abi_changes("pair_64bit") then
|
||||
write_line("sysarg", string.format([[
|
||||
#if !defined(PAD64_REQUIRED) && !defined(__amd64__)
|
||||
@ -1467,7 +1467,7 @@ if abi_changes("pair_64bit") then
|
||||
]]))
|
||||
end
|
||||
for _, v in pairs(compat_options) do
|
||||
write_line(v["tmp"], string.format("\n#ifdef %s\n\n", v["definition"]))
|
||||
write_line(v.tmp, string.format("\n#ifdef %s\n\n", v.definition))
|
||||
end
|
||||
|
||||
write_line("sysnames", string.format([[/*
|
||||
@ -1478,7 +1478,7 @@ write_line("sysnames", string.format([[/*
|
||||
*/
|
||||
|
||||
const char *%s[] = {
|
||||
]], generated_tag, config['os_id_keyword'], config['namesname']))
|
||||
]], generated_tag, config.os_id_keyword, config.namesname))
|
||||
|
||||
write_line("syshdr", string.format([[/*
|
||||
* System call numbers.
|
||||
@ -1487,12 +1487,12 @@ write_line("syshdr", string.format([[/*
|
||||
* $%s$
|
||||
*/
|
||||
|
||||
]], generated_tag, config['os_id_keyword']))
|
||||
]], generated_tag, config.os_id_keyword))
|
||||
|
||||
write_line("sysmk", string.format([[# FreeBSD system call object files.
|
||||
# DO NOT EDIT-- this file is automatically %s.
|
||||
# $%s$
|
||||
MIASM = ]], generated_tag, config['os_id_keyword']))
|
||||
MIASM = ]], generated_tag, config.os_id_keyword))
|
||||
|
||||
write_line("systrace", string.format([[/*
|
||||
* System call argument to DTrace register array converstion.
|
||||
@ -1508,7 +1508,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
|
||||
int64_t *iarg = (int64_t *)uarg;
|
||||
int a = 0;
|
||||
switch (sysnum) {
|
||||
]], generated_tag, config['os_id_keyword']))
|
||||
]], generated_tag, config.os_id_keyword))
|
||||
|
||||
write_line("systracetmp", [[static void
|
||||
systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
|
||||
@ -1533,7 +1533,7 @@ write_line("sysinc",
|
||||
"\n#define AS(name) (sizeof(struct name) / sizeof(syscallarg_t))\n")
|
||||
|
||||
for _, v in pairs(compat_options) do
|
||||
if v["count"] > 0 then
|
||||
if v.count > 0 then
|
||||
write_line("sysinc", string.format([[
|
||||
|
||||
#ifdef %s
|
||||
@ -1541,11 +1541,11 @@ for _, v in pairs(compat_options) do
|
||||
#else
|
||||
#define %s(n, name) .sy_narg = 0, .sy_call = (sy_call_t *)nosys
|
||||
#endif
|
||||
]], v["definition"], v["flag"]:lower(), v["prefix"], v["flag"]:lower()))
|
||||
]], v.definition, v.flag:lower(), v.prefix, v.flag:lower()))
|
||||
end
|
||||
|
||||
write_line(v["dcltmp"], string.format("\n#endif /* %s */\n\n",
|
||||
v["definition"]))
|
||||
write_line(v.dcltmp, string.format("\n#endif /* %s */\n\n",
|
||||
v.definition))
|
||||
end
|
||||
|
||||
write_line("sysprotoend", string.format([[
|
||||
@ -1555,14 +1555,14 @@ write_line("sysprotoend", string.format([[
|
||||
#undef PADR_
|
||||
|
||||
#endif /* !%s */
|
||||
]], config["sysproto_h"]))
|
||||
]], config.sysproto_h))
|
||||
|
||||
write_line("sysmk", "\n")
|
||||
write_line("sysent", "};\n")
|
||||
write_line("sysnames", "};\n")
|
||||
-- maxsyscall is the highest seen; MAXSYSCALL should be one higher
|
||||
write_line("syshdr", string.format("#define\t%sMAXSYSCALL\t%d\n",
|
||||
config["syscallprefix"], maxsyscall + 1))
|
||||
config.syscallprefix, maxsyscall + 1))
|
||||
write_line("systrace", [[
|
||||
default:
|
||||
*n_args = 0;
|
||||
@ -1596,8 +1596,8 @@ write_line("syssw", read_file("sysent"))
|
||||
write_line("sysproto", read_file("sysarg"))
|
||||
write_line("sysproto", read_file("sysdcl"))
|
||||
for _, v in pairs(compat_options) do
|
||||
write_line("sysproto", read_file(v["tmp"]))
|
||||
write_line("sysproto", read_file(v["dcltmp"]))
|
||||
write_line("sysproto", read_file(v.tmp))
|
||||
write_line("sysproto", read_file(v.dcltmp))
|
||||
end
|
||||
write_line("sysproto", read_file("sysaue"))
|
||||
write_line("sysproto", read_file("sysprotoend"))
|
||||
|
Loading…
Reference in New Issue
Block a user