mpool — shared memory buffer pool
#include <db.h> #include <mpool.h>
| MPOOL
            *mpool_open( | DBT *key, | 
| int fd, | |
| pgno_t pagesize, | |
| pgno_t maxcache ); | 
| void
            mpool_filter( | MPOOL *mp, | 
| void (*pgin) (void *, pgno_t,
            void *), | |
| void (*pgout) (void *, pgno_t,
            void *), | |
| void *pgcookie ); | 
| void
            *mpool_new( | MPOOL *mp, | 
| pgno_t *pgnoaddr ); | 
| void
            *mpool_get( | MPOOL *mp, | 
| pgno_t pgno, | |
| unsigned int flags ); | 
| int
            mpool_put( | MPOOL *mp, | 
| void *pgaddr, | |
| unsigned int flags ); | 
| int
            mpool_sync( | MPOOL *mp ); | 
| int
            mpool_close( | MPOOL *mp ); | 
Mpool is the library
      interface intended to provide page oriented buffer management
      of files. The buffers may be shared between processes.
The function mpool_open()
      initializes a memory pool. The key argument is the byte string
      used to negotiate between multiple processes wishing to share
      buffers. If the file buffers are mapped in shared memory, all
      processes using the same key will share the buffers. If
      key is NULL, the
      buffers are mapped into private memory. The fd argument is a file
      descriptor for the underlying file, which must be seekable.
      If key is non-NULL
      and matches a file already being mapped, the fd argument is ignored.
The pagesize
      argument is the size, in bytes, of the pages into which the
      file is broken up. The maxcache argument is the
      maximum number of pages from the underlying file to cache at
      any one time. This value is not relative to the number of
      processes which share a file's buffers, but will be the
      largest value specified by any of the processes sharing the
      file.
The mpool_filter() function
      is intended to make transparent input and output processing
      of the pages possible. If the pgin function is specified, it
      is called each time a buffer is read into the memory pool
      from the backing file. If the pgout function is specified, it
      is called each time a buffer is written into the backing
      file. Both functions are called with the pgcookie pointer, the page
      number and a pointer to the page to being read or
      written.
The function mpool_new()
      takes an MPOOL pointer and an
      address as arguments. If a new page can be allocated, a
      pointer to the page is returned and the page number is stored
      into the pgnoaddr
      address. Otherwise, NULL is returned and errno is set.
The function mpool_get()
      takes an MPOOL pointer and a
      page number as arguments. If the page exists, a pointer to
      the page is returned. Otherwise, NULL is returned and
      errno is set. The flags argument is not currently
      used.
The function mpool_put()
      unpins the page referenced by pgaddr. pgaddr must be an address
      previously returned by mpool_get() or mpool_new(). The flag value is specified by
      ORing any of the following values:
MPOOL_DIRTYThe page has been modified and needs to be written to the backing file.
mpool_put() returns 0 on
      success and −1 if an error occurs.
The function mpool_sync()
      writes all modified pages associated with the MPOOL pointer to the backing file.
      mpool_sync() returns 0 on
      success and −1 if an error occurs.
The mpool_close() function
      free's up any allocated memory associated with the memory
      pool cookie. Modified pages are not written to the backing file.
      mpool_close() returns 0 on
      success and −1 if an error occurs.
The mpool_open() function
      may fail and set errno for any
      of the errors specified for the library routine malloc(3).
The mpool_get() function may
      fail and set errno for the
      following:
The requested record doesn't exist.
The mpool_new() and
      mpool_get() functions may fail
      and set errno for any of the
      errors specified for the library routines read(2), write(2), and malloc(3).
The mpool_sync() function
      may fail and set errno for any
      of the errors specified for the library routine write(2).
The mpool_close() function
      may fail and set errno for any
      of the errors specified for the library routine free(3).
This page is part of release 3.35 of the Linux man-pages project. A
      description of the project, and information about reporting
      bugs, can be found at http://man7.org/linux/man-pages/.
| Copyright (c) 1990, 1993 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. All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by the University of California, Berkeley and its contributors. 4. 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.3 8.1 (Berkeley) 6/4/93 |