- s = splsched();
- if (self->sched_mode == TH_MODE_FIXED) {
- uint64_t total_computation, abstime;
-
- abstime = mach_absolute_time();
- total_computation = abstime - self->computation_epoch;
- total_computation += self->computation_metered;
- if (total_computation >= max_poll_computation) {
- processor_t myprocessor = current_processor();
- ast_t preempt;
-
- thread_lock(self);
- if (!(self->sched_flags & TH_SFLAG_DEPRESSED_MASK)) {
- self->sched_pri = DEPRESSPRI;
-
- KERNEL_DEBUG_CONSTANT(MACHDBG_CODE(DBG_MACH_SCHED, MACH_SCHED_CHANGE_PRIORITY),
- (uintptr_t)thread_tid(self),
- self->base_pri,
- self->sched_pri,
- 0, /* eventually, 'reason' */
- 0);
-
- myprocessor->current_pri = self->sched_pri;
- }
- self->computation_epoch = abstime;
- self->computation_metered = 0;
- self->sched_flags |= TH_SFLAG_POLLDEPRESS;