Lines Matching refs:nh
149 int atomic_notifier_chain_register(struct atomic_notifier_head *nh, in atomic_notifier_chain_register() argument
155 spin_lock_irqsave(&nh->lock, flags); in atomic_notifier_chain_register()
156 ret = notifier_chain_register(&nh->head, n, false); in atomic_notifier_chain_register()
157 spin_unlock_irqrestore(&nh->lock, flags); in atomic_notifier_chain_register()
172 int atomic_notifier_chain_register_unique_prio(struct atomic_notifier_head *nh, in atomic_notifier_chain_register_unique_prio() argument
178 spin_lock_irqsave(&nh->lock, flags); in atomic_notifier_chain_register_unique_prio()
179 ret = notifier_chain_register(&nh->head, n, true); in atomic_notifier_chain_register_unique_prio()
180 spin_unlock_irqrestore(&nh->lock, flags); in atomic_notifier_chain_register_unique_prio()
194 int atomic_notifier_chain_unregister(struct atomic_notifier_head *nh, in atomic_notifier_chain_unregister() argument
200 spin_lock_irqsave(&nh->lock, flags); in atomic_notifier_chain_unregister()
201 ret = notifier_chain_unregister(&nh->head, n); in atomic_notifier_chain_unregister()
202 spin_unlock_irqrestore(&nh->lock, flags); in atomic_notifier_chain_unregister()
225 int atomic_notifier_call_chain(struct atomic_notifier_head *nh, in atomic_notifier_call_chain() argument
231 ret = notifier_call_chain(&nh->head, val, v, -1, NULL); in atomic_notifier_call_chain()
247 bool atomic_notifier_call_chain_is_empty(struct atomic_notifier_head *nh) in atomic_notifier_call_chain_is_empty() argument
249 return !rcu_access_pointer(nh->head); in atomic_notifier_call_chain_is_empty()
257 static int __blocking_notifier_chain_register(struct blocking_notifier_head *nh, in __blocking_notifier_chain_register() argument
269 return notifier_chain_register(&nh->head, n, unique_priority); in __blocking_notifier_chain_register()
271 down_write(&nh->rwsem); in __blocking_notifier_chain_register()
272 ret = notifier_chain_register(&nh->head, n, unique_priority); in __blocking_notifier_chain_register()
273 up_write(&nh->rwsem); in __blocking_notifier_chain_register()
287 int blocking_notifier_chain_register(struct blocking_notifier_head *nh, in blocking_notifier_chain_register() argument
290 return __blocking_notifier_chain_register(nh, n, false); in blocking_notifier_chain_register()
304 int blocking_notifier_chain_register_unique_prio(struct blocking_notifier_head *nh, in blocking_notifier_chain_register_unique_prio() argument
307 return __blocking_notifier_chain_register(nh, n, true); in blocking_notifier_chain_register_unique_prio()
321 int blocking_notifier_chain_unregister(struct blocking_notifier_head *nh, in blocking_notifier_chain_unregister() argument
332 return notifier_chain_unregister(&nh->head, n); in blocking_notifier_chain_unregister()
334 down_write(&nh->rwsem); in blocking_notifier_chain_unregister()
335 ret = notifier_chain_unregister(&nh->head, n); in blocking_notifier_chain_unregister()
336 up_write(&nh->rwsem); in blocking_notifier_chain_unregister()
341 int blocking_notifier_call_chain_robust(struct blocking_notifier_head *nh, in blocking_notifier_call_chain_robust() argument
351 if (rcu_access_pointer(nh->head)) { in blocking_notifier_call_chain_robust()
352 down_read(&nh->rwsem); in blocking_notifier_call_chain_robust()
353 ret = notifier_call_chain_robust(&nh->head, val_up, val_down, v); in blocking_notifier_call_chain_robust()
354 up_read(&nh->rwsem); in blocking_notifier_call_chain_robust()
376 int blocking_notifier_call_chain(struct blocking_notifier_head *nh, in blocking_notifier_call_chain() argument
386 if (rcu_access_pointer(nh->head)) { in blocking_notifier_call_chain()
387 down_read(&nh->rwsem); in blocking_notifier_call_chain()
388 ret = notifier_call_chain(&nh->head, val, v, -1, NULL); in blocking_notifier_call_chain()
389 up_read(&nh->rwsem); in blocking_notifier_call_chain()
410 int raw_notifier_chain_register(struct raw_notifier_head *nh, in raw_notifier_chain_register() argument
413 return notifier_chain_register(&nh->head, n, false); in raw_notifier_chain_register()
427 int raw_notifier_chain_unregister(struct raw_notifier_head *nh, in raw_notifier_chain_unregister() argument
430 return notifier_chain_unregister(&nh->head, n); in raw_notifier_chain_unregister()
434 int raw_notifier_call_chain_robust(struct raw_notifier_head *nh, in raw_notifier_call_chain_robust() argument
437 return notifier_call_chain_robust(&nh->head, val_up, val_down, v); in raw_notifier_call_chain_robust()
458 int raw_notifier_call_chain(struct raw_notifier_head *nh, in raw_notifier_call_chain() argument
461 return notifier_call_chain(&nh->head, val, v, -1, NULL); in raw_notifier_call_chain()
480 int srcu_notifier_chain_register(struct srcu_notifier_head *nh, in srcu_notifier_chain_register() argument
491 return notifier_chain_register(&nh->head, n, false); in srcu_notifier_chain_register()
493 mutex_lock(&nh->mutex); in srcu_notifier_chain_register()
494 ret = notifier_chain_register(&nh->head, n, false); in srcu_notifier_chain_register()
495 mutex_unlock(&nh->mutex); in srcu_notifier_chain_register()
510 int srcu_notifier_chain_unregister(struct srcu_notifier_head *nh, in srcu_notifier_chain_unregister() argument
521 return notifier_chain_unregister(&nh->head, n); in srcu_notifier_chain_unregister()
523 mutex_lock(&nh->mutex); in srcu_notifier_chain_unregister()
524 ret = notifier_chain_unregister(&nh->head, n); in srcu_notifier_chain_unregister()
525 mutex_unlock(&nh->mutex); in srcu_notifier_chain_unregister()
526 synchronize_srcu(&nh->srcu); in srcu_notifier_chain_unregister()
547 int srcu_notifier_call_chain(struct srcu_notifier_head *nh, in srcu_notifier_call_chain() argument
553 idx = srcu_read_lock(&nh->srcu); in srcu_notifier_call_chain()
554 ret = notifier_call_chain(&nh->head, val, v, -1, NULL); in srcu_notifier_call_chain()
555 srcu_read_unlock(&nh->srcu, idx); in srcu_notifier_call_chain()
572 void srcu_init_notifier_head(struct srcu_notifier_head *nh) in srcu_init_notifier_head() argument
574 mutex_init(&nh->mutex); in srcu_init_notifier_head()
575 if (init_srcu_struct(&nh->srcu) < 0) in srcu_init_notifier_head()
577 nh->head = NULL; in srcu_init_notifier_head()