rtems_message_queue_receive / rtems_event_receive issues

Sebastian Huber sebastian.huber at embedded-brains.de
Tue Oct 2 13:43:11 UTC 2018


On 02/10/2018 15:37, Catalin Demergian wrote:
> Hi,
> I continued debugging.
> It turned out _Thread_Unblock is not called because 
> in _Event_Surrender (called directly by rtems_event_send) boolean 
> var unblock is false.
> to be more exact, in
>   if (
>     _Event_Is_blocking_on_event( the_thread, wait_class )
>       && _Event_Is_satisfied( the_thread, pending_events, &seized_events )
>   )
> the _Event_Is_blocking_on_event( the_thread, wait_class ) condition 
> fails, hence the else is entered, unblock is set
> to false, _Thread_Unblock not called anymore; and since the call chain was
> _Thread_Unblock->_Thread_Clear_state->_Scheduler_Unblock->_Scheduler_priority_Unblock->_Scheduler_Update_heir-> 
> Context Switch to SCrx
> there will be more CS for my task on the CPU.
> This worked for 5401 ping packets, but for 5402th and so on it's not 
> working any more.
> _Event_Surrender is called every second, but it fails in the same way 
> every time.
>
> Now .. why would _Event_Is_blocking_on_event fail ?

This is not necessarily an error. The thread may do something else 
during the call to _Event_Surrender().

-- 
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.




More information about the users mailing list