Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
add some signals
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Mon, 18 Dec 2017 21:44:28 +0000 (22:44 +0100)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Mon, 18 Dec 2017 21:44:28 +0000 (22:44 +0100)
will be needed to handle dirty pages in a plugin
add exec->getHost() too

include/simgrid/s4u/Exec.hpp
include/simgrid/s4u/VirtualMachine.hpp
src/kernel/activity/ExecImpl.cpp
src/kernel/activity/ExecImpl.hpp
src/plugins/vm/s4u_VirtualMachine.cpp

index 4c7b4b3..a90e5cc 100644 (file)
@@ -32,6 +32,7 @@ public:
 
   ExecPtr setPriority(double priority);
   ExecPtr setHost(Host * host);
+  Host* getHost() { return host_; }
 
   double getRemains() override;
   double getRemainingRatio();
index a655e49..8dcfe49 100644 (file)
@@ -63,6 +63,9 @@ public:
 
   /* FIXME: protect me */
   simgrid::vm::VirtualMachineImpl* pimpl_vm_ = nullptr;
+
+  static simgrid::xbt::signal<void(s4u::VirtualMachine&)> onCreation;
+  static simgrid::xbt::signal<void(s4u::VirtualMachine&)> onDestruction;
 };
 }
 } // namespace simgrid::s4u
index 6c0cf00..89bcbe3 100644 (file)
@@ -85,3 +85,9 @@ void simgrid::kernel::activity::ExecImpl::post()
   if (not simcalls.empty())
     SIMIX_execution_finish(this);
 }
+
+/*************
+ * Callbacks *
+ *************/
+simgrid::xbt::signal<void(simgrid::kernel::activity::ExecImplPtr)> simgrid::kernel::activity::ExecImpl::onCreation;
+simgrid::xbt::signal<void(simgrid::kernel::activity::ExecImplPtr)> simgrid::kernel::activity::ExecImpl::onDestruction;
index e5fe71b..317d93c 100644 (file)
@@ -8,12 +8,13 @@
 
 #include "src/kernel/activity/ActivityImpl.hpp"
 #include "surf/surf.hpp"
+#include "xbt/Extendable.hpp"
 
 namespace simgrid {
 namespace kernel {
 namespace activity {
 
-XBT_PUBLIC_CLASS ExecImpl : public ActivityImpl
+XBT_PUBLIC_CLASS ExecImpl : public ActivityImpl, public simgrid::xbt::Extendable<ExecImpl>
 {
   ~ExecImpl() override;
 
@@ -30,6 +31,8 @@ public:
   sg_host_t host_               = nullptr;
   surf_action_t surfAction_     = nullptr; /* The Surf execution action encapsulated */
   surf::Action* timeoutDetector = nullptr;
+  static simgrid::xbt::signal<void(kernel::activity::ExecImplPtr)> onCreation;
+  static simgrid::xbt::signal<void(kernel::activity::ExecImplPtr)> onDestruction;
 };
 }
 }
index 3ee05b2..a4f2022 100644 (file)
@@ -176,5 +176,11 @@ void VirtualMachine::setParameters(vm_params_t params)
   simgrid::simix::kernelImmediate([this, params] { pimpl_vm_->setParams(params); });
 }
 
+/*************
+ * Callbacks *
+ *************/
+simgrid::xbt::signal<void(s4u::VirtualMachine&)> VirtualMachine::onCreation;
+simgrid::xbt::signal<void(s4u::VirtualMachine&)> VirtualMachine::onDestruction;
+
 } // namespace simgrid
 } // namespace s4u