X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/25ed869bd9f1204b424847f48e62eaefb50604dc:/src/mc/mc_request.c..d13b1659a0c2551ee41b287a269e391bb2d7bc8a:/src/mc/mc_request.cpp diff --git a/src/mc/mc_request.c b/src/mc/mc_request.cpp similarity index 94% rename from src/mc/mc_request.c rename to src/mc/mc_request.cpp index 2af0bdbf38..4d0ebf46c1 100644 --- a/src/mc/mc_request.c +++ b/src/mc/mc_request.cpp @@ -11,6 +11,8 @@ #include "mc_private.h" #include "mc_smx.h" +extern "C" { + XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_request, mc, "Logging specific to MC (request)"); @@ -40,7 +42,7 @@ int MC_request_depend(smx_simcall_t r1, smx_simcall_t r2) // Those are internal requests, we do not need indirection // because those objects are copies: - smx_synchro_t synchro1= NULL, synchro2=NULL; + smx_synchro_t synchro1 = NULL, synchro2 = NULL; if (r1->call == SIMCALL_COMM_WAIT) { synchro1 = simcall_comm_wait__get__comm(r1); } @@ -273,7 +275,7 @@ char *MC_request_to_string(smx_simcall_t req, int value, e_mc_request_type_t req // size_t size = size_pointer ? *size_pointer : 0; size_t size = 0; if (remote_size) - MC_process_read_simple(&mc_model_checker->process, &size, + MC_process_read_simple(&mc_model_checker->process(), &size, remote_size, sizeof(size)); type = "iRecv"; @@ -309,7 +311,7 @@ char *MC_request_to_string(smx_simcall_t req, int value, e_mc_request_type_t req s_smx_synchro_t synchro; smx_synchro_t act; if (use_remote_comm) { - MC_process_read_simple(&mc_model_checker->process, &synchro, + MC_process_read_simple(&mc_model_checker->process(), &synchro, remote_act, sizeof(synchro)); act = &synchro; } else @@ -334,7 +336,7 @@ char *MC_request_to_string(smx_simcall_t req, int value, e_mc_request_type_t req s_smx_synchro_t synchro; smx_synchro_t act; if (use_remote_comm) { - MC_process_read_simple(&mc_model_checker->process, &synchro, + MC_process_read_simple(&mc_model_checker->process(), &synchro, remote_act, sizeof(synchro)); act = &synchro; } else @@ -366,11 +368,11 @@ char *MC_request_to_string(smx_simcall_t req, int value, e_mc_request_type_t req case SIMCALL_COMM_WAITANY: { type = "WaitAny"; s_xbt_dynar_t comms; - MC_process_read_simple(&mc_model_checker->process, + MC_process_read_simple(&mc_model_checker->process(), &comms, simcall_comm_waitany__get__comms(req), sizeof(comms)); if (!xbt_dynar_is_empty(&comms)) { smx_synchro_t remote_sync; - MC_process_read_dynar_element(&mc_model_checker->process, + MC_process_read_dynar_element(&mc_model_checker->process(), &remote_sync, simcall_comm_waitany__get__comms(req), value, sizeof(remote_sync)); char* p = pointer_to_string(remote_sync); @@ -391,7 +393,7 @@ char *MC_request_to_string(smx_simcall_t req, int value, e_mc_request_type_t req type = "TestAny"; args = bprintf("(%d of %lu)", value + 1, - MC_process_read_dynar_length(&mc_model_checker->process, + MC_process_read_dynar_length(&mc_model_checker->process(), simcall_comm_testany__get__comms(req))); } break; @@ -400,10 +402,10 @@ char *MC_request_to_string(smx_simcall_t req, int value, e_mc_request_type_t req type = "Mutex LOCK"; s_smx_mutex_t mutex; - MC_process_read_simple(&mc_model_checker->process, &mutex, + MC_process_read_simple(&mc_model_checker->process(), &mutex, simcall_mutex_lock__get__mutex(req), sizeof(mutex)); s_xbt_swag_t mutex_sleeping; - MC_process_read_simple(&mc_model_checker->process, &mutex_sleeping, + MC_process_read_simple(&mc_model_checker->process(), &mutex_sleeping, mutex.sleeping, sizeof(mutex_sleeping)); args = bprintf("locked = %d, owner = %d, sleeping = %d", @@ -456,13 +458,13 @@ unsigned int MC_request_testany_fail(smx_simcall_t req) // Read the dynar: s_xbt_dynar_t comms; - MC_process_read_simple(&mc_model_checker->process, + MC_process_read_simple(&mc_model_checker->process(), &comms, simcall_comm_testany__get__comms(req), sizeof(comms)); // Read ther dynar buffer: size_t buffer_size = comms.elmsize * comms.used; char buffer[buffer_size]; - MC_process_read_simple(&mc_model_checker->process, + MC_process_read_simple(&mc_model_checker->process(), buffer, comms.data, buffer_size); // Iterate over the elements: @@ -472,11 +474,11 @@ unsigned int MC_request_testany_fail(smx_simcall_t req) // Get the element: smx_synchro_t remote_action = NULL; - memcpy(buffer + comms.elmsize * cursor, &remote_action, sizeof(remote_action)); + memcpy(&remote_action, buffer + comms.elmsize * cursor, sizeof(remote_action)); // Dereference the pointer: s_smx_synchro_t action; - MC_process_read_simple(&mc_model_checker->process, + MC_process_read_simple(&mc_model_checker->process(), &action, remote_action, sizeof(action)); // Finally so something useful about it: @@ -499,14 +501,14 @@ int MC_request_is_enabled_by_idx(smx_simcall_t req, unsigned int idx) case SIMCALL_COMM_WAITANY: { MC_process_read_dynar_element( - &mc_model_checker->process, &remote_act, simcall_comm_waitany__get__comms(req), + &mc_model_checker->process(), &remote_act, simcall_comm_waitany__get__comms(req), idx, sizeof(remote_act)); } break; case SIMCALL_COMM_TESTANY: { MC_process_read_dynar_element( - &mc_model_checker->process, &remote_act, simcall_comm_testany__get__comms(req), + &mc_model_checker->process(), &remote_act, simcall_comm_testany__get__comms(req), idx, sizeof(remote_act)); } break; @@ -516,7 +518,7 @@ int MC_request_is_enabled_by_idx(smx_simcall_t req, unsigned int idx) } s_smx_synchro_t synchro; - MC_process_read_simple(&mc_model_checker->process, + MC_process_read_simple(&mc_model_checker->process(), &synchro, remote_act, sizeof(synchro)); return synchro.comm.src_proc && synchro.comm.dst_proc; } @@ -562,7 +564,7 @@ char *MC_request_get_dot_output(smx_simcall_t req, int value) } else { smx_synchro_t remote_act = simcall_comm_wait__get__comm(req); s_smx_synchro_t synchro; - MC_process_read_simple(&mc_model_checker->process, &synchro, + MC_process_read_simple(&mc_model_checker->process(), &synchro, remote_act, sizeof(synchro)); smx_process_t src_proc = MC_smx_resolve_process(synchro.comm.src_proc); @@ -585,7 +587,7 @@ char *MC_request_get_dot_output(smx_simcall_t req, int value) case SIMCALL_COMM_TEST: { smx_synchro_t remote_act = simcall_comm_test__get__comm(req); s_smx_synchro_t synchro; - MC_process_read_simple(&mc_model_checker->process, &synchro, + MC_process_read_simple(&mc_model_checker->process(), &synchro, remote_act, sizeof(synchro)); if (synchro.comm.src_proc == NULL || synchro.comm.dst_proc == NULL) { if (issuer->smx_host) @@ -607,7 +609,7 @@ char *MC_request_get_dot_output(smx_simcall_t req, int value) case SIMCALL_COMM_WAITANY: { unsigned long comms_size = MC_process_read_dynar_length( - &mc_model_checker->process, simcall_comm_waitany__get__comms(req)); + &mc_model_checker->process(), simcall_comm_waitany__get__comms(req)); if (issuer->smx_host) label = bprintf("[(%lu)%s] WaitAny [%d of %lu]", issuer->pid, @@ -684,3 +686,5 @@ char *MC_request_get_dot_output(smx_simcall_t req, int value) return str; } + +}