X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1da99cb4dcc64cf3993af474abf27399722aa09a..778f65057da68465382593cd036b6ee59ada54e9:/src/gras/Virtu/sg_emul.c diff --git a/src/gras/Virtu/sg_emul.c b/src/gras/Virtu/sg_emul.c index 6d70e51c31..1fc6e85525 100644 --- a/src/gras/Virtu/sg_emul.c +++ b/src/gras/Virtu/sg_emul.c @@ -13,36 +13,49 @@ #include "xbt/xbt_portability.h" /* timers */ #include "xbt/dict.h" +#include "xbt/ex.h" -XBT_LOG_NEW_DEFAULT_SUBCATEGORY(emul,gras,"Emulation support"); +XBT_LOG_NEW_DEFAULT_SUBCATEGORY(gras_virtu_emul,gras_virtu,"Emulation support"); /*** Timing macros ***/ static xbt_os_timer_t timer; static int benchmarking = 0; static xbt_dict_t benchmark_set = NULL; -static double reference = .00523066250047108838; /* FIXME: we should benchmark host machine to set this */ +static double reference = .00000000523066250047108838; /* FIXME: we should benchmark host machine to set this; unit=s/flop */ static double duration = 0.0; static char* locbuf = NULL; static int locbufsize; +void gras_emul_init(void) +{ + if(!benchmark_set) { + benchmark_set = xbt_dict_new(); + timer = xbt_os_timer_new(); + } +} + +void gras_emul_exit(void) { + if (locbuf) free(locbuf); + xbt_dict_free(&benchmark_set); + xbt_os_timer_free(timer); +} + + static void store_in_dict(xbt_dict_t dict, const char *key, double value) { - double *ir = NULL; + double *ir; - xbt_dict_get(dict, key, (void *) &ir); + ir = xbt_dict_get_or_null(dict, key); if (!ir) { ir = xbt_new0(double,1); - xbt_dict_set(dict, key, ir, free); + xbt_dict_set(dict, key, ir, xbt_free_f); } *ir = value; } -static double get_from_dict(xbt_dict_t dict, const char *key) -{ - double *ir = NULL; - - xbt_dict_get(dict, key, (void *) &ir); +static double get_from_dict(xbt_dict_t dict, const char *key) { + double *ir = xbt_dict_get(dict, key); return *ir; } @@ -71,8 +84,7 @@ int gras_bench_always_end(void) return 0; } -int gras_bench_once_begin(const char *location,int line) -{ +int gras_bench_once_begin(const char *location,int line) { double *ir = NULL; xbt_assert0(!benchmarking,"Already benchmarking"); benchmarking = 1; @@ -83,7 +95,7 @@ int gras_bench_once_begin(const char *location,int line) } sprintf(locbuf,"%s:%d",location, line); - xbt_dict_get(benchmark_set, locbuf, (void *) &ir); + ir = xbt_dict_get_or_null(benchmark_set, locbuf); if(!ir) { DEBUG1("%s",locbuf); duration = 1; @@ -115,19 +127,6 @@ int gras_bench_once_end(void) return 0; } -void gras_chrono_init(void) -{ - if(!benchmark_set) { - benchmark_set = xbt_dict_new(); - timer = xbt_os_timer_new(); - } -} - -void gras_chrono_exit(void) { - if (locbuf) free(locbuf); - xbt_dict_free(&benchmark_set); - xbt_os_timer_free(timer); -} /*** Conditional execution support ***/