ust: add userspace rcu support
authorPierre-Marc Fournier <pierre-marc.fournier@polymtl.ca>
Wed, 18 Feb 2009 23:10:32 +0000 (18:10 -0500)
committerPierre-Marc Fournier <pierre-marc.fournier@polymtl.ca>
Wed, 18 Feb 2009 23:10:32 +0000 (18:10 -0500)
hello/Makefile
libmarkers/Makefile
libmarkers/marker.c
libtracectl/Makefile
libtracing/Makefile
share/kernelcompat.h

index 4168e6e60561dfeec8a8031ec826afe99b52d46d..62f4c65379fb6b68ce134c1d6c71fede3839aff5 100644 (file)
@@ -2,10 +2,8 @@ all: hello
 
 hello: hello.c
 #dynamic version
-       gcc -g -I../libmarkers -I../share -I../libtracing -L../libmarkers -lmarkers -L../libtracectl -ltracectl -L../libtracing -ltracing -o hello hello.c marker-control.c serialize.c
+       gcc -g -I../libmarkers -I../share -I../libtracing -L../libmarkers -lmarkers -L../libtracectl -ltracectl -L../libtracing -ltracing -I../../../../urcu -Wl,-rpath ../../../../urcu -o hello hello.c marker-control.c serialize.c
        # -Wl,--print-map
-#static version
-#      gcc -g -I../libmarkers -I../share -I../libtracing -L../libmarkers -o hello hello.c marker-control.c serialize.c ../libtracing/*.c ../libmarkers/*.c ../libtracectl/*.c ../share/*.c
 
 clean:
        rm -rf hello *.o
index d3729f8ff64da6de414dad9f96c72800df1159f6..bf5539aa1ba91dab351428dc66e9c5cd9fa572b9 100644 (file)
@@ -1,6 +1,6 @@
 all: libmarkers.so
 
 libmarkers.so: marker.c *.c *.h
-       gcc -g -fPIC -I../share -I../libtracing -I. -shared -o libmarkers.so marker.c ../share/kref.c ../libtracing/channels.c
+       gcc -g -fPIC -I../share -I../libtracing -I. -shared -o libmarkers.so -L../../../../urcu -I../../../../urcu $(CFLAGS) -lurcu marker.c ../share/kref.c ../libtracing/channels.c
 
 .PHONY: libmarkers.so all
index 198650b32d41846e0b8180c865ab5177e54119d7..e1b62c7f64d908269a399ecf9dfd11ba00894252 100644 (file)
@@ -817,6 +817,7 @@ int marker_probe_register(const char *channel, const char *name,
        /* write rcu_pending before calling the RCU callback */
        smp_wmb();
        call_rcu_sched(&entry->rcu, free_old_closure);
+       /*synchronize_rcu(); free_old_closure();*/
        goto end;
 
 error_unregister_channel:
index 6aa41e46c6d9f1768ad8af039811f7fe31c67cbc..27803da2b44862a4b5f11b0778e721a446d18272 100644 (file)
@@ -1,7 +1,7 @@
 all: libtracectl.so
 
 libtracectl.so: tracectl.c
-       gcc -g -shared -fPIC -I../libmarkers -I../share -o libtracectl.so tracectl.c
+       gcc -g -shared -fPIC -I../libmarkers -I../share $(CFLAGS) -o libtracectl.so tracectl.c
 
 clean:
        rm -rf *.so *.o
index b2904e85e2dc0e5de450ecc2cdf5d40e022a90ea..d8abbbbeeaa60643c8812d35d47771fde14701bb 100644 (file)
@@ -1,6 +1,6 @@
 all: libtracing.so
 
 libtracing.so: *.c *.h
-       gcc -g -fPIC -I../share -I../libtracing -I../libmarkers -shared -o libtracing.so *.c
+       gcc -g -fPIC -I../share -I../libtracing -I../libmarkers $(CFLAGS) -shared -o libtracing.so *.c
 
 .PHONY: libtracing.so all
index 9139e75275ddf4c8c3e86d7d30c0916b32233b6d..f95d0d77e886d17090b41c8be0c556935e2df399 100644 (file)
@@ -98,21 +98,21 @@ typedef int spinlock_t;
 
 /* MEMORY BARRIERS */
 
-#define smp_rmb() do {} while(0)
-#define smp_wmb() do {} while(0)
-#define smp_mb() do {} while(0)
+//#define smp_rmb() do {} while(0)
+//#define smp_wmb() do {} while(0)
+//#define smp_mb() do {} while(0)
 #define smp_mb__after_atomic_inc() do {} while(0)
 
 #define read_barrier_depends() do {} while(0)
-#define smp_read_barrier_depends() do {} while(0)
+//#define smp_read_barrier_depends() do {} while(0)
 
 /* RCU */
 
-#define rcu_assign_pointer(a, b) do {} while(0)
-#define call_rcu_sched(a,b) do {} while(0)
-#define rcu_barrier_sched() do {} while(0)
-#define rcu_read_lock_sched_notrace() do{} while (0)
-#define rcu_read_unlock_sched_notrace() do{} while (0)
+#include "urcu.h"
+#define call_rcu_sched(a,b) b(a); synchronize_rcu()
+#define rcu_barrier_sched() do {} while(0) /* this nop is ok if call_rcu_sched does a synchronize_rcu() */
+#define rcu_read_lock_sched_notrace() rcu_read_lock()
+#define rcu_read_unlock_sched_notrace() rcu_read_unlock()
 
 /* ATOMICITY */
 
@@ -147,7 +147,7 @@ static int atomic_read(atomic_t *p)
 
 #include "asm.h"
 
-#define __xg(x) ((volatile long *)(x))
+//#define __xg(x) ((volatile long *)(x))
 
 #define cmpxchg(ptr, o, n)                                             \
        ((__typeof__(*(ptr)))__cmpxchg((ptr), (unsigned long)(o),       \
This page took 0.030616 seconds and 4 git commands to generate.