2 * SPDX-License-Identifier: LGPL-2.1-only
4 * Copyright (C) 2014 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
10 #include <urcu/system.h>
11 #include <urcu/arch.h>
13 #include "common/getcpu.h"
14 #include "common/getenv.h"
15 #include "common/logging.h"
17 #include "lib/lttng-ust-common/getcpu.h"
19 /* Function pointer to the current getcpu callback. */
20 int (*lttng_ust_get_cpu_sym
)(void);
23 void *getcpu_plugin_handle
;
26 * Override the user provided getcpu implementation.
28 int lttng_ust_getcpu_override(int (*getcpu
)(void))
30 CMM_STORE_SHARED(lttng_ust_get_cpu_sym
, getcpu
);
35 * Initialize the getcpu plugin if it's present.
37 void lttng_ust_getcpu_plugin_init(void)
40 void (*getcpu_plugin_init
)(void);
42 /* If a plugin is already loaded, do nothing. */
43 if (getcpu_plugin_handle
)
47 * If the LTTNG_UST_GETCPU_PLUGIN environment variable is undefined, do
50 libname
= lttng_ust_getenv("LTTNG_UST_GETCPU_PLUGIN");
55 * Thy to dlopen the getcpu plugin shared object specified in
56 * LTTNG_UST_GETCPU_PLUGIN.
58 getcpu_plugin_handle
= dlopen(libname
, RTLD_NOW
);
59 if (!getcpu_plugin_handle
) {
60 PERROR("Cannot load LTTng UST getcpu override library %s",
66 /* Locate the getcpu plugin init function in the shared object. */
67 getcpu_plugin_init
= (void (*)(void)) dlsym(getcpu_plugin_handle
,
68 "lttng_ust_getcpu_plugin_init");
69 if (!getcpu_plugin_init
) {
70 PERROR("Cannot find LTTng UST getcpu override library %s initialization function lttng_ust_getcpu_plugin_init()",
75 /* Run the user provided getcpu plugin init function. */
This page took 0.037711 seconds and 4 git commands to generate.