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 99... | Line 99... | ||
99 | void rcu_synchronize(void) |
99 | void rcu_synchronize(void) |
100 | { |
100 | { |
101 | #ifdef CONFIG_SMP |
101 | #ifdef CONFIG_SMP |
102 | waitq_t wq; |
102 | waitq_t wq; |
103 | waitq_initialize(&wq); |
103 | waitq_initialize(&wq); |
104 | rcu_sync_callback(&rcu_synchronize_callback_function, &wq); |
104 | rcu_sync_callback_normal_alloc(&rcu_synchronize_callback_function, &wq); |
105 | //sleep until the end of the grace period |
105 | //sleep until the end of the grace period |
106 | waitq_sleep(&wq); |
106 | waitq_sleep(&wq); |
107 | #endif |
107 | #endif |
108 | } |
108 | } |
109 | 109 | ||
Line 121... | Line 121... | ||
121 | /** |
121 | /** |
122 | * appends this callback func to the queue of waiting callbacks, the rest |
122 | * appends this callback func to the queue of waiting callbacks, the rest |
123 | * is handled in rcu_run_callbacks and in the tasklet. This is a lock free variant, |
123 | * is handled in rcu_run_callbacks and in the tasklet. This is a lock free variant, |
124 | * which must be supplied with a preallocated rcu_callback_list_t structure |
124 | * which must be supplied with a preallocated rcu_callback_list_t structure |
125 | */ |
125 | */ |
126 | void rcu_sync_callback_custom_alloc(void (*func)(void* data), void* data, rcu_callback_list_t* rd) |
126 | void rcu_sync_callback(void (*func)(void* data), void* data, rcu_callback_list_t* rd) |
127 | { |
127 | { |
128 | #ifndef CONFIG_SMP |
128 | #ifndef CONFIG_SMP |
129 | func(data); |
129 | func(data); |
130 | #else |
130 | #else |
131 | 131 | ||
Line 238... | Line 238... | ||
238 | else |
238 | else |
239 | interrupts_restore(ipl); |
239 | interrupts_restore(ipl); |
240 | } |
240 | } |
241 | 241 | ||
242 | 242 | ||
- | 243 | /** |
|
- | 244 | * Generic callback for RCU, frees @paramref pointer |
|
- | 245 | * @param pointer |
|
- | 246 | */ |
|
- | 247 | void rcu_callback_free(void* pointer) |
|
- | 248 | { |
|
- | 249 | free(pointer); |
|
- | 250 | } |
|
- | 251 |