From: Thierry FOURNIER Date: Fri, 16 Dec 2016 12:07:22 +0000 (+0100) Subject: MINOR: lua/signals: Remove Lua part from signals. X-Git-Tag: v1.8-dev1~268 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=847ca66815c52c60ccc43e1fa6ee48e594e918ce;p=thirdparty%2Fhaproxy.git MINOR: lua/signals: Remove Lua part from signals. The signals system embedded in Lua can be tranformed in general purpose signals code. To reach this goal, this path removes the Lua part of the signals. This is an easy job, because Lua is useles with signal. I change just two prototypes. --- diff --git a/src/hlua.c b/src/hlua.c index 69db580d0d..2621ba6bae 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -303,27 +303,27 @@ static int hlua_pusherror(lua_State *L, const char *fmt, ...) * events like TCP I/O or sleep functions. This funcion allocate * memory for the signal. */ -static int hlua_com_new(struct hlua *lua, struct list *link) +static struct hlua_com *hlua_com_new(struct list *purge, struct list *event, struct task *wakeup) { struct hlua_com *com = pool_alloc2(pool2_hlua_com); if (!com) - return 0; - LIST_ADDQ(&lua->com, &com->purge_me); - LIST_ADDQ(link, &com->wake_me); - com->task = lua->task; - return 1; + return NULL; + LIST_ADDQ(purge, &com->purge_me); + LIST_ADDQ(event, &com->wake_me); + com->task = wakeup; + return com; } /* This function purge all the pending signals when the LUA execution * is finished. This prevent than a coprocess try to wake a deleted * task. This function remove the memory associated to the signal. */ -static void hlua_com_purge(struct hlua *lua) +static void hlua_com_purge(struct list *purge) { struct hlua_com *com, *back; /* Delete all pending communication signals. */ - list_for_each_entry_safe(com, back, &lua->com, purge_me) { + list_for_each_entry_safe(com, back, purge, purge_me) { LIST_DEL(&com->purge_me); LIST_DEL(&com->wake_me); pool_free2(pool2_hlua_com, com); @@ -878,7 +878,7 @@ void hlua_ctx_destroy(struct hlua *lua) return; /* Purge all the pending signals. */ - hlua_com_purge(lua); + hlua_com_purge(&lua->com); luaL_unref(lua->T, LUA_REGISTRYINDEX, lua->Mref); luaL_unref(gL.T, LUA_REGISTRYINDEX, lua->Tref); @@ -1151,20 +1151,20 @@ resume_execution: break; case HLUA_E_ERRMSG: - hlua_com_purge(lua); + hlua_com_purge(&lua->com); hlua_ctx_renew(lua, 1); HLUA_CLR_RUN(lua); break; case HLUA_E_ERR: HLUA_CLR_RUN(lua); - hlua_com_purge(lua); + hlua_com_purge(&lua->com); hlua_ctx_renew(lua, 0); break; case HLUA_E_OK: HLUA_CLR_RUN(lua); - hlua_com_purge(lua); + hlua_com_purge(&lua->com); break; } @@ -1772,7 +1772,7 @@ connection_closed: connection_empty: appctx = objt_appctx(socket->s->si[0].end); - if (!hlua_com_new(hlua, &appctx->ctx.hlua_cosocket.wake_on_read)) + if (!hlua_com_new(&hlua->com, &appctx->ctx.hlua_cosocket.wake_on_read, hlua->task)) WILL_LJMP(luaL_error(L, "out of memory")); WILL_LJMP(hlua_yieldk(L, 0, 0, hlua_socket_receive_yield, TICK_ETERNITY, 0)); return 0; @@ -1935,7 +1935,7 @@ static int hlua_socket_write_yield(struct lua_State *L,int status, lua_KContext hlua_socket_write_yield_return: appctx = objt_appctx(socket->s->si[0].end); - if (!hlua_com_new(hlua, &appctx->ctx.hlua_cosocket.wake_on_write)) + if (!hlua_com_new(&hlua->com, &appctx->ctx.hlua_cosocket.wake_on_write, hlua->task)) WILL_LJMP(luaL_error(L, "out of memory")); WILL_LJMP(hlua_yieldk(L, 0, 0, hlua_socket_write_yield, TICK_ETERNITY, 0)); return 0; @@ -2157,7 +2157,7 @@ __LJMP static int hlua_socket_connect_yield(struct lua_State *L, int status, lua return 1; } - if (!hlua_com_new(hlua, &appctx->ctx.hlua_cosocket.wake_on_write)) + if (!hlua_com_new(&hlua->com, &appctx->ctx.hlua_cosocket.wake_on_write, hlua->task)) WILL_LJMP(luaL_error(L, "out of memory error")); WILL_LJMP(hlua_yieldk(L, 0, 0, hlua_socket_connect_yield, TICK_ETERNITY, 0)); return 0; @@ -2224,7 +2224,7 @@ __LJMP static int hlua_socket_connect(struct lua_State *L) hlua->flags |= HLUA_MUST_GC; - if (!hlua_com_new(hlua, &appctx->ctx.hlua_cosocket.wake_on_write)) + if (!hlua_com_new(&hlua->com, &appctx->ctx.hlua_cosocket.wake_on_write, hlua->task)) WILL_LJMP(luaL_error(L, "out of memory")); WILL_LJMP(hlua_yieldk(L, 0, 0, hlua_socket_connect_yield, TICK_ETERNITY, 0));