Re: wake_up from interrupt handler

From: Mike Galbraith (efault@gmx.de)
Date: Mon Oct 07 2002 - 12:44:10 EST


At 07:25 AM 10/7/2002 -0700, Amol Lad wrote:
>In this code too.. lost-wakeup problem is not solved
>
>if (event_occured)
> else
> schedule();
>
>what if in check ' if(event_occured) ' goes to 'else'
>and before calling schedule() my ISR interrupted this
>thread and set the event..

(yes, this is what I was thinking about)

>Also Mike told to disable the interrupt before
>checking for event... So When to enable interrupts
>then ??

(this mike)

Well, disabling interrupts as a solution aside :), why are you checking for
event in the kthread? It seems to me that receipt of wakeup has to be the
sole knowledge that the event happened, else a race is a done deal. (no?)

         -Mike

>
>--- Arjan van de Ven <arjanv@redhat.com> wrote:
> > On Mon, 2002-10-07 at 14:41, Amol Lad wrote:
> > > Hi,
> > > I have a kernel thread which did
> > add_to_wait_queue()
> > > to wait for an event.
> > > The event for which above thread is waiting occurs
> > in
> > > an interrupt handler that calls wake_up() to wake
> > the
> > > above thread.
> > > Now I am faced with a 'lost wakeup' problem, in
> > which
> > > the
> > > kernel thread checks whether event occured, he
> > finds
> > > it to be 'not-occured' but before calling
> > > add_to_wait_queue(), interrupt handler detects
> > that
> > > the event has occured and calls wake_up().
> > > My thread sleeps forever.
> >
> > set_current_state(TASK_INTERRUPTIBLE);
> > add_to_wait_queue(...);
> > if (even_occured) { ...}
> > else
> > schedule();
> >
> > remove_from_wait_queue(..);
> > set_current_state(TASK_RUNNABLE);
> >
> >
> > >
> >
> >
>
> > ATTACHMENT part 2 application/pgp-signature
>name=signature.asc
>
>
>
>__________________________________________________
>Do you Yahoo!?
>Faith Hill - Exclusive Performances, Videos & More
>http://faith.yahoo.com
>-
>To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at http://www.tux.org/lkml/

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Oct 07 2002 - 22:00:59 EST