os_mutex_init

所属模块:同步机制 | 类型:互斥锁初始化函数

API Metadata

函数ID:os_mutex_init
模块:mutex
类型:mutex init
嵌套深度:1

函数简介

os_mutex_init 用于初始化互斥锁资源, 清空所有权并重置等待队列,使互斥锁恢复到可用状态。

该函数用于构建互斥锁的基础状态,是任务同步机制的重要初始化入口。

函数原型

char os_mutex_init(char mid);

参数说明

参数 说明
mid 互斥锁资源ID(0 ~ OS_RESOURCE_MAX-1)

返回值

1 - 初始化成功
-1 - 参数非法

源码实现

/*------------------------------------------------------------------------ | FILE DESCRIPTION | ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | - File name : mutex_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] mid 互斥锁资源槽位编号。 * * @return 操作结果。 * @retval 1 互斥锁初始化成功。 * @retval -1 互斥锁资源槽位编号无效。 * * @note 初始化后互斥锁处于可用状态,当前无任务持有该资源, * 同时清空等待任务及等待计数。 */ char os_mutex_init(char mid) { OS_RESOURCE *m; if (mid < 0 || mid >= OS_RESOURCE_MAX) { return -1; } m = &OS_RES[mid]; m->value = 1; /* mutex 初始为可用(1=空闲) */ m->owner = OS_INVALID_ID; /* 当前无拥有者 */ m->wait_mask = 0; /* 清空等待队列 */ m->wait_cnt = 0; /* 等待计数清零 */ return 1; /* 成功 */ } /*------------------------------------------------------------------------ | END OF FILE: mutex_init.c | ------------------------------------------------------------------------*/

使用示例

void system_init() { os_mutex_init(0); }

注意事项

互斥锁初始状态为可用(value = 1), 用于保证临界资源的独占访问。

相关推荐