Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[mc] s/NULL/nullptr/
[simgrid.git] / src / mc / mc_safety.cpp
index b00c31e..f25f11c 100644 (file)
@@ -4,16 +4,22 @@
 /* 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 <assert.h>
+#include <cassert>
 
-#include "mc_state.h"
-#include "mc_request.h"
-#include "mc_safety.h"
-#include "mc_private.h"
-#include "mc_record.h"
-#include "mc_smx.h"
-#include "mc_client.h"
-#include "mc_exit.h"
+#include <cstdio>
+
+#include <xbt/log.h>
+#include <xbt/fifo.h>
+#include <xbt/sysdep.h>
+
+#include "src/mc/mc_state.h"
+#include "src/mc/mc_request.h"
+#include "src/mc/mc_safety.h"
+#include "src/mc/mc_private.h"
+#include "src/mc/mc_record.h"
+#include "src/mc/mc_smx.h"
+#include "src/mc/mc_client.h"
+#include "src/mc/mc_exit.h"
 
 #include "src/xbt/mmalloc/mmprivate.h"
 
@@ -28,7 +34,7 @@ static int is_exploration_stack_state(mc_state_t current_state){
 
   xbt_fifo_item_t item;
   mc_state_t stack_state;
-  for(item = xbt_fifo_get_first_item(mc_stack); item != NULL; item = xbt_fifo_get_next_item(item)) {
+  for(item = xbt_fifo_get_first_item(mc_stack); item != nullptr; item = xbt_fifo_get_next_item(item)) {
     stack_state = (mc_state_t) xbt_fifo_get_item_content(item);
     if(snapshot_compare(stack_state, current_state) == 0){
       XBT_INFO("Non-progressive cycle : state %d -> state %d", stack_state->num, current_state->num);
@@ -54,7 +60,7 @@ static void MC_pre_modelcheck_safety()
   XBT_DEBUG("Initial state");
 
   /* Wait for requests (schedules processes) */
-  MC_wait_for_requests();
+  mc_model_checker->wait_for_requests();
 
   /* Get an enabled process and insert it in the interleave set of the initial state */
   smx_process_t process;
