Context of strategy routine in block device drivers

From: Michael Krause (mk@soundtracker.org)
Date: Wed Dec 25 2002 - 09:12:08 EST


Hi list,

I have a question concerning the strategy routine of a block device
driver. Any hints or pointers would be appreciated; a search of the
list archives did not reveal anything.

Alessandro Rubini & Jonathan Corbet write on p. 331 of their book
"Linux Device Drivers", 2nd ed:

 "The request function has one very important constraint: it must be
 atomic. request is not usually called in direct response to user
 requests, and it is not running in the context of any particular
 process. It can be called at interrupt time, from tasklets, or from
 any number of other places. Thus, it must not sleep while carrying out
 its tasks."

Why, then, is sleep_on() used happily all over
linux/drivers/block/amiflop.c? According to the above statement, this
should not work. I also use sleep_on(), together with a kernel timer,
in order to implement a simple delay in my own device driver, and it
has always worked fine. Why? Am I just having good luck?

Yours confused,

-- 
michael krause -- .oO[ http://www.soundtracker.org/raw/ ]Oo.

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



This archive was generated by hypermail 2b29 : Tue Dec 31 2002 - 22:00:07 EST