Rev 2330 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2330 | Rev 2400 | ||
---|---|---|---|
Line 59... | Line 59... | ||
59 | 59 | ||
60 | /** Assigning a value to an RCU protected pointer */ |
60 | /** Assigning a value to an RCU protected pointer */ |
61 | #define rcu_assign_pointer(p, newp) {write_barrier(); (p)=(newp);} |
61 | #define rcu_assign_pointer(p, newp) {write_barrier(); (p)=(newp);} |
62 | 62 | ||
63 | /** RCU sync callback for those who don't need custom allocation */ |
63 | /** RCU sync callback for those who don't need custom allocation */ |
64 | #define rcu_sync_callback(func, data) {\ |
64 | #define rcu_sync_callback_normal_alloc(func, data) {\ |
65 | rcu_callback_list_t* rd = malloc(sizeof(rcu_callback_list_t),0);\ |
65 | rcu_callback_list_t* rd = malloc(sizeof(rcu_callback_list_t),0);\ |
66 | rcu_sync_callback_custom_alloc(func, data, rd);} |
66 | rcu_sync_callback(func, data, rd);} |
- | 67 | ||
- | 68 | /** RCU sync callback without custom allocation, default callback (just frees the argument) */ |
|
- | 69 | #define rcu_sync_callback_normal_alloc_free(data) rcu_sync_callback_normal_alloc(&rcu_callback_free, data) |
|
67 | 70 | ||
68 | void rcu_init(void); |
71 | void rcu_init(void); |
69 | void rcu_synchronize(void); |
72 | void rcu_synchronize(void); |
70 | void rcu_synchronize_callback_function(void* waitq); |
73 | void rcu_synchronize_callback_function(void* waitq); |
71 | void rcu_sync_callback_custom_alloc(void (*func)(void* data), void* data, rcu_callback_list_t* rcu_struct); |
74 | void rcu_sync_callback(void (*func)(void* data), void* data, rcu_callback_list_t* rcu_struct); |
72 | void rcu_tasklet(void* data); |
75 | void rcu_tasklet(void* data); |
73 | void rcu_passQS(void); |
76 | void rcu_passQS(void); |
74 | void rcu_run_callbacks(void); |
77 | void rcu_run_callbacks(void); |
- | 78 | void rcu_callback_free(void* pointer); |
|
- | 79 | ||
- | 80 | ||
- | 81 | ||
75 | 82 | ||
76 | #endif |
83 | #endif |