NAME
lua
—
control in-kernel Lua states
SYNOPSIS
lua*
#include <sys/types.h>
#include <sys/lua.h>
DESCRIPTION
The lua
device allows to create, control,
and delete Lua states in the kernel through an
ioctl(2) interface. Moreover, lua
can be used
to load Lua scripts into a Lua state and to assign modules to an existing
state, i.e. perform the equivalent of the Lua command
require. lua
is also used to
retrieve information about currently active Lua states.
LUA MODULES
Lua modules are used to provide functionality to Lua scripts not
available in the language itself, e.g. to access core kernel functionality
like printing text on the console. Unlike in user space Lua, where Lua
modules are files in the filesystem, modules must be provided to
lua
in the form of loadable kernel modules that
register their functionality with lua
. Modules are
loaded using the require
Lua command; whether this
command is available or not is controlled by a
sysctl(8) variable. lua
by default tries to
load a kernel module named
luafoo.kmod
when it encounters the Lua command require 'foo'.
SYSCTL VARIABLES
The operation of lua
can be controlled by
means of the following
sysctl(8) variables:
kern.lua.autoload
- When set to 1,
lua
tries to autoload kernel modules.The default value is 1.
kern.lua.bytecode
- When set to 1, loading of Lua bytecode is allowed.
The default value is 0.
kern.lua.maxcount
- When set to a value > 0,
lua
limits the number of instructions executed to this number.The default value is 0.
kern.lua.require
- When set to 1, enables the require command in Lua.
The default value is 1.
kern.lua.verbose
- When set to a value > 0, verbosity is increased.
The default value is 0.
IOCTL INTERFACE
The following structures and constants are defined in the
<sys/lua.h>
header file:
LUAINFO(struct lua_info)
- Returns information about the
lua
states in the lua_info structure:#define MAX_LUA_NAME 16 #define MAX_LUA_DESC 64 struct lua_state_info { char name[MAX_LUA_NAME]; char desc[MAX_LUA_DESC]; bool user; }; struct lua_info { int num_states; /* total number of Lua states */ struct lua_state_info *states; };
LUACREATE(struct lua_create)
- Create a new named Lua state with name and description in the
lua_create structure:
struct lua_create { char name[MAX_LUA_NAME]; char desc[MAX_LUA_DESC]; };
LUADESTROY(struct lua_create)
- Destroy a named Lua state.
LUAREQUIRE(struct lua_require)
- Perform the equivalent of the Lua command require in a
named state. The name of the state and of the module name is passed in the
lua_require structure:
#define LUA_MAX_MODNAME 32 struct lua_require { char state[MAX_LUA_NAME]; char module[LUA_MAX_MODNAME]; };
LUALOAD(struct lua_load)
- Load Lua code from the filesystem into a named Lua state. The name of the
state and the path to the Lua code are passed in the
lua_load structure:
struct lua_load { char state[MAX_LUA_NAME]; char path[MAXPATHLEN]; };
The path element of the lua_load structure must contain at least one ‘/’ character.
FILES
- /dev/lua
- Lua device file.
SEE ALSO
HISTORY
The lua
device first appeared in
NetBSD 7.0.
AUTHORS
The lua
driver was written by
Marc Balmer
<mbalmer@NetBSD.org>.
CAVEATS
The lua
device is experimental.
Incompatible changes might be made in the future.