static void xnsynch_renice_thread(struct xnthread *thread, struct xnthread *target) { /* Apply the scheduling policy of "target" to "thread" */ xnsched_track_policy(thread, target); if (thread->wchan) xnsynch_requeue_sleeper(thread); #ifdef CONFIG_XENO_OPT_PERVASIVE if (xnthread_test_state(thread, XNRELAX)) xnshadow_renice(thread); else if (xnthread_test_state(thread, XNSHADOW)) xnthread_set_info(thread, XNPRIOSET); #endif /* CONFIG_XENO_OPT_PERVASIVE */ }
static void xnsynch_renice_thread(xnthread_t *thread, int prio) { thread->cprio = prio; if (thread->wchan) /* Ignoring the XNSYNCH_DREORD flag on purpose here. */ xnsynch_renice_sleeper(thread); else if (thread != xnpod_current_thread() && xnthread_test_state(thread, XNREADY)) /* xnpod_resume_thread() must be called for runnable threads but the running one. */ xnpod_resume_thread(thread, 0); #ifdef CONFIG_XENO_OPT_PERVASIVE if (xnthread_test_state(thread, XNRELAX)) xnshadow_renice(thread); #endif /* CONFIG_XENO_OPT_PERVASIVE */ }