X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0de276c508e72812e3d208a6f631cdd277b5c12c..7bf5d20e2f3b137f0b08f437849834bc15984298:/src/s4u/s4u_actor.cpp diff --git a/src/s4u/s4u_actor.cpp b/src/s4u/s4u_actor.cpp index abc984afc5..570c181284 100644 --- a/src/s4u/s4u_actor.cpp +++ b/src/s4u/s4u_actor.cpp @@ -13,7 +13,7 @@ #include "src/kernel/context/Context.hpp" -XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_actor,"S4U actors"); +XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_actor, "S4U actors"); namespace simgrid { namespace s4u { @@ -52,6 +52,16 @@ void Actor::setAutoRestart(bool autorestart) { simcall_process_auto_restart_set(pimpl_,autorestart); } +void Actor::onExit(int_f_pvoid_pvoid_t fun, void* data) +{ + simcall_process_on_exit(pimpl_, fun, data); +} + +void Actor::migrate(Host* new_host) +{ + simcall_process_set_host(pimpl_, new_host); +} + s4u::Host* Actor::host() { return this->pimpl_->host; @@ -77,6 +87,21 @@ int Actor::ppid() return this->pimpl_->ppid; } +void Actor::suspend() +{ + simcall_process_suspend(pimpl_); +} + +void Actor::resume() +{ + simcall_process_resume(pimpl_); +} + +int Actor::isSuspended() +{ + return simcall_process_is_suspended(pimpl_); +} + void Actor::setKillTime(double time) { simcall_process_set_kill_time(pimpl_,time); } @@ -116,10 +141,16 @@ ActorPtr Actor::byPid(int pid) return ActorPtr(); } -void Actor::killAll() { +void Actor::killAll() +{ simcall_process_killall(1); } +void Actor::killAll(int resetPid) +{ + simcall_process_killall(resetPid); +} + // ***** this_actor ***** namespace this_actor { @@ -159,6 +190,25 @@ void send(MailboxPtr chan, void* payload, double simulatedSize) c.wait(); } +void send(MailboxPtr chan, void* payload, double simulatedSize, double timeout) +{ + Comm& c = Comm::send_init(chan); + c.setRemains(simulatedSize); + c.setSrcData(payload); + // c.start() is optional. + c.wait(timeout); +} + +Comm& isend(MailboxPtr chan, void* payload, double simulatedSize) +{ + return Comm::send_async(chan, payload, simulatedSize); +} + +Comm& isend(MailboxPtr chan, void** data) +{ + return Comm::recv_async(chan, data); +} + int pid() { return SIMIX_process_self()->pid; @@ -173,6 +223,41 @@ std::string name() { return SIMIX_process_self()->name; } + +Host* host() +{ + return SIMIX_process_self()->host; +} + +void suspend() +{ + simcall_process_suspend(SIMIX_process_self()); +} + +void resume() +{ + simcall_process_resume(SIMIX_process_self()); +} + +int isSuspended() +{ + return simcall_process_is_suspended(SIMIX_process_self()); +} + +void kill() +{ + simcall_process_kill(SIMIX_process_self()); +} + +void onExit(int_f_pvoid_pvoid_t fun, void* data) +{ + simcall_process_on_exit(SIMIX_process_self(), fun, data); +} + +void migrate(Host* new_host) +{ + simcall_process_set_host(SIMIX_process_self(), new_host); +} } } }