Re: System hangs during interruptible_sleep_on_timeout() under 2.4.9

Richard B. Johnson (root@chaos.analogic.com)
Thu, 27 Sep 2001 11:37:33 -0400 (EDT)


On Thu, 27 Sep 2001, Norbert Roos wrote:

> Ingo Molnar wrote:
>
> > are you sure timer interrupts are processed while you are waiting for the
> > timeout to expire? I'd suggest to put a:
> >
> > printk("<%d>", irq);
> >
> > into arch/i386/kernel/irq.c:do_IRQ().
>
> Until the call of interruptible_sleep_on_timeout(), timer interrupts
> were processed. Right after the call no more output is made.
>
[SNIPPED...]

wait_queue_head_t wait_thing;

Interruptible_sleep_on_timeount(&wait_thing, timeout), now requires
that "wait_thing" must have been initialized with:

init_waitqueue_head(&wait_thing);

If you didn't do this before this object was used, all bets are
off.

Also, you cannot sleep during an interrupt or when you are holding
a spin-lock that disables interrupts.

> __asm__ __volatile__("pushfl ; popl %0":"=g" (x): /* no input */)
>
> (x ist the variable where the IRQ flags are stored)
> I'm not familiar with x86 assembler; is it possible that something can
> go wrong here?

This is correct. The flags are pushed then popped into the
variable provided.

Cheers,
Dick Johnson

Penguin : Linux version 2.4.1 on an i686 machine (799.53 BogoMips).

I was going to compile a list of innovations that could be
attributed to Microsoft. Once I realized that Ctrl-Alt-Del
was handled in the BIOS, I found that there aren't any.

-
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/