CVS commit: src/lib/libc/db/mpool
Module Name:src Committed By: christos Date: Sat Dec 14 18:04:00 UTC 2013 Modified Files: src/lib/libc/db/mpool: mpool.c Log Message: knf, reduce pointer gymnastics To generate a diff of this commit: cvs rdiff -u -r1.20 -r1.21 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.20 src/lib/libc/db/mpool/mpool.c:1.21 --- src/lib/libc/db/mpool/mpool.c:1.20 Fri Nov 22 11:25:51 2013 +++ src/lib/libc/db/mpool/mpool.c Sat Dec 14 13:04:00 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: mpool.c,v 1.20 2013/11/22 16:25:51 christos Exp $ */ +/* $NetBSD: mpool.c,v 1.21 2013/12/14 18:04:00 christos Exp $ */ /*- * Copyright (c) 1990, 1993, 1994 @@ -34,7 +34,7 @@ #endif #include sys/cdefs.h -__RCSID($NetBSD: mpool.c,v 1.20 2013/11/22 16:25:51 christos Exp $); +__RCSID($NetBSD: mpool.c,v 1.21 2013/12/14 18:04:00 christos Exp $); #include namespace.h #include sys/queue.h @@ -84,14 +84,14 @@ mpool_open(void *key, int fd, pgno_t pag * We don't currently handle pipes, although we should. */ if (fstat(fd, sb)) - return (NULL); + return NULL; if (!S_ISREG(sb.st_mode)) { errno = ESPIPE; - return (NULL); + return NULL; } /* Allocate and initialize the MPOOL cookie. */ - if ((mp = (MPOOL *)calloc(1, sizeof(MPOOL))) == NULL) + if ((mp = calloc(1, sizeof(*mp))) == NULL) return (NULL); TAILQ_INIT(mp-lqh); for (entry = 0; entry HASHSIZE; ++entry) @@ -100,7 +100,7 @@ mpool_open(void *key, int fd, pgno_t pag mp-npages = (pgno_t)(sb.st_size / pagesize); mp-pagesize = pagesize; mp-fd = fd; - return (mp); + return mp; } /* @@ -139,14 +139,14 @@ mpool_new( MPOOL *mp, pgno_t *pgnoaddr) * and return. */ if ((bp = mpool_bkt(mp)) == NULL) - return (NULL); + return NULL; *pgnoaddr = bp-pgno = mp-npages++; bp-flags = MPOOL_PINNED; head = mp-hqh[HASHKEY(bp-pgno)]; TAILQ_INSERT_HEAD(head, bp, hq); TAILQ_INSERT_TAIL(mp-lqh, bp, q); - return (bp-page); + return bp-page; } /* @@ -165,7 +165,7 @@ mpool_get(MPOOL *mp, pgno_t pgno, u_int /* Check for attempt to retrieve a non-existent page. */ if (pgno = mp-npages) { errno = EINVAL; - return (NULL); + return NULL; } #ifdef STATISTICS @@ -193,12 +193,12 @@ mpool_get(MPOOL *mp, pgno_t pgno, u_int /* Return a pinned page. */ bp-flags |= MPOOL_PINNED; - return (bp-page); + return bp-page; } /* Get a page from the cache. */ if ((bp = mpool_bkt(mp)) == NULL) - return (NULL); + return NULL; /* Read in the contents. */ #ifdef STATISTICS @@ -208,7 +208,7 @@ mpool_get(MPOOL *mp, pgno_t pgno, u_int if ((nr = pread(mp-fd, bp-page, (size_t)mp-pagesize, off)) != (int)mp-pagesize) { if (nr = 0) errno = EFTYPE; - return (NULL); + return NULL; } /* Set the page number, pin the page. */ @@ -227,7 +227,7 @@ mpool_get(MPOOL *mp, pgno_t pgno, u_int if (mp-pgin != NULL) (mp-pgin)(mp-pgcookie, bp-pgno, bp-page); - return (bp-page); + return bp-page; } /* @@ -243,7 +243,7 @@ mpool_put(MPOOL *mp, void *page, u_int f #ifdef STATISTICS ++mp-pageput; #endif - bp = (BKT *)(void *)((char *)page - sizeof(BKT)); + bp = (void *)((intptr_t)page - sizeof(BKT)); #ifdef DEBUG if (!(bp-flags MPOOL_PINNED)) { (void)fprintf(stderr, @@ -274,7 +274,7 @@ mpool_close(MPOOL *mp) /* Free the MPOOL cookie. */ free(mp); - return (RET_SUCCESS); + return RET_SUCCESS; } /* @@ -290,10 +290,10 @@ mpool_sync(MPOOL *mp) TAILQ_FOREACH(bp, mp-lqh, q) if (bp-flags MPOOL_DIRTY mpool_write(mp, bp) == RET_ERROR) - return (RET_ERROR); + return RET_ERROR; /* Sync the file descriptor. */ - return (fsync(mp-fd) ? RET_ERROR : RET_SUCCESS); + return fsync(mp-fd) ? RET_ERROR : RET_SUCCESS; } /* @@ -321,7 +321,7 @@ mpool_bkt(MPOOL *mp) /* Flush if dirty. */ if (bp-flags MPOOL_DIRTY mpool_write(mp, bp) == RET_ERROR) -return (NULL); +return NULL; #ifdef STATISTICS ++mp-pageflush; #endif @@ -337,20 +337,20 @@ mpool_bkt(MPOOL *mp) bp-page = spage; } #endif - return (bp); + return bp; } new: if ((bp = calloc(1, (size_t)(sizeof(BKT) + mp-pagesize))) == NULL) - return (NULL); + return NULL; #ifdef STATISTICS ++mp-pagealloc; #endif #if defined(DEBUG) || defined(PURIFY) (void)memset(bp, 0xff, (size_t)(sizeof(BKT) + mp-pagesize)); #endif - bp-page = (char *)(void *)bp + sizeof(BKT); + bp-page = (void *)((intptr_t)bp + sizeof(BKT)); ++mp-curcache; - return (bp); + return bp; } /* @@ -371,8 +371,9 @@ mpool_write(MPOOL *mp, BKT *bp) (mp-pgout)(mp-pgcookie, bp-pgno, bp-page); off = mp-pagesize * bp-pgno; - if (pwrite(mp-fd, bp-page, (size_t)mp-pagesize, off) != (int)mp-pagesize) - return (RET_ERROR); + if (pwrite(mp-fd, bp-page, (size_t)mp-pagesize, off) != + (ssize_t)mp-pagesize) + return RET_ERROR; /* *
CVS commit: src/lib/libc/db/mpool
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);