summaryrefslogtreecommitdiffstats
path: root/src/H5.c
diff options
context:
space:
mode:
authorRobb Matzke <matzke@llnl.gov>1998-04-17 21:29:43 (GMT)
committerRobb Matzke <matzke@llnl.gov>1998-04-17 21:29:43 (GMT)
commit011457075e41d587c47f89250514b3393a78d329 (patch)
treed9b12f2ffc87b12575607102d207a60cd52214b9 /src/H5.c
parentb59ab36893949af14c403ab46cbdb397f0a24f5b (diff)
downloadhdf5-011457075e41d587c47f89250514b3393a78d329.zip
hdf5-011457075e41d587c47f89250514b3393a78d329.tar.gz
hdf5-011457075e41d587c47f89250514b3393a78d329.tar.bz2
[svn-r353] Changes since 19980414
---------------------- ./html/Compression.html [NEW] ./html/Datasets.html ./html/H5.format.html ./html/H5.user.html Documented compression. A couple of the H5P functions aren't quite implemented yet but they're coming soon... ./src/H5Dprivate.h ./src/H5E.c ./src/H5Epublic.h ./src/H5Farray.c ./src/H5Fistore.c ./src/H5Fprivate.h ./src/H5MF.c ./src/H5MFprivate.h ./src/H5O.c ./src/H5Ocomp.c [NEW] ./src/H5Oprivate.h ./src/H5P.c ./src/H5Ppublic.h ./src/H5Sprivate.h ./src/H5Ssimp.c ./src/H5Z.c [NEW] ./src/H5Zprivate.h [NEW] ./src/H5Zpublic.h [NEW] ./src/Makefile.in ./src/hdf5.h ./test/dsets.c ./test/istore.c Compression is now mostly working. Don't try to open a compressed dataset though because the compression message won't be read. ./html/Datatypes.html ./html/H5.api.html ./src/H5.c ./src/H5private.h ./src/H5D.c ./src/H5T.c ./src/H5Tconv.c ./src/H5Tpkg.h ./src/H5Tprivate.h ./src/H5Tpublic.h Added timing support. When compiled with H5T_DEBUG defined the library will print conversion bandwidths when the library closes. The H5Tregister functions take a string as the first argument so the statistics output is meaningful. ./MANIFEST Added new files. ./configure.in ./src/H5config.h.in Check for getrusage(). Check for compress2() in libz.a and the zlib.h header file. Added `z' to the debug list. ./src/H5B.c ./src/H5Bprivate.h ./src/H5Gnode.c ./src/debug.c Cleaned up some indentation and added support to print istore B-trees. From the debugger, give the B-tree address and the dimensionality from the layout message of the object header. ./src/h5ls.c The oid is printed as w:x:y:z where w and x are the file ID and y and z are the OID within the file. You can give z or y*2^32+z as an argument to the debugger to print the object header for the object. ./src/H5AC.c Cleaned up statistics and made them match those reported by H5T and H5Z. ./src/H5MM.c ./src/H5MMprivate.h ./src/H5Fistore.c Finally got rid of a couple of long-standing const cast warnings.
Diffstat (limited to 'src/H5.c')
-rw-r--r--src/H5.c105
1 files changed, 104 insertions, 1 deletions
diff --git a/src/H5.c b/src/H5.c
index 4d7896c..acdb5d1 100644
--- a/src/H5.c
+++ b/src/H5.c
@@ -38,6 +38,8 @@ static char RcsId[] = "@(#)$Revision$";
#include <ctype.h>
#include <errno.h>
#include <stdarg.h>
+#include <sys/time.h>
+#include <sys/resource.h>
/* private headers */
#include <H5private.h> /*library */
@@ -478,7 +480,7 @@ HDfprintf (FILE *stream, const char *fmt, ...)
if ('.'==*s) {
s++;
if (isdigit (*s)) {
- prec = (int)strtol (s+1, &rest, 10);
+ prec = (int)strtol (s, &rest, 10);
s = rest;
} else if ('*'==*s) {
prec = va_arg (ap, int);
@@ -576,6 +578,7 @@ HDfprintf (FILE *stream, const char *fmt, ...)
long double x = va_arg (ap, long double);
n = fprintf (stream, template, x);
}
+ break;
case 'a':
if (1) {
@@ -738,3 +741,103 @@ HDstrtoll (const char *s, const char **rest, int base)
if (rest) *rest = s;
return acc;
}
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5_timer_reset
+ *
+ * Purpose: Resets the timer struct to zero. Use this to reset a timer
+ * that's being used as an accumulator for summing times.
+ *
+ * Return: void
+ *
+ * Programmer: Robb Matzke
+ * Thursday, April 16, 1998
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+void
+H5_timer_reset (H5_timer_t *timer)
+{
+ assert (timer);
+ HDmemset (timer, 0, sizeof *timer);
+}
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5_timer_begin
+ *
+ * Purpose: Initialize a timer to time something.
+ *
+ * Return: void
+ *
+ * Programmer: Robb Matzke
+ * Thursday, April 16, 1998
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+void
+H5_timer_begin (H5_timer_t *timer)
+{
+#ifdef HAVE_GETRUSAGE
+ struct rusage rusage;
+#endif
+ struct timeval etime;
+
+ assert (timer);
+
+#ifdef HAVE_GETRUSAGE
+ getrusage (RUSAGE_SELF, &rusage);
+ timer->utime = rusage.ru_utime.tv_sec + rusage.ru_utime.tv_usec/1e6;
+ timer->stime = rusage.ru_stime.tv_sec + rusage.ru_stime.tv_usec/1e6;
+#else
+ timer->utime = 0.0;
+ timer->stime = 0.0;
+#endif
+
+ gettimeofday (&etime, NULL);
+ timer->etime = etime.tv_sec + etime.tv_usec/1e6;
+}
+
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5_timer_end
+ *
+ * Purpose: This function should be called at the end of a timed region.
+ * The SUM is an optional pointer which will accumulate times.
+ * TMS is the same struct that was passed to H5_timer_start().
+ * On return, TMS will contain total times for the timed region.
+ *
+ * Return: void
+ *
+ * Programmer: Robb Matzke
+ * Thursday, April 16, 1998
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+void
+H5_timer_end (H5_timer_t *sum/*in,out*/, H5_timer_t *timer/*in,out*/)
+{
+ H5_timer_t now;
+
+ assert (timer);
+ H5_timer_begin (&now);
+
+ timer->utime = now.utime - timer->utime;
+ timer->stime = now.stime - timer->stime;
+ timer->etime = now.etime - timer->etime;
+
+ if (sum) {
+ sum->utime += timer->utime;
+ sum->stime += timer->stime;
+ sum->etime += timer->etime;
+ }
+}
+