X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=liblttng-ust%2Flttng-clock.c;h=5c33de0c477d5b46a77c25a6a19f27d7b346d9b2;hb=fb31eb73d8a4a6d9784ed5c335b7fa3b9684108c;hp=e8391e6dd49f87e0efed2e99b3569c150bca8636;hpb=730bf2af85afbd5557adac5e3283f3ad59e90194;p=lttng-ust.git diff --git a/liblttng-ust/lttng-clock.c b/liblttng-ust/lttng-clock.c index e8391e6d..5c33de0c 100644 --- a/liblttng-ust/lttng-clock.c +++ b/liblttng-ust/lttng-clock.c @@ -17,9 +17,11 @@ */ #define _GNU_SOURCE +#define _LGPL_SOURCE #include #include #include +#include #include #include #include @@ -33,6 +35,9 @@ struct lttng_trace_clock *lttng_trace_clock; static struct lttng_trace_clock user_tc; +static +void *clock_handle; + int lttng_ust_trace_clock_set_read64_cb(uint64_t (*read64)(void)) { if (CMM_LOAD_SHARED(lttng_trace_clock)) @@ -94,21 +99,21 @@ int lttng_ust_enable_trace_clock_override(void) void lttng_ust_clock_init(void) { const char *libname; - void *handle; void (*libinit)(void); - - libname = lttng_secure_getenv("LTTNG_UST_CLOCK_PLUGIN"); + if (clock_handle) + return; + libname = lttng_getenv("LTTNG_UST_CLOCK_PLUGIN"); if (!libname) return; - handle = dlopen(libname, RTLD_NOW); - if (!handle) { + clock_handle = dlopen(libname, RTLD_NOW); + if (!clock_handle) { PERROR("Cannot load LTTng UST clock override library %s", libname); return; } dlerror(); - libinit = (void (*)(void)) dlsym(handle, + libinit = (void (*)(void)) dlsym(clock_handle, "lttng_ust_clock_plugin_init"); if (!libinit) { PERROR("Cannot find LTTng UST clock override library %s initialization function lttng_ust_clock_plugin_init()",