mirror of
https://github.com/torvalds/linux.git
synced 2026-06-05 13:06:59 +02:00
sched: Simplify sched_rr_get_interval()
Use guards to reduce gotos and simplify control flow. Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
7a50f76674
commit
af7c5763f5
|
|
@ -9030,38 +9030,30 @@ SYSCALL_DEFINE1(sched_get_priority_min, int, policy)
|
|||
|
||||
static int sched_rr_get_interval(pid_t pid, struct timespec64 *t)
|
||||
{
|
||||
struct task_struct *p;
|
||||
unsigned int time_slice;
|
||||
struct rq_flags rf;
|
||||
struct rq *rq;
|
||||
unsigned int time_slice = 0;
|
||||
int retval;
|
||||
|
||||
if (pid < 0)
|
||||
return -EINVAL;
|
||||
|
||||
retval = -ESRCH;
|
||||
rcu_read_lock();
|
||||
p = find_process_by_pid(pid);
|
||||
if (!p)
|
||||
goto out_unlock;
|
||||
scoped_guard (rcu) {
|
||||
struct task_struct *p = find_process_by_pid(pid);
|
||||
if (!p)
|
||||
return -ESRCH;
|
||||
|
||||
retval = security_task_getscheduler(p);
|
||||
if (retval)
|
||||
goto out_unlock;
|
||||
retval = security_task_getscheduler(p);
|
||||
if (retval)
|
||||
return retval;
|
||||
|
||||
rq = task_rq_lock(p, &rf);
|
||||
time_slice = 0;
|
||||
if (p->sched_class->get_rr_interval)
|
||||
time_slice = p->sched_class->get_rr_interval(rq, p);
|
||||
task_rq_unlock(rq, p, &rf);
|
||||
scoped_guard (task_rq_lock, p) {
|
||||
struct rq *rq = scope.rq;
|
||||
if (p->sched_class->get_rr_interval)
|
||||
time_slice = p->sched_class->get_rr_interval(rq, p);
|
||||
}
|
||||
}
|
||||
|
||||
rcu_read_unlock();
|
||||
jiffies_to_timespec64(time_slice, t);
|
||||
return 0;
|
||||
|
||||
out_unlock:
|
||||
rcu_read_unlock();
|
||||
return retval;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user