From: Sergey Bronnikov via Tarantool-patches <tarantool-patches@dev.tarantool.org> To: tarantool-patches@dev.tarantool.org, Sergey Kaplun <skaplun@tarantool.org> Subject: [Tarantool-patches] [PATCH luajit 2/3] misc: use prof_error for handling errors Date: Tue, 25 Feb 2025 10:32:48 +0300 [thread overview] Message-ID: <24b8d43f6ce2796ba2cb9e6740182c82ea0ddf35.1740468394.git.sergeyb@tarantool.org> (raw) In-Reply-To: <cover.1740468394.git.sergeyb@tarantool.org> The patch consolidates handling profilers errors into a single place - in a function `prof_error()` and handles PROFILE_ERRIO, generated in a function `misc_memprof_start`, in a `prof_error()`. --- src/lib_misc.c | 49 +++++++++---------------------------------------- 1 file changed, 9 insertions(+), 40 deletions(-) diff --git a/src/lib_misc.c b/src/lib_misc.c index b4b58509..c4b40996 100644 --- a/src/lib_misc.c +++ b/src/lib_misc.c @@ -286,14 +286,14 @@ static int prof_error(lua_State *L, int status, const char *err_details) lua_pushstring(L, err2msg(LJ_ERR_PROF_MISUSE)); lua_pushinteger(L, EINVAL); return 3; -#if LJ_HASSYSPROF +#if LJ_HASSYSPROF || LJ_HASMEMPROF case PROFILE_ERRRUN: lua_pushnil(L); lua_pushstring(L, err2msg(LJ_ERR_PROF_ISRUNNING)); lua_pushinteger(L, EINVAL); return 3; case PROFILE_ERRIO: - return luaL_fileresult(L, 0, NULL); + return luaL_fileresult(L, 0, err_details); #endif default: lj_assertL(0, "bad sysprof error %d", status); @@ -417,32 +417,13 @@ LJLIB_CF(misc_memprof_start) if (ctx->fd == -1) { lj_mem_free(ctx->g, ctx, sizeof(*ctx)); - return luaL_fileresult(L, 0, fname); + return prof_error(L, PROFILE_ERRIO, fname); } memprof_status = lj_memprof_start(L, &opt); + if (LJ_UNLIKELY(memprof_status != PROFILE_SUCCESS)) + return prof_error(L, memprof_status, NULL); - if (LJ_UNLIKELY(memprof_status != PROFILE_SUCCESS)) { - switch (memprof_status) { - case PROFILE_ERRUSE: - lua_pushnil(L); - lua_pushstring(L, err2msg(LJ_ERR_PROF_MISUSE)); - lua_pushinteger(L, EINVAL); - return 3; -#if LJ_HASMEMPROF - case PROFILE_ERRRUN: - lua_pushnil(L); - lua_pushstring(L, err2msg(LJ_ERR_PROF_ISRUNNING)); - lua_pushinteger(L, EINVAL); - return 3; - case PROFILE_ERRIO: - return luaL_fileresult(L, 0, fname); -#endif - default: - lj_assertL(0, "bad memprof error %d", memprof_status); - return 0; - } - } lua_pushboolean(L, 1); return 1; #endif /* !LJ_HASMEMPROF */ @@ -456,27 +437,15 @@ LJLIB_CF(misc_memprof_stop) return prof_error(L, PROFILE_ERRUSE, err_details); #else int status = lj_memprof_stop(L); - if (status != PROFILE_SUCCESS) { - switch (status) { - case PROFILE_ERRUSE: - lua_pushnil(L); - lua_pushstring(L, err2msg(LJ_ERR_PROF_MISUSE)); - lua_pushinteger(L, EINVAL); - return 3; -#if LJ_HASMEMPROF - case PROFILE_ERRRUN: + if (LJ_UNLIKELY(status == PROFILE_ERRRUN)) { lua_pushnil(L); lua_pushstring(L, err2msg(LJ_ERR_PROF_NOTRUNNING)); lua_pushinteger(L, EINVAL); return 3; - case PROFILE_ERRIO: - return luaL_fileresult(L, 0, NULL); -#endif - default: - lj_assertL(0, "bad memprof error %d", status); - return 0; - } } + if (LJ_UNLIKELY(status != PROFILE_SUCCESS)) + return prof_error(L, status, NULL); + lua_pushboolean(L, 1); return 1; #endif /* !LJ_HASMEMPROF */ -- 2.43.0
next prev parent reply other threads:[~2025-02-25 7:34 UTC|newest] Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top 2025-02-25 7:32 [Tarantool-patches] [PATCH luajit 0/3] Fix sysprof error on stop not started sysprof Sergey Bronnikov via Tarantool-patches 2025-02-25 7:32 ` [Tarantool-patches] [PATCH luajit 1/3] sysprof: rename sysprof_error to prof_error Sergey Bronnikov via Tarantool-patches 2025-03-05 14:28 ` Sergey Kaplun via Tarantool-patches 2025-02-25 7:32 ` Sergey Bronnikov via Tarantool-patches [this message] 2025-03-05 14:49 ` [Tarantool-patches] [PATCH luajit 2/3] misc: use prof_error for handling errors Sergey Kaplun via Tarantool-patches 2025-03-06 16:04 ` Sergey Bronnikov via Tarantool-patches 2025-02-25 7:32 ` [Tarantool-patches] [PATCH luajit 3/3] sysprof: fix a message with stop without run Sergey Bronnikov via Tarantool-patches 2025-03-05 14:52 ` Sergey Kaplun via Tarantool-patches 2025-03-06 15:18 ` Sergey Bronnikov via Tarantool-patches 2025-03-12 11:11 ` [Tarantool-patches] [PATCH luajit 0/3] Fix sysprof error on stop not started sysprof Sergey Kaplun via Tarantool-patches 2025-03-06 16:18 Sergey Bronnikov via Tarantool-patches 2025-03-06 16:18 ` [Tarantool-patches] [PATCH luajit 2/3] misc: use prof_error for handling errors Sergey Bronnikov via Tarantool-patches 2025-03-07 7:18 ` Sergey Kaplun via Tarantool-patches
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=24b8d43f6ce2796ba2cb9e6740182c82ea0ddf35.1740468394.git.sergeyb@tarantool.org \ --to=tarantool-patches@dev.tarantool.org \ --cc=estetus@gmail.com \ --cc=skaplun@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH luajit 2/3] misc: use prof_error for handling errors' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox