36,24 → 36,28 |
#include <arch.h> |
#include <preemption.h> |
bool gquiet; |
bool called; |
|
static void callback(void* data) |
{ |
if (!gquiet) |
printf("callback called\n"); |
called = true; |
} |
char * test_rcu1(bool quiet) |
{ |
gquiet = quiet; |
called = false; |
int* p; |
rcu_read_lock(); |
rcu_read_unlock(); |
rcu_assign_pointer(p,malloc(sizeof(int),0)); |
if (!quiet) |
printf("p:%x\n",rcu_dereference_pointer(p)); |
rcu_read_unlock(); |
rcu_sync_callback(&callback, NULL); |
if (!quiet) |
printf("Callback scheduled\n"); |
while(!called); |
rcu_synchronize(); |
if (!quiet) |
printf("Synchronized\n"); |