4923 const struct sched_class *prev_class = p->sched_class;
4924
4925 BUG_ON(prio < 0 || prio > MAX_PRIO);
4926
4927 rq = task_rq_lock(p, &flags);
4928 update_rq_clock(rq);
4929
4930 oldprio = p->prio;
4931 on_rq = p->se.on_rq;
4932 running = task_current(rq, p);
4933 if (on_rq)
4934 dequeue_task(rq, p, 0);
4935 if (running)
4936 p->sched_class->put_prev_task(rq, p);
4937
4938 if (rt_prio(prio))
4939 p->sched_class = &rt_sched_class;
4940 else
4941 p->sched_class = &fair_sched_class;
4942
4943 p->prio = prio;
4944
4945 if (running)
4946 p->sched_class->set_curr_task(rq);
4947 if (on_rq) {
4948 enqueue_task(rq, p, 0);
4949
4950 check_class_changed(rq, p, prev_class, oldprio, running);
4951 }
4952 task_rq_unlock(rq, &flags);
4953}
4954
4955#endif
4956
4957void set_user_nice(struct task_struct *p, long nice)
4958{
4959 int old_prio, delta, on_rq;
4960 unsigned long flags;
4961 struct rq *rq;
4962
4963 if (TASK_NICE(p) == nice || nice < -20 || nice > 19)