os_event_wait

所属模块:通信机制 | 类型:事件阻塞等待函数

API Metadata

函数ID:os_event_wait
模块:event
类型:event wait
嵌套深度:2

函数简介

os_event_wait 用于等待指定事件被触发, 支持超时机制,是任务进入阻塞状态的核心同步接口。

如果事件已触发,则立即返回;否则任务进入等待状态, 由调度器在事件到达或超时后唤醒。

函数原型

char os_event_wait(u8 obj, u16 tick);

参数说明

参数 说明
obj 事件ID(0 ~ OS_RESOURCE_MAX-1)
tick 超时时间(系统节拍)

返回值

1 - 事件已触发(立即返回)
0 / -1 - 等待失败或超时(取决于os_wait返回值)

源码实现

#include "hrtos_internal.h" char os_event_wait(u8 obj, u16 tick) { if(obj >= OS_RESOURCE_MAX) { return -1; } EA = 0; /* 事件已触发:快速路径返回 */ if(OS_RES[obj].value) { return 1; } EA = 1; /* 进入阻塞等待 */ return os_wait(WAIT_EVENT, obj, tick); }

使用示例

void task() { if(os_event_wait(2, 100) == 1) { // 事件触发处理 } }

注意事项

该函数具有“快速路径优化”,事件已触发时不会进入调度器。 未触发时将进入阻塞状态,由内核统一调度唤醒。

相关推荐