os_exit_critical

所属模块:内核机制 | 类型:临界区控制函数

API Metadata

函数ID:os_exit_critical
模块:kernel
类型:critical section
嵌套深度:1

函数简介

os_exit_critical 用于退出临界区,并恢复进入临界区前的中断状态。

该函数与 os_enter_critical 配合使用,用于实现可嵌套的临界区保护机制。

函数原型

void os_exit_critical(void);

参数说明

参数 说明
无 该函数不需要输入参数

返回值

无返回值。

源码实现

/*------------------------------------------------------------------------ | FILE DESCRIPTION | ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | - File name : exit_critical.c | - Author : 谭舒 | - Update date : 2026-09-19 | - Copyright(C) : 2026 HRTOS. All rights reserved. ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | INCLUDES | ------------------------------------------------------------------------*/ #include"hrtos_internal.h" /*------------------------------------------------------------------------ | API FUNCTIONS | ------------------------------------------------------------------------*/ /** * @brief 退出临界区,并在嵌套计数归零时恢复中断状态。 * * @param[in] None * * @return None。 * * @note 支持临界区嵌套。 * 每次调用都会减少临界区嵌套计数。 * 当临界区嵌套计数归零时,恢复进入临界区前保存的中断状态。 * 应与 os_enter_critical() 配对使用。 */ void os_exit_critical()//恢复中断 { if(os_critical_nesting > 0) { os_critical_nesting--; if(os_critical_nesting == 0) { EA = os_int_status; } } } /*------------------------------------------------------------------------ | END OF FILE: exit_critical.c | ------------------------------------------------------------------------*/

使用示例

void task() { os_enter_critical(); // 修改共享资源 shared_data--; os_exit_critical(); }

注意事项

必须与 os_enter_critical 成对使用,否则可能导致中断状态异常恢复或系统死锁。

相关推荐