1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2 * Copyright by The HDF Group. * 3 * Copyright by the Board of Trustees of the University of Illinois. * 4 * All rights reserved. * 5 * * 6 * This file is part of HDF5. The full HDF5 copyright notice, including * 7 * terms governing use, modification, and redistribution, is contained in * 8 * the COPYING file, which can be found at the root of the source code * 9 * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. * 10 * If you do not have access to either file, you may request a copy from * 11 * help@hdfgroup.org. * 12 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 13 14 /*------------------------------------------------------------------------- 15 * 16 * Created: H5HLprivate.h 17 * Jul 16 1997 18 * Robb Matzke <matzke@llnl.gov> 19 * 20 * Purpose: 21 * 22 * Modifications: 23 * 24 *------------------------------------------------------------------------- 25 */ 26 #ifndef _H5HLprivate_H 27 #define _H5HLprivate_H 28 29 /* Include package's public header */ 30 #include "H5HLpublic.h" 31 32 /* Private headers needed by this file. */ 33 #include "H5private.h" /* Generic Functions */ 34 #include "H5ACprivate.h" /* Metadata cache */ 35 #include "H5Fprivate.h" /* File access */ 36 37 /* 38 * Feature: Define H5HL_DEBUG on the compiler command line if you want to 39 * diagnostic messages from this layer. 40 */ 41 #ifdef NDEBUG 42 # undef H5HL_DEBUG 43 #endif 44 45 #define H5HL_ALIGN(X) ((((unsigned)X)+7)&(unsigned)(~0x07)) /*align on 8-byte boundary */ 46 47 #define H5HL_SIZEOF_FREE(F) \ 48 H5HL_ALIGN(H5F_SIZEOF_SIZE (F) + /*ptr to next free block */ \ 49 H5F_SIZEOF_SIZE (F)) /*size of this free block */ 50 51 /****************************/ 52 /* Library Private Typedefs */ 53 /****************************/ 54 55 /* Typedef for local heap in memory (defined in H5HLpkg.h) */ 56 typedef struct H5HL_t H5HL_t; 57 58 /* 59 * Library prototypes... 60 */ 61 H5_DLL herr_t H5HL_create(H5F_t *f, hid_t dxpl_id, size_t size_hint, haddr_t *addr/*out*/); 62 H5_DLL H5HL_t *H5HL_protect(H5F_t *f, hid_t dxpl_id, haddr_t addr, H5AC_protect_t rw); 63 H5_DLL void *H5HL_offset_into(const H5HL_t *heap, size_t offset); 64 H5_DLL herr_t H5HL_remove(H5F_t *f, hid_t dxpl_id, H5HL_t *heap, size_t offset, 65 size_t size); 66 H5_DLL herr_t H5HL_unprotect(H5HL_t *heap); 67 H5_DLL size_t H5HL_insert(H5F_t *f, hid_t dxpl_id, H5HL_t *heap, size_t size, 68 const void *buf); 69 H5_DLL herr_t H5HL_delete(H5F_t *f, hid_t dxpl_id, haddr_t addr); 70 H5_DLL herr_t H5HL_get_size(H5F_t *f, hid_t dxpl_id, haddr_t addr, size_t *size); 71 H5_DLL herr_t H5HL_heapsize(H5F_t *f, hid_t dxpl_id, haddr_t addr, hsize_t *heap_size); 72 73 /* Debugging functions */ 74 H5_DLL herr_t H5HL_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE * stream, int indent, 75 int fwidth); 76 #endif 77 78