summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaphael Herouart <rherouart@google.com>2024-02-16 03:53:21 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2024-02-16 03:53:21 +0000
commitffca5d093965d985a6416d18c5e3246bd5c0cd07 (patch)
treea25b34ed55b98820e5e538a9eb814223abed37be
parent00ea0452f657e3d4a8d377c3d2601e1916634bfe (diff)
parentbae0f95b28ae457bf75e4e8b3110de16b7c90312 (diff)
downloadtrusty-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.h6
-rw-r--r--include/shared/lk/trusty_benchmark.h55
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