Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 69086
b: refs/heads/master
c: fad095a
h: refs/heads/master
v: v3
  • Loading branch information
Srivatsa Vaddagiri authored and Ingo Molnar committed Oct 15, 2007
1 parent 53d1826 commit 9551005
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 19 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: fb615581c78efee25e4d04f1145e8fa8ec705dc3
refs/heads/master: fad095a7b963d9e914e0cdb73e27355c47709441
43 changes: 25 additions & 18 deletions trunk/kernel/sched_fair.c
Original file line number Diff line number Diff line change
Expand Up @@ -652,15 +652,21 @@ static inline struct cfs_rq *cpu_cfs_rq(struct cfs_rq *cfs_rq, int this_cpu)
#define for_each_leaf_cfs_rq(rq, cfs_rq) \
list_for_each_entry(cfs_rq, &rq->leaf_cfs_rq_list, leaf_cfs_rq_list)

/* Do the two (enqueued) tasks belong to the same group ? */
static inline int is_same_group(struct task_struct *curr, struct task_struct *p)
/* Do the two (enqueued) entities belong to the same group ? */
static inline int
is_same_group(struct sched_entity *se, struct sched_entity *pse)
{
if (curr->se.cfs_rq == p->se.cfs_rq)
if (se->cfs_rq == pse->cfs_rq)
return 1;

return 0;
}

static inline struct sched_entity *parent_entity(struct sched_entity *se)
{
return se->parent;
}

#else /* CONFIG_FAIR_GROUP_SCHED */

#define for_each_sched_entity(se) \
Expand Down Expand Up @@ -693,11 +699,17 @@ static inline struct cfs_rq *cpu_cfs_rq(struct cfs_rq *cfs_rq, int this_cpu)
#define for_each_leaf_cfs_rq(rq, cfs_rq) \
for (cfs_rq = &rq->cfs; cfs_rq; cfs_rq = NULL)

static inline int is_same_group(struct task_struct *curr, struct task_struct *p)
static inline int
is_same_group(struct sched_entity *se, struct sched_entity *pse)
{
return 1;
}

static inline struct sched_entity *parent_entity(struct sched_entity *se)
{
return NULL;
}

#endif /* CONFIG_FAIR_GROUP_SCHED */

/*
Expand Down Expand Up @@ -787,8 +799,9 @@ static void yield_task_fair(struct rq *rq)
static void check_preempt_wakeup(struct rq *rq, struct task_struct *p)
{
struct task_struct *curr = rq->curr;
struct cfs_rq *cfs_rq = task_cfs_rq(curr), *pcfs_rq;
struct cfs_rq *cfs_rq = task_cfs_rq(curr);
struct sched_entity *se = &curr->se, *pse = &p->se;
s64 delta;

if (unlikely(rt_prio(p->prio))) {
update_rq_clock(rq);
Expand All @@ -797,21 +810,15 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p)
return;
}

for_each_sched_entity(se) {
cfs_rq = cfs_rq_of(se);
pcfs_rq = cfs_rq_of(pse);
while (!is_same_group(se, pse)) {
se = parent_entity(se);
pse = parent_entity(pse);
}

if (cfs_rq == pcfs_rq) {
s64 delta = se->vruntime - pse->vruntime;
delta = se->vruntime - pse->vruntime;

if (delta > (s64)sysctl_sched_wakeup_granularity)
resched_task(curr);
break;
}
#ifdef CONFIG_FAIR_GROUP_SCHED
pse = pse->parent;
#endif
}
if (delta > (s64)sysctl_sched_wakeup_granularity)
resched_task(curr);
}

static struct task_struct *pick_next_task_fair(struct rq *rq)
Expand Down

0 comments on commit 9551005

Please sign in to comment.