Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 26 Oct 2023 03:52:19 GMT
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: 0e5b8fe9ea5c - stable/13 - makesyscalls.lua: Make more luaish
Message-ID:  <202310260352.39Q3qJFo021792@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/13 has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=0e5b8fe9ea5c2bf2080df1491477c7dcb557a2fb

commit 0e5b8fe9ea5c2bf2080df1491477c7dcb557a2fb
Author:     Warner Losh <imp@FreeBSD.org>
AuthorDate: 2023-04-20 22:15:57 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2023-10-26 03:48:35 +0000

    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
    
    (cherry picked from commit 1dd350fce0aad85c559b962654f71d1449f21727)
---
 sys/tools/makesyscalls.lua | 174 ++++++++++++++++++++++-----------------------
 1 file changed, 87 insertions(+), 87 deletions(-)

diff --git a/sys/tools/makesyscalls.lua b/sys/tools/makesyscalls.lua
index 9efda5db52d1..63e86f6c0269 100644
--- a/sys/tools/makesyscalls.lua
+++ b/sys/tools/makesyscalls.lua
@@ -333,41 +333,41 @@ 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 abi_changes(name)
@@ -375,11 +375,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 abiprefix ~= "" and funcname:find("^" .. abiprefix) then
 		stripped_name = funcname:gsub("^" .. abiprefix, "")
@@ -427,7 +427,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,
@@ -503,9 +503,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)
@@ -578,7 +578,7 @@ end
 
 local function check_abi_changes(arg)
 	for k, v in pairs(known_abi_flags) do
-		local expr = v["expr"]
+		local expr = v.expr
 		if abi_changes(k) and expr ~= nil and arg:find(expr) then
 			return true
 		end
@@ -606,7 +606,7 @@ local function process_args(args)
 
 		-- XX TODO: Forward declarations? See: sysstubfwd in CheriBSD
 		if abi_change then
-			local abi_type_suffix = config["abi_type_suffix"]
+			local abi_type_suffix = config.abi_type_suffix
 			argtype = argtype:gsub("_native ", "")
 			argtype = argtype:gsub("(struct [^ ]*)", "%1" ..
 			    abi_type_suffix)
@@ -628,7 +628,7 @@ local function handle_noncompat(sysnum, thr_flag, flags, sysflags, rettype,
     auditev, syscallret, funcname, funcalias, funcargs, argalias)
 	local argssize
 
-	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"
@@ -654,8 +654,8 @@ local function handle_noncompat(sysnum, thr_flag, flags, sysflags, rettype,
 
 		local argtype, argname
 		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)
 			-- Pointer arg?
@@ -672,7 +672,7 @@ local function handle_noncompat(sysnum, thr_flag, flags, sysflags, rettype,
 			if isptrtype(argtype) then
 				write_line("systrace", string.format(
 				    "\t\tuarg[%d] = (%s)p->%s; /* %s */\n",
-				    idx - 1, config["ptr_intptr_t_cast"],
+				    idx - 1, config.ptr_intptr_t_cast,
 				    argname, argtype))
 			elseif argtype == "union l_semun" then
 				write_line("systrace", string.format(
@@ -708,7 +708,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
 				write_line("sysarg", string.format(
 				    "\tchar %s_l_[PADL_(%s)]; %s %s; char %s_r_[PADR_(%s)];\n",
 				    argname, argtype,
@@ -738,14 +738,14 @@ 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["NOSTD"] ~= 0 then
+	if flags & known_flags.NOSTD ~= 0 then
 		write_line("sysent", string.format(
 		    "lkmressys, .sy_auevent = AUE_NULL, " ..
 		    ".sy_flags = %s, .sy_thrcnt = SY_THR_ABSENT },",
@@ -774,9 +774,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
@@ -801,36 +801,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,
@@ -847,11 +847,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, " ..
@@ -878,9 +878,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
@@ -958,7 +958,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
 
@@ -1052,16 +1052,16 @@ process_syscall_def = function(line)
 	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
 
@@ -1073,11 +1073,11 @@ process_syscall_def = function(line)
 	local argprefix = ''
 	if abi_changes("pointer_args") then
 		for _, v in ipairs(funcargs) do
-			if isptrtype(v["type"]) then
+			if isptrtype(v.type) then
 				-- argalias should be:
 				--   COMPAT_PREFIX + ABI Prefix + funcname
-				argprefix = config['abi_func_prefix']
-				funcalias = config['abi_func_prefix'] ..
+				argprefix = config.abi_func_prefix
+				funcalias = config.abi_func_prefix ..
 				    funcname
 				goto ptrfound
 			end
@@ -1091,11 +1091,11 @@ process_syscall_def = function(line)
 	if argalias == nil and funcname ~= nil then
 		argalias = argprefix .. 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
@@ -1109,7 +1109,7 @@ process_syscall_def = function(line)
 	local compatflags = get_mask_pat("COMPAT.*")
 	-- Now try compat...
 	if 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,
@@ -1118,11 +1118,11 @@ process_syscall_def = function(line)
 		handle_noncompat(sysnum, thr_flag, flags, sysflags, rettype,
 		    auditev, syscallret, funcname, funcalias, funcargs,
 		    argalias)
-	elseif flags & known_flags["OBSOL"] ~= 0 then
+	elseif 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)
 	else
 		abort(1, "Bad flags? " .. line)
@@ -1157,18 +1157,18 @@ if configfile ~= nil then
 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()
@@ -1203,7 +1203,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.
@@ -1212,7 +1212,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.
@@ -1250,10 +1250,10 @@ 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))
 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([[/*
@@ -1264,7 +1264,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.
@@ -1273,12 +1273,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.
@@ -1293,7 +1293,7 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
 {
 	int64_t *iarg = (int64_t *)uarg;
 	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)
@@ -1318,7 +1318,7 @@ write_line("sysinc",
     "\n#define AS(name) (sizeof(struct name) / sizeof(register_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
@@ -1326,11 +1326,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([[
@@ -1340,14 +1340,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;
@@ -1381,8 +1381,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"))



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202310260352.39Q3qJFo021792>