- /* Enforce preemption. */
- if (++thread_ticks >= TIME_SLICE)
- intr_yield_on_return ();
- /* Enforce preemption. */
- if (++thread_ticks >= TIME_SLICE)
- intr_yield_on_return ();
+ int old_priority = t->priority;
+ int default_priority = t->normal_priority;
+ int donation = PRI_MIN;
+ int old_priority = t->priority;
+ int default_priority = t->normal_priority;
+ int donation = PRI_MIN;
+ {
+ default_priority = PRI_MAX - fix_round (t->recent_cpu) / 4 - t->nice * 2;
+ if (default_priority < PRI_MIN)
+ {
+ default_priority = PRI_MAX - fix_round (t->recent_cpu) / 4 - t->nice * 2;
+ if (default_priority < PRI_MIN)
+ thread_lower_priority, NULL),
+ struct thread, elem);
+ if (max->priority > cur->priority)
+ thread_lower_priority, NULL),
+ struct thread, elem);
+ if (max->priority > cur->priority)