- smx_process_t process;
- smx_simcall_t req;
- unsigned int iter;
-
- while (!xbt_dynar_is_empty(simix_global->process_to_run)) {
- SIMIX_process_runall();
- xbt_dynar_foreach(simix_global->process_that_ran, iter, process) {
- req = &process->simcall;
- if (req->call != SIMCALL_NONE && !MC_request_is_visible(req))
- SIMIX_simcall_handle(req, 0);
+ if (mc_mode == MC_MODE_SERVER) {
+ int res;
+ if ((res = MC_protocol_send_simple_message(mc_model_checker->process.socket,
+ MC_MESSAGE_DEADLOCK_CHECK)))
+ xbt_die("Could not check deadlock state");
+ s_mc_int_message_t message;
+ ssize_t s = MC_receive_message(mc_model_checker->process.socket, &message, sizeof(message), 0);
+ if (s == -1)
+ xbt_die("Could not receive message");
+ else if (s != sizeof(message) || message.type != MC_MESSAGE_DEADLOCK_CHECK_REPLY) {
+ xbt_die("%s received unexpected message %s (%i, size=%i) "
+ "expected MC_MESSAGE_DEADLOCK_CHECK_REPLY (%i, size=%i)",
+ MC_mode_name(mc_mode),
+ MC_message_type_name(message.type), (int) message.type, (int) s,
+ (int) MC_MESSAGE_DEADLOCK_CHECK_REPLY, (int) sizeof(message)
+ );