Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Remove Java bindings. They are not updated since maybe 10 years
[simgrid.git] / src / kernel / EngineImpl.cpp
index 58dccdb..2d8208f 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2022. The SimGrid Team. All rights reserved.          */
+/* Copyright (c) 2016-2023. 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. */
@@ -22,9 +22,7 @@
 #include "xbt/xbt_modinter.h" /* whether initialization was already done */
 
 #include <boost/algorithm/string/predicate.hpp>
-#ifndef _WIN32
 #include <dlfcn.h>
-#endif /* _WIN32 */
 
 #if SIMGRID_HAVE_MC
 #include "src/mc/remote/AppSide.hpp"
@@ -68,7 +66,7 @@ static inline std::string contexts_list()
 }
 
 static config::Flag<std::string> context_factory_name("contexts/factory",
-                                                      (std::string("Possible values: ") + contexts_list()).c_str(),
+                                                      ("Possible values: " + contexts_list()).c_str(),
                                                       context_factories.begin()->first);
 
 } // namespace simgrid::kernel
@@ -85,7 +83,6 @@ XBT_ATTRIB_NORETURN static void inthandler(int)
   exit(1);
 }
 
-#ifndef _WIN32
 static void segvhandler(int signum, siginfo_t* siginfo, void* /*context*/)
 {
   if ((siginfo->si_signo == SIGSEGV && siginfo->si_code == SEGV_ACCERR) || siginfo->si_signo == SIGBUS) {
@@ -106,7 +103,7 @@ static void segvhandler(int signum, siginfo_t* siginfo, void* /*context*/)
   } else if (siginfo->si_signo == SIGSEGV) {
     fprintf(stderr, "Segmentation fault.\n");
 #if HAVE_SMPI
-    if (smpi_enabled() && smpi_cfg_privatization() == SmpiPrivStrategies::NONE) {
+    if (SMPI_is_inited() && smpi_cfg_privatization() == SmpiPrivStrategies::NONE) {
 #if HAVE_PRIVATIZATION
       fprintf(stderr, "Try to enable SMPI variable privatization with --cfg=smpi/privatization:yes.\n");
 #else
@@ -119,8 +116,8 @@ static void segvhandler(int signum, siginfo_t* siginfo, void* /*context*/)
 }
 
 /**
- * Install signal handler for SIGSEGV.  Check that nobody has already installed
- * its own handler.  For example, the Java VM does this.
+ * Install signal handler for SIGSEGV.  Check that nobody has already installed its own handler.
+ * Historically, the Java VM did that but this could maybe removed now that Java is gone (TODO)
  */
 static void install_segvhandler()
 {
@@ -156,8 +153,6 @@ static void install_segvhandler()
   }
 }
 
-#endif /* _WIN32 */
-
 namespace simgrid::kernel {
 
 EngineImpl::~EngineImpl()
@@ -178,10 +173,6 @@ EngineImpl::~EngineImpl()
   delete maestro_;
   delete context_factory_;
 
-  /* Free the remaining data structures */
-#if SIMGRID_HAVE_MC
-  xbt_dynar_free(&actors_vector_);
-#endif
   /* clear models before freeing handle, network models can use external callback defined in the handle */
   models_prio_.clear();
 }
@@ -195,7 +186,7 @@ void EngineImpl::initialize(int* argc, char** argv)
   // The communication initialization is done ASAP, as we need to get some init parameters from the MC for different
   // layers. But instance_ needs to be created, as we send the address of some of its fields to the MC that wants to
   // read them directly.
-  simgrid::mc::AppSide::initialize(actors_vector_);
+  simgrid::mc::AppSide::initialize();
 #endif
 
   if (xbt_initialized == 0) {
@@ -208,10 +199,7 @@ void EngineImpl::initialize(int* argc, char** argv)
 
   /* Prepare to display some more info when dying on Ctrl-C pressing */
   std::signal(SIGINT, inthandler);
-
-#ifndef _WIN32
   install_segvhandler();
-#endif
 
   /* register a function to be called by SURF after the environment creation */
   sg_platf_init();
@@ -242,11 +230,6 @@ void EngineImpl::context_mod_init() const
   }
 #endif
 
-  /* select the context factory to use to create the contexts */
-  if (context::ContextFactory::initializer) { // Give Java a chance to hijack the factory mechanism
-    instance_->set_context_factory(context::ContextFactory::initializer());
-    return;
-  }
   /* use the factory specified by --cfg=contexts/factory:value */
   for (auto const& [factory_name, factory] : context_factories)
     if (context_factory_name == factory_name) {
@@ -272,7 +255,7 @@ void EngineImpl::context_mod_init() const
     XBT_ERROR("  (boost was disabled at compilation time on this machine -- check configure logs for details. Did you "
               "install the libboost-context-dev package?)");
 #endif
-    XBT_ERROR("  thread: slow portability layer using pthreads as provided by gcc");
+    XBT_ERROR("  thread: slow portability layer using standard threads as provided by libstdc");
     xbt_die("Please use a valid factory.");
   }
 }
@@ -328,9 +311,6 @@ void EngineImpl::load_platform(const std::string& platf)
 {
   double start = xbt_os_time();
   if (boost::algorithm::ends_with(platf, ".so") || boost::algorithm::ends_with(platf, ".dylib")) {
-#ifdef _WIN32
-    xbt_die("loading platform through shared library isn't supported on windows");
-#else
     void* handle = dlopen(platf.c_str(), RTLD_LAZY);
     xbt_assert(handle, "Impossible to open platform file: %s", platf.c_str());
     platf_handle_           = std::unique_ptr<void, std::function<int(void*)>>(handle, dlclose);
@@ -339,7 +319,6 @@ void EngineImpl::load_platform(const std::string& platf)
     const char* dlsym_error = dlerror();
     xbt_assert(not dlsym_error, "Error: %s", dlsym_error);
     callable(*simgrid::s4u::Engine::get_instance());
-#endif /* _WIN32 */
   } else {
     parse_platform_file(platf);
   }
@@ -373,7 +352,7 @@ void EngineImpl::add_model(std::shared_ptr<resource::Model> model, const std::ve
   xbt_assert(models_prio_.find(model_name) == models_prio_.end(),
              "Model %s already exists, use model.set_name() to change its name", model_name.c_str());
 
-  for (const auto dep : dependencies) {
+  for (const auto* dep : dependencies) {
     xbt_assert(models_prio_.find(dep->get_name()) != models_prio_.end(),
                "Model %s doesn't exists. Impossible to use it as dependency.", dep->get_name().c_str());
   }
@@ -492,13 +471,17 @@ void EngineImpl::display_all_actor_status() const
       if (boost::dynamic_pointer_cast<kernel::activity::IoImpl>(actor->waiting_synchro_) != nullptr)
         synchro_description = "I/O";
 
-      XBT_INFO("Actor %ld (%s@%s): waiting for %s activity %#zx (%s) in state %s to finish", actor->get_pid(),
+      XBT_INFO("Actor %ld (%s@%s): waiting for %s activity %#zx (%s) in state %s to finish %s", actor->get_pid(),
                actor->get_cname(), actor->get_host()->get_cname(), synchro_description,
                (xbt_log_no_loc ? (size_t)0xDEADBEEF : (size_t)actor->waiting_synchro_.get()),
-               actor->waiting_synchro_->get_cname(), actor->waiting_synchro_->get_state_str());
+               actor->waiting_synchro_->get_cname(), actor->waiting_synchro_->get_state_str(),
+               (actor->simcall_.observer_ != nullptr && not xbt_log_no_loc
+                    ? actor->simcall_.observer_->to_string().c_str()
+                    : ""));
     } else {
       XBT_INFO("Actor %ld (%s@%s) simcall %s", actor->get_pid(), actor->get_cname(), actor->get_host()->get_cname(),
-               actor->simcall_.get_cname());
+               (actor->simcall_.observer_ != nullptr ? actor->simcall_.observer_->to_string().c_str()
+                                                     : actor->simcall_.get_cname()));
     }
   }
 }