Messages in this thread | | | Date | Sun, 19 Oct 2008 00:03:19 +0400 | From | Cyrill Gorcunov <> | Subject | CFS related question |
| |
Hi Ingo, Peter,
I just curious, look we have the following
static struct sched_entity *pick_next_entity(struct cfs_rq *cfs_rq) { struct sched_entity *se = NULL;
if (first_fair(cfs_rq)) { se = __pick_next_entity(cfs_rq); se = pick_next(cfs_rq, se); set_next_entity(cfs_rq, se); }
return se; }
which I presume may return NULL so the following piece could fail
static struct task_struct *pick_next_task_fair(struct rq *rq) { struct task_struct *p; struct cfs_rq *cfs_rq = &rq->cfs; struct sched_entity *se;
if (unlikely(!cfs_rq->nr_running)) return NULL;
do { --> se = pick_next_entity(cfs_rq); --> OOPs cfs_rq = group_cfs_rq(se); } while (cfs_rq);
p = task_of(se); hrtick_start_fair(rq, p);
return p; }
Did I miss something? Or it comepletely can NOT happen?
- Cyrill -
| |