| Subject | Re: [PATCH 06/16] sched: SCHED_DEADLINE push and pull logic | From | Steven Rostedt <> | Date | Wed, 11 Apr 2012 12:21:38 -0400 |
| |
On Fri, 2012-04-06 at 09:14 +0200, Juri Lelli wrote:
> /* > * Only called when both the current and waking task are -deadline > * tasks. > @@ -487,8 +819,20 @@ static void yield_task_dl(struct rq *rq) > static void check_preempt_curr_dl(struct rq *rq, struct task_struct *p, > int flags) > { > - if (dl_time_before(p->dl.deadline, rq->curr->dl.deadline)) > + if (dl_time_before(p->dl.deadline, rq->curr->dl.deadline)) { > resched_task(rq->curr); > + return; > + } > + > +#ifdef CONFIG_SMP > + /* > + * In the unlikely case current and p have the same deadline > + * let us try to decide what's the best thing to do... > + */ > + if ((s64)(p->dl.deadline - rq->curr->dl.deadline) == 0 && > + !need_resched())
OK, maybe I'm thick. But how is:
(s64)(p->dl.deadline - rq->curr->dl.deadline) == 0
Better than:
p->dl.deadline == rq->curr->dl.deadline
?
-- Steve
> + check_preempt_equal_dl(rq, p); > +#endif /* CONFIG_SMP */ > } >
|