Globally disabling preemption
Keith Robertson
kjrobert at alumni.uwaterloo.ca
Fri Nov 9 15:32:03 UTC 2007
Hi.
The rtems user guide states: "If preemption is disabled for a task
(RTEMS_NO_PREEMPT), then the task will not relinquish control of the
processor until it terminates, blocks, or re-enables preemption."
Given an RTEMS_NO_PREEMPT thread A, I'd like to clarify what happens if
A is interrupted (as interrupts are still on). When the scheduler runs
at the end of an isr, what happens? Will A always be rescheduled? Or
will the normal scheduling algorithm run and A may or may not be selected.
I suspect it's the later. If this is the case, is there a recommended
way of globally disabling preemption so as to have the effect of the
former? That is, A is interrupted, but is always rescheduled after the
interrupt.
Cheers.
Keith
More information about the users
mailing list