projects
/
lttng-ust.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
configure.ac: case -> AS_CASE()
[lttng-ust.git]
/
libringbuffer
/
getcpu.h
diff --git
a/libringbuffer/getcpu.h
b/libringbuffer/getcpu.h
index dbc186c19afab85f2ddb764708a8d07bfb8cae1e..fbddb7989336b71235ba238eff9ae860c41a3d6e 100644
(file)
--- a/
libringbuffer/getcpu.h
+++ b/
libringbuffer/getcpu.h
@@
-20,6
+20,12
@@
*/
#include <urcu/compiler.h>
*/
#include <urcu/compiler.h>
+#include <urcu/system.h>
+#include <urcu/arch.h>
+
+void lttng_ust_getcpu_init(void);
+
+extern int (*lttng_get_cpu)(void);
#ifdef LTTNG_UST_DEBUG_VALGRIND
#ifdef LTTNG_UST_DEBUG_VALGRIND
@@
-29,7
+35,7
@@
* migration, so it is only statistically accurate.
*/
static inline
* migration, so it is only statistically accurate.
*/
static inline
-int lttng_ust_get_cpu(void)
+int lttng_ust_get_cpu
_internal
(void)
{
return 0;
}
{
return 0;
}
@@
-51,7
+57,7
@@
int lttng_ust_get_cpu(void)
* If getcpu is not implemented in the kernel, use cpu 0 as fallback.
*/
static inline
* If getcpu is not implemented in the kernel, use cpu 0 as fallback.
*/
static inline
-int lttng_ust_get_cpu(void)
+int lttng_ust_get_cpu
_internal
(void)
{
int cpu, ret;
{
int cpu, ret;
@@
-67,7
+73,7
@@
int lttng_ust_get_cpu(void)
* If getcpu is not implemented in the kernel, use cpu 0 as fallback.
*/
static inline
* If getcpu is not implemented in the kernel, use cpu 0 as fallback.
*/
static inline
-int lttng_ust_get_cpu(void)
+int lttng_ust_get_cpu
_internal
(void)
{
int cpu;
{
int cpu;
@@
-78,14
+84,14
@@
int lttng_ust_get_cpu(void)
}
#endif /* __UCLIBC__ */
}
#endif /* __UCLIBC__ */
-#elif
defined(__FreeBSD__
)
+#elif
(defined(__FreeBSD__) || defined(__CYGWIN__)
)
/*
/*
- * FreeBSD
does not allow query of CPU ID. Always use CPU number 0, with
- * the assocated performance degradation on SMP.
+ * FreeBSD
and Cygwin do not allow query of CPU ID. Always use CPU
+ *
number 0, with
the assocated performance degradation on SMP.
*/
static inline
*/
static inline
-int lttng_ust_get_cpu(void)
+int lttng_ust_get_cpu
_internal
(void)
{
return 0;
}
{
return 0;
}
@@
-96,4
+102,16
@@
int lttng_ust_get_cpu(void)
#endif
#endif
+static inline
+int lttng_ust_get_cpu(void)
+{
+ int (*getcpu)(void) = CMM_LOAD_SHARED(lttng_get_cpu);
+
+ if (caa_likely(!getcpu)) {
+ return lttng_ust_get_cpu_internal();
+ } else {
+ return getcpu();
+ }
+}
+
#endif /* _LTTNG_GETCPU_H */
#endif /* _LTTNG_GETCPU_H */
This page took
0.024459 seconds
and
4
git commands to generate.