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.hu...@embedded-brains.de
PGP     : Public key available on request.

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

_______________________________________________
users mailing list
users@rtems.org
http://lists.rtems.org/mailman/listinfo/users

Reply via email to