pkgsrc-Changes-HG archive

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

[pkgsrc/trunk]: pkgsrc/pkgtools/libnbcompat/files/nbcompat Provide and use lo...



details:   https://anonhg.NetBSD.org/pkgsrc/rev/162ffcd82bdc
branches:  trunk
changeset: 549026:162ffcd82bdc
user:      joerg <joerg%pkgsrc.org@localhost>
date:      Sun Oct 26 12:51:59 2008 +0000

description:
Provide and use local mpool.h.

diffstat:

 pkgtools/libnbcompat/files/db/btree/btree.h |    4 +-
 pkgtools/libnbcompat/files/db/mpool/mpool.c |    6 +-
 pkgtools/libnbcompat/files/nbcompat/mpool.h |  103 ++++++++++++++++++++++++++++
 3 files changed, 108 insertions(+), 5 deletions(-)

diffs (152 lines):

diff -r e7cc8ff2510f -r 162ffcd82bdc pkgtools/libnbcompat/files/db/btree/btree.h
--- a/pkgtools/libnbcompat/files/db/btree/btree.h       Sun Oct 26 12:48:48 2008 +0000
+++ b/pkgtools/libnbcompat/files/db/btree/btree.h       Sun Oct 26 12:51:59 2008 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: btree.h,v 1.1 2008/10/10 00:21:43 joerg Exp $  */
+/*     $NetBSD: btree.h,v 1.2 2008/10/26 12:51:59 joerg Exp $  */
 /*     NetBSD: btree.h,v 1.16 2008/08/26 21:18:38 joerg Exp    */
 
 /*-
@@ -44,7 +44,7 @@
 #define        F_CLR(p, f)     (p)->flags &= ~(f)
 #define        F_ISSET(p, f)   ((p)->flags & (f))
 
-#include <mpool.h>
+#include <nbcompat/mpool.h>
 
 #define        DEFMINKEYPAGE   (2)             /* Minimum keys per page */
 #define        MINCACHE        (5)             /* Minimum cached pages */
diff -r e7cc8ff2510f -r 162ffcd82bdc pkgtools/libnbcompat/files/db/mpool/mpool.c
--- a/pkgtools/libnbcompat/files/db/mpool/mpool.c       Sun Oct 26 12:48:48 2008 +0000
+++ b/pkgtools/libnbcompat/files/db/mpool/mpool.c       Sun Oct 26 12:51:59 2008 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: mpool.c,v 1.1 2008/10/10 00:21:44 joerg Exp $  */
+/*     $NetBSD: mpool.c,v 1.2 2008/10/26 12:52:00 joerg Exp $  */
 /*     NetBSD: mpool.c,v 1.18 2008/09/11 12:58:00 joerg Exp    */
 
 /*-
@@ -33,7 +33,7 @@
 #include <nbcompat.h>
 #include <nbcompat/cdefs.h>
 
-__RCSID("$NetBSD: mpool.c,v 1.1 2008/10/10 00:21:44 joerg Exp $");
+__RCSID("$NetBSD: mpool.c,v 1.2 2008/10/26 12:52:00 joerg Exp $");
 
 #include <nbcompat/queue.h>
 #include <sys/stat.h>
@@ -47,7 +47,7 @@
 #include <nbcompat/db.h>
 
 #define        __MPOOLINTERFACE_PRIVATE
-#include <mpool.h>
+#include <nbcompat/mpool.h>
 
 #ifdef __weak_alias
 __weak_alias(mpool_close,_mpool_close)
diff -r e7cc8ff2510f -r 162ffcd82bdc pkgtools/libnbcompat/files/nbcompat/mpool.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/pkgtools/libnbcompat/files/nbcompat/mpool.h       Sun Oct 26 12:51:59 2008 +0000
@@ -0,0 +1,103 @@
+/*     $NetBSD: mpool.h,v 1.1 2008/10/26 12:52:00 joerg Exp $  */
+
+/*-
+ * Copyright (c) 1991, 1993, 1994
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *     @(#)mpool.h     8.2 (Berkeley) 7/14/94
+ */
+
+#ifndef _NBCOMPAT_MPOOL_H_
+#define _NBCOMPAT_MPOOL_H_
+
+#include <nbcompat/cdefs.h>
+#include <nbcompat/queue.h>
+
+/*
+ * The memory pool scheme is a simple one.  Each in-memory page is referenced
+ * by a bucket which is threaded in up to two of three ways.  All active pages
+ * are threaded on a hash chain (hashed by page number) and an lru chain.
+ * Inactive pages are threaded on a free chain.  Each reference to a memory
+ * pool is handed an opaque MPOOL cookie which stores all of this information.
+ */
+#define        HASHSIZE        128
+#define        HASHKEY(pgno)   ((pgno - 1) % HASHSIZE)
+
+/* The BKT structures are the elements of the queues. */
+typedef struct _bkt {
+       CIRCLEQ_ENTRY(_bkt) hq;         /* hash queue */
+       CIRCLEQ_ENTRY(_bkt) q;          /* lru queue */
+       void    *page;                  /* page */
+       pgno_t   pgno;                  /* page number */
+
+#define        MPOOL_DIRTY     0x01            /* page needs to be written */
+#define        MPOOL_PINNED    0x02            /* page is pinned into memory */
+       uint8_t flags;                  /* flags */
+} BKT;
+
+typedef struct MPOOL {
+       CIRCLEQ_HEAD(_lqh, _bkt) lqh;   /* lru queue head */
+                                       /* hash queue array */
+       CIRCLEQ_HEAD(_hqh, _bkt) hqh[HASHSIZE];
+       pgno_t  curcache;               /* current number of cached pages */
+       pgno_t  maxcache;               /* max number of cached pages */
+       pgno_t  npages;                 /* number of pages in the file */
+       unsigned long   pagesize;               /* file page size */
+       int     fd;                     /* file descriptor */
+                                       /* page in conversion routine */
+       void    (*pgin)(void *, pgno_t, void *);
+                                       /* page out conversion routine */
+       void    (*pgout)(void *, pgno_t, void *);
+       void    *pgcookie;              /* cookie for page in/out routines */
+#ifdef STATISTICS
+       unsigned long   cachehit;
+       unsigned long   cachemiss;
+       unsigned long   pagealloc;
+       unsigned long   pageflush;
+       unsigned long   pageget;
+       unsigned long   pagenew;
+       unsigned long   pageput;
+       unsigned long   pageread;
+       unsigned long   pagewrite;
+#endif
+} MPOOL;
+
+__BEGIN_DECLS
+MPOOL  *mpool_open(void *, int, pgno_t, pgno_t);
+void    mpool_filter(MPOOL *, void (*)(void *, pgno_t, void *),
+           void (*)(void *, pgno_t, void *), void *);
+void   *mpool_new(MPOOL *, pgno_t *);
+void   *mpool_get(MPOOL *, pgno_t, unsigned int);
+int     mpool_put(MPOOL *, void *, unsigned int);
+int     mpool_sync(MPOOL *);
+int     mpool_close(MPOOL *);
+#ifdef STATISTICS
+void    mpool_stat(MPOOL *);
+#endif
+__END_DECLS
+
+#endif /* _MPOOL_H_ */



Home | Main Index | Thread Index | Old Index