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