File Page Buffering(libfmpool.a)
=================================

    This library is NOT officially supported on all platforms
    and has not been extensively tested. As such it is provided as is.
 
    The file page buffering allows the file to be mapped to user memory on 
    a per page basis i.e a memory pool of the file. With regards to the 
    file system, page sizes can be allocated based on the file system page-size 
    or if the user wants in some multiple of the file system page-size. This 
    allows for fewer pages to be managed along with accommodating the users file
    usage pattern.

    The current version supports setting the page-size and number of pages
    in the memory pool through user C-routines. The default is 8192 bytes 
    for page-size and 1 for number of pages in the pool.

    Two user C-routines are provided: one to set the values for page-size and
    number of pages to cache, and the other to inquire the current values being 
    used for the pagesize and number of pages cached.

    Routines:(The names may change in the future...)
    -------------------------------------------------
    MPset(int pagesize, int maxcache, int flags)
    --------------------------------------------
    o  Set the pagesize and maximum number of pages to cache on the next
       open/create of a file. A pagesize that is a power of 2 is recommended.
       'pagesize' must be greater than MIN_PAGESIZE(512) bytes and 
       'maxcache' must be greater than or equal to 1. Valid values
       for both arguments are required when using this call.

       The values set here only affect the next open/creation of a file and
       do not change a particular file's paging behaviour after it has been
       opened or created. This maybe changed in a later release.

       Use flags argument of 'MP_PAGEALL' if the whole file is to be cached
       in memory otherwise pass in zero. In this case the value for 'maxcache'
       is ignored. You must pass in a valid value for 'pagesize' when
       using the flag 'MP_PAGEALL'. 
 
    MPget(int *pagesize, int *maxcache, int flags)
    ----------------------------------------------
    o   This gets the last pagesize and maximum number of pages cached for
        the last open/create of a file. The 'flags' variable is not used.
    
    In this version a new file memory pool is created for every file that is
    created/opened and can not be shared. Future versions will allow sharing 
    of the file memory pool with other threads/processes.

    For further use of these routines see the man page 'fmpio.3'.

    To create the library 'libfmpool.a' you need to run the configure
    script and then type 'make libfmpool'.

    This library can then be used in any program that uses stdio(3)
    calls to replace the functions open,read,write,flush and seek with
    those defined in the man page 'fmpio.3'

    For comments/suggestions/bugfixes please email them to

    George Velamparampil <georgev@ncsa.uiuc.edu>
    NCSA Software Development Group
    HDF Group
    152 Computing Applications Bldg.
    605 E. Springfield Ave.
    Champaign, IL 61820


