We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi,
I recently had problems with events (RTX isr events) resulting in the OS_ERR_FIFO_OVF error in os_error(). This prompted me to understand more about this mechanism. I will explain what I know and what I dont know, any input would be appreciated.
When isr_evt_set() is called, it seems that 2 entries are placed in the array os_fifo[]. The first I am guessing is the task control block for the task that must get the event and the second is the event ID. The size of this queue is set in RTX_Conf_xx.c as variable OS_FIFOSZ.
What I dont know: 1. How to flush this queue? 2. Does os_evt_wait..() remove an event from the queue? How? I cant see that to be true 3. How can one check how full the queue is. 4. Does os_evt_clr() clear one event (which one) or all events with the specified flags.
It's a pity the Keil/ARM don't make this information available