X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/51f94e1d38869bd7a057c58ff4978fdff170a6e6..60efb31f7c04aa1bed677bc152718d5d952b4440:/src/smpi/smpi_global.c diff --git a/src/smpi/smpi_global.c b/src/smpi/smpi_global.c index 7cf9d544e4..7d47dfb9bb 100644 --- a/src/smpi/smpi_global.c +++ b/src/smpi/smpi_global.c @@ -29,6 +29,7 @@ typedef struct s_smpi_process_data { double simulated; MPI_Comm comm_self; void *data; /* user data */ + int initialized; } s_smpi_process_data_t; static smpi_process_data_t *process_data = NULL; @@ -104,6 +105,24 @@ int smpi_process_finalized() // If finalized, this value has been set to -100; } +/** + * @brief Check if a process is initialized + */ +int smpi_process_initialized(void) +{ + int index = smpi_process_index(); + return((index != -100) && (index!=MPI_UNDEFINED) && (process_data[index]->initialized)); +} + +/** + * @brief Mark a process as initialized (=MPI_Init called) + */ +void smpi_process_mark_as_initialized(void) +{ + int index = smpi_process_index(); + if((index != -100)&& (index!=MPI_UNDEFINED))process_data[index]->initialized=1; +} + #ifdef SMPI_F2C int smpi_process_argc(void) { @@ -264,6 +283,8 @@ void smpi_global_init(void) process_data[i]->timer = xbt_os_timer_new(); group = smpi_group_new(1); process_data[i]->comm_self = smpi_comm_new(group); + process_data[i]->initialized =0; + smpi_group_set_mapping(group, i, 0); } group = smpi_group_new(process_count); @@ -445,7 +466,7 @@ int smpi_main(int (*realmain) (int argc, char *argv[]),int argc, char *argv[]) fflush(stderr); if (MC_is_active()) - MC_modelcheck_safety(); + MC_do_the_modelcheck_for_real(); else SIMIX_run();