diff --git a/libexec/flua/libfreebsd/sys/linker/freebsd.sys.linker.3lua b/libexec/flua/libfreebsd/sys/linker/freebsd.sys.linker.3lua index 0ab8f185388a..34198d20463e 100644 --- a/libexec/flua/libfreebsd/sys/linker/freebsd.sys.linker.3lua +++ b/libexec/flua/libfreebsd/sys/linker/freebsd.sys.linker.3lua @@ -1,67 +1,46 @@ .\" .\" SPDX-License-Identifier: BSD-2-Clause .\" .\" Copyright (c) 2024, Baptiste Daroussin .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" .Dd September 6, 2024 .Dt FREEBSD.SYS.LINKER 3lua .Os .Sh NAME .Nm freebsd.sys.linker .Nd Lua binding to .Fx 's Linker functions .Sh SYNOPSIS .Bd -literal local linker = require('freebsd.sys.linker') .Ed .Pp .Bl -tag -width XXXX -compact .It Dv fileid, err, errno = linker.kldload(name) .It Dv ok, err, errno = linker.kldunload(fileid|name) .El .Sh DESCRIPTION The .Nm module is a binding to the .Fx 's linker functions. List of functions: .Bl -tag -width XXXX .It Dv fileid, err = freebsd.sys.linker.kldload(name) Load the kernel module named .Fa name and return the identifier .Pq fileid as an interger. .It Dv ok, err, errno = freebsd.sys.linker.kldunload(fileid|name) Unload the kernel module identifier either by .Fa name as a string, or .Fa fileid as an integer. .El .Sh SEE ALSO .Xr kldload 2 , .Xr kldunload 2 diff --git a/libexec/flua/libfreebsd/sys/linker/linker.c b/libexec/flua/libfreebsd/sys/linker/linker.c index a2dc3b487525..87eccfb651f0 100644 --- a/libexec/flua/libfreebsd/sys/linker/linker.c +++ b/libexec/flua/libfreebsd/sys/linker/linker.c @@ -1,104 +1,82 @@ /*- * SPDX-License-Identifier: BSD-2-Clause * * Copyright (c) 2024, Baptiste Daroussin - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. */ - #include #include #include #include #include #include #include #include int luaopen_freebsd_sys_linker(lua_State *L); static int lua_kldload(lua_State *L) { const char *name; int ret; name = luaL_checkstring(L, 1); ret = kldload(name); if (ret == -1) { lua_pushnil(L); lua_pushstring(L, strerror(errno)); lua_pushinteger(L, errno); return (3); } lua_pushinteger(L, ret); return (1); } static int lua_kldunload(lua_State *L) { const char *name; int ret, fileid; if (lua_isinteger(L, 1)) { fileid = lua_tointeger(L, 1); } else { name = luaL_checkstring(L, 1); fileid = kldfind(name); } if (fileid == -1) { lua_pushnil(L); lua_pushstring(L, strerror(errno)); lua_pushinteger(L, errno); return (3); } ret = kldunload(fileid); lua_pushinteger(L, ret); if (ret == -1) { lua_pushnil(L); lua_pushstring(L, strerror(errno)); lua_pushinteger(L, errno); return (3); } lua_pushinteger(L, 0); return (1); } #define REG_SIMPLE(n) { #n, lua_ ## n } static const struct luaL_Reg freebsd_sys_linker[] = { REG_SIMPLE(kldload), REG_SIMPLE(kldunload), { NULL, NULL }, }; #undef REG_SIMPLE int luaopen_freebsd_sys_linker(lua_State *L) { luaL_newlib(L, freebsd_sys_linker); return (1); }