Allows calls to pthread_sigmask before init
[akaros.git] / user / benchutil / measure.c
index 0ce3071..d44ef4a 100644 (file)
@@ -7,13 +7,14 @@
  * For now, this is built into parlib.  We can pull it out in the future.  Many
  * of the larger functions are in flux. */
 
-#include <ros/common.h>
-#include <tsc-compat.h>
 #include <math.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <sys/param.h>
+#ifdef __ros__
+#include <tsc-compat.h>
 #include <measure.h>
+#endif /* __ros__ */
 
 /* Basic stats computation and printing.
  *
@@ -69,7 +70,7 @@ void compute_stats(void **data, int nr_i, int nr_j, struct sample_stats *stats)
                }
        }
        if (stats->total_samples < 2) {
-               printf("Not enough samples (%d) for avg and var\n",
+               printf("Not enough samples (%llu) for avg and var\n",
                       stats->total_samples);
                return;
        }
@@ -192,7 +193,7 @@ void compute_stats(void **data, int nr_i, int nr_j, struct sample_stats *stats)
        if (coef_var > HI_COEF_VAR)
                printf("\tHigh coeff of var with serious outliers, adjusted bins\n");
        /* numbers are overestimates by at most a lat bin */
-       printf("50/75/90/99: %d / %d / %d / %d (-<%d)\n", stats->lat_50,
+       printf("50/75/90/99: %d / %d / %d / %d (-<%ld)\n", stats->lat_50,
               stats->lat_75, stats->lat_90, stats->lat_99, lat_bin_sz);
        printf("Min / Max  : %llu / %llu\n", stats->min_time, stats->max_time);
        printf("\n");
@@ -290,71 +291,3 @@ void print_throughput(void **data, unsigned int nr_steps, uint64_t interval,
        free(next_sample);
        free(step_events);
 }
-
-/* Conversion btw tsc ticks and time units.  From Akaros's kern/src/time.c */
-
-/* We can overflow/wraparound when we multiply up, but we have to divide last,
- * or else we lose precision.  If we're too big and will overflow, we'll
- * sacrifice precision for correctness, and degrade to the next lower level
- * (losing 3 digits worth).  The recursive case shouldn't overflow, since it
- * called something that scaled down the tsc_time by more than 1000. */
-uint64_t tsc2sec(uint64_t tsc_time)
-{
-       return tsc_time / get_tsc_freq();
-}
-
-uint64_t tsc2msec(uint64_t tsc_time)
-{
-       if (mult_will_overflow_u64(tsc_time, 1000))
-               return tsc2sec(tsc_time) * 1000;
-       else 
-               return (tsc_time * 1000) / get_tsc_freq();
-}
-
-uint64_t tsc2usec(uint64_t tsc_time)
-{
-       if (mult_will_overflow_u64(tsc_time, 1000000))
-               return tsc2msec(tsc_time) * 1000;
-       else
-               return (tsc_time * 1000000) / get_tsc_freq();
-}
-
-uint64_t tsc2nsec(uint64_t tsc_time)
-{
-       if (mult_will_overflow_u64(tsc_time, 1000000000))
-               return tsc2usec(tsc_time) * 1000;
-       else
-               return (tsc_time * 1000000000) / get_tsc_freq();
-}
-
-uint64_t sec2tsc(uint64_t sec)
-{
-       if (mult_will_overflow_u64(sec, get_tsc_freq()))
-               return (uint64_t)(-1);
-       else
-               return sec * get_tsc_freq();
-}
-
-uint64_t msec2tsc(uint64_t msec)
-{
-       if (mult_will_overflow_u64(msec, get_tsc_freq()))
-               return sec2tsc(msec / 1000);
-       else
-               return (msec * get_tsc_freq()) / 1000;
-}
-
-uint64_t usec2tsc(uint64_t usec)
-{
-       if (mult_will_overflow_u64(usec, get_tsc_freq()))
-               return msec2tsc(usec / 1000);
-       else
-               return (usec * get_tsc_freq()) / 1000000;
-}
-
-uint64_t nsec2tsc(uint64_t nsec)
-{
-       if (mult_will_overflow_u64(nsec, get_tsc_freq()))
-               return usec2tsc(nsec / 1000);
-       else
-               return (nsec * get_tsc_freq()) / 1000000000;
-}