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://www.hdfgroup.org/licenses. * 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 19 * 20 * Purpose: Private declarations for the H5HL (local heap) package. 21 * 22 *------------------------------------------------------------------------- 23 */ 24 #ifndef H5HLprivate_H 25 #define H5HLprivate_H 26 27 /* Private headers needed by this file. */ 28 #include "H5private.h" /* Generic Functions */ 29 #include "H5ACprivate.h" /* Metadata cache */ 30 #include "H5Fprivate.h" /* File access */ 31 32 /* 33 * Feature: Define H5HL_DEBUG on the compiler command line if you want to 34 * enable diagnostic messages from this layer. 35 */ 36 #ifdef NDEBUG 37 #undef H5HL_DEBUG 38 #endif 39 40 #define H5HL_ALIGN(X) ((((unsigned)X) + 7) & (unsigned)(~0x07)) /* align on 8-byte boundary */ 41 42 #define H5HL_SIZEOF_FREE(F) \ 43 H5HL_ALIGN(H5F_SIZEOF_SIZE(F) + /* ptr to next free block */ \ 44 H5F_SIZEOF_SIZE(F)) /* size of this free block */ 45 46 /****************************/ 47 /* Library Private Typedefs */ 48 /****************************/ 49 50 /* Typedef for local heap in memory (defined in H5HLpkg.h) */ 51 typedef struct H5HL_t H5HL_t; 52 53 /* 54 * Library prototypes 55 */ 56 H5_DLL herr_t H5HL_create(H5F_t *f, size_t size_hint, haddr_t *addr /*out*/); 57 H5_DLL herr_t H5HL_delete(H5F_t *f, haddr_t addr); 58 H5_DLL herr_t H5HL_get_size(H5F_t *f, haddr_t addr, size_t *size); 59 H5_DLL herr_t H5HL_heapsize(H5F_t *f, haddr_t addr, hsize_t *heap_size); 60 H5_DLL herr_t H5HL_insert(H5F_t *f, H5HL_t *heap, size_t size, const void *buf, size_t *offset); 61 H5_DLL void * H5HL_offset_into(const H5HL_t *heap, size_t offset); 62 H5_DLL H5HL_t *H5HL_protect(H5F_t *f, haddr_t addr, unsigned flags); 63 H5_DLL herr_t H5HL_remove(H5F_t *f, H5HL_t *heap, size_t offset, size_t size); 64 H5_DLL herr_t H5HL_unprotect(H5HL_t *heap); 65 66 /* Debugging routines for dumping file structures */ 67 H5_DLL herr_t H5HL_debug(H5F_t *f, haddr_t addr, FILE *stream, int indent, int fwidth); 68 69 #endif 70