X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/03d36345c4247a907709b86c189a53f5f85bea88..4914b22f76675e6a7f4d4ca2b27fb2edbfde9995:/src/mc/mc_request.c diff --git a/src/mc/mc_request.c b/src/mc/mc_request.c index 234c5d27d3..5b309a3855 100644 --- a/src/mc/mc_request.c +++ b/src/mc/mc_request.c @@ -4,6 +4,8 @@ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ +#include "mc_request.h" +#include "mc_safety.h" #include "mc_private.h" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_request, mc, @@ -229,6 +231,7 @@ char *MC_request_to_string(smx_simcall_t req, int value) { char *type = NULL, *args = NULL, *str = NULL, *p = NULL, *bs = NULL; smx_synchro_t act = NULL; + smx_mutex_t mutex = NULL; size_t size = 0; switch (req->call) { @@ -326,6 +329,18 @@ char *MC_request_to_string(smx_simcall_t req, int value) } break; + case SIMCALL_MUTEX_LOCK: + mutex = simcall_mutex_lock__get__mutex(req); + type = xbt_strdup("Mutex LOCK"); + args = bprintf("locked = %d, owner = %d, sleeping = %d", mutex->locked, mutex->owner != NULL ? (int)mutex->owner->pid : -1, xbt_swag_size(mutex->sleeping)); + break; + + case SIMCALL_MUTEX_UNLOCK: + type = xbt_strdup("Mutex UNLOCK"); + mutex = simcall_mutex_unlock__get__mutex(req); + args = bprintf("locked = %d, owner = %lu, sleeping = %d", mutex->locked, mutex->owner->pid, xbt_swag_size(mutex->sleeping)); + break; + case SIMCALL_MC_SNAPSHOT: type = xbt_strdup("MC_SNAPSHOT"); args = NULL; @@ -418,7 +433,7 @@ char *MC_request_get_dot_output(smx_simcall_t req, int value) char *str = NULL, *label = NULL; smx_synchro_t act = NULL; - + switch (req->call) { case SIMCALL_COMM_ISEND: if (req->issuer->smx_host) @@ -515,6 +530,14 @@ char *MC_request_get_dot_output(smx_simcall_t req, int value) } break; + case SIMCALL_MUTEX_LOCK: + label = bprintf("[(%lu)] Mutex LOCK", req->issuer->pid); + break; + + case SIMCALL_MUTEX_UNLOCK: + label = bprintf("[(%lu)] Mutex UNLOCK", req->issuer->pid); + break; + case SIMCALL_MC_RANDOM: if (req->issuer->smx_host) label =