The origin of the patch is
http://git.pokylinux.org/cgit/cgit.cgi/poky/commit/?id=196f689f63f363b245634131c94fd10e6e84b604
"
uClibc does not have sched_getcpu() implemented. So we create a wrapper
to getcpu syscall when compiling for uclibc.

So far execinfo.h does not exist on uclibc but it turns out to be that
this header is not needed even in eglibc case so it can be removed

Signed-off-by: Khem Raj <[email protected]>
"

I applied it to ust 0.14 and tested it.

Signed-off-by: Dexuan Cui <[email protected]>
---
 libust/tracer.h      |   10 ++++++++++
 libustcomm/ustcomm.c |    1 -
 2 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/libust/tracer.h b/libust/tracer.h
index 03049aa..4013471 100644
--- a/libust/tracer.h
+++ b/libust/tracer.h
@@ -344,13 +344,23 @@ static __inline__ void ltt_write_trace_header(struct 
ust_trace *trace,
        header->freq_scale = trace->freq_scale;
 }
 
+#ifdef __UCLIBC__
+#define sched_getcpu(cpu, node, cache) syscall(__NR_getcpu, cpu, node, cache)
+#endif
+
 #ifndef UST_VALGRIND
 
 static __inline__ int ust_get_cpu(void)
 {
        int cpu;
 
+#ifdef __UCLIBC__
+       int c, s;
+       s = syscall(__NR_getcpu, &c, NULL, NULL);
+       cpu = (s == -1) ? s : c;
+#else
        cpu = sched_getcpu();
+#endif
        if (likely(cpu >= 0))
                return cpu;
        /*
diff --git a/libustcomm/ustcomm.c b/libustcomm/ustcomm.c
index 3c7c0bb..07f7f87 100644
--- a/libustcomm/ustcomm.c
+++ b/libustcomm/ustcomm.c
@@ -33,7 +33,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <execinfo.h>
 
 #include "ustcomm.h"
 #include "usterr.h"
-- 
1.7.2


_______________________________________________
ltt-dev mailing list
[email protected]
http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev

Reply via email to