X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=liblttng-ust%2Flttng-getcpu.c;fp=liblttng-ust%2Flttng-getcpu.c;h=8f4c0fe7eeb6ba92c236bd2715709348c7ec45d8;hb=5e1b7b8bac9f038e681906b269c1422611c6376d;hp=0000000000000000000000000000000000000000;hpb=f9364363c8982127d66c2a29cb1fa21760bd00e5;p=lttng-ust.git diff --git a/liblttng-ust/lttng-getcpu.c b/liblttng-ust/lttng-getcpu.c new file mode 100644 index 00000000..8f4c0fe7 --- /dev/null +++ b/liblttng-ust/lttng-getcpu.c @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2014 Mathieu Desnoyers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; version 2.1 of + * the License. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include + +#include "../libringbuffer/getcpu.h" + +int (*lttng_get_cpu)(void); + +int lttng_ust_getcpu_override(int (*getcpu)(void)) +{ + CMM_STORE_SHARED(lttng_get_cpu, getcpu); + return 0; +} + +void lttng_ust_getcpu_init(void) +{ + const char *libname; + void *handle; + void (*libinit)(void); + + libname = secure_getenv("LTTNG_UST_GETCPU_PLUGIN"); + if (!libname) + return; + handle = dlopen(libname, RTLD_NOW); + if (!handle) { + PERROR("Cannot load LTTng UST getcpu override library %s", + libname); + return; + } + dlerror(); + libinit = (void (*)(void)) dlsym(handle, + "lttng_ust_getcpu_plugin_init"); + if (!libinit) { + PERROR("Cannot find LTTng UST getcpu override library %s initialization function lttng_ust_getcpu_plugin_init()", + libname); + return; + } + libinit(); +}