c31b572a47
context. For this introduce 3 new xfer tags: - C_WAIT, equivalent of AT_WAIT - C_WAITACT, when there is a thread waiting on this xfer to become the active one (that is, to be at the head of the queue) - C_FREE, set by ata_free_xfer() when it can't free the xfer because it's still in use. The holder should then free the xfer ASAP. If ata_exec_xfer() is called with (C_POLL | C_WAIT), and there is already xfers to be processed, assert C_WAITACT and sleep. atastart() checks for C_WAITACT, and wakeup the thread waiting for this xfer to become active if set. atastart() won't process this xfer, it's the responsability of the thread waked up to handle it. Fix (the right way) kern/27421 by Martin Husemann. |
||
---|---|---|
.. | ||
ata_raid_promise.c | ||
ata_raid.c | ||
ata_raidreg.h | ||
ata_raidvar.h | ||
ata_wdc.c | ||
ata.c | ||
atareg.h | ||
atavar.h | ||
files.ata | ||
ld_ataraid.c | ||
Makefile | ||
sata_subr.c | ||
satapmpreg.h | ||
satareg.h | ||
satavar.h | ||
wd.c | ||
wdvar.h |