#include "simgrid/simix.h"
#include "smx_smurf_private.h"
+SG_BEGIN_DECL()
+
typedef struct s_smx_process_exit_fun {
int_f_pvoid_pvoid_t fun;
void *arg;
void SIMIX_pre_process_auto_restart_set(smx_simcall_t simcall, smx_process_t process,
int auto_restart);
smx_process_t SIMIX_pre_process_restart(smx_simcall_t simcall, smx_process_t process);
+
+SG_END_DECL()
+
#endif
extern void** mappings;
extern int loaded_page;
-int smpi_process_index_of_smx_process(smx_process_t process);
+int SIMIX_process_get_PID(smx_process_t self);
+
+static inline __attribute__ ((always_inline))
+int smpi_process_index_of_smx_process(smx_process_t process) {
+ return SIMIX_process_get_PID(process) -1;
+}
SG_END_DECL()
proc->context->cleanup_func=SIMIX_process_cleanup;
char* instance_id = (*argv)[1];
int rank = atoi((*argv)[2]);
- index = SIMIX_process_get_PID(proc) -1;
+ index = smpi_process_index_of_smx_process(proc);
if(!index_to_process_data){
index_to_process_data=(int*)xbt_malloc(SIMIX_process_count()*sizeof(int));
return data ? data->index : MPI_UNDEFINED;
}
-int smpi_process_index_of_smx_process(smx_process_t process) {
- smpi_process_data_t data = SIMIX_process_get_data(process);
- return data ? data->index : MPI_UNDEFINED;
-}
-
MPI_Comm smpi_process_comm_world(void)
{
smpi_process_data_t data = smpi_process_data();
SIMIX_global_init(&argc, argv);
+ smpi_init_options();
+
// parse the platform file: get the host list
SIMIX_create_environment(argv[1]);
SIMIX_comm_set_copy_data_callback(&smpi_comm_copy_buffer_callback);
SIMIX_function_register_default(realmain);
SIMIX_launch_application(argv[2]);
- smpi_init_options();
-
smpi_global_init();
smpi_check_options();