Messages in this thread Patch in this message | | | Subject | [RFC][PATCH 01/11] sched: add sched_class->task_dead. | From | Raistlin <> | Date | Sun, 28 Feb 2010 20:15:57 +0100 |
| |
Add a new function to the scheduling class interface. It is called at the end of a cointext switch, if the going out task is in TASK_DEAD state.
It might be of help in case the scheduling class wants to be notified when one of its task dies, e.g. to perform some cleanup actions.
Signed-off-by: Dario Faggioli <raistlin@linux.it> --- include/linux/sched.h | 1 + kernel/sched.c | 2 ++ 2 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/include/linux/sched.h b/include/linux/sched.h index 78efe7c..d1de995 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1119,6 +1119,7 @@ struct sched_class { void (*set_curr_task) (struct rq *rq); void (*task_tick) (struct rq *rq, struct task_struct *p, int queued); void (*task_fork) (struct task_struct *p); + void (*task_dead) (struct task_struct *p); void (*switched_from) (struct rq *this_rq, struct task_struct *task, int running); diff --git a/kernel/sched.c b/kernel/sched.c index 3a8fb30..532dcf1 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -2801,6 +2801,8 @@ static void finish_task_switch(struct rq *rq, struct task_struct *prev) if (mm) mmdrop(mm); if (unlikely(prev_state == TASK_DEAD)) { + if (prev->sched_class->task_dead) + prev->sched_class->task_dead(prev); /* * Remove function-return probe instances associated with this * task and put them back on the free list. -- 1.7.0 -- <<This happens because I choose it to happen!>> (Raistlin Majere) ---------------------------------------------------------------------- Dario Faggioli, ReTiS Lab, Scuola Superiore Sant'Anna, Pisa (Italy) http://blog.linux.it/raistlin / raistlin@ekiga.net / dario.faggioli@jabber.org [unhandled content-type:application/pgp-signature] | |