forked from len0rd/rockbox
hwstub: add atexit and exit stub function to DEV
Change-Id: I17cfe52de3f6f546a46ace3252113024625f15d1
This commit is contained in:
parent
4aae8274b3
commit
d759bd3710
1 changed files with 33 additions and 2 deletions
|
@ -211,7 +211,34 @@ int my_lua_printlog(lua_State *state)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int my_lua_atexit(lua_State *state)
|
||||||
|
{
|
||||||
|
int n = lua_gettop(state);
|
||||||
|
if(n != 1)
|
||||||
|
luaL_error(state, "atexit takes one argument");
|
||||||
|
const char *arg = luaL_checkstring(state, 1);
|
||||||
|
int ret = -1;
|
||||||
|
if(strcmp(arg, "nop") == 0)
|
||||||
|
ret = hwstub_atexit(&g_hwdev, HWSTUB_ATEXIT_NOP);
|
||||||
|
else if(strcmp(arg, "reboot") == 0)
|
||||||
|
ret = hwstub_atexit(&g_hwdev, HWSTUB_ATEXIT_REBOOT);
|
||||||
|
else if(strcmp(arg, "off") == 0)
|
||||||
|
ret = hwstub_atexit(&g_hwdev, HWSTUB_ATEXIT_OFF);
|
||||||
|
else
|
||||||
|
luaL_error(state, "unknown atexit method '%s'", arg);
|
||||||
|
if(ret < 0)
|
||||||
|
luaL_error(state, "fail to set atexit method");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int my_lua_exit(lua_State *state)
|
int my_lua_exit(lua_State *state)
|
||||||
|
{
|
||||||
|
if(hwstub_exit(&g_hwdev) < 0)
|
||||||
|
luaL_error(state, "fail to exit hwstub");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int my_lua_quit(lua_State *state)
|
||||||
{
|
{
|
||||||
g_exit = true;
|
g_exit = true;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -310,6 +337,10 @@ bool my_lua_import_hwstub()
|
||||||
lua_setfield(g_lua, -2, "write32");
|
lua_setfield(g_lua, -2, "write32");
|
||||||
lua_pushcclosure(g_lua, my_lua_printlog, 0);
|
lua_pushcclosure(g_lua, my_lua_printlog, 0);
|
||||||
lua_setfield(g_lua, -2, "print_log");
|
lua_setfield(g_lua, -2, "print_log");
|
||||||
|
lua_pushcclosure(g_lua, my_lua_atexit, 0);
|
||||||
|
lua_setfield(g_lua, -2, "atexit");
|
||||||
|
lua_pushcclosure(g_lua, my_lua_exit, 0);
|
||||||
|
lua_setfield(g_lua, -2, "exit");
|
||||||
|
|
||||||
lua_setfield(g_lua, -2, "dev");
|
lua_setfield(g_lua, -2, "dev");
|
||||||
|
|
||||||
|
@ -347,10 +378,10 @@ bool my_lua_import_hwstub()
|
||||||
lua_pushcfunction(g_lua, my_lua_help);
|
lua_pushcfunction(g_lua, my_lua_help);
|
||||||
lua_setglobal(g_lua, "help");
|
lua_setglobal(g_lua, "help");
|
||||||
|
|
||||||
lua_pushcfunction(g_lua, my_lua_exit);
|
lua_pushcfunction(g_lua, my_lua_quit);
|
||||||
lua_setglobal(g_lua, "exit");
|
lua_setglobal(g_lua, "exit");
|
||||||
|
|
||||||
lua_pushcfunction(g_lua, my_lua_exit);
|
lua_pushcfunction(g_lua, my_lua_quit);
|
||||||
lua_setglobal(g_lua, "quit");
|
lua_setglobal(g_lua, "quit");
|
||||||
|
|
||||||
if(lua_gettop(g_lua) != oldtop)
|
if(lua_gettop(g_lua) != oldtop)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue