os_msgq_clear

所属模块:通信机制 | 类型:消息队列清空函数

API Metadata

函数ID:os_msgq_clear
模块:msgq
类型:message queue clear
嵌套深度:1

函数简介

os_msgq_clear 用于清空消息队列的运行状态, 重置队列读写指针与计数器。

该函数不会清除底层缓冲区数据,仅重置逻辑状态, 用于快速恢复队列初始状态。

函数原型

void os_msgq_clear(os_msgq_t *q);

参数说明

参数 说明
q 消息队列控制块指针

返回值

无返回值(void函数),仅重置队列状态。

源码实现

/*------------------------------------------------------------------------ | FILE DESCRIPTION | ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | - File name : msgq_clear.c | - Author : 谭舒 | - Update date : 2026-09-19 | - Copyright(C) : 2026 HRTOS. All rights reserved. ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | INCLUDES | ------------------------------------------------------------------------*/ #include "hrtos_internal.h" /*------------------------------------------------------------------------ | API FUNCTIONS | ------------------------------------------------------------------------*/ /** * @brief 清空指定的消息队列。 * * @param[in] q 消息队列控制块指针。 * * @return None。 * * @note 重置消息队列的队头、队尾索引及消息数量, * 使消息队列恢复为空状态。 * 该操作仅重置队列运行状态,不清除缓冲区中的实际数据。 */ void os_msgq_clear(os_msgq_t *q) { EA = 0; q->head = 0; //重置写指针 q->tail = 0; //重置读指针 q->count = 0; //清空消息计数 EA = 1; } /*------------------------------------------------------------------------ | END OF FILE: msgq_clear.c | ------------------------------------------------------------------------*/

使用示例

void reset_task() { os_msgq_clear(&my_queue); }

注意事项

该函数仅清除逻辑状态,不会擦除 buffer 内容。 在多任务环境下调用时已通过关中断保证原子性。

相关推荐