H5MFprivate.h

00001 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
00002  * Copyright by The HDF Group.                                               *
00003  * Copyright by the Board of Trustees of the University of Illinois.         *
00004  * All rights reserved.                                                      *
00005  *                                                                           *
00006  * This file is part of HDF5.  The full HDF5 copyright notice, including     *
00007  * terms governing use, modification, and redistribution, is contained in    *
00008  * the files COPYING and Copyright.html.  COPYING can be found at the root   *
00009  * of the source code distribution tree; Copyright.html can be found at the  *
00010  * root level of an installed copy of the electronic HDF5 document set and   *
00011  * is linked from the top-level documents page.  It can also be found at     *
00012  * http://hdfgroup.org/HDF5/doc/Copyright.html.  If you do not have          *
00013  * access to either file, you may request a copy from help@hdfgroup.org.     *
00014  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
00015 
00016 /*-------------------------------------------------------------------------
00017  *
00018  * Created:             H5MFprivate.h
00019  *                      Jul 11 1997
00020  *                      Robb Matzke <matzke@llnl.gov>
00021  *
00022  * Purpose:             Private header file for file memory management.
00023  *
00024  * Modifications:
00025  *
00026  *-------------------------------------------------------------------------
00027  */
00028 #ifndef _H5MFprivate_H
00029 #define _H5MFprivate_H
00030 
00031 /* Private headers needed by this file */
00032 #include "H5Fprivate.h"         /* File access                          */
00033 #include "H5FDprivate.h"        /* File Drivers                         */
00034 
00035 /**************************/
00036 /* Library Private Macros */
00037 /**************************/
00038 
00039 /*
00040  * Feature: Define H5MF_DEBUG on the compiler command line if you want to
00041  *          see diagnostics from this layer.
00042  */
00043 #ifdef NDEBUG
00044 #  undef H5MF_DEBUG
00045 #endif
00046 
00047 /****************************/
00048 /* Library Private Typedefs */
00049 /****************************/
00050 
00051 
00052 /*****************************/
00053 /* Library-private Variables */
00054 /*****************************/
00055 
00056 
00057 /***************************************/
00058 /* Library-private Function Prototypes */
00059 /***************************************/
00060 
00061 /* File space manager routines */
00062 H5_DLL herr_t H5MF_init_merge_flags(H5F_t *f);
00063 H5_DLL herr_t H5MF_get_freespace(H5F_t *f, hid_t dxpl_id, hsize_t *tot_space,
00064     hsize_t *meta_size);
00065 H5_DLL herr_t H5MF_close(H5F_t *f, hid_t dxpl_id);
00066 
00067 /* File space allocation routines */
00068 H5_DLL haddr_t H5MF_alloc(H5F_t *f, H5FD_mem_t type, hid_t dxpl_id, hsize_t size);
00069 H5_DLL haddr_t H5MF_aggr_vfd_alloc(H5F_t *f, H5FD_mem_t type, hid_t dxpl_id, hsize_t size);
00070 H5_DLL herr_t H5MF_xfree(H5F_t *f, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
00071                           hsize_t size);
00072 H5_DLL herr_t H5MF_try_extend(H5F_t *f, hid_t dxpl_id, H5FD_mem_t type,
00073     haddr_t addr, hsize_t size, hsize_t extra_requested);
00074 H5_DLL htri_t H5MF_try_shrink(H5F_t *f, H5FD_mem_t alloc_type, hid_t dxpl_id,
00075     haddr_t addr, hsize_t size);
00076 
00077 /* File 'temporary' space allocation routines */
00078 H5_DLL haddr_t H5MF_alloc_tmp(H5F_t *f, hsize_t size);
00079 
00080 /* 'block aggregator' routines */
00081 H5_DLL herr_t H5MF_free_aggrs(H5F_t *f, hid_t dxpl_id);
00082 
00083 /* Debugging routines */
00084 #ifdef H5MF_DEBUGGING
00085 #ifdef NOT_YET
00086 H5_DLL herr_t H5MF_sects_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr,
00087     FILE *stream, int indent, int fwidth);
00088 #endif /* NOT_YET */
00089 #endif /* H5MF_DEBUGGING */
00090 
00091 #endif /* end _H5MFprivate_H */
00092