完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Raw condition msg 是一个轻量级别的(event+queue), 它既有event 也有queue的功能,速度非常快而且高效,足以胜任普通的应用。
比如有如下的应用: if (queue_is_empty) { raw_cond_msg_wait(…); } 在其它任务里或者中断里queue 里面有数据了调用raw_cond_msg_wait来唤醒它。 1 RAW_U16 raw_cond_msg_wait(RAW_COND_MSG *cond_msg_ptr, RAW_U8 wait_condition, RAW_U32 wait_option, RAW_VOID **msg) 只要任务调用这个函数会立即block 在condition msg上,直到其他任务调用raw_cond_msg_set,满足条件后才会醒过来并接收到一个消息。 Wait_option 可以设置为 RAW_NO_WAIT (0x00000000) RAW_WAIT_FOREVER (0xFFFFFFFF) 超时时间 (0x00000001 through 0xFFFFFFFE) 2 RAW_U16 raw_cond_msg_set(RAW_COND_MSG *cond_msg_ptr, RAW_U8 condition_set, RAW_VOID *msg) 唤醒满足条件的相应的任务,并发送给满足条件的任务一个消息。 3 condition msg支持FIFO 和PRIO 的任务阻塞策略,如果是FIFO 的话阻塞队列的顺序是按照先来后到的次序去排列阻塞任务,PRIO 策略的话是按照优先级的排序。具体的设置可以直接设置这个结构体中的 typedef struct RAW_COMMON_BLOCK_OBJECT { LIST block_list; RAW_U8 *name; RAW_U8 block_way; } RAW_COMMON_BLOCK_OBJECT; block_way 可以为 RAW_BLOCKED_WAY_FIFO 或者RAW_BLOCKED_WAY_PRIO |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 18:01 , Processed in 0.628690 second(s), Total 73, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号