+ if (duration > 0) {
+ kernel::actor::ActorImpl* issuer = SIMIX_process_self();
+ Actor::on_sleep(*issuer->ciface());
+
+ kernel::actor::simcall_blocking<void>([issuer, duration]() {
+ if (MC_is_active() || MC_record_replay_is_active()) {
+ MC_process_clock_add(issuer, duration);
+ issuer->simcall_answer();
+ return;
+ }
+ smx_activity_t sync = issuer->sleep(duration);
+ sync->register_simcall(&issuer->simcall);
+ });
+
+ Actor::on_wake_up(*issuer->ciface());