-smpi_process_data_t smpi_process_data()
-{
- simgrid::MsgActorExt* msgExt = static_cast<simgrid::MsgActorExt*>(SIMIX_process_self()->data);
- return static_cast<smpi_process_data_t>(msgExt->data);
-}
-
-smpi_process_data_t smpi_process_remote_data(int index)
-{
- return process_data[index_to_process_data[index]];
-}
-
-void smpi_process_set_user_data(void *data)
-{
- smpi_process_data_t process_data = smpi_process_data();
- process_data->data = data;
-}
-
-void *smpi_process_get_user_data()
-{
- smpi_process_data_t process_data = smpi_process_data();
- return process_data->data;
-}
-
-int smpi_process_count()
-{
- return process_count;
-}
-
-/**
- * \brief Returns a structure that stores the location (filename + linenumber)
- * of the last calls to MPI_* functions.
- *
- * \see smpi_trace_set_call_location
- */
-smpi_trace_call_location_t* smpi_process_get_call_location()
-{
- smpi_process_data_t process_data = smpi_process_data();
- return &process_data->trace_call_loc;
-}
-
-int smpi_process_index()
-{
- smpi_process_data_t data = smpi_process_data();
- //return -1 if not initialized
- return data != nullptr ? data->index : MPI_UNDEFINED;
-}
-
-MPI_Comm smpi_process_comm_world()
-{
- smpi_process_data_t data = smpi_process_data();
- //return MPI_COMM_NULL if not initialized
- return data != nullptr ? *data->comm_world : MPI_COMM_NULL;
-}
-
-smx_mailbox_t smpi_process_mailbox()
-{
- smpi_process_data_t data = smpi_process_data();
- return data->mailbox->getImpl();
-}
-
-smx_mailbox_t smpi_process_mailbox_small()
-{
- smpi_process_data_t data = smpi_process_data();
- return data->mailbox_small->getImpl();
-}
-
-xbt_mutex_t smpi_process_mailboxes_mutex()
-{
- smpi_process_data_t data = smpi_process_data();
- return data->mailboxes_mutex;
-}
-
-smx_mailbox_t smpi_process_remote_mailbox(int index)
-{
- smpi_process_data_t data = smpi_process_remote_data(index);
- return data->mailbox->getImpl();
-}
-
-smx_mailbox_t smpi_process_remote_mailbox_small(int index)
-{
- smpi_process_data_t data = smpi_process_remote_data(index);
- return data->mailbox_small->getImpl();
-}
-
-xbt_mutex_t smpi_process_remote_mailboxes_mutex(int index)
-{
- smpi_process_data_t data = smpi_process_remote_data(index);
- return data->mailboxes_mutex;
-}
-
-#if HAVE_PAPI
-int smpi_process_papi_event_set(void)
-{
- smpi_process_data_t data = smpi_process_data();
- return data->papi_event_set;
-}
-
-papi_counter_t& smpi_process_papi_counters(void)
-{
- smpi_process_data_t data = smpi_process_data();
- return data->papi_counter_data;
-}
-#endif
-
-xbt_os_timer_t smpi_process_timer()
-{
- smpi_process_data_t data = smpi_process_data();
- return data->timer;
-}
-
-void smpi_process_simulated_start()
-{
- smpi_process_data_t data = smpi_process_data();
- data->simulated = SIMIX_get_clock();
-}
-
-double smpi_process_simulated_elapsed()
-{
- smpi_process_data_t data = smpi_process_data();
- return SIMIX_get_clock() - data->simulated;
-}
-
-MPI_Comm smpi_process_comm_self()
-{
- smpi_process_data_t data = smpi_process_data();
- if(data->comm_self==MPI_COMM_NULL){
- MPI_Group group = smpi_group_new(1);
- data->comm_self = smpi_comm_new(group, nullptr);
- smpi_group_set_mapping(group, smpi_process_index(), 0);
- }
-
- return data->comm_self;
-}
-
-MPI_Comm smpi_process_get_comm_intra()
-{
- smpi_process_data_t data = smpi_process_data();
- return data->comm_intra;
-}
-
-void smpi_process_set_comm_intra(MPI_Comm comm)
-{
- smpi_process_data_t data = smpi_process_data();
- data->comm_intra = comm;
-}
-
-void smpi_process_set_sampling(int s)
-{
- smpi_process_data_t data = smpi_process_data();
- data->sampling = s;
-}
-
-int smpi_process_get_sampling()
-{
- smpi_process_data_t data = smpi_process_data();
- return data->sampling;
-}
-
-void print_request(const char *message, MPI_Request request)
-{
- XBT_VERB("%s request %p [buf = %p, size = %zu, src = %d, dst = %d, tag = %d, flags = %x]",
- message, request, request->buf, request->size, request->src, request->dst, request->tag, request->flags);
-}
-