Move to kernel style SPDX license identifiers
[lttng-ust.git] / liblttng-ust / lttng-getcpu.c
CommitLineData
5e1b7b8b 1/*
c0c0989a 2 * SPDX-License-Identifier: LGPL-2.1-only
5e1b7b8b 3 *
c0c0989a 4 * Copyright (C) 2014 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
5e1b7b8b
MD
5 */
6
3fbec7dc 7#define _LGPL_SOURCE
5e1b7b8b
MD
8#include <error.h>
9#include <dlfcn.h>
10#include <stdlib.h>
11#include <usterr-signal-safe.h>
12#include <lttng/ust-getcpu.h>
13#include <urcu/system.h>
14#include <urcu/arch.h>
15
730bf2af 16#include "getenv.h"
5e1b7b8b
MD
17#include "../libringbuffer/getcpu.h"
18
19int (*lttng_get_cpu)(void);
20
4bc1ccd7
MD
21static
22void *getcpu_handle;
23
5e1b7b8b
MD
24int lttng_ust_getcpu_override(int (*getcpu)(void))
25{
26 CMM_STORE_SHARED(lttng_get_cpu, getcpu);
27 return 0;
28}
29
30void lttng_ust_getcpu_init(void)
31{
32 const char *libname;
5e1b7b8b
MD
33 void (*libinit)(void);
34
4bc1ccd7
MD
35 if (getcpu_handle)
36 return;
6f626d28 37 libname = lttng_getenv("LTTNG_UST_GETCPU_PLUGIN");
5e1b7b8b
MD
38 if (!libname)
39 return;
4bc1ccd7
MD
40 getcpu_handle = dlopen(libname, RTLD_NOW);
41 if (!getcpu_handle) {
5e1b7b8b
MD
42 PERROR("Cannot load LTTng UST getcpu override library %s",
43 libname);
44 return;
45 }
46 dlerror();
4bc1ccd7 47 libinit = (void (*)(void)) dlsym(getcpu_handle,
5e1b7b8b
MD
48 "lttng_ust_getcpu_plugin_init");
49 if (!libinit) {
50 PERROR("Cannot find LTTng UST getcpu override library %s initialization function lttng_ust_getcpu_plugin_init()",
51 libname);
52 return;
53 }
54 libinit();
55}
This page took 0.0279 seconds and 4 git commands to generate.