os_exit_critical
所属模块:内核机制 | 类型:临界区控制函数
函数简介
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 成对使用,否则可能导致中断状态异常恢复或系统死锁。