备注

AI Translation Notice

This document was automatically translated by Qwen/Qwen3-8B model, for reference only.

  • Source document: kernel/core_api/notifier_chain.md

  • Translation time: 2025-05-19 01:41:30

  • Translation model: Qwen/Qwen3-8B

Please report issues via Community Channel

Notifier Chain Notification Chain

1. Overview of Principles

  The notification chain is an event notification mechanism between subsystems within the kernel or between modules within a subsystem. Essentially, a notification chain is a list of event handling functions. Each notification chain is associated with a specific type of event (e.g., reboot event). When a specific event occurs, the corresponding callback functions in the event’s notification chain are called, allowing the subsystem/module to respond to the event and perform the appropriate processing.

  The notification chain is somewhat similar to the subscription mechanism. It can be understood as: there is a “notifier” that maintains a list, and the “subscriber” registers its callback function into this list (“subscriber” can also unregister its callback function). When an event occurs that needs to be notified, the “notifier” traverses all the callback functions in the list and calls them, allowing all registered “subscribers” to respond and handle the event accordingly.

2. Core Features

2.1 Registering Callback Functions

  The callback function is encapsulated into a specific structure and registered into the designated notification chain. The related method is register, which is used by the “subscriber”.

2.2 Unregistering Callback Functions

  The callback function is removed from the designated notification chain, i.e., it is deleted from the notification chain. The related method is unregister, which is used by the “subscriber”.

2.3 Event Notification

  When an event occurs, the notification chain related to that event performs the event notification through this method. call_chain This method traverses all elements in the notification chain and calls the registered callback functions in sequence. This method is used by the “notifier”.

3. Types of Notification Chains

  Each type of notification chain has corresponding register, unregister, and call_chain interfaces, with functions as described in the core features above.

  • AtomicNotifierChain: Atomic notification chain, cannot sleep, recommended for use in interrupt context.

  • BlockingNotifierChain: Blocking notification chain, can sleep, recommended for use in process context.

  • RawNotifierChain: Raw notification chain, the caller is responsible for thread safety.

4. Other Issues

  BlockingNotifierChain does not currently support the sleeping functionality.