Re: reentrant timers/interrupt handlers: help!

Josue Emmanuel Amaro (jamaro@home.com)
Mon, 17 Aug 1998 23:12:55 -0700


>Hello all,
>
>I am in the process of writing a parallel file system for linux clusters

>So....how do I put the interrupt handler to sleep until the buffer is
>unlocked? It's not the same as simply putting a user process to sleep
>because this handler is acting independent of any particular user
>process on the machine. The interrupt handler itself has to be put to
>sleep and woken up again at it's previous point of execution, not just
>simply being called again. Sleep_on() doesn't work since interrupt
>handlers
>are not supposed to go to sleep. I get the standard "Aieeee..........."
>message when I do that.
>
Would a bottom half work here? It seems like you will have to constantly
check for the lock to be free, instead of doing a sleep.

Basically, check the lock, if the lock is not available, set your bottom
half bit and yield.
If available do your thing and yield.

Basically a "spin lock", but not quite.

If you want to make it a module, then set it up in the task immediate
queue, which will get executed when exiting a system call or when the
scheduler runs.
Just follow the same pattern.

(Linux Device Drivers, O'Reilly and Assoc )

Hope that helps.

I may be able to test your solution on my hardware, anything I can do to
help?

>Any help would be greatly appreciated,
>Thanks,
>Ekechi Nwokah

-
Josue Emmanuel Amaro
jamaro@home.com

In your quest for miracles, Why not go make a few of your own?

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html