From 13416fe0dbbacd2d78c249b919751b5a1a7b563e Mon Sep 17 00:00:00 2001 From: Thierry FOURNIER Date: Tue, 17 Feb 2015 15:01:59 +0100 Subject: [PATCH] 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. --- src/hlua.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/hlua.c b/src/hlua.c index 4462570d5..8b72763c8 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);