Module Name:    src
Committed By:   christos
Date:           Fri Nov 22 16:25:51 UTC 2013

Modified Files:
        src/lib/libc/db/mpool: mpool.c

Log Message:
switch from circleq to tailq, from FreeBSD


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/lib/libc/db/mpool/mpool.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libc/db/mpool/mpool.c
diff -u src/lib/libc/db/mpool/mpool.c:1.19 src/lib/libc/db/mpool/mpool.c:1.20
--- src/lib/libc/db/mpool/mpool.c:1.19	Wed Apr 22 14:44:06 2009
+++ src/lib/libc/db/mpool/mpool.c	Fri Nov 22 11:25:51 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: mpool.c,v 1.19 2009/04/22 18:44:06 christos Exp $	*/
+/*	$NetBSD: mpool.c,v 1.20 2013/11/22 16:25:51 christos Exp $	*/
 
 /*-
  * Copyright (c) 1990, 1993, 1994
@@ -34,7 +34,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__RCSID("$NetBSD: mpool.c,v 1.19 2009/04/22 18:44:06 christos Exp $");
+__RCSID("$NetBSD: mpool.c,v 1.20 2013/11/22 16:25:51 christos Exp $");
 
 #include "namespace.h"
 #include <sys/queue.h>
@@ -93,9 +93,9 @@ mpool_open(void *key, int fd, pgno_t pag
 	/* Allocate and initialize the MPOOL cookie. */
 	if ((mp = (MPOOL *)calloc(1, sizeof(MPOOL))) == NULL)
 		return (NULL);
-	CIRCLEQ_INIT(&mp->lqh);
+	TAILQ_INIT(&mp->lqh);
 	for (entry = 0; entry < HASHSIZE; ++entry)
-		CIRCLEQ_INIT(&mp->hqh[entry]);
+		TAILQ_INIT(&mp->hqh[entry]);
 	mp->maxcache = maxcache;
 	mp->npages = (pgno_t)(sb.st_size / pagesize);
 	mp->pagesize = pagesize;
@@ -144,8 +144,8 @@ mpool_new( MPOOL *mp, pgno_t *pgnoaddr)
 	bp->flags = MPOOL_PINNED;
 
 	head = &mp->hqh[HASHKEY(bp->pgno)];
-	CIRCLEQ_INSERT_HEAD(head, bp, hq);
-	CIRCLEQ_INSERT_TAIL(&mp->lqh, bp, q);
+	TAILQ_INSERT_HEAD(head, bp, hq);
+	TAILQ_INSERT_TAIL(&mp->lqh, bp, q);
 	return (bp->page);
 }
 
@@ -186,10 +186,10 @@ mpool_get(MPOOL *mp, pgno_t pgno, u_int 
 		 * of the lru chain.
 		 */
 		head = &mp->hqh[HASHKEY(bp->pgno)];
-		CIRCLEQ_REMOVE(head, bp, hq);
-		CIRCLEQ_INSERT_HEAD(head, bp, hq);
-		CIRCLEQ_REMOVE(&mp->lqh, bp, q);
-		CIRCLEQ_INSERT_TAIL(&mp->lqh, bp, q);
+		TAILQ_REMOVE(head, bp, hq);
+		TAILQ_INSERT_HEAD(head, bp, hq);
+		TAILQ_REMOVE(&mp->lqh, bp, q);
+		TAILQ_INSERT_TAIL(&mp->lqh, bp, q);
 
 		/* Return a pinned page. */
 		bp->flags |= MPOOL_PINNED;
@@ -220,8 +220,8 @@ mpool_get(MPOOL *mp, pgno_t pgno, u_int 
 	 * of the lru chain.
 	 */
 	head = &mp->hqh[HASHKEY(bp->pgno)];
-	CIRCLEQ_INSERT_HEAD(head, bp, hq);
-	CIRCLEQ_INSERT_TAIL(&mp->lqh, bp, q);
+	TAILQ_INSERT_HEAD(head, bp, hq);
+	TAILQ_INSERT_TAIL(&mp->lqh, bp, q);
 
 	/* Run through the user's filter. */
 	if (mp->pgin != NULL)
@@ -266,8 +266,9 @@ mpool_close(MPOOL *mp)
 	BKT *bp;
 
 	/* Free up any space allocated to the lru pages. */
-	while ((bp = mp->lqh.cqh_first) != (void *)&mp->lqh) {
-		CIRCLEQ_REMOVE(&mp->lqh, mp->lqh.cqh_first, q);
+	while (!TAILQ_EMPTY(&mp->lqh)) {
+		bp = TAILQ_FIRST(&mp->lqh);
+		TAILQ_REMOVE(&mp->lqh, bp, q);
 		free(bp);
 	}
 
@@ -286,8 +287,7 @@ mpool_sync(MPOOL *mp)
 	BKT *bp;
 
 	/* Walk the lru chain, flushing any dirty pages to disk. */
-	for (bp = mp->lqh.cqh_first;
-	    bp != (void *)&mp->lqh; bp = bp->q.cqe_next)
+	TAILQ_FOREACH(bp, &mp->lqh, q)
 		if (bp->flags & MPOOL_DIRTY &&
 		    mpool_write(mp, bp) == RET_ERROR)
 			return (RET_ERROR);
@@ -316,8 +316,7 @@ mpool_bkt(MPOOL *mp)
 	 * off any lists.  If we don't find anything we grow the cache anyway.
 	 * The cache never shrinks.
 	 */
-	for (bp = mp->lqh.cqh_first;
-	    bp != (void *)&mp->lqh; bp = bp->q.cqe_next)
+	TAILQ_FOREACH(bp, &mp->lqh, q)
 		if (!(bp->flags & MPOOL_PINNED)) {
 			/* Flush if dirty. */
 			if (bp->flags & MPOOL_DIRTY &&
@@ -328,8 +327,8 @@ mpool_bkt(MPOOL *mp)
 #endif
 			/* Remove from the hash and lru queues. */
 			head = &mp->hqh[HASHKEY(bp->pgno)];
-			CIRCLEQ_REMOVE(head, bp, hq);
-			CIRCLEQ_REMOVE(&mp->lqh, bp, q);
+			TAILQ_REMOVE(head, bp, hq);
+			TAILQ_REMOVE(&mp->lqh, bp, q);
 #ifdef DEBUG
 			{
 				void *spage = bp->page;
@@ -399,7 +398,7 @@ mpool_look(MPOOL *mp, pgno_t pgno)
 	BKT *bp;
 
 	head = &mp->hqh[HASHKEY(pgno)];
-	for (bp = head->cqh_first; bp != (void *)head; bp = bp->hq.cqe_next)
+	TAILQ_FOREACH(bp, head, hq)
 		if (bp->pgno == pgno) {
 #ifdef STATISTICS
 			++mp->cachehit;
@@ -443,8 +442,7 @@ mpool_stat(mp)
 
 	sep = "";
 	cnt = 0;
-	for (bp = mp->lqh.cqh_first;
-	    bp != (void *)&mp->lqh; bp = bp->q.cqe_next) {
+	TAILQ_FOREACH(bp, &mp->lqh, q) {
 		(void)fprintf(stderr, "%s%d", sep, bp->pgno);
 		if (bp->flags & MPOOL_DIRTY)
 			(void)fprintf(stderr, "d");

Reply via email to