Commit 51680094 authored by Philippe Gerum's avatar Philippe Gerum
Browse files

evl/sched: do not consider oob stall on enabling preemption



Checking the oob stall bit in __evl_enable_preempt() to block the
rescheduling is obsolete. It relates to a nested locking construct
which is long gone, when the evl_spinlock managed the preemption count
and the big lock was still in, i.e.:

lock_irqsave(&ugly_big_lock, flags)  /* stall bit raised */
	evl_spin_lock(&inner_lock);  /* +1 preempt */
	   wake_up_high_prio_thread();
	evl_spin_unlock(&inner_lock); /* -1 preempt == 0, NO schedule because stalled */
unlock_irqrestore(&ugly_big_lock, flags) /* stall bit restored */

This was a way to prevent a rescheduling to take place inadvertently
while holding the big lock.
Signed-off-by: default avatarPhilippe Gerum <rpm@xenomai.org>
parent d03a3686
......@@ -333,8 +333,7 @@ static inline void __evl_disable_preempt(void)
static inline void __evl_enable_preempt(void)
{
if (--dovetail_current_state()->preempt_count == 0 &&
!oob_irqs_disabled())
if (--dovetail_current_state()->preempt_count == 0)
evl_schedule();
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment