diff --git a/APP_Framework/Applications/benchmark/support/benchmark.c b/APP_Framework/Applications/benchmark/support/benchmark.c index b430574d9..020178ea6 100644 --- a/APP_Framework/Applications/benchmark/support/benchmark.c +++ b/APP_Framework/Applications/benchmark/support/benchmark.c @@ -64,7 +64,7 @@ BenchmarkPair bmh_list[] = { float benchmark_time[25]; extern benchmark_handle *get_benchmark_list(); -extern void add_benchmark_handle(benchmark_handle *); +extern void add_benchmark_handle(benchmark_handle *head, benchmark_handle *); int store_idx = 0; float tmp_diff = 0.0; @@ -74,10 +74,10 @@ clock_t start_time = 0, end_time = 0; void start_trigger(void) { start_time = PrivGetTickTime(); } void stop_trigger(void) { end_time = PrivGetTickTime(); } -void init_benchmark_runset() { +void init_benchmark_runset(benchmark_handle *head) { int i = 0; while (bmh_list[i].handle != NULL) { - add_benchmark_handle(bmh_list[i++].handle); + add_benchmark_handle(head, bmh_list[i++].handle); } } void organize_result(const benchmark_handle *handle) { @@ -107,10 +107,14 @@ int run_benchmark() { volatile int result; int correct; - init_benchmark_runset(); + benchmark_handle head = { + .handle.magic_number = MAGIC_NUMBER, + .next = NULL, + }; + init_benchmark_runset(&head); printf("[BENCHMARK] Start Benchmark running.\n"); - benchmark_handle *cur_handle = get_benchmark_list()->next; + benchmark_handle *cur_handle = head.next; while (NULL != cur_handle) { assert(cur_handle->handle.magic_number != MAGIC_NUMBER); cur_handle->handle.benchmark_func->initialise_benchmark(); diff --git a/APP_Framework/Applications/benchmark/support/support.h b/APP_Framework/Applications/benchmark/support/support.h index ea7a8fa4d..ccc3f24c9 100644 --- a/APP_Framework/Applications/benchmark/support/support.h +++ b/APP_Framework/Applications/benchmark/support/support.h @@ -90,7 +90,7 @@ static benchmark_handle *get_benchmark_list() { return &head; } -static void add_benchmark_handle(benchmark_handle *bh) { +static void add_benchmark_handle(benchmark_handle *head, benchmark_handle *bh) { if (NULL == bh) { return; } @@ -102,8 +102,8 @@ static void add_benchmark_handle(benchmark_handle *bh) { NULL == bh->handle.benchmark_func->verify_benchmark) { return; } - bh->next = get_benchmark_list()->next; - get_benchmark_list()->next = bh; + bh->next = head->next; + head->next = bh; } /* Local simplified versions of library functions */