Module Name: src Committed By: mbalmer Date: Wed Oct 16 19:40:45 UTC 2013
Added Files: src/sys/sys: lua.h Log Message: header file needed for lua(4) To generate a diff of this commit: cvs rdiff -u -r0 -r1.1 src/sys/sys/lua.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Added files: Index: src/sys/sys/lua.h diff -u /dev/null src/sys/sys/lua.h:1.1 --- /dev/null Wed Oct 16 19:40:45 2013 +++ src/sys/sys/lua.h Wed Oct 16 19:40:45 2013 @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2011, 2013 Marc Balmer <mbal...@netbsd.org>. + * All rights reserved. + * + * 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. + * 3. The name of the Author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * 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 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. + */ + +#ifndef _SYS_LUA_H_ +#define _SYS_LUA_H_ + +#include <lua.h> /* for lua_State */ + +#define MAX_LUA_NAME 16 +#define MAX_LUA_DESC 64 +#define LUA_MAX_MODNAME 32 + +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 created Lua states */ + struct lua_state_info *states; +}; + +struct lua_create { + char name[MAX_LUA_NAME]; + char desc[MAX_LUA_DESC]; +}; + +struct lua_require { + char state[MAX_LUA_NAME]; + char module[LUA_MAX_MODNAME]; +}; + +struct lua_load { + char state[MAX_LUA_NAME]; + char path[MAXPATHLEN]; +}; + +#define LUAINFO _IOWR('l', 0, struct lua_info) + +#define LUACREATE _IOWR('l', 1, struct lua_create) +#define LUADESTROY _IOWR('l', 2, struct lua_create) + +/* 'require' a module in a state */ +#define LUAREQUIRE _IOWR('l', 3, struct lua_require) + +/* loading Lua code into a Lua state */ +#define LUALOAD _IOWR('l', 4, struct lua_load) + +#ifdef _KERNEL +extern int lua_mod_register(const char *, int (*)(void *)); +extern int lua_mod_unregister(const char *); + +typedef struct _klua_State { + lua_State *L; + kmutex_t ks_lock; + kcondvar_t ks_inuse_cv; + int ks_inuse; + bool ks_user; /* state created by user (ioctl) */ +} klua_State; + +extern int klua_lock(klua_State *); +extern void klua_unlock(klua_State *); + +extern void klua_close(klua_State *); +extern klua_State *klua_newstate(lua_Alloc, void *, const char *, const char *); + +extern void *lua_alloc(void *, void *, size_t, size_t); + +#endif + +#endif /* _SYS_LUA_H_ */