diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2003-02-07 21:14:19 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2003-02-07 21:14:19 (GMT) |
commit | 168d67dbd20923feef30fb76c6b569ef2e5add4a (patch) | |
tree | 2bcfd51c39665400804e92ac0fb13d42b2df96c3 /src/H5FSprivate.h | |
parent | 4e8da9d2246a0bba1afb5c678346b2f1c4633c69 (diff) | |
download | hdf5-168d67dbd20923feef30fb76c6b569ef2e5add4a.zip hdf5-168d67dbd20923feef30fb76c6b569ef2e5add4a.tar.gz hdf5-168d67dbd20923feef30fb76c6b569ef2e5add4a.tar.bz2 |
[svn-r6383] Purpose:
New feature for developers.
Description:
Added "function stack" tracing to library. This allows developers (there
is no public API) to call H5FS_print within the library and get a listing
of the functions traversed to reach that point in the library. Eventually,
I may add support for reporting the parameters to each function also...
Mainly for debugging parallel I/O programs, but I think it will come in
handy in other cases also.
The function stack tracking is controlled with a configure switch:
--enable-funcstack, which defaults to enabled currently. When we branch
for 1.6, we should change the default setting on the branch to be disabled.
Also, added a destructor to the thread-specific keys when thread-safety is
turned on in the library. Otherwise, they were leaking memory and causing
difficult to debug errors in threaded programs (like the test/ttsafe test).
Platforms tested:
Tested h5committest {arabica (fortran), eirene (fortran, C++)
modi4 (parallel, fortran)}
FreeBSD 4.7 (sleipnir) w/thread-safety enabled.
Misc. update:
Updated MANIFEST with new files added (src/H5FS.c & src/H5FDprivate.h)
Update release_docs/RELEASE with thread-safety bug fix.
Diffstat (limited to 'src/H5FSprivate.h')
-rw-r--r-- | src/H5FSprivate.h | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/H5FSprivate.h b/src/H5FSprivate.h new file mode 100644 index 0000000..6dba575 --- /dev/null +++ b/src/H5FSprivate.h @@ -0,0 +1,40 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Header file for function stacks, etc. + */ +#ifndef _H5FSprivate_H +#define _H5FSprivate_H + +#ifdef NOT_YET +#include "H5FSpublic.h" +#endif /* NOT_YET */ + +/* Private headers needed by this file */ +#include "H5private.h" + +#define H5FS_NSLOTS 32 /*number of slots in an function stack */ + +/* A function stack */ +typedef struct H5FS_t { + int nused; /*num slots currently used in stack */ + const char *slot[H5FS_NSLOTS]; /*array of function records */ +} H5FS_t; + +H5_DLL herr_t H5FS_push (const char *func_name); +H5_DLL herr_t H5FS_pop (void); +H5_DLL herr_t H5FS_print (FILE *stream); + +#endif /* _H5FSprivate_H */ |