ahc_platform_abort_scbs()
Nigel Horne
njh at smsltd.demon.co.uk
Mon Mar 11 06:19:55 PST 2002
ahc_platform_abort_scbs is looping on my Solaris 2.8 machine.
I must be missing something, but I don't see how ahc_platform_abort_scbs()
can do anything but loop in this bit:
busyq = &dev->busyq;
while ((acmd = TAILQ_FIRST(busyq)) != NULL) {
,,,
TAILQ_REMOVE(busyq, acmd,
acmd_links.tqe);
,,,
}
since TAILQ_FIRST is defined as ((head)->tqh_first and TAILQ_REMOVE doesn't update tqh_first,
it's defined as
#define TAILQ_REMOVE(head, elm, field) do { \
if ((TAILQ_NEXT((elm), field)) != NULL) \
TAILQ_NEXT((elm), field)->field.tqe_prev = \
(elm)->field.tqe_prev; \
else \
(head)->tqh_last = (elm)->field.tqe_prev; \
*(elm)->field.tqe_prev = TAILQ_NEXT((elm), field); \
} while (0)
Please tell me I'm missing something here.
-Nigel
--
Nigel Horne. Arranger, Composer, Conductor, Typesetter.
http://www.bandsman.co.uk/music.htm ICQ#20252325
To Unsubscribe: send mail to majordomo at FreeBSD.org
with "unsubscribe aic7xxx" in the body of the message
More information about the aic7xxx
mailing list