> > Anyway, that's the gist of the idea. I've attached the untested (and > uncompiled) code for the details. Comments?
Seems overly complex. Why shouldn't a driver be able to defer its detachment just like we can defer in attach? void device_detach_defer(device_t); When the driver has finally cleaned everything up it can do void device_detach_complete(device_t); to force the softc/device_t to be freed.