On Thu, Jan 19, 2012 at 12:19:32PM -0500, Thor Lancelot Simon wrote: > On Wed, Jan 18, 2012 at 08:59:47PM -0800, Greg A. Woods wrote: > > > > So if I understand correctly these calls from other subsystems are not > > in an interrupt context and if I remember correctly tsleep() should be > > fine in any normal driver ioctl() function (for a non-MPSAFE driver, if > > indeed its ioctl() function was in the device switch table), but clearly > > grabbing the KERNEL_LOCK() is the wrong thing to do for this case, at > > least without releasing it properly before the tsleep() call. > > I don't know whether you can, or can't, sleep holding the KERNEL_LOCK().
You can. tsleep() (and other sleeping primitives) will release/reaquire it as needed. -- Manuel Bouyer <bou...@antioche.eu.org> NetBSD: 26 ans d'experience feront toujours la difference --