atomic_notifier_call_chain
时间: 2023-12-07 22:05:58 浏览: 70
`atomic_notifier_call_chain` 是 Linux 内核中的一个函数,用于调用由多个回调函数组成的链表。这些回调函数通常用于通知系统中的其他部分发生了某些事件。`atomic_notifier_call_chain` 保证了在调用回调函数期间,不会有其他进程插入或删除回调函数,从而确保了回调函数的可靠性和一致性。
相关问题
atomic_notifier_call_chain参数
atomic_notifier_call_chain 是 Linux 内核中的一个函数,用于调用一系列的通知函数。它的参数包括:
1. head:通知链表的头指针,它是由注册通知函数时返回的链表头。
2. val:用于传递给通知函数的参数,通常是一个指向通知数据结构的指针。
3. v:通知函数返回的值,通常不使用。
4. mode:通知链的模式,表示通知函数的调用方式,可以是 ATOMIC_NOTIFIER_MODE_BLOCK 或 ATOMIC_NOTIFIER_MODE_CHAIN。
其中,ATOMIC_NOTIFIER_MODE_BLOCK 表示一旦有一个通知函数返回非零值,就不再调用后面的通知函数;ATOMIC_NOTIFIER_MODE_CHAIN 表示会依次调用所有的通知函数,并忽略它们的返回值。
atomic_notifier_call_chain(&power_supply_notifier, PSY_EVENT_PROP_CHANGED, psy);代码分析
这段代码是在Linux内核中的电源子系统中使用的,用于通知注册了电源属性变化通知器的所有观察者。其中,`&power_supply_notifier`是一个通知链表头,`PSY_EVENT_PROP_CHANGED`表示属性变化事件,`psy`是一个指向电源设备的指针。`atomic_notifier_call_chain`函数会遍历链表中的所有观察者并调用它们的回调函数来处理这个事件。这个函数是原子操作的,所以多个线程可以同时使用它来通知观察者,而不会导致竞态条件。
阅读全文