Linux内核基础 | 通知链机制( 三 )


答案:不是,每个被执行的notifier_block回调函数的返回值可能取值以下几个:

  1. NOTIFY_DONE:表示对相关的事件类型不关心 。
  2. NOTIFY_OK:顺利执行 。
  3. NOTIFY_BAD:执行有错 。
  4. NOTIFY_STOP:停止执行后面的回调函数 。
  5. NOTIFY_STOP_MASK:停止执行的掩码
如当返回值NOTIFY_STOP_MASK会停止执行后面优先级低的调用块的函数 。
例如把module_1中通知块的回调函数B_call的返回值修改为NOTIFY_STOP_MASK后,重新编译,运行结果如下,只执行了调用链中调用块2的回调函数 。
Linux内核基础 | 通知链机制

文章插图
 

【Linux内核基础 | 通知链机制】


推荐阅读