/** The Actor that is currently running */
static Actor *current();
/** Retrieves the actor that have the given PID (or NULL if not existing) */
- static Actor *byPid(int pid);
+ //static Actor *byPid(int pid); not implemented
/** Retrieves the name of that actor */
const char*getName();
XBT_PUBLIC(int) SIMIX_process_count(void);
XBT_PUBLIC(smx_process_t) SIMIX_process_self(void);
XBT_PUBLIC(const char*) SIMIX_process_self_get_name(void);
-XBT_PUBLIC(void) SIMIX_process_self_set_data(smx_process_t self, void *data);
-XBT_PUBLIC(void*) SIMIX_process_self_get_data(smx_process_t self);
+XBT_PUBLIC(void) SIMIX_process_self_set_data(void *data);
+XBT_PUBLIC(void*) SIMIX_process_self_get_data(void);
XBT_PUBLIC(smx_context_t) SIMIX_process_get_context(smx_process_t);
XBT_PUBLIC(void) SIMIX_process_set_context(smx_process_t p,smx_context_t c);
XBT_PUBLIC(int) SIMIX_process_has_pending_comms(smx_process_t process);
{
xbt_ex_t e;
simdata_task_t simdata = task->simdata;
- msg_process_t self = SIMIX_process_self();
- simdata_process_t p_simdata = (simdata_process_t) SIMIX_process_self_get_data(self);
+ simdata_process_t p_simdata = (simdata_process_t) SIMIX_process_self_get_data();
e_smx_state_t comp_state;
msg_error_t status = MSG_OK;
/* Prepare the task to send */
t_simdata = task->simdata;
t_simdata->sender = process;
- t_simdata->source = ((simdata_process_t) SIMIX_process_self_get_data(process))->m_host;
+ t_simdata->source = ((simdata_process_t) SIMIX_process_self_get_data())->m_host;
if (t_simdata->isused != 0) {
if (msg_global->debug_multiple_use){
msg_error_t ret = MSG_OK;
simdata_task_t t_simdata = NULL;
msg_process_t process = MSG_process_self();
- simdata_process_t p_simdata = (simdata_process_t) SIMIX_process_self_get_data(process);
+ simdata_process_t p_simdata = (simdata_process_t) SIMIX_process_self_get_data();
int call_end = TRACE_msg_task_put_start(task); //must be after CHECK_HOST()
/* Prepare the task to send */
t_simdata = task->simdata;
t_simdata->sender = process;
- t_simdata->source = ((simdata_process_t) SIMIX_process_self_get_data(process))->m_host;
+ t_simdata->source = ((simdata_process_t) SIMIX_process_self_get_data())->m_host;
if (t_simdata->isused != 0) {
if (msg_global->debug_multiple_use){
// get the MSG process from the SIMIX process
if (smx_proc == SIMIX_process_self()) {
/* avoid a SIMIX request if this function is called by the process itself */
- msg_proc = (simdata_process_t) SIMIX_process_self_get_data(smx_proc);
- SIMIX_process_self_set_data(smx_proc, NULL);
+ msg_proc = (simdata_process_t) SIMIX_process_self_get_data();
+ SIMIX_process_self_set_data(NULL);
} else {
msg_proc = (simdata_process_t) simcall_process_get_data(smx_proc);
simcall_process_set_data(smx_proc, NULL);
{
simdata_process_t simdata;
if (process == NULL) {
- simdata = (simdata_process_t) SIMIX_process_self_get_data(SIMIX_process_self());
+ simdata = (simdata_process_t) SIMIX_process_self_get_data();
}
else {
simdata = (simdata_process_t) simcall_process_get_data(process);
XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_actor,"S4U actors");
/* C main function of a actor, running this->main */
-static int s4u_actor_runner(int argc, char **argv) {
-
- smx_process_t smx_proc = SIMIX_process_self();
- simgrid::s4u::Actor *actor = (simgrid::s4u::Actor*) SIMIX_process_self_get_data(smx_proc);
+static int s4u_actor_runner(int argc, char **argv)
+{
+ simgrid::s4u::Actor *actor = (simgrid::s4u::Actor*) SIMIX_process_self_get_data();
int res = actor->main(argc,argv);
return res;
}
fprintf(stderr,"Error: You should override the method main(int, char**) in Actor class %s\n",getName());
return 0;
}
-s4u::Actor *s4u::Actor::current() {
+s4u::Actor *s4u::Actor::current()
+{
smx_process_t smx_proc = SIMIX_process_self();
- simgrid::s4u::Actor* res = (simgrid::s4u::Actor*) SIMIX_process_self_get_data(smx_proc);
+ simgrid::s4u::Actor* res = (simgrid::s4u::Actor*) SIMIX_process_self_get_data();
if (res == NULL) // The smx_process was not created by S4U (but by deployment?). Embed it in a S4U object
res = new Actor(smx_proc);
return res;
}
-s4u::Actor *s4u::Actor::byPid(int pid) {
- return (simgrid::s4u::Actor*) SIMIX_process_self_get_data(SIMIX_process_from_PID(pid));
-}
void s4u::Actor::setAutoRestart(bool autorestart) {
simcall_process_auto_restart_set(p_smx_process,autorestart);
return self->ppid;
}
-void* SIMIX_process_self_get_data(smx_process_t self)
+void* SIMIX_process_self_get_data()
{
- xbt_assert(self == SIMIX_process_self(), "This is not the current process");
+ smx_process_t self = SIMIX_process_self();
if (!self) {
return NULL;
return SIMIX_process_get_data(self);
}
-void SIMIX_process_self_set_data(smx_process_t self, void *data)
+void SIMIX_process_self_set_data(void *data)
{
- xbt_assert(self == SIMIX_process_self(), "This is not the current process");
+ smx_process_t self = SIMIX_process_self();
SIMIX_process_set_data(self, data);
}
smpi_process_data_t smpi_process_data(void)
{
- simdata_process_t simdata = static_cast<simdata_process_t>(SIMIX_process_self_get_data(SIMIX_process_self()));
+ simdata_process_t simdata = static_cast<simdata_process_t>(SIMIX_process_self_get_data());
return static_cast<smpi_process_data_t>(simdata->data);
}