summaryrefslogtreecommitdiffstats
path: root/kernel/sched/deadline.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/sched/deadline.c')
-rw-r--r--kernel/sched/deadline.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c
index ef5b9f6b1d42..0f9d2180be23 100644
--- a/kernel/sched/deadline.c
+++ b/kernel/sched/deadline.c
@@ -2283,6 +2283,36 @@ void __init init_sched_dl_class(void)
2283 GFP_KERNEL, cpu_to_node(i)); 2283 GFP_KERNEL, cpu_to_node(i));
2284} 2284}
2285 2285
2286void dl_add_task_root_domain(struct task_struct *p)
2287{
2288 struct rq_flags rf;
2289 struct rq *rq;
2290 struct dl_bw *dl_b;
2291
2292 rq = task_rq_lock(p, &rf);
2293 if (!dl_task(p))
2294 goto unlock;
2295
2296 dl_b = &rq->rd->dl_bw;
2297 raw_spin_lock(&dl_b->lock);
2298
2299 __dl_add(dl_b, p->dl.dl_bw, cpumask_weight(rq->rd->span));
2300
2301 raw_spin_unlock(&dl_b->lock);
2302
2303unlock:
2304 task_rq_unlock(rq, p, &rf);
2305}
2306
2307void dl_clear_root_domain(struct root_domain *rd)
2308{
2309 unsigned long flags;
2310
2311 raw_spin_lock_irqsave(&rd->dl_bw.lock, flags);
2312 rd->dl_bw.total_bw = 0;
2313 raw_spin_unlock_irqrestore(&rd->dl_bw.lock, flags);
2314}
2315
2286#endif /* CONFIG_SMP */ 2316#endif /* CONFIG_SMP */
2287 2317
2288static void switched_from_dl(struct rq *rq, struct task_struct *p) 2318static void switched_from_dl(struct rq *rq, struct task_struct *p)