diff options
Diffstat (limited to 'kernel/rcu/tree.c')
| -rw-r--r-- | kernel/rcu/tree.c | 42 | 
1 files changed, 38 insertions, 4 deletions
| diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index 121c1436a7f3..5ebc830297c1 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c | |||
| @@ -3223,8 +3223,24 @@ __call_rcu(struct rcu_head *head, rcu_callback_t func, | |||
| 3223 | local_irq_restore(flags); | 3223 | local_irq_restore(flags); | 
| 3224 | } | 3224 | } | 
| 3225 | 3225 | ||
| 3226 | /* | 3226 | /** | 
| 3227 | * Queue an RCU-sched callback for invocation after a grace period. | 3227 | * call_rcu_sched() - Queue an RCU for invocation after sched grace period. | 
| 3228 | * @head: structure to be used for queueing the RCU updates. | ||
| 3229 | * @func: actual callback function to be invoked after the grace period | ||
| 3230 | * | ||
| 3231 | * The callback function will be invoked some time after a full grace | ||
| 3232 | * period elapses, in other words after all currently executing RCU | ||
| 3233 | * read-side critical sections have completed. call_rcu_sched() assumes | ||
| 3234 | * that the read-side critical sections end on enabling of preemption | ||
| 3235 | * or on voluntary preemption. | ||
| 3236 | * RCU read-side critical sections are delimited by : | ||
| 3237 | * - rcu_read_lock_sched() and rcu_read_unlock_sched(), OR | ||
| 3238 | * - anything that disables preemption. | ||
| 3239 | * | ||
| 3240 | * These may be nested. | ||
| 3241 | * | ||
| 3242 | * See the description of call_rcu() for more detailed information on | ||
| 3243 | * memory ordering guarantees. | ||
| 3228 | */ | 3244 | */ | 
| 3229 | void call_rcu_sched(struct rcu_head *head, rcu_callback_t func) | 3245 | void call_rcu_sched(struct rcu_head *head, rcu_callback_t func) | 
| 3230 | { | 3246 | { | 
| @@ -3232,8 +3248,26 @@ void call_rcu_sched(struct rcu_head *head, rcu_callback_t func) | |||
| 3232 | } | 3248 | } | 
| 3233 | EXPORT_SYMBOL_GPL(call_rcu_sched); | 3249 | EXPORT_SYMBOL_GPL(call_rcu_sched); | 
| 3234 | 3250 | ||
| 3235 | /* | 3251 | /** | 
| 3236 | * Queue an RCU callback for invocation after a quicker grace period. | 3252 | * call_rcu_bh() - Queue an RCU for invocation after a quicker grace period. | 
| 3253 | * @head: structure to be used for queueing the RCU updates. | ||
| 3254 | * @func: actual callback function to be invoked after the grace period | ||
| 3255 | * | ||
| 3256 | * The callback function will be invoked some time after a full grace | ||
| 3257 | * period elapses, in other words after all currently executing RCU | ||
| 3258 | * read-side critical sections have completed. call_rcu_bh() assumes | ||
| 3259 | * that the read-side critical sections end on completion of a softirq | ||
| 3260 | * handler. This means that read-side critical sections in process | ||
| 3261 | * context must not be interrupted by softirqs. This interface is to be | ||
| 3262 | * used when most of the read-side critical sections are in softirq context. | ||
| 3263 | * RCU read-side critical sections are delimited by : | ||
| 3264 | * - rcu_read_lock() and rcu_read_unlock(), if in interrupt context. | ||
| 3265 | * OR | ||
| 3266 | * - rcu_read_lock_bh() and rcu_read_unlock_bh(), if in process context. | ||
| 3267 | * These may be nested. | ||
| 3268 | * | ||
| 3269 | * See the description of call_rcu() for more detailed information on | ||
| 3270 | * memory ordering guarantees. | ||
| 3237 | */ | 3271 | */ | 
| 3238 | void call_rcu_bh(struct rcu_head *head, rcu_callback_t func) | 3272 | void call_rcu_bh(struct rcu_head *head, rcu_callback_t func) | 
| 3239 | { | 3273 | { | 
