static void event(void) { #if MQX_USE_EVENTS IF_TINIEST(pointer handle=0); IF_TINIEST(_mqx_uint value=0); IF_SMALL(_event_create_component(1, 1, 1)); IF_SMALL(_event_create_fast(1)); IF_SMALL(_event_create_fast_auto_clear(1)); IF_SMALL(_event_open("e", &handle)); IF_SMALL(_event_set(handle, 0)); IF_SMALL(_event_clear(handle, 0)); IF_SMALL(_event_wait_all(handle, 0, 0)); IF_TYPICAL(_event_close(handle)); IF_TYPICAL(_event_create("e")); IF_MAX(_event_create_auto_clear("e")); IF_TYPICAL(_event_destroy("e")); IF_MAX(_event_destroy_fast(1)); IF_MAX(_event_get_value(handle, &value)); IF_MAX(_event_get_wait_count(handle)); IF_MAX(_event_open_fast(1, &handle)); IF_MAX(_event_test(&handle)); IF_MAX(_event_wait_all_for(handle, 0, NULL)); IF_TYPICAL(_event_wait_all_ticks(handle, 0, 0)); IF_MAX(_event_wait_all_until(handle, 0, NULL)); IF_MAX(_event_wait_any(handle, 0, 0)); IF_MAX(_event_wait_any_for(handle, 0, NULL)); IF_TYPICAL(_event_wait_any_ticks(handle, 0, 0)); IF_MAX(_event_wait_any_until(handle, 0, NULL)); #endif }
int _automaton_get_value (ft_thread_t self, ft_event_t event, int index, void **result) { ft_scheduler_t sched; _VERIFY_EVENT_INST (event); sched = _get_thread_scheduler (self); if (_get_thread_deadline (self) == 1) { _set_thread_deadline (self,-1); result = NULL; return ENEXT; } if (_event_get_value (event,index,result)) { _set_thread_deadline (self,-1); return OK; } if (_get_scheduler_eoi (sched) == 1) { _set_thread_deadline (self,1); _set_thread_status (self,_COOP); return _STAY; } _set_thread_status (self,_CONT); return _STAY; }