Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2399 → Rev 2400

/branches/rcu/kernel/generic/include/synch/rcu.h
61,16 → 61,23
#define rcu_assign_pointer(p, newp) {write_barrier(); (p)=(newp);}
 
/** RCU sync callback for those who don't need custom allocation */
#define rcu_sync_callback(func, data) {\
#define rcu_sync_callback_normal_alloc(func, data) {\
rcu_callback_list_t* rd = malloc(sizeof(rcu_callback_list_t),0);\
rcu_sync_callback_custom_alloc(func, data, rd);}
rcu_sync_callback(func, data, rd);}
 
/** RCU sync callback without custom allocation, default callback (just frees the argument) */
#define rcu_sync_callback_normal_alloc_free(data) rcu_sync_callback_normal_alloc(&rcu_callback_free, data)
 
void rcu_init(void);
void rcu_synchronize(void);
void rcu_synchronize_callback_function(void* waitq);
void rcu_sync_callback_custom_alloc(void (*func)(void* data), void* data, rcu_callback_list_t* rcu_struct);
void rcu_sync_callback(void (*func)(void* data), void* data, rcu_callback_list_t* rcu_struct);
void rcu_tasklet(void* data);
void rcu_passQS(void);
void rcu_run_callbacks(void);
void rcu_callback_free(void* pointer);
 
 
 
 
#endif