Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
get rid of SIMIX_global_init
[simgrid.git] / src / simix / smx_global.cpp
1 /* Copyright (c) 2007-2021. The SimGrid Team. All rights reserved.          */
2
3 /* This program is free software; you can redistribute it and/or modify it
4  * under the terms of the license (GNU LGPL) which comes with this package. */
5
6 #include "mc/mc.h"
7 #include "simgrid/kernel/Timer.hpp"
8 #include "simgrid/s4u/Engine.hpp"
9 #include "simgrid/s4u/Host.hpp"
10 #include "src/smpi/include/smpi_actor.hpp"
11
12 #include "simgrid/sg_config.hpp"
13 #include "src/kernel/EngineImpl.hpp"
14 #include "src/mc/mc_record.hpp"
15 #include "src/mc/mc_replay.hpp"
16 #include "src/surf/xml/platf.hpp"
17
18 #include "simgrid/kernel/resource/Model.hpp"
19
20 #include <memory>
21
22 XBT_LOG_NEW_CATEGORY(simix, "All SIMIX categories");
23 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(simix_kernel, simix, "Logging specific to SIMIX (kernel)");
24
25 namespace simgrid {
26 namespace simix {
27
28 xbt_dynar_t simix_global_get_actors_addr()
29 {
30 #if SIMGRID_HAVE_MC
31   return kernel::EngineImpl::get_instance()->get_actors_vector();
32 #else
33   xbt_die("This function is intended to be used when compiling with MC");
34 #endif
35 }
36 xbt_dynar_t simix_global_get_dead_actors_addr()
37 {
38 #if SIMGRID_HAVE_MC
39   return kernel::EngineImpl::get_instance()->get_dead_actors_vector();
40 #else
41   xbt_die("This function is intended to be used when compiling with MC");
42 #endif
43 }
44
45 } // namespace simix
46 } // namespace simgrid
47
48 /**
49  * @ingroup SIMIX_API
50  * @brief A clock (in second).
51  *
52  * @return Return the clock.
53  */
54 double SIMIX_get_clock() // XBT_ATTRIB_DEPRECATED_v332
55 {
56   return simgrid::s4u::Engine::get_clock();
57 }
58
59 void SIMIX_run() // XBT_ATTRIB_DEPRECATED_v332
60 {
61   simgrid::kernel::EngineImpl::get_instance()->run();
62 }
63
64 int SIMIX_is_maestro()
65 {
66   const simgrid::kernel::actor::ActorImpl* self = SIMIX_process_self();
67   return self == nullptr || simgrid::kernel::EngineImpl::get_instance()->is_maestro(self);
68 }