[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[patch] avoid bypassing sys/queue.h



Since I spotted a small manual TAILQ operation in rcs.h,
I decided to grep the source tree for other such cases.
Here's what I found and associated diffs.

For each file(s) modified I noted whether or not I was able
to confirm no binary change were made.

. Modified files:

M usr.bin/vi/common/api.c
M usr.bin/vi/common/line.c
M usr.bin/vi/common/main.c
M usr.bin/vi/common/put.c
M usr.bin/vi/ex/ex_global.c
M usr.sbin/afs/src/nnpfs/bsd/nnpfs_node-bsd.c
M usr.sbin/ypserv/ypserv/ypserv_db.c
M sys/adosfs/adutil.c
M sys/arch/hppa64/hppa64/autoconf.c
M sys/arch/macppc/stand/alloc.c
M sys/arch/mvme68k/dev/sbic.c
M sys/arch/mvme68k/dev/ssh.c
M sys/arch/sparc64/dev/fd.c
M sys/arch/sparc64/stand/ofwboot/alloc.c
M sys/arch/zaurus/zaurus/autoconf.c
M sys/dev/microcode/aic7xxx/aicasm_gram.y
M sys/dev/microcode/aic7xxx/aicasm_scan.l
M sys/netinet6/nd6.c
M sys/netinet6/nd6.h
M sys/netinet6/nd6_rtr.c
M sys/ufs/lfs/lfs_segment.c
M sys/xfs/xfs_node-bsd.c

. Some notes:

There's still weird stuff going on in sys/netatalk/ and a lot of 
calls such as this one:

	if (dp->tqh_last == &TAILQ_NEXT(bp, b_freelist))

There's a nice explanation in  sys/kern/vfs_bio.c

        /*
         * We only calculate the head of the freelist when removing
         * the last element of the list as that is the only time that
         * it is needed (e.g. to reset the tail pointer).
         *
         * NB: This makes an assumption about how tailq's are implemented.
         */

Maybe the number of tests like the one above warrant something in
sys/queue.h but I'd like input on that.

. File specific notes:

src/usr.bin/vi/common/{api.c,put.c,main.c,line.c}:
src/usr.bin/vi/ex/ex_global.c:
	lots of CIRCLEQ operations were done manually.
	use CIRCLEQ_FOREACH, LIST_FIRST and LIST_FOREACH instead
	of manual versions.  md5 confirms no binary change.

src/usr.sbin/afs/src/nnpfs/bsd/nnpfs_node-bsd.c:
	remove unused LIST_FOREACH definition
	(sys/queue.h is #included anywhow)
	no binary change.

src/usr.sbin/ypserv/ypserv/ypserv_db.c:
	use CIRCLEQ_LAST instead of manually fetching cqh_last;
	md5 confirms no binary change.

src/sys/adosfs/adutil.c:
	switch to LIST_FOREACH. can't confirm.

src/sys/arch/hppa64/hppa64/autoconf.c:
	switch to TAILQ_FOREACH. can't confirm.

src/sys/arch/macppc/stand/alloc.c:
	switch to LIST_FOREACH, LIST_FIRST. can't confirm.

sys/arch/mvme68k/dev/{sbic.c,ssh.c}:
	minor TAILQ operations.
	side note, these files have weird 4 space based indenting.
	can't confirm.

sys/arch/sparc64/dev/fd.c:
sys/arch/sparc64/stand/ofwboot/alloc.c:
	small evolutions to LIST and TAILQ.  can't confirm.

sys/netinet6/{nd6.h,nd6.c,nd6_rtr.c}:
	many manual operations, this is not a no binary change diff
	since i changed a list cleanup loop. 
	(switched to the "while head: remove_first;" method).

sys/xfs/xfs_node-bsd.c:
	unused LIST_FOREACH definition.
	same than the one in nnpfs_node-bsd.c
	no binary change.
Index: usr.bin/vi/common/api.c
===================================================================
RCS file: /space/release/cvs/src/usr.bin/vi/common/api.c,v
retrieving revision 1.12
diff -u -r1.12 api.c
--- usr.bin/vi/common/api.c	15 Apr 2003 08:08:02 -0000	1.12
+++ usr.bin/vi/common/api.c	23 Mar 2006 22:20:31 -0000
@@ -51,8 +51,7 @@
 	gp = __global_list;
 
 	/* Search the displayed list. */
-	for (tsp = gp->dq.cqh_first;
-	    tsp != (void *)&gp->dq; tsp = tsp->q.cqe_next)
+	CIRCLEQ_FOREACH(tsp, &gp->dq, q)
 		if (name == NULL) {
 			if (id == tsp->id)
 				return (tsp);
@@ -60,8 +59,7 @@
 			return (tsp);
 
 	/* Search the hidden list. */
-	for (tsp = gp->hq.cqh_first;
-	    tsp != (void *)&gp->hq; tsp = tsp->q.cqe_next)
+	CIRCLEQ_FOREACH(tsp, &gp->hq, q)
 		if (name == NULL) {
 			if (id == tsp->id)
 				return (tsp);
@@ -214,11 +212,11 @@
 {
 	LMARK *mp;
 
-	mp = sp->ep->marks.lh_first;
+	mp = LIST_FIRST(&sp->ep->marks);
 	if (next)
-		for (; mp != NULL; mp = mp->q.le_next)
+		LIST_FOREACH(mp, &sp->ep->marks, q)
 			if (mp->name == *namep) {
-				mp = mp->q.le_next;
+				mp = LIST_NEXT(mp, q);
 				break;
 			}
 	if (mp == NULL)
Index: usr.bin/vi/common/line.c
===================================================================
RCS file: /space/release/cvs/src/usr.bin/vi/common/line.c,v
retrieving revision 1.7
diff -u -r1.7 line.c
--- usr.bin/vi/common/line.c	8 Jan 2006 21:05:39 -0000	1.7
+++ usr.bin/vi/common/line.c	23 Mar 2006 22:20:31 -0000
@@ -466,7 +466,7 @@
 	 */
 	if (ep->c_nlines != OOBLNO)
 		return (lno <= (F_ISSET(sp, SC_TINPUT) ?
-		    ep->c_nlines + (((TEXT *)sp->tiq.cqh_last)->lno -
+		    ep->c_nlines + (((TEXT *)CIRCLEQ_LAST(&sp->tiq))->lno -
 		    ((TEXT *)CIRCLEQ_FIRST(&sp->tiq))->lno) : ep->c_nlines));
 
 	/* Go get the line. */
@@ -501,7 +501,7 @@
 	if (ep->c_nlines != OOBLNO) {
 		*lnop = ep->c_nlines;
 		if (F_ISSET(sp, SC_TINPUT))
-			*lnop += ((TEXT *)sp->tiq.cqh_last)->lno -
+			*lnop += ((TEXT *)CIRCLEQ_LAST(&sp->tiq))->lno -
 			    ((TEXT *)CIRCLEQ_FIRST(&sp->tiq))->lno;
 		return (0);
 	}
@@ -529,8 +529,8 @@
 
 	/* Return the value. */
 	*lnop = (F_ISSET(sp, SC_TINPUT) &&
-	    ((TEXT *)sp->tiq.cqh_last)->lno > lno ?
-	    ((TEXT *)sp->tiq.cqh_last)->lno : lno);
+	    ((TEXT *)CIRCLEQ_LAST(&sp->tiq))->lno > lno ?
+	    ((TEXT *)CIRCLEQ_LAST(&sp->tiq))->lno : lno);
 	return (0);
 }
 
Index: usr.bin/vi/common/main.c
===================================================================
RCS file: /space/release/cvs/src/usr.bin/vi/common/main.c,v
retrieving revision 1.12
diff -u -r1.12 main.c
--- usr.bin/vi/common/main.c	8 Jan 2006 21:05:39 -0000	1.12
+++ usr.bin/vi/common/main.c	23 Mar 2006 22:20:31 -0000
@@ -464,7 +464,7 @@
 #if defined(DEBUG) || defined(PURIFY) || defined(LIBRARY)
 	{ FREF *frp;
 		/* Free FREF's. */
-		while ((frp = gp->frefq.cqh_first) != (FREF *)&gp->frefq) {
+		while ((frp = CIRCLEQ_FIRST(&gp)) != CIRCLEQ_END(&gp->frefq)) {
 			CIRCLEQ_REMOVE(&gp->frefq, frp, q);
 			if (frp->name != NULL)
 				free(frp->name);
Index: usr.bin/vi/common/put.c
===================================================================
RCS file: /space/release/cvs/src/usr.bin/vi/common/put.c,v
retrieving revision 1.8
diff -u -r1.8 put.c
--- usr.bin/vi/common/put.c	8 Jan 2006 21:05:39 -0000	1.8
+++ usr.bin/vi/common/put.c	23 Mar 2006 22:20:31 -0000
@@ -187,7 +187,7 @@
 		 * Last part of original line; check for space, reset
 		 * the pointer into the buffer.
 		 */
-		ltp = cbp->textq.cqh_last;
+		ltp = CIRCLEQ_LAST(&cbp->textq);
 		len = t - bp;
 		ADD_SPACE_RET(sp, bp, blen, ltp->len + clen);
 		t = bp + len;
Index: usr.bin/vi/ex/ex_global.c
===================================================================
RCS file: /space/release/cvs/src/usr.bin/vi/ex/ex_global.c,v
retrieving revision 1.8
diff -u -r1.8 ex_global.c
--- usr.bin/vi/ex/ex_global.c	8 Jan 2006 21:05:40 -0000	1.8
+++ usr.bin/vi/ex/ex_global.c	23 Mar 2006 22:20:31 -0000
@@ -236,7 +236,7 @@
 		}
 
 		/* If follows the last entry, extend the last entry's range. */
-		if ((rp = ecp->rq.cqh_last) != (void *)&ecp->rq &&
+		if ((rp = CIRCLEQ_LAST(&ecp->rq)) != CIRCLEQ_END(&ecp->rq) &&
 		    rp->stop == start - 1) {
 			++rp->stop;
 			continue;
Index: usr.sbin/afs/src/nnpfs/bsd/nnpfs_node-bsd.c
===================================================================
RCS file: /space/release/cvs/src/usr.sbin/afs/src/nnpfs/bsd/nnpfs_node-bsd.c,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 nnpfs_node-bsd.c
--- usr.sbin/afs/src/nnpfs/bsd/nnpfs_node-bsd.c	5 Aug 2003 08:21:02 -0000	1.1.1.1
+++ usr.sbin/afs/src/nnpfs/bsd/nnpfs_node-bsd.c	24 Mar 2006 00:11:46 -0000
@@ -276,13 +276,6 @@
     return error;
 }
 
-#ifndef LIST_FOREACH
-#define LIST_FOREACH(var, head, field)					\
-	for ((var) = ((head)->lh_first);				\
-		(var);							\
-		(var) = ((var)->field.le_next))
-#endif
-
 void
 vattr2nnpfs_attr(const struct vattr *va, struct nnpfs_attr *xa)
 {
Index: usr.sbin/ypserv/ypserv/ypserv_db.c
===================================================================
RCS file: /space/release/cvs/src/usr.sbin/ypserv/ypserv/ypserv_db.c,v
retrieving revision 1.22
diff -u -r1.22 ypserv_db.c
--- usr.sbin/ypserv/ypserv/ypserv_db.c	21 Dec 2005 01:40:25 -0000	1.22
+++ usr.sbin/ypserv/ypserv/ypserv_db.c	24 Mar 2006 00:07:28 -0000
@@ -147,7 +147,7 @@
 static void
 ypdb_close_last(void)
 {
-	struct opt_map *last = maps.cqh_last;
+	struct opt_map *last = CIRCLEQ_LAST(&maps);
 
 	if (last == (void *)&maps) {
 		yplog("  ypdb_close_last: LRU list is empty!");
Index: sys/adosfs/adutil.c
===================================================================
RCS file: /space/release/cvs/src/sys/adosfs/adutil.c,v
retrieving revision 1.15
diff -u -r1.15 adutil.c
--- sys/adosfs/adutil.c	19 Nov 2005 02:18:00 -0000	1.15
+++ sys/adosfs/adutil.c	23 Mar 2006 20:24:00 -0000
@@ -65,10 +65,8 @@
 
 	hp = &VFSTOADOSFS(mp)->anodetab[AHASH(an)];
 
-	for (;;)
-		for (ap = hp->lh_first; ; ap = ap->link.le_next) {
-			if (ap == NULL)
-				return (NULL);
+	for (;;) {
+		LIST_FOREACH(ap, hp, link) {
 			if (ABLKTOINO(ap->block) == an) {
 				vp = ATOV(ap);
 				simple_lock(&vp->v_interlock);
@@ -77,6 +75,9 @@
 				break;
 			}
 		}
+		if (ap == NULL)
+			return (NULL);
+	}
 	/* NOTREACHED */
 }
 
@@ -96,7 +97,7 @@
 
 	hp = &amp->anodetab[AHASH(ap->block)];
 
-	for (aq = hp->lh_first; aq ; aq = aq->link.le_next) {
+	LIST_FOREACH(aq, hp, link) {
 		if (aq->block == ap->block) {
 			lockmgr(&ap->a_lock, LK_RELEASE, NULL);
 			return (EEXIST);
Index: sys/arch/hppa64/hppa64/autoconf.c
===================================================================
RCS file: /space/release/cvs/src/sys/arch/hppa64/hppa64/autoconf.c,v
retrieving revision 1.4
diff -u -r1.4 autoconf.c
--- sys/arch/hppa64/hppa64/autoconf.c	27 Dec 2005 18:31:09 -0000	1.4
+++ sys/arch/hppa64/hppa64/autoconf.c	23 Mar 2006 20:30:28 -0000
@@ -275,8 +275,7 @@
 #ifdef RAMDISK_HOOKS
 		printf(" %s[a-p]", fakerdrootdev.dv_xname);
 #endif
-		for (dv = alldevs.tqh_first; dv != NULL;
-		    dv = dv->dv_list.tqe_next) {
+		TAILQ_FOREACH(dv, &alldevs, dv_list) {
 			if (dv->dv_class == DV_DISK)
 				printf(" %s[a-p]", dv->dv_xname);
 #ifdef NFSCLIENT
@@ -319,7 +318,7 @@
 		goto gotdisk;
 	}
 #endif
-	for (dv = alldevs.tqh_first; dv != NULL; dv = dv->dv_list.tqe_next) {
+	TAILQ_FOREACH(dv, &alldevs, dv_list) {
 		if (dv->dv_class == DV_DISK &&
 		    strcmp(str, dv->dv_xname) == 0) {
 #ifdef RAMDISK_HOOKS
Index: sys/arch/macppc/stand/alloc.c
===================================================================
RCS file: /space/release/cvs/src/sys/arch/macppc/stand/alloc.c,v
retrieving revision 1.4
diff -u -r1.4 alloc.c
--- sys/arch/macppc/stand/alloc.c	15 Sep 2005 20:42:33 -0000	1.4
+++ sys/arch/macppc/stand/alloc.c	23 Mar 2006 20:44:32 -0000
@@ -114,15 +114,14 @@
 
 #ifdef ALLOC_FIRST_FIT
 	/* scan freelist */
-	for (f = freelist.lh_first; f != NULL && f->size < size;
-	    f = f->list.le_next)
-		/* noop */ ;
+	LIST_FOREACH(f, &freelist, list)
+		if (f->size >= size)
+			break;
 	bestf = f;
 	failed = (bestf == (struct fl *)0);
 #else
 	/* scan freelist */
-	f = freelist.lh_first;
-	while (f != NULL) {
+	LIST_FOREACH(f, &freelist, list) {
 		if (f->size >= size) {
 			if (f->size == size)	/* exact match */
 				goto found;
@@ -133,7 +132,6 @@
 				bestsize = f->size;
 			}
 		}
-		f = f->list.le_next;
 	}
 
 	/* no match in freelist if bestsize unchanged */
@@ -201,13 +199,13 @@
 	struct ml *m;
 
 	/* Release chunks on freelist... */
-	while ((m = freelist.lh_first) != NULL) {
+	for (; (m = LIST_FIRST(&freelist)) != NULL;) {
 		LIST_REMOVE(m, list);
 		OF_release(m, m->size);
 	}
 
 	/* ...and allocated list. */
-	while ((m = allocatedlist.lh_first) != NULL) {
+	for (; (m = LIST_FIRST(&allocated)) != NULL;) {
 		LIST_REMOVE(m, list);
 		OF_release(m, m->size);
 	}
Index: sys/arch/mvme68k/dev/sbic.c
===================================================================
RCS file: /space/release/cvs/src/sys/arch/mvme68k/dev/sbic.c,v
retrieving revision 1.17
diff -u -r1.17 sbic.c
--- sys/arch/mvme68k/dev/sbic.c	3 Dec 2005 18:09:37 -0000	1.17
+++ sys/arch/mvme68k/dev/sbic.c	23 Mar 2006 20:35:22 -0000
@@ -643,7 +643,7 @@
             dosched = 1;    /* start next command */
 
     } else
-    if ( dev->ready_list.tqh_last == &acb->chain.tqe_next ) {
+    if ( dev->ready_list.tqh_last == &TAILQ_NEXT(acb, chain)) {
 
         TAILQ_REMOVE(&dev->ready_list, acb, chain);
 
Index: sys/arch/mvme68k/dev/ssh.c
===================================================================
RCS file: /space/release/cvs/src/sys/arch/mvme68k/dev/ssh.c,v
retrieving revision 1.14
diff -u -r1.14 ssh.c
--- sys/arch/mvme68k/dev/ssh.c	3 Dec 2005 18:09:37 -0000	1.14
+++ sys/arch/mvme68k/dev/ssh.c	23 Mar 2006 20:39:35 -0000
@@ -391,7 +391,7 @@
 			dosched = 1;	/* start next command */
 		--sc->sc_active;
 		SSH_TRACE('d','a',stat,0)
-	} else if (sc->ready_list.tqh_last == &acb->chain.tqe_next) {
+	} else if (sc->ready_list.tqh_last == &TAILQ_NEXT(acb, chain)) {
 		TAILQ_REMOVE(&sc->ready_list, acb, chain);
 		SSH_TRACE('d','r',stat,0)
 	} else {
Index: sys/arch/sparc64/dev/fd.c
===================================================================
RCS file: /space/release/cvs/src/sys/arch/sparc64/dev/fd.c,v
retrieving revision 1.6
diff -u -r1.6 fd.c
--- sys/arch/sparc64/dev/fd.c	15 Mar 2006 20:20:41 -0000	1.6
+++ sys/arch/sparc64/dev/fd.c	23 Mar 2006 20:49:16 -0000
@@ -1078,7 +1078,7 @@
 	struct fdc_softc *fdc;
 	char *s;
 {
-	struct fd_softc *fd = fdc->sc_drives.tqh_first;
+	struct fd_softc *fd = TAILQ_FIRST(&fdc->sc_drives);
 	int n;
 
 	/* Just print last status */
Index: sys/arch/sparc64/stand/ofwboot/alloc.c
===================================================================
RCS file: /space/release/cvs/src/sys/arch/sparc64/stand/ofwboot/alloc.c,v
retrieving revision 1.3
diff -u -r1.3 alloc.c
--- sys/arch/sparc64/stand/ofwboot/alloc.c	14 Mar 2002 03:16:01 -0000	1.3
+++ sys/arch/sparc64/stand/ofwboot/alloc.c	23 Mar 2006 20:49:16 -0000
@@ -112,15 +112,14 @@
 
 #ifdef ALLOC_FIRST_FIT
 	/* scan freelist */
-	for (f = freelist.lh_first; f != NULL && f->size < size;
-	    f = f->list.le_next)
-		/* noop */ ;
+	LIST_FOREACH(f, &freelist, list)
+		if (f->size >= size)
+			break;
 	bestf = f;
 	failed = (bestf == (struct fl *)0);
 #else
 	/* scan freelist */
-	f = freelist.lh_first;
-	while (f != NULL) {
+	LIST_FOREACH(f, &freelist, list) {
 		if (f->size >= size) {
 			if (f->size == size)	/* exact match */
 				goto found;
@@ -131,7 +130,6 @@
 				bestsize = f->size;
 			}
 		}
-		f = f->list.le_next;
 	}
 
 	/* no match in freelist if bestsize unchanged */
@@ -201,13 +199,13 @@
 	struct ml *m;
 
 	/* Release chunks on freelist... */
-	while ((m = freelist.lh_first) != NULL) {
+	for (; (m = TAILQ_FIRST(&freelist)) != NULL;) {
 		LIST_REMOVE(m, list);
 		OF_release(m, m->size);
 	}
 
 	/* ...and allocated list. */
-	while ((m = allocatedlist.lh_first) != NULL) {
+	for (; (m = TAILQ_FIRST(&allocatedlist)) != NULL;) {
 		LIST_REMOVE(m, list);
 		OF_release(m, m->size);
 	}
Index: sys/arch/zaurus/zaurus/autoconf.c
===================================================================
RCS file: /space/release/cvs/src/sys/arch/zaurus/zaurus/autoconf.c,v
retrieving revision 1.5
diff -u -r1.5 autoconf.c
--- sys/arch/zaurus/zaurus/autoconf.c	27 Dec 2005 18:31:11 -0000	1.5
+++ sys/arch/zaurus/zaurus/autoconf.c	23 Mar 2006 23:08:18 -0000
@@ -146,8 +146,7 @@
 
 	if ((dv = parsedisk(str, len, defpart, devp)) == NULL) {
 		printf("use one of:");
-		for (dv = alldevs.tqh_first; dv != NULL;
-		    dv = dv->dv_list.tqe_next) {
+		TAILQ_FOREACH(dv, &alldevs, dv_list) {
 			if (dv->dv_class == DV_DISK)
 				printf(" %s[a-p]", dv->dv_xname);
 #ifdef NFSCLIENT
@@ -177,7 +176,7 @@
 	} else
 		part = defpart;
 
-	for (dv = alldevs.tqh_first; dv != NULL; dv = dv->dv_list.tqe_next) {
+	TAILQ_FOREACH(dv, &alldevs, dv_list) {
 		if (dv->dv_class == DV_DISK &&
 		    strcmp(str, dv->dv_xname) == 0) {
 			majdev = findblkmajor(dv);
Index: sys/dev/microcode/aic7xxx/aicasm_gram.y
===================================================================
RCS file: /space/release/cvs/src/sys/dev/microcode/aic7xxx/aicasm_gram.y,v
retrieving revision 1.13
diff -u -r1.13 aicasm_gram.y
--- sys/dev/microcode/aic7xxx/aicasm_gram.y	28 Apr 2005 10:10:49 -0000	1.13
+++ sys/dev/microcode/aic7xxx/aicasm_gram.y	23 Mar 2006 22:56:23 -0000
@@ -1845,9 +1845,7 @@
 	 * expression are defined for this register.
 	 */
 	if (symbol->info.rinfo->typecheck_masks != FALSE) {
-		for(node = expression->referenced_syms.slh_first;
-		    node != NULL;
-		    node = node->links.sle_next) {
+		SLIST_FOREACH(node, &referenced_syms, links) {
 			if ((node->symbol->type == MASK
 			  || node->symbol->type == FIELD
 			  || node->symbol->type == ENUM
@@ -1943,8 +1941,8 @@
 static int
 is_download_const(expression_t *immed)
 {
-	if ((immed->referenced_syms.slh_first != NULL)
-	 && (immed->referenced_syms.slh_first->symbol->type == DOWNLOAD_CONST))
+	if (SLIST_FIRST(&immed->referenced_syms) != NULL)
+	 && (SLIST_FIRST(&immed->referenced_syms)->symbol->type == DOWNLOAD_CONST))
 		return (TRUE);
 
 	return (FALSE);
Index: sys/dev/microcode/aic7xxx/aicasm_scan.l
===================================================================
RCS file: /space/release/cvs/src/sys/dev/microcode/aic7xxx/aicasm_scan.l,v
retrieving revision 1.9
diff -u -r1.9 aicasm_scan.l
--- sys/dev/microcode/aic7xxx/aicasm_scan.l	18 Sep 2004 19:51:53 -0000	1.9
+++ sys/dev/microcode/aic7xxx/aicasm_scan.l	23 Mar 2006 22:58:54 -0000
@@ -459,9 +459,7 @@
 
 	if (newfile == NULL && type != SOURCE_FILE) {
                 path_entry_t include_dir;
-                for (include_dir = search_path.slh_first;
-                     include_dir != NULL;                
-                     include_dir = include_dir->links.sle_next) {
+		SLIST_FOREACH(include_dir, &search_path, links) {
 			char fullname[PATH_MAX];
 
 			if ((include_dir->quoted_includes_only == TRUE)
@@ -595,7 +593,7 @@
 	if (yyfilename != NULL)
 		free(yyfilename);
 	yyfilename = NULL;
-	include = include_stack.slh_first;
+	include = SLIST_FIRST(&include_stack);
 	if (include != NULL) {
 		yy_switch_to_buffer(include->buffer);
 		yylineno = include->lineno;
Index: sys/netinet6/nd6.c
===================================================================
RCS file: /space/release/cvs/src/sys/netinet6/nd6.c,v
retrieving revision 1.70
diff -u -r1.70 nd6.c
--- sys/netinet6/nd6.c	21 Feb 2006 10:23:25 -0000	1.70
+++ sys/netinet6/nd6.c	24 Mar 2006 00:17:19 -0000
@@ -557,8 +557,7 @@
 	}
 
 	/* expire prefix list */
-	pr = nd_prefix.lh_first;
-	while (pr) {
+	for (pr = LIST_FIRST(&nd_prefix); pr != NULL;) {
 		/*
 		 * check prefix lifetime.
 		 * since pltime is just for autoconf, pltime processing for
@@ -567,7 +566,7 @@
 		if (pr->ndpr_vltime != ND6_INFINITE_LIFETIME &&
 		    time_second - pr->ndpr_lastupdate > pr->ndpr_vltime) {
 			struct nd_prefix *t;
-			t = pr->ndpr_next;
+			t = LIST_NEXT(pr, ndpr_entry);
 
 			/*
 			 * address expiration and prefix expiration are
@@ -577,7 +576,7 @@
 			prelist_remove(pr);
 			pr = t;
 		} else
-			pr = pr->ndpr_next;
+			pr = LIST_NEXT(pr, ndpr_entry);
 	}
 	splx(s);
 }
@@ -618,8 +617,8 @@
 	}
 
 	/* Nuke prefix list entries toward ifp */
-	for (pr = nd_prefix.lh_first; pr; pr = npr) {
-		npr = pr->ndpr_next;
+	for (pr = LIST_FIRST(&nd_prefix); pr != NULL; pr = npr) {
+		npr = LIST_NEXT(pr, ndpr_entry);
 		if (pr->ndpr_ifp == ifp) {
 			/*
 			 * Because if_detach() does *not* release prefixes
@@ -796,7 +795,7 @@
 	 * If the address matches one of our on-link prefixes, it should be a
 	 * neighbor.
 	 */
-	for (pr = nd_prefix.lh_first; pr; pr = pr->ndpr_next) {
+	LIST_FOREACH(pr, &nd_prefix, ndpr_entry) {
 		if (pr->ndpr_ifp != ifp)
 			continue;
 
@@ -1301,7 +1300,7 @@
 		 */
 		bzero(oprl, sizeof(*oprl));
 		s = splsoftnet();
-		pr = nd_prefix.lh_first;
+		pr = LIST_FIRST(&nd_prefix);
 		while (pr && i < PRLSTSIZ) {
 			struct nd_pfxrouter *pfr;
 			int j;
@@ -1314,7 +1313,7 @@
 			oprl->prefix[i].if_index = pr->ndpr_ifp->if_index;
 			oprl->prefix[i].expire = pr->ndpr_expire;
 
-			pfr = pr->ndpr_advrtrs.lh_first;
+			pfr = LIST_FIRST(&pr->ndpr_advrtrs);
 			j = 0;
 			while(pfr) {
 				if (j < DRLSTSIZ) {
@@ -1332,13 +1331,13 @@
 #undef RTRADDR
 				}
 				j++;
-				pfr = pfr->pfr_next;
+				pfr = LIST_NEXT(pfr, pfr_entry);
 			}
 			oprl->prefix[i].advrtrs = j;
 			oprl->prefix[i].origin = PR_ORIG_RA;
 
 			i++;
-			pr = pr->ndpr_next;
+			pr = LIST_NEXT(pr, ndpr_entry);
 		}
 		splx(s);
 
@@ -1372,10 +1371,10 @@
 		struct nd_prefix *pr, *next;
 
 		s = splsoftnet();
-		for (pr = nd_prefix.lh_first; pr; pr = next) {
+		for (pr = LIST_FIRST(&nd_prefix); pr; pr = next) {
 			struct in6_ifaddr *ia, *ia_next;
 
-			next = pr->ndpr_next;
+			next = LIST_NEXT(pr, ndpr_entry);
 
 			if (IN6_IS_ADDR_LINKLOCAL(&pr->ndpr_prefix.sin6_addr))
 				continue; /* XXX */
@@ -2110,7 +2109,7 @@
 	}
 	l = 0;
 
-	for (pr = nd_prefix.lh_first; pr; pr = pr->ndpr_next) {
+	LIST_FOREACH(pr, &nd_prefix, ndpr_entry) {
 		u_short advrtrs;
 		size_t advance;
 		struct sockaddr_in6 *sin6;
@@ -2152,8 +2151,7 @@
 			p->flags = pr->ndpr_stateflags;
 			p->origin = PR_ORIG_RA;
 			advrtrs = 0;
-			for (pfr = pr->ndpr_advrtrs.lh_first; pfr;
-			     pfr = pfr->pfr_next) {
+			LIST_FOREACH(pfr, &pr->ndpr_advrtrs, pfr_entry) {
 				if ((void *)&sin6[advrtrs + 1] > (void *)pe) {
 					advrtrs++;
 					continue;
@@ -2170,8 +2168,7 @@
 		}
 		else {
 			advrtrs = 0;
-			for (pfr = pr->ndpr_advrtrs.lh_first; pfr;
-			     pfr = pfr->pfr_next)
+			LIST_FOREACH(pfr, &pr->ndpr_advrtrs, pfr_entry)
 				advrtrs++;
 		}
 
Index: sys/netinet6/nd6.h
===================================================================
RCS file: /space/release/cvs/src/sys/netinet6/nd6.h,v
retrieving revision 1.25
diff -u -r1.25 nd6.h
--- sys/netinet6/nd6.h	8 Jul 2003 21:43:18 -0000	1.25
+++ sys/netinet6/nd6.h	24 Mar 2006 00:02:30 -0000
@@ -264,8 +264,6 @@
 	int	ndpr_refcnt;	/* reference couter from addresses */
 };
 
-#define ndpr_next		ndpr_entry.le_next
-
 #define ndpr_raf		ndpr_flags
 #define ndpr_raf_onlink		ndpr_flags.onlink
 #define ndpr_raf_auto		ndpr_flags.autonomous
@@ -299,7 +297,6 @@
 
 struct nd_pfxrouter {
 	LIST_ENTRY(nd_pfxrouter) pfr_entry;
-#define pfr_next pfr_entry.le_next
 	struct nd_defrouter *router;
 };
 
Index: sys/netinet6/nd6_rtr.c
===================================================================
RCS file: /space/release/cvs/src/sys/netinet6/nd6_rtr.c,v
retrieving revision 1.37
diff -u -r1.37 nd6_rtr.c
--- sys/netinet6/nd6_rtr.c	22 Mar 2006 14:37:45 -0000	1.37
+++ sys/netinet6/nd6_rtr.c	24 Mar 2006 00:18:15 -0000
@@ -509,7 +509,7 @@
 	/*
 	 * Also delete all the pointers to the router in each prefix lists.
 	 */
-	for (pr = nd_prefix.lh_first; pr; pr = pr->ndpr_next) {
+	LIST_FOREACH(pr, &nd_prefix, ndpr_entry) {
 		struct nd_pfxrouter *pfxrtr;
 		if ((pfxrtr = pfxrtr_lookup(pr, dr)) != NULL)
 			pfxrtr_del(pfxrtr);
@@ -826,7 +826,7 @@
 {
 	struct nd_pfxrouter *search;
 
-	for (search = pr->ndpr_advrtrs.lh_first; search; search = search->pfr_next) {
+	LIST_FOREACH(search, &pr->ndpr_advrtrs, pfr_entry) {
 		if (search->router == dr)
 			break;
 	}
@@ -866,7 +866,7 @@
 {
 	struct nd_prefix *search;
 
-	for (search = nd_prefix.lh_first; search; search = search->ndpr_next) {
+	LIST_FOREACH(search, &nd_prefix, ndpr_entry) {
 		if (pr->ndpr_ifp == search->ndpr_ifp &&
 		    pr->ndpr_plen == search->ndpr_plen &&
 		    in6_are_prefix_equal(&pr->ndpr_prefix.sin6_addr,
@@ -930,7 +930,7 @@
 prelist_remove(pr)
 	struct nd_prefix *pr;
 {
-	struct nd_pfxrouter *pfr, *next;
+	struct nd_pfxrouter *pfr;
 	int e, s;
 
 	/* make sure to invalidate the prefix until it is really freed. */
@@ -962,9 +962,7 @@
 	LIST_REMOVE(pr, ndpr_entry);
 
 	/* free list of routers that adversed the prefix */
-	for (pfr = pr->ndpr_advrtrs.lh_first; pfr; pfr = next) {
-		next = pfr->pfr_next;
-
+	for (; (pfr = LIST_FIRST(&pr->ndpr_advrtrs)) != NULL;) { 
 		free(pfr, M_IP6NDP);
 	}
 	splx(s);
@@ -1276,7 +1274,7 @@
 	 * Check if there is a prefix that has a reachable advertising
 	 * router.
 	 */
-	for (pr = nd_prefix.lh_first; pr; pr = pr->ndpr_next) {
+	LIST_FOREACH(pr, &nd_prefix, ndpr_entry) {
 		if (pr->ndpr_raf_onlink && find_pfxlist_reachable_router(pr))
 			break;
 	}
@@ -1290,7 +1288,7 @@
 		 * Detach prefixes which have no reachable advertising
 		 * router, and attach other prefixes.
 		 */
-		for (pr = nd_prefix.lh_first; pr; pr = pr->ndpr_next) {
+		LIST_FOREACH(pr, &nd_prefix, ndpr_entry) {
 			/* XXX: a link-local prefix should never be detached */
 			if (IN6_IS_ADDR_LINKLOCAL(&pr->ndpr_prefix.sin6_addr))
 				continue;
@@ -1311,7 +1309,7 @@
 		}
 	} else {
 		/* there is no prefix that has a reachable router */
-		for (pr = nd_prefix.lh_first; pr; pr = pr->ndpr_next) {
+		LIST_FOREACH(pr, &nd_prefix, ndpr_entry) {
 			if (IN6_IS_ADDR_LINKLOCAL(&pr->ndpr_prefix.sin6_addr))
 				continue;
 
@@ -1331,7 +1329,7 @@
 	 * interfaces.  Such cases will be handled in nd6_prefix_onlink,
 	 * so we don't have to care about them.
 	 */
-	for (pr = nd_prefix.lh_first; pr; pr = pr->ndpr_next) {
+	LIST_FOREACH(pr, &nd_prefix, ndpr_entry) {	
 		int e;
 
 		if (IN6_IS_ADDR_LINKLOCAL(&pr->ndpr_prefix.sin6_addr))
@@ -1438,7 +1436,7 @@
 	 * Although such a configuration is expected to be rare, we explicitly
 	 * allow it.
 	 */
-	for (opr = nd_prefix.lh_first; opr; opr = opr->ndpr_next) {
+	LIST_FOREACH(opr, &nd_prefix, ndpr_entry) {
 		if (opr == pr)
 			continue;
 
@@ -1563,7 +1561,7 @@
 		 * If there's one, try to make the prefix on-link on the
 		 * interface.
 		 */
-		for (opr = nd_prefix.lh_first; opr; opr = opr->ndpr_next) {
+		LIST_FOREACH(opr, &nd_prefix, ndpr_entry) {
 			if (opr == pr)
 				continue;
 
Index: sys/ufs/lfs/lfs_segment.c
===================================================================
RCS file: /space/release/cvs/src/sys/ufs/lfs/lfs_segment.c,v
retrieving revision 1.16
diff -u -r1.16 lfs_segment.c
--- sys/ufs/lfs/lfs_segment.c	5 Mar 2006 21:48:57 -0000	1.16
+++ sys/ufs/lfs/lfs_segment.c	23 Mar 2006 22:36:41 -0000
@@ -160,7 +160,7 @@
 /* BEGIN HACK */
 #define		VN_OFFSET	(((void *)&vp->v_mntvnodes.le_next) - (void *)vp)
 #define		BACK_VP(VP)	((struct vnode *)(((void *)VP->v_mntvnodes.le_prev) - VN_OFFSET))
-#define		BEG_OF_VLIST	((struct vnode *)(((void *)&mp->mnt_vnodelist.lh_first) - VN_OFFSET))
+#define		BEG_OF_VLIST	((struct vnode *)(((void *)&TAILQ_FIRST(&mp->mnt_vnodelist)) - VN_OFFSET))
 
 /* Find last vnode. */
 loop:	for (vp = LIST_FIRST(&mp->mnt_vnodelist);
@@ -541,7 +541,7 @@
 /* BEGIN HACK */
 #define	BUF_OFFSET	(((void *)&bp->b_vnbufs.le_next) - (void *)bp)
 #define	BACK_BUF(BP)	((struct buf *)(((void *)BP->b_vnbufs.le_prev) - BUF_OFFSET))
-#define	BEG_OF_LIST	((struct buf *)(((void *)&vp->v_dirtyblkhd.lh_first) - BUF_OFFSET))
+#define	BEG_OF_LIST	((struct buf *)(((void *)&TAILQ_FIRST(&vp->v_dirtyblkhd)) - BUF_OFFSET))
 
 
 /*loop:       LIST_FOREACH(bp, &vp->v_dirtyblkhd, b_vnbufs) {*/
Index: sys/xfs/xfs_node-bsd.c
===================================================================
RCS file: /space/release/cvs/src/sys/xfs/xfs_node-bsd.c,v
retrieving revision 1.8
diff -u -r1.8 xfs_node-bsd.c
--- sys/xfs/xfs_node-bsd.c	8 Nov 2003 19:17:28 -0000	1.8
+++ sys/xfs/xfs_node-bsd.c	23 Mar 2006 23:57:01 -0000
@@ -275,13 +275,6 @@
     return error;
 }
 
-#ifndef LIST_FOREACH
-#define LIST_FOREACH(var, head, field)					\
-	for ((var) = ((head)->lh_first);				\
-		(var);							\
-		(var) = ((var)->field.le_next))
-#endif
-
 void
 vattr2xfs_attr(const struct vattr *va, struct xfs_attr *xa)
 {



Visit your host, monkey.org