arm64: microbench: Add test->post() to further process test results
Under certain circumstances, we need to further process microbench
test results, so we add test->post() in the microbench framework,
later patch will use that.
Signed-off-by: Jingyi Wang <wangjingyi11@huawei.com>
[ Drop total_ns from post() input arguments. ]
Signed-off-by: Andrew Jones <drjones@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
diff --git a/arm/micro-bench.c b/arm/micro-bench.c
index 228b378..9e493c9 100644
--- a/arm/micro-bench.c
+++ b/arm/micro-bench.c
@@ -293,19 +293,20 @@
const char *name;
bool (*prep)(void);
void (*exec)(void);
+ void (*post)(uint64_t ntimes, uint64_t *total_ticks);
u32 times;
bool run;
};
static struct exit_test tests[] = {
- {"hvc", NULL, hvc_exec, 65536, true},
- {"mmio_read_user", NULL, mmio_read_user_exec, 65536, true},
- {"mmio_read_vgic", NULL, mmio_read_vgic_exec, 65536, true},
- {"eoi", NULL, eoi_exec, 65536, true},
- {"ipi", ipi_prep, ipi_exec, 65536, true},
- {"ipi_hw", ipi_hw_prep, ipi_exec, 65536, true},
- {"lpi", lpi_prep, lpi_exec, 65536, true},
- {"timer_10ms", timer_prep, timer_exec, 256, true},
+ {"hvc", NULL, hvc_exec, NULL, 65536, true},
+ {"mmio_read_user", NULL, mmio_read_user_exec, NULL, 65536, true},
+ {"mmio_read_vgic", NULL, mmio_read_vgic_exec, NULL, 65536, true},
+ {"eoi", NULL, eoi_exec, NULL, 65536, true},
+ {"ipi", ipi_prep, ipi_exec, NULL, 65536, true},
+ {"ipi_hw", ipi_hw_prep, ipi_exec, NULL, 65536, true},
+ {"lpi", lpi_prep, lpi_exec, NULL, 65536, true},
+ {"timer_10ms", timer_prep, timer_exec, NULL, 256, true},
};
struct ns_time {
@@ -349,6 +350,11 @@
ticks_to_ns_time(total_ticks, &total_ns);
}
+ if (test->post) {
+ test->post(ntimes, &total_ticks);
+ ticks_to_ns_time(total_ticks, &total_ns);
+ }
+
avg_ns.ns = total_ns.ns / ntimes;
avg_ns.ns_frac = total_ns.ns_frac / ntimes;