This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

RTX - inner workings of event queue

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