Messages in this thread | | | Date | Fri, 13 Apr 2012 11:41:43 +0200 (CEST) | From | Thomas Gleixner <> | Subject | Re: [PATCH v3 3/3] genirq: reimplement exit_irq_thread() hook via task_work_queue() |
| |
On Thu, 12 Apr 2012, Oleg Nesterov wrote:
> exit_irq_thread() and task->irq_thread are needed to handle > the unexpected (and unlikely) exit of irq-thread. > > We can use task_work instead and make this all private to > kernel/irq/manage.c, simplification plus micro-optimization. > > 1. rename exit_irq_thread() to irq_thread_dtor(), make it > static, and move it up before irq_thread(). > > 2. change irq_thread() to do task_queue_work(irq_thread_dtor) > at the start and task_work_cancel() before return. > > tracehook_notify_resume() can never play with kthreads, > only do_exit()->exit_task_work() can call the callback > and this is what we want. > > 3. remove task_struct->irq_thread and the special hook > in do_exit(). > > Signed-off-by: Oleg Nesterov <oleg@redhat.com> > --- > include/linux/interrupt.h | 4 -- > include/linux/sched.h | 10 +----- > kernel/exit.c | 2 - > kernel/irq/manage.c | 69 +++++++++++++++++++++----------------------- > 4 files changed, 35 insertions(+), 50 deletions(-)
Nice cleanup.
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
| |