manpagez: man pages & more
man fmpio(3)
Home | html | info | man
fmpio(3)                                                              fmpio(3)




NAME

       MPset,  MPget, MPopen, MPclose, MPflush, MPseek, MPread, MPwrite - File
       Memory Buffer Pool Stdio Interface


SYNOPSIS

       #include <fmpio.h>

       extern int MPset
       (
            int pagesize,
            int maxcache,
            int flags
       );

       extern int MPget
       (
            int *pagesize,
            int *maxcache,
            int flags
       );

       extern MPFILE *MPopen
       (
            const char *path,
            int flags
       );

       extern int MPclose(MPFILE *mpfs);

       extern int MPflush(MPFILE *mpfs);

       extern int MPseek
       (
            MPFILE *mpfs,
            off_t offset,
            int whence
       );

       extern int MPread
       (
            MPFILE *mpfs,
            void *buf,
            size_t nbytes
       );

       extern int MPwrite
       (
            MPFILE *mpfs,
            void *buf,
            size_t nbytes
       );


PARAMETERS

       int pagesize
              IN: pagesize to use for next open/create.

       int maxcache
              IN: max number of pages to cache.

       int flags (MPset)
              IN: flags = 0, MP_PAGEALL.

       int *pagesize
              OUT: pagesize to used in last open/create.

       int *maxcache
              OUT: max number of pages cached in last open/create.

       int flags (MPget)
              IN:.

       const char *path
              IN: filename.

       int flags (MPopen)
              IN:   DFACC_CREATE,   DFACC_READ,    DFACC_WRITE,    DFACC_RDWR,
              DFACC_ALL.

       MPFILE *mpfs
              IN: File Memory pool handle.

       off_t offset
              IN: Offset into the file.

       int whence
              IN: SEEK_CUR, SEEK_SET, SEEK_END.

       void *buf (MPread)
              IN: User buffer to read data into.

       size_t nbytes  (MPread)
              IN: number of bytes to read in.

       void *buf (MPwrite)
              IN: User buffer to write data from.

       size_t nbytes  (MPwrite)
              IN: number of bytes to write out.


DESCRIPTION

   MPset
       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.

       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  arguement of 'MP_PAGEALL' if the whole file is to be cached
       in memory otherwise passs in zero.

   MPget
       This gets the last pagesize and maximum number of pages cached for  the
       last open/create of a file.

   MPopen
       Open/Create  the  file for reading/writing and create a memory pool for
       the file. Currently we let  the  library  decide  whether  to  use  the
       default PAGESIZE for creating pages and MAXCACHE for number of pages to
       cache in the pool.

   MPclose
       First sync the file memory pool to disk. Next  close  the  file  memory
       pool.  Finally close the file.

   MPflush
       Flushes the file memory pool to disk.

   MPseek
       Seeks to the correct page in the file depending upon the offset and the
       flag 'whence'. Similiar to the stdio routine. Assumes the flags  values
       for  SEEK_SET, SEEK_CUR and SEEK_END are universal. May not be true for
       non-Unix OS's.

   MPread
       This routine handles getting the correct pages to read to  satisfy  the
       request.  The  data is then copied from the memory pool into the user's
       buffer.

   MPwrite
       This routine handles getting the correct pages to write to satisfy  the
       request.  The  data is then copied from the user's buffer to the memory
       pool.


RETURNS

   MPset
       Returns SUCCEED if successful and FAIL otherwise.

   MPget
       Returns SUCCEED.

   MPopen
       Pointer to MPFILE struct if successful and NULL otherwise.

   MPclose
       Returns SUCCEED on success and FAIL otherwise.

   MPflush
       Returns SUCCEED on success and FAIL otherwise.

   MPseek
       Returns offset into the file on success and FAIL otherwise.

   MPread
       Returns number of bytes read if successful and FAIL otherwise.

   MPwrite
       Returns number of bytes written if successful and FAIL otherwise.


NAME

   MPset
       MPset - set pagesize and maximum number  of  pages  to  cache  on  next
       open/create.

   MPget
       MPget  - get last pagesize and max number of pages cached for open/cre-
       ate.

   MPopen
       MPopen - open/create the file and create a memory pool for file.

   MPclose
       MPclose - close the file, sync the file memory pool to disk  and  close
       it.

   MPflush
       MPflush - flush file memory pool to disk.

   MPseek
       MPseek - seek to the specified file offset in the memory pool.

   MPread
       MPread  - read 'nbytes' from file memory pool into 'buf'.

   MPwrite
       MPwrite - write 'nbytes' form 'buf' to the file memory pool.


NOTE

   MPset
       Currently  'maxcache'  has to be greater than 1. Maybe use special case
       of 0 to specify you want to turn page buffering off or  use  the  flags
       arguement.

       Current memory usage overhead for the Memory Pool is approximately ~(2k
       + maxcache*(28+pagesize) + npages*20) bytes.

   MPseek
       Note that it returns an 'int' as opposed to 'off_t'.  This  is  because
       the  HDF library still deals with file offsets in terms of signed inte-
       gers....*sigh*...hopefully This will be changed in a future release.

   MPread
       The memcpy from the buffer pool to the users  buffer  is  an  expensive
       operation.

   MPwrite
       The memcpy from the the users buffer to the memory pool is an expensive
       operation.



CONTACT

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



c2man fmpio.h                   2 February 1996                       fmpio(3)

hdf 4.2r4 - Generated Fri Feb 6 07:42:16 CST 2009
© manpagez.com 2000-2024
Individual documents may contain additional copyright information.