Merge libubox with the version 2016.02.26 from its git.

This commit is contained in:
2016-02-26 23:13:29 +01:00
parent 6d5f11268b
commit 737ecc15d0
39 changed files with 2971 additions and 486 deletions

View File

@@ -5,21 +5,13 @@ PROJECT(uloop C)
SET(CMAKE_INSTALL_PREFIX /)
IF(NOT LUA_CFLAGS)
FIND_PROGRAM(PKG_CONFIG pkg-config)
IF(PKG_CONFIG)
EXECUTE_PROCESS(
COMMAND pkg-config --silence-errors --cflags lua5.1
OUTPUT_VARIABLE LUA_CFLAGS
OUTPUT_STRIP_TRAILING_WHITESPACE
)
ENDIF()
pkg_search_module(LUA lua5.1 lua-5.1)
ENDIF()
ADD_DEFINITIONS(-Os -Wall -Werror --std=gnu99 -g3 -I.. ${LUA_CFLAGS})
LINK_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/..)
IF(APPLE)
ADD_DEFINITIONS(-I/opt/local/include)
SET(CMAKE_SHARED_MODULE_CREATE_C_FLAGS "${CMAKE_SHARED_MODULE_CREATE_C_FLAGS} -undefined dynamic_lookup")
ENDIF(APPLE)

View File

@@ -1,8 +0,0 @@
uloop.o: ../../../uloop.c \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lua.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/luaconf.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lnum_config.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lualib.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lua.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lauxlib.h \
../../../../uloop.h ../../../../list.h ../../../../list.h

View File

@@ -1,8 +0,0 @@
uloop.o: ../../../uloop.c \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lua.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/luaconf.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lnum_config.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lualib.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lua.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lauxlib.h \
../../../../uloop.h ../../../../list.h ../../../../list.h

View File

@@ -1,8 +0,0 @@
uloop.o: ../../../uloop.c \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lua.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/luaconf.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lnum_config.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lualib.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lua.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lauxlib.h \
../../../../uloop.h ../../../../list.h ../../../../list.h

View File

@@ -1,8 +0,0 @@
uloop.o: ../../../uloop.c \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lua.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/luaconf.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lnum_config.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lualib.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lua.h \
/home/jbnadal/sources/Audio_trunk/AwoxAudio/Libs/External/lua/src/lauxlib.h \
../../../../uloop.h ../../../../list.h ../../../../list.h

View File

@@ -43,6 +43,26 @@ struct lua_uloop_process {
static lua_State *state;
static void *
ul_create_userdata(lua_State *L, size_t size, const luaL_Reg *reg, lua_CFunction gc)
{
void *ret = lua_newuserdata(L, size);
memset(ret, 0, size);
lua_createtable(L, 0, 2);
lua_pushvalue(L, -1);
lua_setfield(L, -2, "__index");
lua_pushcfunction(L, gc);
lua_setfield(L, -2, "__gc");
lua_pushvalue(L, -1);
lua_setmetatable(L, -3);
lua_pushvalue(L, -2);
luaI_openlib(L, NULL, reg, 1);
lua_pushvalue(L, -2);
return ret;
}
static void ul_timer_cb(struct uloop_timeout *t)
{
struct lua_uloop_timeout *tout = container_of(t, struct lua_uloop_timeout, t);
@@ -77,9 +97,9 @@ static int ul_timer_set(lua_State *L)
static int ul_timer_free(lua_State *L)
{
struct lua_uloop_timeout *tout = lua_touserdata(L, 1);
uloop_timeout_cancel(&tout->t);
/* obj.__index.__gc = nil , make sure executing only once*/
lua_getfield(L, -1, "__index");
lua_pushstring(L, "__gc");
@@ -120,22 +140,10 @@ static int ul_timer(lua_State *L)
lua_pushvalue(L, -2);
ref = luaL_ref(L, -2);
tout = lua_newuserdata(L, sizeof(*tout));
lua_createtable(L, 0, 2);
lua_pushvalue(L, -1);
lua_setfield(L, -2, "__index");
lua_pushcfunction(L, ul_timer_free);
lua_setfield(L, -2, "__gc");
lua_pushvalue(L, -1);
lua_setmetatable(L, -3);
lua_pushvalue(L, -2);
luaI_openlib(L, NULL, timer_m, 1);
lua_pushvalue(L, -2);
memset(tout, 0, sizeof(*tout));
tout = ul_create_userdata(L, sizeof(*tout), timer_m, ul_timer_free);
tout->r = ref;
tout->t.cb = ul_timer_cb;
if (set)
uloop_timeout_set(&tout->t, set);
@@ -181,7 +189,7 @@ static int get_sock_fd(lua_State* L, int idx) {
static int ul_ufd_delete(lua_State *L)
{
struct lua_uloop_fd *ufd = lua_touserdata(L, 1);
uloop_fd_delete(&ufd->fd);
/* obj.__index.__gc = nil , make sure executing only once*/
@@ -238,21 +246,7 @@ static int ul_ufd_add(lua_State *L)
fd_ref = luaL_ref(L, -2);
lua_pop(L, 1);
ufd = lua_newuserdata(L, sizeof(*ufd));
lua_createtable(L, 0, 2);
lua_pushvalue(L, -1);
lua_setfield(L, -2, "__index");
lua_pushcfunction(L, ul_ufd_delete);
lua_setfield(L, -2, "__gc");
lua_pushvalue(L, -1);
lua_setmetatable(L, -3);
lua_pushvalue(L, -2);
luaI_openlib(L, NULL, ufd_m, 1);
lua_pushvalue(L, -2);
memset(ufd, 0, sizeof(*ufd));
ufd = ul_create_userdata(L, sizeof(*ufd), ufd_m, ul_ufd_delete);
ufd->r = ref;
ufd->fd.fd = fd;
ufd->fd_r = fd_ref;
@@ -263,6 +257,32 @@ static int ul_ufd_add(lua_State *L)
return 1;
}
static int ul_process_free(lua_State *L)
{
struct lua_uloop_process *proc = lua_touserdata(L, 1);
/* obj.__index.__gc = nil , make sure executing only once*/
lua_getfield(L, -1, "__index");
lua_pushstring(L, "__gc");
lua_pushnil(L);
lua_settable(L, -3);
if (proc->r != LUA_NOREF) {
uloop_process_delete(&proc->p);
lua_getglobal(state, "__uloop_cb");
luaL_unref(state, -1, proc->r);
lua_remove(state, -1);
}
return 1;
}
static const luaL_Reg process_m[] = {
{ "delete", ul_process_free },
{ NULL, NULL }
};
static void ul_process_cb(struct uloop_process *p, int ret)
{
struct lua_uloop_process *proc = container_of(p, struct lua_uloop_process, p);
@@ -271,6 +291,7 @@ static void ul_process_cb(struct uloop_process *p, int ret)
lua_rawgeti(state, -1, proc->r);
luaL_unref(state, -2, proc->r);
proc->r = LUA_NOREF;
lua_remove(state, -2);
lua_pushinteger(state, ret >> 8);
lua_call(state, 1, 0);
@@ -330,9 +351,7 @@ static int ul_process(lua_State *L)
lua_pushvalue(L, -2);
ref = luaL_ref(L, -2);
proc = lua_newuserdata(L, sizeof(*proc));
memset(proc, 0, sizeof(*proc));
proc = ul_create_userdata(L, sizeof(*proc), process_m, ul_process_free);
proc->r = ref;
proc->p.pid = pid;
proc->p.cb = ul_process_cb;