X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6760cb07d6b57be16928d95339d71e57c4e24f36..c581d553ae0df2e3d481bce42644d2034c5e3dcd:/src/gras/Virtu/sg_emul.c diff --git a/src/gras/Virtu/sg_emul.c b/src/gras/Virtu/sg_emul.c index b6d371ffc7..63d8b77c7b 100644 --- a/src/gras/Virtu/sg_emul.c +++ b/src/gras/Virtu/sg_emul.c @@ -18,30 +18,16 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(gras_virtu_emul, gras_virtu, "Emulation support"); /*** CPU burning */ -void gras_cpu_burn(double flops) { - smx_action_t act; - smx_cond_t cond; - smx_mutex_t mutex; - - if (flops>0) { - cond = SIMIX_cond_init(); - mutex = SIMIX_mutex_init(); - - SIMIX_mutex_lock(mutex); - act = - SIMIX_action_execute(SIMIX_host_self(), "task", flops); - - SIMIX_register_action_to_condition(act, cond); - SIMIX_cond_wait(cond, mutex); - SIMIX_unregister_action_to_condition(act, cond); - - SIMIX_action_destroy(act); - SIMIX_mutex_unlock(mutex); +void gras_cpu_burn(double flops) +{ + smx_action_t execution; - SIMIX_cond_destroy(cond); - SIMIX_mutex_destroy(mutex); + if (flops > 0){ + execution = SIMIX_req_host_execute("task", SIMIX_host_self(), flops, 1); + SIMIX_req_host_execution_wait(execution); } } + /*** Timing macros ***/ static xbt_os_timer_t timer; static int benchmarking = 0; @@ -90,7 +76,7 @@ static double get_from_dict(xbt_dict_t dict, const char *key) int gras_bench_always_begin(const char *location, int line) { - xbt_assert0(!benchmarking, "Already benchmarking"); + xbt_assert(!benchmarking, "Already benchmarking"); benchmarking = 1; if (!timer) @@ -98,13 +84,14 @@ int gras_bench_always_begin(const char *location, int line) return 0; } -int gras_bench_always_end(void) { - xbt_assert0(benchmarking, "Not benchmarking yet"); +int gras_bench_always_end(void) +{ + xbt_assert(benchmarking, "Not benchmarking yet"); benchmarking = 0; xbt_os_timer_stop(timer); duration = xbt_os_timer_elapsed(timer); - gras_cpu_burn(duration/reference); + gras_cpu_burn(duration / reference); return 0; } @@ -112,7 +99,7 @@ int gras_bench_always_end(void) { int gras_bench_once_begin(const char *location, int line) { double *ir = NULL; - xbt_assert0(!benchmarking, "Already benchmarking"); + xbt_assert(!benchmarking, "Already benchmarking"); benchmarking = 1; if (!locbuf || locbufsize < strlen(location) + 64) { @@ -123,7 +110,7 @@ int gras_bench_once_begin(const char *location, int line) ir = xbt_dict_get_or_null(benchmark_set, locbuf); if (!ir) { - DEBUG1("%s", locbuf); + XBT_DEBUG("%s", locbuf); duration = 1; xbt_os_timer_start(timer); return 1; @@ -133,8 +120,9 @@ int gras_bench_once_begin(const char *location, int line) } } -int gras_bench_once_end(void) { - xbt_assert0(benchmarking, "Not benchmarking yet"); +int gras_bench_once_end(void) +{ + xbt_assert(benchmarking, "Not benchmarking yet"); benchmarking = 0; if (duration > 0) { xbt_os_timer_stop(timer); @@ -143,8 +131,8 @@ int gras_bench_once_end(void) { } else { duration = get_from_dict(benchmark_set, locbuf); } - DEBUG2("Simulate the run of a task of %f sec for %s", duration, locbuf); - gras_cpu_burn(duration/reference); + XBT_DEBUG("Simulate the run of a task of %f sec for %s", duration, locbuf); + gras_cpu_burn(duration / reference); return 0; }