X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=liblttng-ust%2Flttng-getcpu.c;h=7c33b49492cb944c5aa303ce753c29c59fc67f70;hb=fb54defd7e47e106bdf3b7eb07d53f0aba0525ec;hp=3e675a5a1f422c376499065a035849084ffca4b1;hpb=730bf2af85afbd5557adac5e3283f3ad59e90194;p=lttng-ust.git diff --git a/liblttng-ust/lttng-getcpu.c b/liblttng-ust/lttng-getcpu.c index 3e675a5a..7c33b494 100644 --- a/liblttng-ust/lttng-getcpu.c +++ b/liblttng-ust/lttng-getcpu.c @@ -16,7 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#define _GNU_SOURCE +#define _LGPL_SOURCE #include #include #include @@ -30,6 +30,9 @@ int (*lttng_get_cpu)(void); +static +void *getcpu_handle; + int lttng_ust_getcpu_override(int (*getcpu)(void)) { CMM_STORE_SHARED(lttng_get_cpu, getcpu); @@ -39,20 +42,21 @@ int lttng_ust_getcpu_override(int (*getcpu)(void)) void lttng_ust_getcpu_init(void) { const char *libname; - void *handle; void (*libinit)(void); - libname = lttng_secure_getenv("LTTNG_UST_GETCPU_PLUGIN"); + if (getcpu_handle) + return; + libname = lttng_getenv("LTTNG_UST_GETCPU_PLUGIN"); if (!libname) return; - handle = dlopen(libname, RTLD_NOW); - if (!handle) { + getcpu_handle = dlopen(libname, RTLD_NOW); + if (!getcpu_handle) { PERROR("Cannot load LTTng UST getcpu override library %s", libname); return; } dlerror(); - libinit = (void (*)(void)) dlsym(handle, + libinit = (void (*)(void)) dlsym(getcpu_handle, "lttng_ust_getcpu_plugin_init"); if (!libinit) { PERROR("Cannot find LTTng UST getcpu override library %s initialization function lttng_ust_getcpu_plugin_init()",