Fix: cache the result of getpid() internally
authorMichael Jeanson <mjeanson@efficios.com>
Fri, 2 Mar 2018 22:36:26 +0000 (17:36 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 5 Mar 2018 15:43:03 +0000 (10:43 -0500)
On Linux we called getpid() directly on each tracepoint and relied on
the glibc pid cache. However, in glibc 2.25, released on 2017-02-05, the
pid cache was removed which results in a getpid syscall on each event
when the vpid context is enabled.

Remove the Linux specific case and use our internal cache all the time.

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
liblttng-ust/lttng-context-vpid.c

index 5e5ed145d944adf08be61755eaa32faefe3e52b4..53fb314b8c0da1bdf353f00c59c953879b4ed150 100644 (file)
 #include <lttng/ust-tracer.h>
 #include <lttng/ringbuffer-config.h>
 
-#ifdef __linux__
-static inline
-pid_t wrapper_getpid(void)
-{
-       return getpid();
-}
-
-void lttng_context_vpid_reset(void)
-{
-}
-#else
 /*
  * We cache the result to ensure we don't trigger a system call for
  * each event.
@@ -60,7 +49,6 @@ void lttng_context_vpid_reset(void)
 {
        cached_vpid = 0;
 }
-#endif
 
 static
 size_t vpid_get_size(struct lttng_ctx_field *field, size_t offset)
This page took 0.025306 seconds and 4 git commands to generate.