swtch_continue(void)
{
processor_t myprocessor;
- boolean_t result;
+ boolean_t result;
- disable_preemption();
+ disable_preemption();
myprocessor = current_processor();
- result = !SCHED(processor_queue_empty)(myprocessor) || rt_runq.count > 0;
+ result = SCHED(thread_should_yield)(myprocessor, current_thread());
enable_preemption();
thread_syscall_return(result);
disable_preemption();
myprocessor = current_processor();
- if (SCHED(processor_queue_empty)(myprocessor) && rt_runq.count == 0) {
+ if (!SCHED(thread_should_yield)(myprocessor, current_thread())) {
mp_enable_preemption();
return (FALSE);
disable_preemption();
myprocessor = current_processor();
- result = !SCHED(processor_queue_empty)(myprocessor) || rt_runq.count > 0;
+ result = SCHED(thread_should_yield)(myprocessor, current_thread());
enable_preemption();
return (result);
swtch_pri_continue(void)
{
processor_t myprocessor;
- boolean_t result;
+ boolean_t result;
thread_depress_abort_internal(current_thread());
- disable_preemption();
+ disable_preemption();
myprocessor = current_processor();
- result = !SCHED(processor_queue_empty)(myprocessor) || rt_runq.count > 0;
+ result = SCHED(thread_should_yield)(myprocessor, current_thread());
mp_enable_preemption();
thread_syscall_return(result);
disable_preemption();
myprocessor = current_processor();
- if (SCHED(processor_queue_empty)(myprocessor) && rt_runq.count == 0) {
+ if (!SCHED(thread_should_yield)(myprocessor, current_thread())) {
mp_enable_preemption();
return (FALSE);
disable_preemption();
myprocessor = current_processor();
- result = !SCHED(processor_queue_empty)(myprocessor) || rt_runq.count > 0;
+ result = SCHED(thread_should_yield)(myprocessor, current_thread());
enable_preemption();
return (result);
0);
myprocessor->current_pri = self->sched_pri;
+ myprocessor->current_perfctl_class = thread_get_perfcontrol_class(self);
self->sched_flags |= TH_SFLAG_DEPRESS;
if (interval != 0) {
0);
myprocessor->current_pri = self->sched_pri;
+ myprocessor->current_perfctl_class = thread_get_perfcontrol_class(self);
}
self->computation_epoch = abstime;
self->computation_metered = 0;
disable_preemption();
myprocessor = current_processor();
- if (SCHED(processor_queue_empty)(myprocessor) && rt_runq.count == 0) {
+ if (!SCHED(thread_should_yield)(myprocessor, current_thread())) {
mp_enable_preemption();
return;