Oliver Yang wrote:
Garrett D'Amore wrote:
Thomas De Schampheleire wrote:
Hi,

The timeout(9F) manpage says:

"The function called by timeout() must  adhere  to  the  same
    restrictions as a driver soft interrupt handler.

    The function called by timeout() is run in interrupt context
    and must not sleep or call other functions that might sleep."

Does this mean that a function which is called using a timeout, cannot
use mutex_enter() ?

No.  But you should not call cv_wait, or its brethren.

You should not attempt to acquire a lock which will be held by other functions calling cv_wait, or its brethren. (There are ways to do that safely, but it requires a fair bit of effort to make sure you do it safely.)

Maybe above statements could be added in the man page?
Since timeout is a public API, new driver developers might run into this situation without knowing the constraint of timeout API. At least, as a QE engineer, I have encountered this situation before. Maybe it's worth filing a bug against man page for timeout(9F).

I thought "cannot sleep" pretty much *covered* this case. The problem is that not everyone understands what "sleep" means, I think.

   -- Garrett

_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to