Subject: Re: how do I tell if I'm on the interrupt stack?
To: None <mjacob@feral.com>
From: Paul Marchione <paulm@ennovatenetworks.com>
List: tech-kern
Date: 09/05/2001 17:58:32
I believe that this will work:

if you test the curproc pointer, a zero value implies no process is currently
running,
you would thus have hit the code path from the kernel's hardclock function.

i.e.

    if  (!curproc)
        {
        /* base level 0, unsafe to call tsleep */
        return;
        }

-paul

Matthew Jacob wrote:

> I have several possible entry points into a code path in a driver which can
> decide whether to ltsleep for an event or poll. If I know I've entered via an
> interrupt (e.g., the device interrupt service routine)- I can mark state so
> that I don't attempt to ltsleep.
>
> But it turns out that there is a normal callback via hardclock (in scsipi)
> that I have no means of distinguishing from any other call. How can I tell if
> I'm on the interrupt stack and it's not safe to call ltsleep?
>
> -matt