Re: [PATCH 06/40] sched: add wakeup/sleep sched_notifiers and allow NULL notifier ops

Peter Zijlstra
2010-01-18T09:58:27Z

On Mon, 2010-01-18 at 09:57 +0900, Tejun Heo wrote:

> @@ -2439,6 +2440,8 @@ static inline void ttwu_post_activation(struct task_struct *p, struct rq *rq,
> rq->idle_stamp = 0;
> }
> #endif
> + if (success)
> + fire_sched_notifiers(p, wakeup);
> }
>
> /**

So why can't you call fire_sched_notifier(p, wakeup) right next to
activate_task(rq, p, 1) in ttwu_activate() ?

> @@ -5481,10 +5484,12 @@ need_resched_nonpreemptible:
> clear_tsk_need_resched(prev);
>
> if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) {
> - if (unlikely(signal_pending_state(prev->state, prev)))
> + if (unlikely(signal_pending_state(prev->state, prev))) {
> prev->state = TASK_RUNNING;
> - else
> + } else {
> + fire_sched_notifiers(prev, sleep);
> deactivate_task(rq, prev, 1);
> + }
> switch_count = &prev->nvcsw;
> }
>