+ simgrid::s4u::Actor::on_creation.connect(instr_actor_on_creation);
+ simgrid::s4u::Actor::on_destruction.connect([](simgrid::s4u::ActorPtr actor) {
+ auto container = simgrid::instr::Container::by_name_or_null(instr_pid(actor.get()));
+ if (container != nullptr)
+ container->remove_from_parent();
+ });
+ simgrid::s4u::Actor::on_suspend.connect([](simgrid::s4u::ActorPtr actor) {
+ simgrid::instr::Container::by_name(instr_pid(actor.get()))->get_state("ACTOR_STATE")->push_event("suspend");
+ });
+ simgrid::s4u::Actor::on_resume.connect([](simgrid::s4u::ActorPtr actor) {
+ simgrid::instr::Container::by_name(instr_pid(actor.get()))->get_state("ACTOR_STATE")->pop_event();
+ });
+ simgrid::s4u::Actor::on_sleep.connect([](simgrid::s4u::ActorPtr actor) {
+ simgrid::instr::Container::by_name(instr_pid(actor.get()))->get_state("ACTOR_STATE")->push_event("sleep");
+ });
+ simgrid::s4u::Actor::on_wake_up.connect([](simgrid::s4u::ActorPtr actor) {
+ simgrid::instr::Container::by_name(instr_pid(actor.get()))->get_state("ACTOR_STATE")->pop_event();
+ });
+ simgrid::s4u::Exec::on_start.connect([](simgrid::s4u::ActorPtr actor) {
+ simgrid::instr::Container::by_name(instr_pid(actor.get()))->get_state("ACTOR_STATE")->push_event("execute");
+ });
+ simgrid::s4u::Exec::on_completion.connect([](simgrid::s4u::ActorPtr actor) {
+ simgrid::instr::Container::by_name(instr_pid(actor.get()))->get_state("ACTOR_STATE")->pop_event();
+ });
+ simgrid::s4u::Comm::on_sender_start.connect([](simgrid::s4u::ActorPtr actor) {
+ simgrid::instr::Container::by_name(instr_pid(actor.get()))->get_state("ACTOR_STATE")->push_event("send");
+ });
+ simgrid::s4u::Comm::on_receiver_start.connect([](simgrid::s4u::ActorPtr actor) {
+ simgrid::instr::Container::by_name(instr_pid(actor.get()))->get_state("ACTOR_STATE")->push_event("receive");
+ });
+ simgrid::s4u::Comm::on_completion.connect([](simgrid::s4u::ActorPtr actor) {
+ simgrid::instr::Container::by_name(instr_pid(actor.get()))->get_state("ACTOR_STATE")->pop_event();
+ });
+ simgrid::s4u::Actor::on_migration_start.connect(instr_actor_on_migration_start);
+ simgrid::s4u::Actor::on_migration_end.connect(instr_actor_on_migration_end);
+ }
+
+ if (TRACE_vm_is_enabled()) {
+ simgrid::s4u::Host::on_creation.connect(instr_vm_on_creation);
+ simgrid::s4u::VirtualMachine::on_start.connect([](simgrid::s4u::VirtualMachine& vm) {
+ simgrid::instr::Container::by_name(vm.get_name())->get_state("VM_STATE")->push_event("start");
+ });
+ simgrid::s4u::VirtualMachine::on_started.connect([](simgrid::s4u::VirtualMachine& vm) {
+ simgrid::instr::Container::by_name(vm.get_name())->get_state("VM_STATE")->pop_event();
+ });
+ simgrid::s4u::VirtualMachine::on_suspend.connect([](simgrid::s4u::VirtualMachine& vm) {
+ simgrid::instr::Container::by_name(vm.get_name())->get_state("VM_STATE")->push_event("suspend");
+ });
+ simgrid::s4u::VirtualMachine::on_resume.connect([](simgrid::s4u::VirtualMachine& vm) {
+ simgrid::instr::Container::by_name(vm.get_name())->get_state("VM_STATE")->pop_event();
+ });
+ simgrid::s4u::Host::on_destruction.connect(
+ [](simgrid::s4u::Host& host) { simgrid::instr::Container::by_name(host.get_name())->remove_from_parent(); });