From 5da109056989e68729cf767a50e1492ac66d5c9a Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Fri, 5 Apr 2013 21:28:44 -0400 Subject: [PATCH] Optimisation: only update added library in tracepoint.c ...rather than updating all libraries each time a library is registered. Signed-off-by: Mathieu Desnoyers --- liblttng-ust/tracepoint.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/liblttng-ust/tracepoint.c b/liblttng-ust/tracepoint.c index da53d00a..e3e83b87 100644 --- a/liblttng-ust/tracepoint.c +++ b/liblttng-ust/tracepoint.c @@ -373,14 +373,10 @@ void tracepoint_update_probe_range(struct tracepoint * const *begin, } } -static void lib_update_tracepoints(void) +static void lib_update_tracepoints(struct tracepoint_lib *lib) { - struct tracepoint_lib *lib; - - cds_list_for_each_entry(lib, &libs, list) { - tracepoint_update_probe_range(lib->tracepoints_start, - lib->tracepoints_start + lib->tracepoints_count); - } + tracepoint_update_probe_range(lib->tracepoints_start, + lib->tracepoints_start + lib->tracepoints_count); } /* @@ -388,8 +384,11 @@ static void lib_update_tracepoints(void) */ static void tracepoint_update_probes(void) { + struct tracepoint_lib *lib; + /* tracepoints registered from libraries and executable. */ - lib_update_tracepoints(); + cds_list_for_each_entry(lib, &libs, list) + lib_update_tracepoints(lib); } static struct tracepoint_probe * @@ -635,8 +634,7 @@ int tracepoint_register_lib(struct tracepoint * const *tracepoints_start, lib_added: new_tracepoints(tracepoints_start, tracepoints_start + tracepoints_count); - /* TODO: update just the loaded lib */ - lib_update_tracepoints(); + lib_update_tracepoints(pl); pthread_mutex_unlock(&tracepoint_mutex); DBG("just registered a tracepoints section from %p and having %d tracepoints", -- 2.34.1