Delaying an interrupt handler
Milton Krutt
milton at krutt.org
Mon Mar 23 08:18:45 EDT 2015
Hi.
It is known that no semaphore synchronization should be
used inside an interrupt handler.
Anyway, I am looking at a freeBSD device driver (written by
a profesionist) and there are semaphores inside an interrupt
handler's subroutine.
Since I should port to linux that driver, I ask you how can I
reach such synchronization under linux; I tried to use semaphores
inside my handler but I got complains, and I don't want to break
the law, so no semaphores for me.
The scenario is the following:
firmware downloader {
while(fw_blocks--){
/* the call below will cause an interrupt */
load_block();
/* sleep unitl the int handler ackn's the previous
operation, and prevent ANY int. handler operations
until the process goes actually to sleep through the
following call */
sleep(); }
}
int handler {
if(the process is NOT asleep)
wait();
wake up the process.
}
NOTE: I am on a 2.6.10 in order to be closely tutored by LDD3.
More information about the Kernelnewbies
mailing list