}
}
-namespace simgrid {
-namespace vm {
/*************
* Callbacks *
*************/
-simgrid::xbt::signal<void(simgrid::vm::VirtualMachineImpl*)> onVmCreation;
-simgrid::xbt::signal<void(simgrid::vm::VirtualMachineImpl*)> onVmDestruction;
-simgrid::xbt::signal<void(simgrid::vm::VirtualMachineImpl*)> onVmStateChange;
+simgrid::xbt::signal<void(simgrid::vm::VirtualMachineImpl*)> simgrid::vm::VirtualMachineImpl::onVmCreation;
+simgrid::xbt::signal<void(simgrid::vm::VirtualMachineImpl*)> simgrid::vm::VirtualMachineImpl::onVmDestruction;
+simgrid::xbt::signal<void(simgrid::vm::VirtualMachineImpl*)> simgrid::vm::VirtualMachineImpl::onVmStateChange;
+namespace simgrid {
+namespace vm {
/*********
* Model *
*********/
action_ = host_PM->pimpl_cpu->execution_start(0, coreAmount);
XBT_VERB("Create VM(%s)@PM(%s)", piface->getCname(), hostPM_->getCname());
+ onVmCreation(this);
}
/** @brief A physical host does not disappear in the current SimGrid code, but a VM may disappear during a simulation */
if (iter != allVms_.end())
allVms_.erase(iter);
- /* dirty page tracking */
- unsigned int size = dp_objs.size();
- static bool already_warned = false;
- if (size > 0 && not already_warned) {
- auto front = dp_objs.begin();
- XBT_WARN("Dirty page tracking: %u pending task(s) on a destroyed VM (first one is %s).\n"
- "If you don't understand why your task was not properly removed, please report that bug.\n"
- "This is a known bug if you turned the host off during the VM execution.\n"
- "Please remind us of that problem at some point: our code base is not ready to fix this harmless issue in "
- "2016, sorry.",
- size, (xbt_log_no_loc ? "(name hidden)" : front->first.c_str()));
- already_warned = true;
- }
-
/* Free the cpu_action of the VM. */
XBT_ATTRIB_UNUSED int ret = action_->unref();
xbt_assert(ret == 1, "Bug: some resource still remains");