XBT_PUBLIC(int) SIMIX_process_has_pending_comms(smx_process_t process);
XBT_PUBLIC(void) SIMIX_process_on_exit_runall(smx_process_t process);
XBT_PUBLIC(void) SIMIX_process_on_exit(smx_process_t process, int_f_pvoid_pvoid_t fun, void *data);
+XBT_PUBLIC(xbt_main_func_t) SIMIX_process_get_code(void);
/****************************** Communication *********************************/
XBT_PUBLIC(void) SIMIX_comm_set_copy_data_callback(void (*callback) (smx_synchro_t, void*, size_t));
// smpi functions
XBT_PUBLIC(int) smpi_global_size(void);
XBT_PUBLIC(MPI_Comm) smpi_process_comm_self(void);
+XBT_PUBLIC(void*) smpi_process_get_user_data(void);
+XBT_PUBLIC(void) smpi_process_set_user_data(void *);
/*
XBT_PUBLIC(void) smpi_exit(int);
*/
return process->host;
}
+xbt_main_func_t SIMIX_process_get_code(void){
+ return SIMIX_process_self()->code;
+}
+
/* needs to be public and without simcall because it is called
by exceptions and logging events */
const char* SIMIX_process_self_get_name(void) {
XBT_PRIVATE smpi_process_data_t smpi_process_data(void);
XBT_PRIVATE smpi_process_data_t smpi_process_remote_data(int index);
-XBT_PRIVATE void smpi_process_set_user_data(void *);
-XBT_PRIVATE void* smpi_process_get_user_data(void);
+// smpi_process_[set/get]_user_data must be public
+/* XBT_PRIVATE void smpi_process_set_user_data(void *); */
+/* XBT_PRIVATE void* smpi_process_get_user_data(void); */
XBT_PRIVATE int smpi_process_count(void);
XBT_PRIVATE MPI_Comm smpi_process_comm_world(void);
XBT_PRIVATE MPI_Comm smpi_process_get_comm_intra(void);