Messages in this thread | | | Subject | Re: reentrant timers/interrupt handlers: help! | Date | Mon, 17 Aug 1998 23:12:55 -0700 | From | Josue Emmanuel Amaro <> |
| |
>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
| |