diff options
author | Robb Matzke <matzke@llnl.gov> | 1998-05-22 15:05:53 (GMT) |
---|---|---|
committer | Robb Matzke <matzke@llnl.gov> | 1998-05-22 15:05:53 (GMT) |
commit | d392756a1b6e28ff5a28e80c5c26513e8ef54e69 (patch) | |
tree | 00479cc9a7baba6c7e8e68d375f79221729751d4 /src/H5O.c | |
parent | 57e57ebb14aa3f5a88245965292031f25dfc7756 (diff) | |
download | hdf5-d392756a1b6e28ff5a28e80c5c26513e8ef54e69.zip hdf5-d392756a1b6e28ff5a28e80c5c26513e8ef54e69.tar.gz hdf5-d392756a1b6e28ff5a28e80c5c26513e8ef54e69.tar.bz2 |
[svn-r400] Changes since 19980513
----------------------
./html/Datasets.html
Fixed a couple of typos.
./src/H5.c
Added the `Z' modifier to HDfprintf() for `size_t' sizes. Use
it like this:
HDfprintf(stderr,"size is %Zd\n", (size_t)x);
./src/H5AC.c
./src/H5F.c
./src/H5Fprivate.h
The maximum number of meta data objects that can be cached can
be set from the application (but the library might not honor
it every time; it's a hint).
./src/H5D.c
Changed a warning message so it's not so alarming.
./src/H5Fistore.c
Chunks can be cached.
./src/H5O.c
./src/H5Oprivate.h
Added H5O_copy() and H5O_free() to copy and free messages.
./src/H5P.c
./src/H5Ppublic.h
Added H5Pset_cache() and H5Pget_cache() and changed lots of
"template" to "property list".
./src/H5Z.c
./src/H5Zpublic.h
Miscellaneous little things to clean up. Mostly just removed
H5Z_MAXVAL and added H5Z_USERDEF_MIN and H5Z_USERDEF_MAX.
./MANIFEST
./test/Makefile.in
./test/chunk.c [NEW]
Added a performance test for chunk caching. It looks at the
amount of I/O instead of timing because timing is partly
dependent on the chunk size and I wanted a measurement that
was a function of only the cache size. Run `chunk' with no
arguments and then say `gnuplot x-gnuplot' to see the plots
(press return between plots). Postscript files are created for
each plot.
./test/big.c
./test/cmpd_dset.c
./test/extend.c
./test/external.c
./test/gheap.c
Added H5F_ACC_DEBUG so we can see cache performance
statistics.
Diffstat (limited to 'src/H5O.c')
-rw-r--r-- | src/H5O.c | 77 |
1 files changed, 72 insertions, 5 deletions
@@ -667,6 +667,76 @@ H5O_reset(const H5O_class_t *type, void *native) /*------------------------------------------------------------------------- + * Function: H5O_free + * + * Purpose: Similar to H5O_reset() except it also frees the message + * pointer. + * + * Return: Success: NULL + * + * Failure: NULL + * + * Programmer: Robb Matzke + * Thursday, May 21, 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +void * +H5O_free (const H5O_class_t *type, void *mesg) +{ + FUNC_ENTER (H5O_free, NULL); + + if (mesg) { + H5O_reset (type, mesg); + H5MM_xfree (mesg); + } + + FUNC_LEAVE (NULL); +} + + +/*------------------------------------------------------------------------- + * Function: H5O_copy + * + * Purpose: Copies a message. If MESG is is the null pointer then a null + * pointer is returned with no error. + * + * Return: Success: Ptr to the new message + * + * Failure: NULL + * + * Programmer: Robb Matzke + * Thursday, May 21, 1998 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +void * +H5O_copy (const H5O_class_t *type, const void *mesg) +{ + void *ret_value = NULL; + + FUNC_ENTER (H5O_copy, NULL); + + assert (type); + assert (type->copy); + + if (mesg) { + if (NULL==(ret_value=(type->copy)(mesg, NULL))) { + HRETURN_ERROR (H5E_OHDR, H5E_CANTINIT, NULL, + "unable to copy object header message"); + } + } + + FUNC_LEAVE (ret_value); +} + + + +/*------------------------------------------------------------------------- * Function: H5O_link * * Purpose: Adjust the link count for an object header by adding @@ -1209,9 +1279,7 @@ H5O_remove(H5G_entry_t *ent, const H5O_class_t *type, intn sequence) /* change message type to nil and zero it */ oh->mesg[i].type = H5O_NULL; HDmemset(oh->mesg[i].raw, 0, oh->mesg[i].raw_size); - H5O_reset(type, oh->mesg[i].native); - oh->mesg[i].native = H5MM_xfree(oh->mesg[i].native); - + oh->mesg[i].native = H5O_free (type, oh->mesg[i].native); oh->mesg[i].dirty = TRUE; oh->dirty = TRUE; } @@ -1850,8 +1918,7 @@ H5O_debug(H5F_t *f, const haddr_t *addr, FILE * stream, intn indent, (oh->mesg[i].type->debug)(f, mesg, stream, indent+3, MAX (0, fwidth-3)); } - H5O_reset (oh->mesg[i].type, mesg); - H5MM_xfree (mesg); + H5O_free (oh->mesg[i].type, mesg); H5MM_xfree (p); } } |