When does heir become executing on calling _Thread_Dispatch_request from another cpu?
Sebastian Huber
sebastian.huber at embedded-brains.de
Fri Aug 21 09:42:07 UTC 2020
On 21/08/2020 11:34, Richi Dubey wrote:
> _SMP_Preempt calls _Thread_Dispatch_update_heir which
> calls _Thread_Dispatch_request which sends an interrupt
> with _CPU_SMP_Send_interrupt.
Yes.
> This interrupt would have set the executing equal to heir but would've
> taken unpredictable time,
Yes, this is how it works. The scheduler asks for a thread dispatch, but
when it takes place is out of the control of the scheduler.
> but explicitly calling _Thread_Dispatch_enable(other_cpu) right after
> _SMP_Preempt(...node_on_other_cpu...) sets the executing corresponding
> to the other_cpu's cpu control right away, is that correct?
No, this would be completely wrong. You should never call
_Thread_Dispatch_enable(other_cpu) and you should never modify the
thread dispatch level inside the scheduler code. The only thing you can
do is to update the heir and send requests via an inter-processor interrupt.
More information about the devel
mailing list