summaryrefslogtreecommitdiffstats
path: root/src/H5MPprivate.h
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2005-05-17 19:01:07 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2005-05-17 19:01:07 (GMT)
commit9b4c1ce9f6e79cf3194b3777813365a623688c47 (patch)
treec28c7fcf1c9fb58011a46602ab48b54179375c18 /src/H5MPprivate.h
parent2afe0fcda114dd398e518d9f1242307f06b72fbc (diff)
downloadhdf5-9b4c1ce9f6e79cf3194b3777813365a623688c47.zip
hdf5-9b4c1ce9f6e79cf3194b3777813365a623688c47.tar.gz
hdf5-9b4c1ce9f6e79cf3194b3777813365a623688c47.tar.bz2
[svn-r10750] Purpose:
New feature. Description: Add "memory pool" internal data structure. This set of routines is designed to add a way to allocate small pieces of information for a particular purpose and then free all the pieces at once (i.e. without having to free each piece individually). Memory pools are also good for localizing lots of small allocations that logically belong together. For example, if you were constructing a temporary linked list, you could create a new memory pool, allocate all the nodes for the list from the memory pool and when you were done with the list, just destroy the pool instead of tracking through the list and freeing each block independently. Platforms tested: FreeBSD 4.11 (sleipnir) h5committest
Diffstat (limited to 'src/H5MPprivate.h')
-rw-r--r--src/H5MPprivate.h45
1 files changed, 42 insertions, 3 deletions
diff --git a/src/H5MPprivate.h b/src/H5MPprivate.h
index fbe4df1..92249aa 100644
--- a/src/H5MPprivate.h
+++ b/src/H5MPprivate.h
@@ -12,11 +12,50 @@
* access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-/*
- * Header file for private definitions of the MPE instrumentation.
+/*-------------------------------------------------------------------------
+ *
+ * Created: H5MPprivate.h
+ * May 2 2005
+ * Quincey Koziol <koziol@ncsa.uiuc.edu>
+ *
+ * Purpose: Private header for memory pool routines.
+ *
+ *-------------------------------------------------------------------------
*/
+
#ifndef _H5MPprivate_H
#define _H5MPprivate_H
+/* Include package's public header (not yet) */
+/* #include "H5MPpublic.h" */
+
+/* Private headers needed by this file */
+
+
+/**************************/
+/* Library Private Macros */
+/**************************/
+
+/* Pool creation flags */
+/* Default settings */
+#define H5MP_FLG_DEFAULT 0
+#define H5MP_PAGE_SIZE_DEFAULT 4096 /* (bytes) */
+
+
+/****************************/
+/* Library Private Typedefs */
+/****************************/
+
+/* Memory pool header (defined in H5MPpkg.c) */
+typedef struct H5MP_pool_t H5MP_pool_t;
+
+
+/***************************************/
+/* Library-private Function Prototypes */
+/***************************************/
+H5_DLL H5MP_pool_t *H5MP_create (size_t page_size, unsigned flags);
+H5_DLL void * H5MP_malloc (H5MP_pool_t *mp, size_t request);
+H5_DLL void * H5MP_free (H5MP_pool_t *mp, void *spc);
+H5_DLL herr_t H5MP_close (H5MP_pool_t *mp);
-#endif
+#endif /* _H5MPprivate_H */