@@@ man wip
[mLib] / test / bench.c
index 225d40c..7fedc9d 100644 (file)
@@ -724,8 +724,8 @@ end:
 
 /* --- @bench_measure@ --- *
  *
- * Arguments:  @struct bench_timing *t_out@ = where to leave the timing
- *             @struct bench_state *b@ = benchmark state
+ * Arguments:  @struct bench_state *b@ = benchmark state
+ *             @struct bench_timing *t_out@ = where to leave the timing
  *             @double base@ = number of internal units per call
  *             @bench_fn *fn@, @void *ctx@ = benchmark function to run
  *
@@ -741,15 +741,16 @@ end:
  *             performs, or the number of bytes it processes per iteration).
  */
 
-int bench_measure(struct bench_timing *t_out, struct bench_state *b,
+int bench_measure(struct bench_state *b, struct bench_timing *t_out,
                  double base, bench_fn *fn, void *ctx)
 {
   struct bench_timer *tm = b->tm;
   struct bench_time t0, t1;
   unsigned long n, nn;
 
-  /* Make sure the state is calibrated. */
-  if (bench_calibrate(b)) return (-1);
+  /* Make sure the state is calibrated and usable. */
+  if (!(b->f&BTF_CLB) && bench_calibrate(b)) return (-1);
+  if (!(b->f&BTF_TIMEOK)) return (-1);
 
   /* Main adaptive measurement loop.
    *