1*9ded074eSagge3#!/usr/libexec/flua 2*9ded074eSagge3-- 3*9ded074eSagge3-- SPDX-License-Identifier: BSD-2-Clause 4*9ded074eSagge3-- 5*9ded074eSagge3-- Copyright (c) 2024 Tyler Baxter <agge@FreeBSD.org> 6*9ded074eSagge3-- Copyright (c) 2023 Warner Losh <imp@bsdimp.com> 7*9ded074eSagge3-- Copyright (c) 2019 Kyle Evans <kevans@FreeBSD.org> 8*9ded074eSagge3-- 9*9ded074eSagge3-- Thanks to Kyle Evans for his makesyscall.lua in FreeBSD which served as 10*9ded074eSagge3-- inspiration for this, and as a source of code at times. 11*9ded074eSagge3-- 12*9ded074eSagge3 13*9ded074eSagge3-- When we have a path, add it to the package.path (. is already in the list). 14*9ded074eSagge3if arg[0]:match("/") then 15*9ded074eSagge3 local path = arg[0]:gsub("/[^/]+.lua$", "") 16*9ded074eSagge3 package.path = package.path .. ";" .. path .. "/?.lua" 17*9ded074eSagge3end 18*9ded074eSagge3 19*9ded074eSagge3-- Common config file management. 20*9ded074eSagge3local config = require("config") 21*9ded074eSagge3-- FreeBSDSyscall generates a table of system calls from syscalls.master. 22*9ded074eSagge3local FreeBSDSyscall = require("core.freebsd-syscall") 23*9ded074eSagge3 24*9ded074eSagge3-- Modules for each file: 25*9ded074eSagge3local init_sysent = require("scripts.init_sysent") 26*9ded074eSagge3local libsys_h = require("scripts.libsys_h") 27*9ded074eSagge3local syscall_h = require("scripts.syscall_h") 28*9ded074eSagge3local syscall_mk = require("scripts.syscall_mk") 29*9ded074eSagge3local syscalls = require("scripts.syscalls") 30*9ded074eSagge3local syscalls_map = require("scripts.syscalls_map") 31*9ded074eSagge3local sysproto_h = require("scripts.sysproto_h") 32*9ded074eSagge3local systrace_args = require("scripts.systrace_args") 33*9ded074eSagge3 34*9ded074eSagge3-- Entry: 35*9ded074eSagge3if #arg < 1 or #arg > 2 then 36*9ded074eSagge3 error("usage: " .. arg[0] .. " syscall.master") 37*9ded074eSagge3end 38*9ded074eSagge3 39*9ded074eSagge3local sysfile, configfile = arg[1], arg[2] 40*9ded074eSagge3 41*9ded074eSagge3config.merge(configfile) 42*9ded074eSagge3config.mergeCompat() 43*9ded074eSagge3 44*9ded074eSagge3local tbl = FreeBSDSyscall:new{sysfile = sysfile, config = config} 45*9ded074eSagge3 46*9ded074eSagge3-- Output files: 47*9ded074eSagge3init_sysent.file = config.syssw 48*9ded074eSagge3libsys_h.file = config.libsys_h 49*9ded074eSagge3syscall_h.file = config.syshdr 50*9ded074eSagge3syscall_mk.file = config.sysmk 51*9ded074eSagge3syscalls.file = config.sysnames 52*9ded074eSagge3syscalls_map.file = config.libsysmap 53*9ded074eSagge3sysproto_h.file = config.sysproto 54*9ded074eSagge3systrace_args.file = config.systrace 55*9ded074eSagge3 56*9ded074eSagge3init_sysent.generate(tbl, config, init_sysent.file) 57*9ded074eSagge3libsys_h.generate(tbl, config, libsys_h.file) 58*9ded074eSagge3syscall_h.generate(tbl, config, syscall_h.file) 59*9ded074eSagge3syscall_mk.generate(tbl, config, syscall_mk.file) 60*9ded074eSagge3syscalls.generate(tbl, config, syscalls.file) 61*9ded074eSagge3syscalls_map.generate(tbl, config, syscalls_map.file) 62*9ded074eSagge3sysproto_h.generate(tbl, config, sysproto_h.file) 63*9ded074eSagge3systrace_args.generate(tbl, config, systrace_args.file) 64