From: Thierry FOURNIER Date: Tue, 17 Feb 2015 14:01:59 +0000 (+0100) Subject: MINOR: lua: core: can yield an execution stack X-Git-Tag: v1.6-dev1~85 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=13416fe0dbbacd2d78c249b919751b5a1a7b563e;p=thirdparty%2Fhaproxy.git MINOR: lua: core: can yield an execution stack This patch provides a yield function. This function permits to give back the hand at the HAProxy scheduler. It is used when the lua processing consumes a lot of time. --- diff --git a/src/hlua.c b/src/hlua.c index 4462570d5c..8b72763c8c 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -2491,6 +2491,15 @@ static int hlua_msleep(lua_State *L) return MAY_LJMP(_hlua_sleep(L, delay)); } +/* This functionis an LUA binding. it permits to give back + * the hand at the HAProxy scheduler. It is used when the + * LUA processing consumes a lot of time. + */ +__LJMP static int hlua_yield(lua_State *L) +{ + return MAY_LJMP(_hlua_sleep(L, 0)); +} + /* This function change the nice of the currently executed * task. It is used set low or high priority at the current * task. @@ -3325,6 +3334,7 @@ void hlua_init(void) hlua_class_function(gL.T, "register_task", hlua_register_task); hlua_class_function(gL.T, "register_fetches", hlua_register_fetches); hlua_class_function(gL.T, "register_converters", hlua_register_converters); + hlua_class_function(gL.T, "yield", hlua_yield); hlua_class_function(gL.T, "set_nice", hlua_setnice); hlua_class_function(gL.T, "sleep", hlua_sleep); hlua_class_function(gL.T, "msleep", hlua_msleep);