os_res_init
所属模块:内核基础 | 类型:资源初始化函数
函数简介
os_res_init 用于初始化统一资源对象(OS_RESOURCE),
清空资源计数、所有权信息以及等待队列状态。
该函数是 HRTOS 统一资源模型的基础构造函数,
所有 semaphore、mutex、event、mailbox 等机制均依赖该结构。
函数原型
void os_res_init(OS_RESOURCE *r);
参数说明
| 参数 |
说明 |
| r |
资源对象指针(OS_RESOURCE *) |
源码实现
/*------------------------------------------------------------------------
| FILE DESCRIPTION |
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| - File name : res_init.c
| - Author : 谭舒
| - Update date : 2026-09-19
| - Copyright(C) : 2026 HRTOS. All rights reserved.
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| INCLUDES |
------------------------------------------------------------------------*/
#include "hrtos_internal.h"
/*------------------------------------------------------------------------
| API FUNCTIONS |
------------------------------------------------------------------------*/
/**
* @brief 初始化指定的系统资源。
*
* @param[in] r 系统资源控制块指针。
*
* @return None。
*
* @note 初始化资源计数、资源拥有者及等待状态,
* 使指定资源恢复到初始状态。
*/
void os_res_init(OS_RESOURCE *r) // 初始化
{
/* 资源初始值 */
r->value = 0;
/* 当前无拥有者 */
r->owner = OS_INVALID_ID;
/* 等待任务数量清零 */
r->wait_cnt = 0;
r->wait_mask = 0;
}
/*------------------------------------------------------------------------
| END OF FILE: res_init.c |
------------------------------------------------------------------------*/
使用示例
void init_system()
{
OS_RESOURCE res;
os_res_init(&res);
}
注意事项
该函数为所有 IPC 机制的底层基础,
必须在系统初始化阶段或单任务环境中调用。