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