Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
kill an unused function
[simgrid.git] / src / simix / smx_global.cpp
index fb5a7c5..adcb65e 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2007-2017. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2007-2018. The SimGrid Team. All rights reserved.          */
 
 /* 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. */
@@ -11,7 +11,6 @@
 #include <csignal> /* Signal handling */
 #include <cstdlib>
 
-#include <xbt/algorithm.hpp>
 #include <xbt/functional.hpp>
 #include <xbt/utility.hpp>
 
@@ -69,7 +68,7 @@ public:
   s_smx_timer_t(double date, simgrid::xbt::Task<void()> callback) : date(date), callback(std::move(callback)) {}
 };
 
-void (*SMPI_switch_data_segment)(int) = nullptr;
+void (*SMPI_switch_data_segment)(simgrid::s4u::ActorPtr) = nullptr;
 
 int _sg_do_verbose_exit = 1;
 static void inthandler(int)
@@ -170,21 +169,16 @@ static void kill_process(smx_actor_t process)
   SIMIX_process_kill(process, nullptr);
 }
 
-static std::function<void()> maestro_code;
 
 namespace simgrid {
 namespace simix {
 
 simgrid::xbt::signal<void()> onDeadlock;
 
-XBT_PUBLIC(void) set_maestro(std::function<void()> code)
-{
-  maestro_code = std::move(code);
-}
-
 }
 }
 
+static std::function<void()> maestro_code;
 void SIMIX_set_maestro(void (*code)(void*), void* data)
 {
 #ifdef _WIN32
@@ -196,9 +190,6 @@ void SIMIX_set_maestro(void (*code)(void*), void* data)
 /**
  * \ingroup SIMIX_API
  * \brief Initialize SIMIX internal data.
- *
- * \param argc Argc
- * \param argv Argv
  */
 void SIMIX_global_init(int *argc, char **argv)
 {
@@ -221,7 +212,7 @@ void SIMIX_global_init(int *argc, char **argv)
 
     // Either create a new context with maestro or create
     // a context object with the current context mestro):
-    simgrid::simix::create_maestro(maestro_code);
+    simgrid::kernel::actor::create_maestro(maestro_code);
 
     /* Prepare to display some more info when dying on Ctrl-C pressing */
     signal(SIGINT, inthandler);
@@ -283,7 +274,7 @@ void SIMIX_clean()
 #endif
 
   /* Kill all processes (but maestro) */
-  SIMIX_process_killall(simix_global->maestro_process, 1);
+  SIMIX_process_killall(simix_global->maestro_process);
   SIMIX_context_runall();
   SIMIX_process_empty_trash();
 
@@ -340,9 +331,9 @@ double SIMIX_get_clock()
 /** Wake up all processes waiting for a Surf action to finish */
 static void SIMIX_wake_processes()
 {
-  surf_action_t action;
-
   for (auto const& model : *all_existing_models) {
+    simgrid::kernel::resource::Action* action;
+
     XBT_DEBUG("Handling the processes whose action failed (if any)");
     while ((action = surf_model_extract_failed_action_set(model))) {
       XBT_DEBUG("   Handling Action %p",action);
@@ -441,7 +432,7 @@ void SIMIX_run()
        *   Long proof: processes remain sorted through an arbitrary (implicit, complex but fixed) order in all cases.
        *
        *   - if there is no kill during the simulation, processes remain sorted according by their PID.
-       *     rational: This can be proved inductively.
+       *     Rationale: This can be proved inductively.
        *        Assume that process_to_run is sorted at a beginning of one round (it is at round 0: the deployment file
        *        is parsed linearly).
        *        Let's show that it is still so at the end of this round.
@@ -554,6 +545,7 @@ void SIMIX_run()
 
     XBT_CRITICAL("Oops ! Deadlock or code not perfectly clean.");
     SIMIX_display_process_status();
+    simgrid::s4u::onDeadlock();
     xbt_abort();
   }
   simgrid::s4u::onSimulationEnd();
@@ -570,7 +562,7 @@ void SIMIX_run()
  */
 smx_timer_t SIMIX_timer_set(double date, void (*callback)(void*), void *arg)
 {
-  smx_timer_t timer = new s_smx_timer_t(date, [callback, arg]() { callback(arg); });
+  smx_timer_t timer = new s_smx_timer_t(date, simgrid::xbt::makeTask([callback, arg]() { callback(arg); }));
   timer->handle_    = simix_timers.emplace(std::make_pair(date, timer));
   return timer;
 }
@@ -661,12 +653,12 @@ void SIMIX_display_process_status()
       if (boost::dynamic_pointer_cast<simgrid::kernel::activity::IoImpl>(process->waiting_synchro) != nullptr)
         synchro_description = "I/O";
 
-      XBT_INFO("Process %lu (%s@%s): waiting for %s synchro %p (%s) in state %d to finish", process->pid,
+      XBT_INFO("Process %ld (%s@%s): waiting for %s synchro %p (%s) in state %d to finish", process->pid,
                process->getCname(), process->host->getCname(), synchro_description, process->waiting_synchro.get(),
                process->waiting_synchro->name.c_str(), (int)process->waiting_synchro->state);
     }
     else {
-      XBT_INFO("Process %lu (%s@%s)", process->pid, process->getCname(), process->host->getCname());
+      XBT_INFO("Process %ld (%s@%s)", process->pid, process->getCname(), process->host->getCname());
     }
   }
 }