summaryrefslogtreecommitdiffstats
path: root/src/H5HGprivate.h
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>1998-03-30 19:24:08 (GMT)
committerRobb Matzke <matzke@llnl.gov>1998-03-30 19:24:08 (GMT)
commit78c1574378256975b39d4b65a011307a631dc667 (patch)
tree84e0dc9edf12a69a405c0d9da02803f2cc291382 /src/H5HGprivate.h
parent2d9f2282e6e639dc5a7881c5c55c3f56d43526b1 (diff)
downloadhdf5-78c1574378256975b39d4b65a011307a631dc667.zip
hdf5-78c1574378256975b39d4b65a011307a631dc667.tar.gz
hdf5-78c1574378256975b39d4b65a011307a631dc667.tar.bz2
[svn-r333] Changes since 19980324
---------------------- ./MANIFEST ./src/H5HG.c [new] ./src/H5HGprivate.h [new] ./src/H5HGpublic.h [new] ./src/Makefile.in Added global heaps, H5HG. This compiles but is untested. ./src/H5D.c ./src/H5G.c ./src/H5Gnode.c ./src/H5Gstab.c ./src/H5HL.c [renamed from H5H.c] ./src/H5HLprivate.h [renamed from H5Hprivate.h] ./src/H5HLpublic.h [renamed from H5Hpublic.h] ./src/H5Oefl.c ./src/Makefile.in ./src/hdf5.h ./test/theap.c Renamed local heaps from H5H to H5HL. ./src/H5AC.c ./src/H5ACprivate.h ./src/debug.c Added debugging support for global heap collections. ./html/H5.format.html Ripped out the old small object heap documentation and added documentation for the new global heap. ./html/H5.api.html ./src/H5P.c ./src/H5Ppublic.h ./src/H5F.c ./src/H5Fprivate.h ./src/H5private.h The H5Pget_version() function no longer returns a small object heap version number. Instead, each collection of the global heap has its own version number instead of a single number in the file boot block. ./bin/release Omit files marked for removal by CVS even though the removal hasn't been committed yet. ./test/iopipe.c Removed warnings about casting unsigned int to double on Irix64. ./MANIFEST Removed ./test/testpar/phdf5sup.c
Diffstat (limited to 'src/H5HGprivate.h')
-rw-r--r--src/H5HGprivate.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/H5HGprivate.h b/src/H5HGprivate.h
new file mode 100644
index 0000000..aebb3f8
--- /dev/null
+++ b/src/H5HGprivate.h
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 1998 NCSA
+ * All rights reserved.
+ *
+ * Programmer: Robb Matzke <matzke@llnl.gov>
+ * Friday, March 27, 1998
+ */
+#ifndef _H5HGprivate_H
+#define _H5HGprivate_H
+
+#include <H5HGpublic.h>
+
+/*
+ * Each collection has a magic number for some redundancy.
+ */
+#define H5HG_MAGIC "GCOL"
+#define H5HG_SIZEOF_MAGIC 4
+
+/*
+ * Global heap collection version.
+ */
+#define H5HG_VERSION 1
+
+/*
+ * All global heap collections are at least this big. This allows us to read
+ * most collections with a single read() since we don't have to read a few
+ * bytes of header to figure out the size. If the heap is larger than this
+ * then a second read gets the rest after we've decoded the header.
+ */
+#define H5HG_MINSIZE 4096
+
+/*
+ * Maximum length of the CWFS list, the list of remembered collections that
+ * have free space.
+ */
+#define H5HG_NCWFS 16
+
+/*
+ * The maximum number of links allowed to a global heap object.
+ */
+#define H5HG_MAXLINK 65535
+
+/*
+ * The size of the collection header.
+ */
+#define H5HG_SIZEOF_HDR(f) (4 + /*magic number */ \
+ 1 + /*version number */ \
+ 3 + /*reserved */ \
+ H5F_SIZEOF_SIZE(f)) /*collection size */
+
+/*
+ * The overhead associated with each object in the heap.
+ */
+#define H5HG_SIZEOF_OBJHDR(f) (2 + /*reference count */ \
+ 2 + /*reserved */ \
+ H5F_SIZEOF_SIZE(f)) /*object data size */
+
+/*
+ * The initial guess for the number of messages in a collection. We assume
+ * that all objects in that collection are zero length, giving the maximum
+ * possible number of objects in the collection. The collection itself has
+ * some overhead and each message has some overhead.
+ */
+#define H5HG_NOBJS(f,z) (int)((((z)-H5HG_SIZEOF_HDR(f))/ \
+ H5HG_SIZEOF_OBJHDR(f)+1))
+
+typedef struct H5HG_t H5HG_t;
+
+herr_t H5HG_create (H5F_t *f, size_t size);
+herr_t H5HG_insert (H5F_t *f, size_t size, void *obj, H5HG_t *hobj/*out*/);
+void *H5HG_peek (H5F_t *f, H5HG_t *hobj);
+void *H5HG_read (H5F_t *f, H5HG_t *hobj, void *object);
+intn H5HG_link (H5F_t *f, H5HG_t *hobj, intn adjust);
+herr_t H5HG_remove (H5F_t *f, H5HG_t *hobj);
+herr_t H5HG_debug(H5F_t *f, const haddr_t *addr, FILE *stream, intn indent,
+ intn fwidth);
+
+#endif