| .. _task_wdt_api: | 
 |  | 
 | Task Watchdog | 
 | ############# | 
 |  | 
 | Overview | 
 | ******** | 
 |  | 
 | Many microcontrollers feature a hardware watchdog timer peripheral. Its purpose | 
 | is to trigger an action (usually a system reset) in case of severe software | 
 | malfunctions. Once initialized, the watchdog timer has to be restarted ("fed") | 
 | in regular intervals to prevent it from timing out. If the software got stuck | 
 | and does not manage to feed the watchdog anymore, the corrective action is | 
 | triggered to bring the system back to normal operation. | 
 |  | 
 | In real-time operating systems with multiple tasks running in parallel, a | 
 | single watchdog instance may not be sufficient anymore, as it can be used for | 
 | only one task. This software watchdog based on kernel timers provides a method | 
 | to supervise multiple threads or tasks (called watchdog channels). | 
 |  | 
 | An existing hardware watchdog can be used as an optional fallback if the task | 
 | watchdog itself or the scheduler has a malfunction. | 
 |  | 
 | The task watchdog uses a kernel timer as its backend. If configured properly, | 
 | the timer ISR is never actually called during normal operation, as the timer is | 
 | continuously updated in the feed calls. | 
 |  | 
 | It's currently not possible to have multiple instances of task watchdogs. | 
 | Instead, the task watchdog API can be accessed globally to add or delete new | 
 | channels without passing around a context or device pointer in the firmware. | 
 |  | 
 | The maximum number of channels is predefined via Kconfig and should be adjusted | 
 | to match exactly the number of channels required by the application. | 
 |  | 
 | Configuration Options | 
 | ********************* | 
 |  | 
 | Related configuration options can be found under | 
 | :zephyr_file:`subsys/task_wdt/Kconfig`. | 
 |  | 
 | * :kconfig:option:`CONFIG_TASK_WDT` | 
 |  | 
 | * :kconfig:option:`CONFIG_TASK_WDT_CHANNELS` | 
 |  | 
 | * :kconfig:option:`CONFIG_TASK_WDT_HW_FALLBACK` | 
 |  | 
 | * :kconfig:option:`CONFIG_TASK_WDT_MIN_TIMEOUT` | 
 |  | 
 | * :kconfig:option:`CONFIG_TASK_WDT_HW_FALLBACK_DELAY` | 
 |  | 
 | API Reference | 
 | ************* | 
 |  | 
 | .. doxygengroup:: task_wdt_api |