From: Maxim Kokryashkin via Tarantool-patches <tarantool-patches@dev.tarantool.org> To: tarantool-patches@dev.tarantool.org, imun@tarantool.org, skaplun@tarantool.org Subject: [Tarantool-patches] [PATCH luajit 5/7] memprof: add profile common section Date: Wed, 8 Sep 2021 20:50:48 +0300 [thread overview] Message-ID: <e5d6b75269b5d38b754f009fad781d59d061df87.1631122521.git.m.kokryashkin@tarantool.org> (raw) In-Reply-To: <cover.1631122521.git.m.kokryashkin@tarantool.org> A Lua API for sysprof needs to be introduced, but sysprof's C API is quite similar with memprof's. Considering this, there are some structures and functions that should be common between memprof's and sysprof's implementations of Lua API to avoid duplication. Part of tarantool/tarantool#781 --- src/lib_misc.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/lib_misc.c b/src/lib_misc.c index 1dab08cc..a44476e0 100644 --- a/src/lib_misc.c +++ b/src/lib_misc.c @@ -75,9 +75,7 @@ LJLIB_CF(misc_getmetrics) #include "lj_libdef.h" -/* ----- misc.memprof module ---------------------------------------------- */ - -#define LJLIB_MODULE_misc_memprof +/* --------- profile common ---------------------------------------------- */ /* ** Yep, 8Mb. Tuned in order not to bother the platform with too often flushes. @@ -85,7 +83,7 @@ LJLIB_CF(misc_getmetrics) #define STREAM_BUFFER_SIZE (8 * 1024 * 1024) /* Structure given as ctx to memprof writer and on_stop callback. */ -struct memprof_ctx { +struct profile_ctx { /* Output file stream for data. */ FILE *stream; /* Profiled global_State for lj_mem_free at on_stop callback. */ @@ -101,7 +99,7 @@ struct memprof_ctx { static size_t buffer_writer_default(const void **buf_addr, size_t len, void *opt) { - struct memprof_ctx *ctx = opt; + struct profile_ctx *ctx = opt; FILE *stream = ctx->stream; const void * const buf_start = *buf_addr; const void *data = *buf_addr; @@ -140,19 +138,22 @@ static size_t buffer_writer_default(const void **buf_addr, size_t len, /* Default on stop callback. Just close the corresponding stream. */ static int on_stop_cb_default(void *opt, uint8_t *buf) { - struct memprof_ctx *ctx = opt; + struct profile_ctx *ctx = opt; FILE *stream = ctx->stream; UNUSED(buf); lj_mem_free(ctx->g, ctx, sizeof(*ctx)); return fclose(stream); } +/* ----- misc.memprof module ---------------------------------------------- */ + +#define LJLIB_MODULE_misc_memprof /* local started, err, errno = misc.memprof.start(fname) */ LJLIB_CF(misc_memprof_start) { struct lj_memprof_options opt = {0}; const char *fname = strdata(lj_lib_checkstr(L, 1)); - struct memprof_ctx *ctx; + struct profile_ctx *ctx; int memprof_status; /* -- 2.33.0
next prev parent reply other threads:[~2021-09-08 17:53 UTC|newest] Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-09-08 17:50 [Tarantool-patches] [PATCH luajit 0/7] misc: introduce sysprof Maxim Kokryashkin via Tarantool-patches 2021-09-08 17:50 ` [Tarantool-patches] [PATCH luajit 1/7] core: save current frame top to lj_obj Maxim Kokryashkin via Tarantool-patches 2021-09-20 17:21 ` Sergey Kaplun via Tarantool-patches 2021-09-08 17:50 ` [Tarantool-patches] [PATCH luajit 2/7] core: separate the profiling timer from lj_profile Maxim Kokryashkin via Tarantool-patches 2021-09-21 11:13 ` Sergey Kaplun via Tarantool-patches 2021-09-23 11:37 ` Mikhail Shishatskiy via Tarantool-patches 2021-09-08 17:50 ` [Tarantool-patches] [PATCH luajit 3/7] memprof: move symtab to a separate module Maxim Kokryashkin via Tarantool-patches 2021-09-22 7:51 ` Sergey Kaplun via Tarantool-patches 2021-09-22 8:14 ` Sergey Kaplun via Tarantool-patches 2021-09-23 14:51 ` [Tarantool-patches] [PATCH luajit v2] " Maxim Kokryashkin via Tarantool-patches 2021-09-08 17:50 ` [Tarantool-patches] [PATCH luajit 4/7] core: introduce lua and platform profiler Maxim Kokryashkin via Tarantool-patches 2021-09-29 6:53 ` Sergey Kaplun via Tarantool-patches 2021-09-08 17:50 ` Maxim Kokryashkin via Tarantool-patches [this message] 2021-10-05 10:48 ` [Tarantool-patches] [PATCH luajit 5/7] memprof: add profile common section Sergey Kaplun via Tarantool-patches 2021-10-06 19:15 ` [Tarantool-patches] [PATCH luajit v2] " Maxim Kokryashkin via Tarantool-patches 2021-09-08 17:50 ` [Tarantool-patches] [PATCH luajit 6/7] sysprof: introduce Lua API Maxim Kokryashkin via Tarantool-patches 2021-10-05 15:36 ` Sergey Kaplun via Tarantool-patches 2021-09-08 17:50 ` [Tarantool-patches] [PATCH luajit 7/7] tools: introduce parsers for sysprof Maxim Kokryashkin via Tarantool-patches 2021-10-07 11:28 ` Sergey Kaplun via Tarantool-patches 2022-04-07 12:15 ` [Tarantool-patches] [PATCH luajit 0/7] misc: introduce sysprof 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=e5d6b75269b5d38b754f009fad781d59d061df87.1631122521.git.m.kokryashkin@tarantool.org \ --to=tarantool-patches@dev.tarantool.org \ --cc=imun@tarantool.org \ --cc=max.kokryashkin@gmail.com \ --cc=skaplun@tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH luajit 5/7] memprof: add profile common section' \ /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