parent.flag = flag; /* initialize ipc object */ rt_ipc_object_init(&(event->parent)); /* initialize event */ event->set = 0; return event; } RTM_EXPORT(rt_event_create); 完成的主要工作: 从堆中分配事件集对象空间,将事件集对象纳入对象容器 设置事件标志 初始化IPC对象,将挂起线程链表...
删除由 rt_event_create() 函数创建的事件集,可以调用如下函数: rt_err_t rt_event_delete(rt_event_t event); 调用此函数,可以释放事件集控制块占用的内存资源。在删除一个事件集对象时,应该确保该事件集不再被使用。 在删除前会唤醒所有挂起在该事件集上的线程,然后释放事件集对象占用的内存块。 2. 脱离...
rt_event_t rt_event_create(const char* name, rt_uint8_t flag); 1. 参数name为事件集的名称;flag为事件集的标志,取值为RT_IPC_FLAG_FIFO或RT_IPC_FLAG_PRIO,这两个标志值之前介绍过。 创建成功,返回事件控制块的句柄。创建失败,则返回 RT_NULL。 调用这个函数接口时,系统会从对象管理器中分配一个事...
登录后复制rt_sem_create rt_sem_delete rt_mutex_create rt_mutex_trytake rt_mutex_delete rt_event_create rt_event_delete rt_mb_create rt_mb_delete rt_mq_create rt_mq_delete 完成量 登录后复制rt_completion_wait 队列类 登录后复制rt_wqueue_wait rt_data_queue_push rt_data_queue_pop 延时 登...
系统不再使用 rt_event_create() 创建的事件集对象时,通过删除事件集对象控制块来释放系统资源。在删除一个事件集对象时,应该确保该事件集不再被使用。在删除前会唤醒所有挂起在该事件集上的线程(线程的返回值是RT_ERROR),然后释放事件集对象占用的内存块。
rt_event_t rt_event_create(const char* name, rt_uint8_t flag); 参数name为事件集的名称;flag为事件集的标志,取值为RT_IPC_FLAG_FIFO或RT_IPC_FLAG_PRIO,这两个标志值之前介绍过。 创建成功,返回事件控制块的句柄。创建失败,则返回 RT_NULL。
删除由rt_event_create()函数创建的事件集,可以调用如下函数: rt_err_t rt_event_delete(rt_event_t event); 调用此函数,可以释放事件集控制块占用的内存资源。在删除一个事件集对象时,应该确保该事件集不再被使用。 在删除前会唤醒所有挂起在该事件集上的线程,然后释放事件集对象占用的内存块。
typedefstructrt_event *rt_event_t;#endif 二、事件相关接口:在src/ipc.c中 创建事件: rt_event_t rt_event_create(constchar*name, rt_uint8_t flag); 调用该函数接口时,系统会从动态内存堆中分配事件对象,然后进行对象的初始化,IPC对象初始化,并把set设置成0。
rt_event_t rt_event_create(const char *name, rt_uint8_t flag) flag 使用哪一个,解释和信号量一样,可参考信号量创建部分说明。 删除事件集: /** 参数: event 事件集对象的句柄 返回值: RT_EOK 成功 */ rt_err_t rt_event_delete(rt_event_t event) ...
动态事件集操作rt_event_trt_event_create(constchar*name,rt_uint8_tflag)rt_err_trt_event_delete(rt_event event) 发送事件 // set的值为0x01则代表第0个事件发生了,0x08则代表第3个事件发生了// 1 << 0, 1 << 3rt_err_trt_event_send(rt_event_tevent,rt_uint32_tset) ...