auto import from //depot/cupcake/@135843
diff --git a/hist.h b/hist.h
new file mode 100644
index 0000000..b2ed22b
--- /dev/null
+++ b/hist.h
@@ -0,0 +1,116 @@
+#if TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# if HAVE_SYS_TIME_H
+#  include <sys/time.h>
+# else
+#  include <time.h>
+# endif
+#endif
+
+/* hist.h
+
+   Given a time difference in microseconds, increment one of 61
+   different buckets: 
+   
+   0 - 9 in increments of 1 usec
+   0 - 9 in increments of 10 usecs
+   0 - 9 in increments of 100 usecs
+   0 - 9 in increments of 1 msec
+   0 - 9 in increments of 10 msecs
+   0 - 9 in increments of 100 msecs
+   0 - 9 in increments of 1 sec
+   0 - 9 in increments of 10 sec
+   > 100 secs
+   
+   This will allow any time to be recorded to within an accuracy of
+   10%, and provides a compact representation for capturing the
+   distribution of a large number of time differences (e.g.
+   request-response latencies).
+   
+   Colin Low  10/6/93
+   Rick Jones 2004-06-15 - extend to 1 and 10 usec
+*/
+#ifndef _HIST_INCLUDED
+#define _HIST_INCLUDED
+
+#ifdef IRIX
+#include <sys/time.h>
+#endif /* IRIX */
+
+#if defined(HAVE_GET_HRT)
+#include "hrt.h"
+#endif
+   
+struct histogram_struct {
+  int unit_usec[10];
+  int ten_usec[10];
+  int hundred_usec[10];
+  int unit_msec[10];
+  int ten_msec[10];
+  int hundred_msec[10];
+  int unit_sec[10];
+  int ten_sec[10];
+  int ridiculous;
+  int total;
+};
+
+typedef struct histogram_struct *HIST;
+
+/* 
+   HIST_new - return a new, cleared histogram data type
+*/
+
+HIST HIST_new(void); 
+
+/* 
+   HIST_clear - reset a histogram by clearing all totals to zero
+*/
+
+void HIST_clear(HIST h);
+
+/*
+   HIST_add - add a time difference to a histogram. Time should be in
+   microseconds. 
+*/
+
+void HIST_add(register HIST h, int time_delta);
+
+/* 
+  HIST_report - create an ASCII report on the contents of a histogram.
+  Currently printsto standard out 
+*/
+
+void HIST_report(HIST h);
+
+/*
+  HIST_timestamp - take a timestamp suitable for use in a histogram.
+*/
+
+#ifdef HAVE_GETHRTIME
+void HIST_timestamp(hrtime_t *timestamp);
+#elif defined(HAVE_GET_HRT)
+void HIST_timestamp(hrt_t *timestamp);
+#elif defined(WIN32)
+void HIST_timestamp(LARGE_INTEGER *timestamp);
+#else
+void HIST_timestamp(struct timeval *timestamp);
+#endif
+
+/*
+  delta_micro - calculate the difference in microseconds between two
+  timestamps
+*/
+#ifdef HAVE_GETHRTIME
+int delta_micro(hrtime_t *begin, hrtime_t *end);
+#elif defined(HAVE_GET_HRT)
+int delta_micro(hrt_t *begin, hrt_t *end);
+#elif defined(WIN32)
+int delta_micro(LARGE_INTEGER *begin, LARGE_INTEGER *end);
+#else
+int delta_micro(struct timeval *begin, struct timeval *end);
+#endif
+
+#endif
+