您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
小编给大家分享一下vxworks中Event是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
/* resource-related options */#define EVENTS_OPTIONS_NONE 0x00#define EVENTS_SEND_ONCE 0x01 /* unregister events after eventSend */#define EVENTS_ALLOW_OVERWRITE 0x02 /* can overwrite previous registration */#define EVENTS_SEND_IF_FREE 0x04 /* send events in xxxEvStart() */STATUS semEvStart(SEM_ID semId, UINT32 events, UINT8 options);STATUS semEvStop (SEM_ID semId);STATUS msgQEvStart(MSG_Q_ID msgQId, UINT32 events, UINT8 options);STATUS msgQEvStop (MSG_Q_ID msgQId);
看一个例子
/* Copyright 2020 VxWorks567 */#include <stdio.h> /* printf() */#include <eventLib.h> /* eventReceive() */#include <semEvLib.h> /* semEvStart() */#include <msgQEvLib.h>/* msgQEvStart() */#define MSGS_NUM 5#define MSG_LEN 5static SEM_ID semId;static MSG_Q_ID msgQId;void testEvent(){_Vx_event_t eventsReceived;/* 用二进制信号量表示一种资源 */semId = semBCreate(SEM_Q_FIFO, SEM_EMPTY);/* 将当前任务注册到该信号量 */semEvStart(semId, VXEV01, EVENTS_OPTIONS_NONE);/* 用消息队列表示一种资源 */msgQId = msgQCreate(MSGS_NUM, MSG_LEN, MSG_Q_FIFO);/* 将当前任务注册到该消息队列 */msgQEvStart(msgQId, VXEV02, EVENTS_OPTIONS_NONE);while(1){/* 任一资源有效时,即进行处理 */eventReceive(VXEV01|VXEV02, EVENTS_WAIT_ANY, WAIT_FOREVER, &eventsReceived);if(eventsReceived&VXEV01){/* 信号量有效,且无其它任务申请信号量 */printf("\n\tsemphore is free\n");semTake(semId, WAIT_FOREVER);}else if(eventsReceived&VXEV02){/* 新消息达到,且无其它任务读取消息 */printf("\n\tmsgQ is free\n");msgQReceive(msgQId, NULL, 0, WAIT_FOREVER);}}}void freeSem(){/* 释放信号量,表示对应资源有效 */semGive(semId);}void freeMsgQ(){/* 发送消息,表示对应资源有效 */msgQSend(msgQId, 0, 0, 0, 0);}
执行效果

以上是“vxworks中Event是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。