Lines Matching full:nh
134 * @nh: Pointer to head of the atomic notifier chain
141 int atomic_notifier_chain_register(struct atomic_notifier_head *nh, in atomic_notifier_chain_register() argument
147 spin_lock_irqsave(&nh->lock, flags); in atomic_notifier_chain_register()
148 ret = notifier_chain_register(&nh->head, n, false); in atomic_notifier_chain_register()
149 spin_unlock_irqrestore(&nh->lock, flags); in atomic_notifier_chain_register()
156 * @nh: Pointer to head of the atomic notifier chain
164 int atomic_notifier_chain_register_unique_prio(struct atomic_notifier_head *nh, in atomic_notifier_chain_register_unique_prio() argument
170 spin_lock_irqsave(&nh->lock, flags); in atomic_notifier_chain_register_unique_prio()
171 ret = notifier_chain_register(&nh->head, n, true); in atomic_notifier_chain_register_unique_prio()
172 spin_unlock_irqrestore(&nh->lock, flags); in atomic_notifier_chain_register_unique_prio()
179 * @nh: Pointer to head of the atomic notifier chain
186 int atomic_notifier_chain_unregister(struct atomic_notifier_head *nh, in atomic_notifier_chain_unregister() argument
192 spin_lock_irqsave(&nh->lock, flags); in atomic_notifier_chain_unregister()
193 ret = notifier_chain_unregister(&nh->head, n); in atomic_notifier_chain_unregister()
194 spin_unlock_irqrestore(&nh->lock, flags); in atomic_notifier_chain_unregister()
202 * @nh: Pointer to head of the atomic notifier chain
217 int atomic_notifier_call_chain(struct atomic_notifier_head *nh, in atomic_notifier_call_chain() argument
223 ret = notifier_call_chain(&nh->head, val, v, -1, NULL); in atomic_notifier_call_chain()
233 * @nh: Pointer to head of the atomic notifier chain
239 bool atomic_notifier_call_chain_is_empty(struct atomic_notifier_head *nh) in atomic_notifier_call_chain_is_empty() argument
241 return !rcu_access_pointer(nh->head); in atomic_notifier_call_chain_is_empty()
249 static int __blocking_notifier_chain_register(struct blocking_notifier_head *nh, in __blocking_notifier_chain_register() argument
261 return notifier_chain_register(&nh->head, n, unique_priority); in __blocking_notifier_chain_register()
263 down_write(&nh->rwsem); in __blocking_notifier_chain_register()
264 ret = notifier_chain_register(&nh->head, n, unique_priority); in __blocking_notifier_chain_register()
265 up_write(&nh->rwsem); in __blocking_notifier_chain_register()
271 * @nh: Pointer to head of the blocking notifier chain
279 int blocking_notifier_chain_register(struct blocking_notifier_head *nh, in blocking_notifier_chain_register() argument
282 return __blocking_notifier_chain_register(nh, n, false); in blocking_notifier_chain_register()
288 * @nh: Pointer to head of the blocking notifier chain
296 int blocking_notifier_chain_register_unique_prio(struct blocking_notifier_head *nh, in blocking_notifier_chain_register_unique_prio() argument
299 return __blocking_notifier_chain_register(nh, n, true); in blocking_notifier_chain_register_unique_prio()
305 * @nh: Pointer to head of the blocking notifier chain
313 int blocking_notifier_chain_unregister(struct blocking_notifier_head *nh, in blocking_notifier_chain_unregister() argument
324 return notifier_chain_unregister(&nh->head, n); in blocking_notifier_chain_unregister()
326 down_write(&nh->rwsem); in blocking_notifier_chain_unregister()
327 ret = notifier_chain_unregister(&nh->head, n); in blocking_notifier_chain_unregister()
328 up_write(&nh->rwsem); in blocking_notifier_chain_unregister()
333 int blocking_notifier_call_chain_robust(struct blocking_notifier_head *nh, in blocking_notifier_call_chain_robust() argument
343 if (rcu_access_pointer(nh->head)) { in blocking_notifier_call_chain_robust()
344 down_read(&nh->rwsem); in blocking_notifier_call_chain_robust()
345 ret = notifier_call_chain_robust(&nh->head, val_up, val_down, v); in blocking_notifier_call_chain_robust()
346 up_read(&nh->rwsem); in blocking_notifier_call_chain_robust()
354 * @nh: Pointer to head of the blocking notifier chain
368 int blocking_notifier_call_chain(struct blocking_notifier_head *nh, in blocking_notifier_call_chain() argument
378 if (rcu_access_pointer(nh->head)) { in blocking_notifier_call_chain()
379 down_read(&nh->rwsem); in blocking_notifier_call_chain()
380 ret = notifier_call_chain(&nh->head, val, v, -1, NULL); in blocking_notifier_call_chain()
381 up_read(&nh->rwsem); in blocking_notifier_call_chain()
394 * @nh: Pointer to head of the raw notifier chain
402 int raw_notifier_chain_register(struct raw_notifier_head *nh, in raw_notifier_chain_register() argument
405 return notifier_chain_register(&nh->head, n, false); in raw_notifier_chain_register()
411 * @nh: Pointer to head of the raw notifier chain
419 int raw_notifier_chain_unregister(struct raw_notifier_head *nh, in raw_notifier_chain_unregister() argument
422 return notifier_chain_unregister(&nh->head, n); in raw_notifier_chain_unregister()
426 int raw_notifier_call_chain_robust(struct raw_notifier_head *nh, in raw_notifier_call_chain_robust() argument
429 return notifier_call_chain_robust(&nh->head, val_up, val_down, v); in raw_notifier_call_chain_robust()
435 * @nh: Pointer to head of the raw notifier chain
450 int raw_notifier_call_chain(struct raw_notifier_head *nh, in raw_notifier_call_chain() argument
453 return notifier_call_chain(&nh->head, val, v, -1, NULL); in raw_notifier_call_chain()
464 * @nh: Pointer to head of the SRCU notifier chain
472 int srcu_notifier_chain_register(struct srcu_notifier_head *nh, in srcu_notifier_chain_register() argument
483 return notifier_chain_register(&nh->head, n, false); in srcu_notifier_chain_register()
485 mutex_lock(&nh->mutex); in srcu_notifier_chain_register()
486 ret = notifier_chain_register(&nh->head, n, false); in srcu_notifier_chain_register()
487 mutex_unlock(&nh->mutex); in srcu_notifier_chain_register()
494 * @nh: Pointer to head of the SRCU notifier chain
502 int srcu_notifier_chain_unregister(struct srcu_notifier_head *nh, in srcu_notifier_chain_unregister() argument
513 return notifier_chain_unregister(&nh->head, n); in srcu_notifier_chain_unregister()
515 mutex_lock(&nh->mutex); in srcu_notifier_chain_unregister()
516 ret = notifier_chain_unregister(&nh->head, n); in srcu_notifier_chain_unregister()
517 mutex_unlock(&nh->mutex); in srcu_notifier_chain_unregister()
518 synchronize_srcu(&nh->srcu); in srcu_notifier_chain_unregister()
525 * @nh: Pointer to head of the SRCU notifier chain
539 int srcu_notifier_call_chain(struct srcu_notifier_head *nh, in srcu_notifier_call_chain() argument
545 idx = srcu_read_lock(&nh->srcu); in srcu_notifier_call_chain()
546 ret = notifier_call_chain(&nh->head, val, v, -1, NULL); in srcu_notifier_call_chain()
547 srcu_read_unlock(&nh->srcu, idx); in srcu_notifier_call_chain()
554 * @nh: Pointer to head of the srcu notifier chain
564 void srcu_init_notifier_head(struct srcu_notifier_head *nh) in srcu_init_notifier_head() argument
566 mutex_init(&nh->mutex); in srcu_init_notifier_head()
567 if (init_srcu_struct(&nh->srcu) < 0) in srcu_init_notifier_head()
569 nh->head = NULL; in srcu_init_notifier_head()