+void simgrid::kernel::actor::ActorImpl::simcall_handle(int times_considered)
+{
+ XBT_DEBUG("Handling simcall %p: %s", &simcall_, SIMIX_simcall_name(simcall_));
+ if (simcall_.observer_ != nullptr)
+ simcall_.observer_->prepare(times_considered);
+ if (context_->wannadie())
+ return;
+ switch (simcall_.call_) {
+ case simgrid::simix::Simcall::RUN_KERNEL:
+ (*simcall_.code_)();
+ simcall_answer();
+ break;
+
+ case simgrid::simix::Simcall::RUN_BLOCKING:
+ (*simcall_.code_)();
+ break;
+
+ case simgrid::simix::Simcall::NONE:
+ throw std::invalid_argument(
+ simgrid::xbt::string_printf("Asked to do the noop syscall on %s@%s", get_cname(), get_host()->get_cname()));
+ default:
+ THROW_IMPOSSIBLE;
+ }
+}
+
+/** @brief returns a printable string representing a simcall */
+const char* SIMIX_simcall_name(const s_smx_simcall& simcall)