12#ifndef ZTEST_BENCHMARK_H
13#define ZTEST_BENCHMARK_H
18typedef void (*ztest_benchmark_fn_t)(void);
19struct ztest_benchmark_suite {
21 ztest_benchmark_fn_t setup;
22 ztest_benchmark_fn_t teardown;
25struct ztest_extreme_value {
30struct ztest_benchmark_stats {
35 struct ztest_extreme_value
min;
36 struct ztest_extreme_value
max;
39struct ztest_benchmark {
42 ztest_benchmark_fn_t setup;
43 ztest_benchmark_fn_t run;
44 ztest_benchmark_fn_t teardown;
45 struct ztest_benchmark_stats stats;
46 const struct ztest_benchmark_suite *suite;
49struct ztest_benchmark_timed_stats {
54struct ztest_benchmark_timed {
57 ztest_benchmark_fn_t setup;
58 ztest_benchmark_fn_t run;
59 ztest_benchmark_fn_t teardown;
60 const struct ztest_benchmark_suite *suite;
61 struct ztest_benchmark_timed_stats stats;
64void benchmark_main(
void);
80#define ZTEST_BENCHMARK_SUITE(suite, setup_fn, teardown_fn) \
81 static const STRUCT_SECTION_ITERABLE(ztest_benchmark_suite, suite) = \
85 .teardown = teardown_fn, \
97#define ZTEST_BENCHMARK_SETUP_TEARDOWN(suite_name, benchmark, samples, setup_fn, teardown_fn) \
98 static __noinline void benchmark##_fn(void); \
99 static const STRUCT_SECTION_ITERABLE(ztest_benchmark, benchmark) = \
101 .name = #benchmark, \
102 .iterations = samples, \
104 .run = benchmark##_fn, \
105 .teardown = teardown_fn, \
106 .suite = &suite_name, \
108 static __noinline void benchmark##_fn(void)
120#define ZTEST_BENCHMARK_TIMED_SETUP_TEARDOWN(testsuite, benchmark, duration, setup_fn, teardown_fn)\
121 static __noinline void benchmark##_fn(void); \
122 static const STRUCT_SECTION_ITERABLE(ztest_benchmark_timed, benchmark) = \
124 .name = #benchmark, \
125 .duration_ms = duration, \
127 .run = benchmark##_fn, \
128 .teardown = teardown_fn, \
129 .suite = &testsuite, \
131 static __noinline void benchmark##_fn(void)
140#define ZTEST_BENCHMARK(suite, benchmark, samples) \
141 ZTEST_BENCHMARK_SETUP_TEARDOWN(suite, benchmark, samples, NULL, NULL)
150#define ZTEST_BENCHMARK_TIMED(suite, benchmark, duration) \
151 ZTEST_BENCHMARK_TIMED_SETUP_TEARDOWN(suite, benchmark, duration, NULL, NULL)
#define min(a, b)
Return smaller value of two provided expressions.
Definition util.h:457
#define max(a, b)
Return larger value of two provided expressions.
Definition util.h:426
__UINT64_TYPE__ uint64_t
Definition stdint.h:91