lkml.org 
[lkml]   [2012]   [Apr]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [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>


    \
     
     \ /
      Last update: 2012-04-13 11:45    [W:0.021 / U:58.504 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site