diff options
author | Raphael Herouart <rherouart@google.com> | 2024-02-16 03:53:21 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2024-02-16 03:53:21 +0000 |
commit | ffca5d093965d985a6416d18c5e3246bd5c0cd07 (patch) | |
tree | a25b34ed55b98820e5e538a9eb814223abed37be | |
parent | 00ea0452f657e3d4a8d377c3d2601e1916634bfe (diff) | |
parent | bae0f95b28ae457bf75e4e8b3110de16b7c90312 (diff) | |
download | trusty-ffca5d093965d985a6416d18c5e3246bd5c0cd07.tar.gz |
include/shared/lk: benchmark cleanup am: bae0f95b28
Original change: https://android-review.googlesource.com/c/trusty/lk/trusty/+/2826073
Change-Id: I5c399fdba1185b7648477030702e1f7c600be51d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | include/shared/lk/trusty_bench_print_tables.h | 6 | ||||
-rw-r--r-- | include/shared/lk/trusty_benchmark.h | 55 |
2 files changed, 48 insertions, 13 deletions
diff --git a/include/shared/lk/trusty_bench_print_tables.h b/include/shared/lk/trusty_bench_print_tables.h index f348ddd..4a02655 100644 --- a/include/shared/lk/trusty_bench_print_tables.h +++ b/include/shared/lk/trusty_bench_print_tables.h @@ -97,7 +97,11 @@ static inline void trusty_bench_print_title(const char* suite, const char* param) { char buffer[64]; - snprintf(buffer, sizeof(buffer), "RUNNING %s_%s_%s", suite, bench, param); + int nb_chars = + snprintf(buffer, sizeof(buffer), "RUNNING %s_%s", suite, bench); + if (*param != '\0' && nb_chars < (int)sizeof(buffer)) { + snprintf(buffer + nb_chars, sizeof(buffer) - nb_chars, "_%s", param); + } trusty_bench_print_border(BENCH_TITLE_WIDTH); trusty_bench_center_print(BENCH_TITLE_WIDTH - 1, buffer); trusty_unittest_printf("|\n"); diff --git a/include/shared/lk/trusty_benchmark.h b/include/shared/lk/trusty_benchmark.h index 2f4023c..f4c23c2 100644 --- a/include/shared/lk/trusty_benchmark.h +++ b/include/shared/lk/trusty_benchmark.h @@ -272,13 +272,35 @@ static inline size_t bench_get_param_idx(void) { } /** - * PARAM_TEST_NODES - Create the unparameterized test node lists for BENCH - * @suite_name: Identifier of the current suite. - * @bench_name: Unique identifier of the Bench in the suite. - * @params: identifier of the param Array for parametric benches or - * "non_parametric" for simple ones. + * PARAM_TEST_NODES_SIMPLE - Create the unparameterized test node lists for + * BENCH + * @suite_name: Identifier of the current suite. + * @bench_name: Unique identifier of the Bench in the suite. */ -#define PARAM_TEST_NODES(suite_name, bench_name, params) \ +#define PARAM_TEST_NODES_SIMPLE(suite_name, bench_name) \ + static struct test_list_node suite_name##_##bench_name##_bench_##_node = { \ + .node = LIST_INITIAL_CLEARED_VALUE, \ + .suite = STRINGIFY(suite_name_), \ + .name = STRINGIFY(bench_name_), \ + .func = suite_name##_##bench_name##_bench_, \ + .needs_param = 0, \ + }; \ + \ + __attribute__((constructor)) void \ + suite_name##_##bench_name##_bench_##_add(void) { \ + list_add_tail(&_test_list, \ + &suite_name##_##bench_name##_bench_##_node.node); \ + } + +/** + * PARAM_TEST_NODES_PARAMETRIC - Create the unparameterized test node lists + * for BENCH + * @suite_name: Identifier of the current suite. + * @bench_name: Unique identifier of the Bench in the suite. + * @params: identifier of the param Array for parametric + * benches + */ +#define PARAM_TEST_NODES_PARAMETRIC(suite_name, bench_name, params) \ static struct test_list_node \ suite_name##_##bench_name##_bench_##params##_node = { \ .node = LIST_INITIAL_CLEARED_VALUE, \ @@ -540,18 +562,18 @@ static inline int get_extended_test_name(const char* test_name_in, * @nb_runs: The number of execution of its body. */ #define BENCH_SIMPLE(suite_name, bench_name, nb_runs) \ - static int suite_name##_##bench_name##_inner_non_parametric(void); \ - static void suite_name##_##bench_name##_bench_non_parametric(void); \ + static int suite_name##_##bench_name##_inner_(void); \ + static void suite_name##_##bench_name##_bench_(void); \ static struct list_node suite_name##_##bench_name##_metric_list = \ LIST_INITIAL_VALUE(suite_name##_##bench_name##_metric_list); \ - static void suite_name##_##bench_name##_bench_non_parametric(void) { \ + static void suite_name##_##bench_name##_bench_(void) { \ bench_state.cur_param_idx = 0; \ - BENCH_CORE(suite_name, bench_name, nb_runs, 1, non_parametric, \ + BENCH_CORE(suite_name, bench_name, nb_runs, 1, , \ suite_name##_##bench_name##_metric_list); \ } \ \ - PARAM_TEST_NODES(suite_name, bench_name, non_parametric) \ - static int suite_name##_##bench_name##_inner_non_parametric(void) + PARAM_TEST_NODES(suite_name, bench_name) \ + static int suite_name##_##bench_name##_inner_(void) /* * A few helper macros for static dispatch of BENCH @@ -586,4 +608,13 @@ static inline int get_extended_test_name(const char* test_name_in, */ #define BENCH(...) CAT(BENCH_, EVAL(NB_ARGS(__VA_ARGS__)))(__VA_ARGS__) +/* + * PARAM_TEST_NODES - Routing the PARAM_TEST_NODES macros depending on its + * number of parameters. + */ +#define PARAM_TEST_NODES_2 PARAM_TEST_NODES_SIMPLE +#define PARAM_TEST_NODES_3 PARAM_TEST_NODES_PARAMETRIC +#define PARAM_TEST_NODES(...) \ + CAT(PARAM_TEST_NODES_, EVAL(NB_ARGS(__VA_ARGS__)))(__VA_ARGS__) + __END_CDECLS |