@@ -77,12 +83,12 @@ int MC_modelcheck_safety(void)
 {
   MC_modelcheck_safety_init();
 
-  char *req_str = NULL;
+  char *req_str = nullptr;
   int value;
-  smx_simcall_t req = NULL;
-  mc_state_t state = NULL, prev_state = NULL, next_state = NULL;
-  xbt_fifo_item_t item = NULL;
-  mc_visited_state_t visited_state = NULL;
+  smx_simcall_t req = nullptr;
+  mc_state_t state = nullptr, prev_state = NULL, next_state = NULL;
+  xbt_fifo_item_t item = nullptr;
+  mc_visited_state_t visited_state = nullptr;
 
   while (xbt_fifo_size(mc_stack) > 0) {
 
@@ -101,13 +107,13 @@ int MC_modelcheck_safety(void)
     /* If there are processes to interleave and the maximum depth has not been reached
        then perform one step of the exploration algorithm */
     if (xbt_fifo_size(mc_stack) <= _sg_mc_max_depth && !user_max_depth_reached
-        && (req = MC_state_get_request(state, &value)) && visited_state == NULL) {
+        && (req = MC_state_get_request(state, &value)) && visited_state == nullptr) {
 
       req_str = MC_request_to_string(req, value, MC_REQUEST_SIMIX);
       XBT_DEBUG("Execute: %s", req_str);
       xbt_free(req_str);
 
-      if (dot_output != NULL) {
+      if (dot_output != nullptr) {
         req_str = MC_request_get_dot_output(req, value);
       }
 
@@ -119,7 +125,7 @@ int MC_modelcheck_safety(void)
 
       /* Answer the request */
       MC_simcall_handle(req, value);
-      MC_wait_for_requests();
+      mc_model_checker->wait_for_requests();
 
       /* Create the new expanded state */
       next_state = MC_state_new();
@@ -129,10 +135,10 @@ int MC_modelcheck_safety(void)
           return SIMGRID_MC_EXIT_NON_TERMINATION;
       }
 
-      if ((visited_state = is_visited_state(next_state)) == NULL) {
+      if ((visited_state = is_visited_state(next_state)) == nullptr) {
 
         /* Get an enabled process and insert it in the interleave set of the next state */
-        smx_process_t process = NULL;
+        smx_process_t process = nullptr;
         MC_EACH_SIMIX_PROCESS(process,
           if (MC_process_is_enabled(process)) {
             MC_state_interleave_process(next_state, process);
@@ -141,19 +147,19 @@ int MC_modelcheck_safety(void)
           }
         );
 
-        if (dot_output != NULL)
-          fprintf(dot_output, "\"%d\" -> \"%d\" [%s];\n", state->num, next_state->num, req_str);
+        if (dot_output != nullptr)
+          std::fprintf(dot_output, "\"%d\" -> \"%d\" [%s];\n", state->num, next_state->num, req_str);
 
       } else {
 
-        if (dot_output != NULL)
-          fprintf(dot_output, "\"%d\" -> \"%d\" [%s];\n", state->num, visited_state->other_num == -1 ? visited_state->num : visited_state->other_num, req_str);
+        if (dot_output != nullptr)
+          std::fprintf(dot_output, "\"%d\" -> \"%d\" [%s];\n", state->num, visited_state->other_num == -1 ? visited_state->num : visited_state->other_num, req_str);
 
       }
 
       xbt_fifo_unshift(mc_stack, next_state);
 
-      if (dot_output != NULL)
+      if (dot_output != nullptr)
         xbt_free(req_str);
 
       /* Let's loop again */
@@ -161,11 +167,11 @@ int MC_modelcheck_safety(void)
       /* The interleave set is empty or the maximum depth is reached, let's back-track */
     } else {
 
-      if ((xbt_fifo_size(mc_stack) > _sg_mc_max_depth) || user_max_depth_reached || visited_state != NULL) {
+      if ((xbt_fifo_size(mc_stack) > _sg_mc_max_depth) || user_max_depth_reached || visited_state != nullptr) {
 
-        if (user_max_depth_reached && visited_state == NULL)
+        if (user_max_depth_reached && visited_state == nullptr)
           XBT_DEBUG("User max depth reached !");
-        else if (visited_state == NULL)
+        else if (visited_state == nullptr)
           XBT_WARN("/!\\ Max depth reached ! /!\\ ");
         else
           XBT_DEBUG("State already visited (equal to state %d), exploration stopped on this path.", visited_state->other_num == -1 ? visited_state->num : visited_state->other_num);
@@ -181,11 +187,11 @@ int MC_modelcheck_safety(void)
       XBT_DEBUG("Delete state %d at depth %d", state->num, xbt_fifo_size(mc_stack) + 1);
       MC_state_delete(state, !state->in_visited_states ? 1 : 0);
 
-      visited_state = NULL;
+      visited_state = nullptr;
 
       /* Check for deadlocks */
       if (MC_deadlock_check()) {
-        MC_show_deadlock(NULL);
+        MC_show_deadlock(nullptr);
         return SIMGRID_MC_EXIT_DEADLOCK;
       }
 
@@ -273,7 +279,7 @@ static void MC_modelcheck_safety_init(void)
     XBT_INFO("Check non progressive cycles");
   else
     XBT_INFO("Check a safety property");
-  MC_wait_for_requests();
+  mc_model_checker->wait_for_requests();
 
   XBT_DEBUG("Starting the safety algorithm");
 
@@ -286,5 +292,5 @@ static void MC_modelcheck_safety_init(void)
 
   /* Save the initial state */
   initial_global_state = xbt_new0(s_mc_global_t, 1);
-  initial_global_state->snapshot = MC_take_snapshot(0);
+  initial_global_state->snapshot = simgrid::mc::take_snapshot(0);
 }