xref: /netbsd-src/share/man/man4/lua.4 (revision dd855896750e3a837a3efce38420bcf1f8673705)
1*dd855896Swiz.\" $NetBSD: lua.4,v 1.5 2014/07/26 20:04:05 wiz Exp $
296d1a832Smbalmer.\"
396d1a832Smbalmer.\" Copyright (c) 2013 Marc Balmer <marc@msys.ch>
496d1a832Smbalmer.\"
596d1a832Smbalmer.\" Permission to use, copy, modify, and distribute this software for any
696d1a832Smbalmer.\" purpose with or without fee is hereby granted, provided that the above
796d1a832Smbalmer.\" copyright notice and this permission notice appear in all copies.
896d1a832Smbalmer.\"
996d1a832Smbalmer.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1096d1a832Smbalmer.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1196d1a832Smbalmer.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1296d1a832Smbalmer.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1396d1a832Smbalmer.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1496d1a832Smbalmer.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1596d1a832Smbalmer.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1696d1a832Smbalmer.\"
178b412359Sapb.Dd July 25, 2014
1896d1a832Smbalmer.Dt LUA 4
1996d1a832Smbalmer.Os
2096d1a832Smbalmer.Sh NAME
2196d1a832Smbalmer.Nm lua
2296d1a832Smbalmer.Nd control in-kernel Lua states
2396d1a832Smbalmer.Sh SYNOPSIS
2496d1a832Smbalmer.Cd "lua*"
2596d1a832Smbalmer.Pp
2696d1a832Smbalmer.In sys/types.h
2796d1a832Smbalmer.In sys/lua.h
2896d1a832Smbalmer.Sh DESCRIPTION
2996d1a832SmbalmerThe
3096d1a832Smbalmer.Nm
311408be80Swizdevice allows to create, control, and delete Lua states in the kernel
3296d1a832Smbalmerthrough an
3396d1a832Smbalmer.Xr ioctl 2
3496d1a832Smbalmerinterface.
3596d1a832SmbalmerMoreover,
3696d1a832Smbalmer.Nm
3796d1a832Smbalmercan be used to load Lua scripts into a Lua state and to assign modules to an
3896d1a832Smbalmerexisting state, i.e. perform the equivalent of the Lua command
3996d1a832Smbalmer.Em require .
4096d1a832Smbalmer.Nm
4196d1a832Smbalmeris also used to retrieve information about currently active Lua states.
4296d1a832Smbalmer.Sh LUA MODULES
4396d1a832SmbalmerLua modules are used to provide functionality to Lua scripts not available
4496d1a832Smbalmerin the language itself, e.g. to access core kernel functionality like
4596d1a832Smbalmerprinting text on the console.
4696d1a832SmbalmerUnlike in user space Lua, where Lua modules are files in the filesystem,
471408be80Swizmodules must be provided to
481408be80Swiz.Nm
491408be80Swizin the form of loadable kernel modules that register their
501408be80Swizfunctionality with
511408be80Swiz.Nm .
521408be80SwizModules are loaded using the
531408be80Swiz.Ic require
541408be80SwizLua command; whether this command
551408be80Swizis available or not is controlled by a
561408be80Swiz.Xr sysctl 8
571408be80Swizvariable.
5896d1a832Smbalmer.Nm
5996d1a832Smbalmerby default tries to load a kernel module named
6096d1a832Smbalmer.Em luafoo.kmod
6196d1a832Smbalmerwhen it encounters the Lua command
6296d1a832Smbalmer.Em require 'foo' .
6396d1a832Smbalmer.Sh SYSCTL VARIABLES
6496d1a832SmbalmerThe operation of
6596d1a832Smbalmer.Nm
6696d1a832Smbalmercan be controlled by means of the following
6796d1a832Smbalmer.Xr sysctl 8
6896d1a832Smbalmervariables:
697112cd15Snjoly.Bl -tag -width XXXX
7096d1a832Smbalmer.It Dv kern.lua.autoload
7196d1a832SmbalmerWhen set to 1,
7296d1a832Smbalmer.Nm
7396d1a832Smbalmertries to autoload kernel modules.
7496d1a832Smbalmer.Pp
7596d1a832SmbalmerThe default value is 1.
7696d1a832Smbalmer.It Dv kern.lua.bytecode
7796d1a832SmbalmerWhen set to 1, loading of Lua bytecode is allowed.
7896d1a832Smbalmer.Pp
7996d1a832SmbalmerThe default value is 0.
8096d1a832Smbalmer.It Dv kern.lua.maxcount
8196d1a832SmbalmerWhen set to a value > 0,
8296d1a832Smbalmer.Nm
8396d1a832Smbalmerlimits the number of instructions executed
8496d1a832Smbalmerto this number.
8596d1a832Smbalmer.Pp
8696d1a832SmbalmerThe default value is 0.
8796d1a832Smbalmer.It Dv kern.lua.require
8896d1a832SmbalmerWhen set to 1, enables the
8996d1a832Smbalmer.Em require
9096d1a832Smbalmercommand in Lua.
9196d1a832Smbalmer.Pp
9296d1a832SmbalmerThe default value is 1.
9396d1a832Smbalmer.It Dv kern.lua.verbose
9496d1a832SmbalmerWhen set to a value > 0, verbosity is increased.
9596d1a832Smbalmer.Pp
9696d1a832SmbalmerThe default value is 0.
9796d1a832Smbalmer.El
9896d1a832Smbalmer.Sh IOCTL INTERFACE
9996d1a832SmbalmerThe following structures and constants are defined in the
10096d1a832Smbalmer.In sys/lua.h
10196d1a832Smbalmerheader file:
10296d1a832Smbalmer.Pp
10396d1a832Smbalmer.Bl -tag -width XXXX -compact
10496d1a832Smbalmer.It Dv LUAINFO(struct lua_info)
10596d1a832SmbalmerReturns information about the
10696d1a832Smbalmer.Nm
10796d1a832Smbalmerstates in the
10896d1a832Smbalmer.Fa lua_info
10996d1a832Smbalmerstructure:
11096d1a832Smbalmer.Bd -literal
11196d1a832Smbalmer#define MAX_LUA_NAME		16
11296d1a832Smbalmer#define MAX_LUA_DESC		64
11396d1a832Smbalmer
11496d1a832Smbalmerstruct lua_state_info {
11596d1a832Smbalmer	char	name[MAX_LUA_NAME];
11696d1a832Smbalmer	char	desc[MAX_LUA_DESC];
11796d1a832Smbalmer	bool	user;
11896d1a832Smbalmer};
11996d1a832Smbalmer
12096d1a832Smbalmerstruct lua_info {
12196d1a832Smbalmer	int num_states;		/* total number of Lua states */
12296d1a832Smbalmer	struct lua_state_info *states;
12396d1a832Smbalmer};
12496d1a832Smbalmer.Ed
12596d1a832Smbalmer.Pp
12696d1a832Smbalmer.It Dv LUACREATE(struct lua_create)
12796d1a832SmbalmerCreate a new named Lua state with name and description in the
12896d1a832Smbalmer.Fa lua_create
12996d1a832Smbalmerstructure:
13096d1a832Smbalmer.Bd -literal
13196d1a832Smbalmerstruct lua_create {
13296d1a832Smbalmer	char	name[MAX_LUA_NAME];
13396d1a832Smbalmer	char	desc[MAX_LUA_DESC];
13496d1a832Smbalmer};
13596d1a832Smbalmer.Ed
13696d1a832Smbalmer.Pp
1371408be80Swiz.It Dv LUADESTROY(struct lua_create)
13896d1a832SmbalmerDestroy a named Lua state.
13996d1a832Smbalmer.Pp
14096d1a832Smbalmer.It Dv LUAREQUIRE(struct lua_require)
14196d1a832SmbalmerPerform the equivalent of the Lua command
14296d1a832Smbalmer.Em require
14396d1a832Smbalmerin a named state.
14496d1a832SmbalmerThe name of the state and of the module name is passed in the
14596d1a832Smbalmer.Fa lua_require
14696d1a832Smbalmerstructure:
14796d1a832Smbalmer.Bd -literal
14896d1a832Smbalmer#define LUA_MAX_MODNAME		32
14996d1a832Smbalmer
15096d1a832Smbalmerstruct lua_require {
15196d1a832Smbalmer	char	state[MAX_LUA_NAME];
15296d1a832Smbalmer	char	module[LUA_MAX_MODNAME];
15396d1a832Smbalmer};
15496d1a832Smbalmer.Ed
15596d1a832Smbalmer.Pp
15696d1a832Smbalmer.It Dv LUALOAD(struct lua_load)
15796d1a832SmbalmerLoad Lua code from the filesystem into a named Lua state.
15896d1a832SmbalmerThe name of the state and the path to the Lua code are passed in the
15996d1a832Smbalmer.Fa lua_load
16096d1a832Smbalmerstructure:
16196d1a832Smbalmer.Bd -literal
16296d1a832Smbalmerstruct lua_load {
16396d1a832Smbalmer	char	state[MAX_LUA_NAME];
16496d1a832Smbalmer	char	path[MAXPATHLEN];
16596d1a832Smbalmer};
16696d1a832Smbalmer.Ed
16796d1a832Smbalmer.Pp
16896d1a832SmbalmerThe path element of the
16996d1a832Smbalmer.Fa lua_load
1701408be80Swizstructure must contain at least one
1711408be80Swiz.Sq /
1721408be80Swizcharacter.
17396d1a832Smbalmer.Pp
17496d1a832Smbalmer.El
17596d1a832Smbalmer.Sh FILES
17696d1a832Smbalmer.Bl -tag -width "/dev/lua" -compact
17796d1a832Smbalmer.It /dev/lua
17896d1a832SmbalmerLua device file.
17996d1a832Smbalmer.El
18096d1a832Smbalmer.Sh SEE ALSO
18196d1a832Smbalmer.Xr ioctl 2 ,
1821408be80Swiz.Xr luactl 8
18396d1a832Smbalmer.Sh HISTORY
18496d1a832SmbalmerThe
18596d1a832Smbalmer.Nm
18696d1a832Smbalmerdevice first appeared in
1871408be80Swiz.Nx 7.0 .
18896d1a832Smbalmer.Sh AUTHORS
18996d1a832Smbalmer.An -nosplit
19096d1a832SmbalmerThe
19196d1a832Smbalmer.Nm
19296d1a832Smbalmerdriver was written by
19396d1a832Smbalmer.An Marc Balmer Aq Mt mbalmer@NetBSD.org .
194*dd855896Swiz.Sh CAVEATS
195*dd855896SwizThe
196*dd855896Swiz.Nm
197*dd855896Swizdevice is experimental.
198*dd855896SwizIncompatible changes might be made in the future.
199