+std::string getName()
+{
+ return SIMIX_process_self()->name;
+}
+
+Host* getHost()
+{
+ return SIMIX_process_self()->host;
+}
+
+void suspend()
+{
+ simcall_process_suspend(SIMIX_process_self());
+}
+
+void resume()
+{
+ smx_actor_t process = SIMIX_process_self();
+ simgrid::simix::kernelImmediate([process] { process->resume(); });
+}
+
+bool isSuspended()
+{
+ smx_actor_t process = SIMIX_process_self();
+ return simgrid::simix::kernelImmediate([process] { return process->suspended; });
+}
+
+void kill()
+{
+ smx_actor_t process = SIMIX_process_self();
+ simgrid::simix::kernelImmediate([process] { SIMIX_process_kill(process, process); });
+}
+
+void onExit(int_f_pvoid_pvoid_t fun, void* data)
+{
+ simcall_process_on_exit(SIMIX_process_self(), fun, data);
+}
+
+void migrate(Host* new_host)
+{
+ smx_actor_t process = SIMIX_process_self();
+ simgrid::simix::kernelImmediate([process, new_host] { process->new_host = new_host; });
+}