Up to [DragonFly] / src / sys / dev / disk / ata
Request diff between arbitrary revisions
Keyword substitution: kv
Default branch: MAIN
Current tag: DragonFly_Preview
Implement kern.do_async_attach. default disabled. To enable add kern.do_async_attach="1" to your /boot/loader.conf. This feature allows conforming drivers to attach in their own thread, allowing multiple drivers to attach in parallel. Implement a new device state, DS_INPROGRESS. Seems to work properly. Implement device_set_async_attach(), which allows a device's probe function to indicate that it is ok for its attach function to be run in its own thread. Split tsleep's enable out from the 'cold' variable. tsleep works earlier then when cold is cleared. Add a 'tsleep_now_works' variable to take over the functionality. Implement DRIVERSLEEP()... similar to DELAY(), this function works in any context and will call lwkt_switch() in its spin loop. It isn't perfect yet. ATA/NATA: * Uses the new async attach feature * Uses DRIVERSLEEP * No longer uses a configuration interrupt hook. Interrupts are now available during device config. NOTE: atapicam does not seem to be scanning the 'bus' (from cam's point of view), so 'cd0' is not found until CAM scans the bus itself in the interrupt config hook code. USB: * Uses the new async attach feature * Uses tsleep instead of DELAY MISC: * IF_EM, IF_NFE also use the async attach feature as a test, but it doesn't seem to have a huge effect.