From ce16573cb3301ade40ee06c58e65750c45357105 Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Thu, 18 Sep 2008 10:04:46 +0000 Subject: [PATCH] Add init/shutdown to benchmark and fix its users. SVN revision: 36073 --- legacy/eina/src/include/eina_benchmark.h | 3 ++ legacy/eina/src/lib/eina_benchmark.c | 44 ++++++++++++++++++++++-- legacy/eina/src/lib/eina_main.c | 6 ++++ legacy/eina/src/tests/eina_bench.c | 4 +++ 4 files changed, 55 insertions(+), 2 deletions(-) diff --git a/legacy/eina/src/include/eina_benchmark.h b/legacy/eina/src/include/eina_benchmark.h index c4447e9f3e..4adb0d28c3 100644 --- a/legacy/eina/src/include/eina_benchmark.h +++ b/legacy/eina/src/include/eina_benchmark.h @@ -37,6 +37,9 @@ typedef struct _Eina_Benchmark Eina_Benchmark; typedef void (*Eina_Benchmark_Specimens)(int request); #define EINA_BENCHMARK(Function) ((Eina_Benchmark_Specimens)Function) +EAPI int eina_benchmark_init(void); +EAPI int eina_benchmark_shutdown(void); + EAPI Eina_Benchmark *eina_benchmark_new(const char *name, const char *run); EAPI void eina_benchmark_free(Eina_Benchmark *bench); diff --git a/legacy/eina/src/lib/eina_benchmark.c b/legacy/eina/src/lib/eina_benchmark.c index e791b0daa3..b84aa46f97 100644 --- a/legacy/eina/src/lib/eina_benchmark.c +++ b/legacy/eina/src/lib/eina_benchmark.c @@ -61,6 +61,8 @@ struct _Eina_Benchmark Eina_Inlist *runs; }; +static int _eina_benchmark_count = 0; + /** * @endcond */ @@ -89,13 +91,46 @@ struct _Eina_Benchmark * @{ */ +EAPI int +eina_benchmark_init(void) +{ + _eina_benchmark_count++; + + if (_eina_benchmark_count > 1) return _eina_benchmark_count; + + eina_error_init(); + eina_array_init(); + eina_counter_init(); + + return _eina_benchmark_count; +} + +EAPI int +eina_benchmark_shutdown(void) +{ + _eina_benchmark_count--; + + if (_eina_benchmark_count != 0) return _eina_benchmark_count; + + eina_counter_shutdown(); + eina_array_shutdown(); + eina_error_shutdown(); + + return 0; +} + EAPI Eina_Benchmark * eina_benchmark_new(const char *name, const char *run) { Eina_Benchmark *new; + eina_error_set(0); new = calloc(1, sizeof (Eina_Benchmark)); - if (!new) return NULL; + if (!new) + { + eina_error_set(EINA_ERROR_OUT_OF_MEMORY); + return NULL; + } new->name = name; new->run = run; @@ -127,8 +162,13 @@ eina_benchmark_register(Eina_Benchmark *bench, const char *name, Eina_Benchmark_ if (!bench) return ; + eina_error_set(0); run = calloc(1, sizeof (Eina_Run)); - if (!run) return ; + if (!run) + { + eina_error_set(EINA_ERROR_OUT_OF_MEMORY); + return ; + } run->cb = bench_cb; run->name = name; diff --git a/legacy/eina/src/lib/eina_main.c b/legacy/eina/src/lib/eina_main.c index 68ee32c2fc..61373e1549 100644 --- a/legacy/eina/src/lib/eina_main.c +++ b/legacy/eina/src/lib/eina_main.c @@ -25,6 +25,8 @@ #include "eina_stringshare.h" #include "eina_list.h" #include "eina_array.h" +#include "eina_counter.h" +#include "eina_benchmark.h" /*============================================================================* * Global * @@ -44,6 +46,8 @@ eina_init(void) eina_stringshare_init(); eina_list_init(); eina_array_init(); + eina_counter_init(); + eina_benchmark_init(); return r; } @@ -53,6 +57,8 @@ eina_shutdown(void) { int r; + eina_benchmark_shutdown(); + eina_counter_shutdown(); eina_array_shutdown(); eina_list_shutdown(); eina_stringshare_shutdown(); diff --git a/legacy/eina/src/tests/eina_bench.c b/legacy/eina/src/tests/eina_bench.c index 95ff2f785c..8e0186ff8c 100644 --- a/legacy/eina/src/tests/eina_bench.c +++ b/legacy/eina/src/tests/eina_bench.c @@ -46,6 +46,8 @@ main(int argc, char **argv) if (argc != 2) return -1; + eina_benchmark_init(); + for (i = 0; etc[i].bench_case != NULL; ++i) { test = eina_benchmark_new(etc[i].bench_case, argv[1]); @@ -71,5 +73,7 @@ main(int argc, char **argv) eina_bench_e17(); + eina_benchmark_shutdown(); + return 0; }