-
- // mpi datatypes
- smpi_mpi_global->mpi_byte = xbt_new(s_smpi_mpi_datatype_t, 1); /* we can think of it as a placeholder for value*/
- smpi_mpi_global->mpi_byte->size = (size_t) 1;
- smpi_mpi_global->mpi_byte->lb = (ptrdiff_t) 0;
- smpi_mpi_global->mpi_byte->ub = smpi_mpi_global->mpi_byte->lb + smpi_mpi_global->mpi_byte->size;
- smpi_mpi_global->mpi_byte->flags = DT_FLAG_BASIC;
-
- smpi_mpi_global->mpi_char = xbt_new(s_smpi_mpi_datatype_t, 1);
- smpi_mpi_global->mpi_char->size = (size_t) 1;
- smpi_mpi_global->mpi_char->lb = (ptrdiff_t) 0; //&(smpi_mpi_global->mpi_char);
- smpi_mpi_global->mpi_char->ub = smpi_mpi_global->mpi_char->lb + smpi_mpi_global->mpi_char->size;
- smpi_mpi_global->mpi_char->flags = DT_FLAG_BASIC;
-
- smpi_mpi_global->mpi_int = xbt_new(s_smpi_mpi_datatype_t, 1);
- smpi_mpi_global->mpi_int->size = sizeof(int);
- smpi_mpi_global->mpi_int->lb = (ptrdiff_t) 0; // &(smpi_mpi_global->mpi_int);
- smpi_mpi_global->mpi_int->ub = smpi_mpi_global->mpi_int->lb + smpi_mpi_global->mpi_int->size;
- smpi_mpi_global->mpi_int->flags = DT_FLAG_BASIC;
-
- smpi_mpi_global->mpi_float = xbt_new(s_smpi_mpi_datatype_t, 1);
- smpi_mpi_global->mpi_float->size = sizeof(float);
- smpi_mpi_global->mpi_float->lb = (ptrdiff_t) 0; // &(smpi_mpi_global->mpi_float);
- smpi_mpi_global->mpi_float->ub = smpi_mpi_global->mpi_float->lb + smpi_mpi_global->mpi_float->size;
- smpi_mpi_global->mpi_float->flags = DT_FLAG_BASIC;
-
- smpi_mpi_global->mpi_double = xbt_new(s_smpi_mpi_datatype_t, 1);
- smpi_mpi_global->mpi_double->size = sizeof(double);
- smpi_mpi_global->mpi_double->lb = (ptrdiff_t) 0; //&(smpi_mpi_global->mpi_float);
- smpi_mpi_global->mpi_double->ub = smpi_mpi_global->mpi_double->lb + smpi_mpi_global->mpi_double->size;
- smpi_mpi_global->mpi_double->flags = DT_FLAG_BASIC;
-
- // mpi operations
- smpi_mpi_global->mpi_land = xbt_new(s_smpi_mpi_op_t, 1);
- smpi_mpi_global->mpi_land->func = smpi_mpi_land_func;
- smpi_mpi_global->mpi_sum = xbt_new(s_smpi_mpi_op_t, 1);
- smpi_mpi_global->mpi_sum->func = smpi_mpi_sum_func;
- smpi_mpi_global->mpi_prod = xbt_new(s_smpi_mpi_op_t, 1);
- smpi_mpi_global->mpi_prod->func = smpi_mpi_prod_func;
- smpi_mpi_global->mpi_min = xbt_new(s_smpi_mpi_op_t, 1);
- smpi_mpi_global->mpi_min->func = smpi_mpi_min_func;
- smpi_mpi_global->mpi_max = xbt_new(s_smpi_mpi_op_t, 1);
- smpi_mpi_global->mpi_max->func = smpi_mpi_max_func;
-
-}
-
-void smpi_global_destroy()
-{
- smpi_do_once_duration_node_t curr, next;
-
- // processes
- xbt_free(smpi_global->main_processes);
-
- // mallocators
- xbt_mallocator_free(smpi_global->request_mallocator);
- xbt_mallocator_free(smpi_global->message_mallocator);
-
- xbt_os_timer_free(smpi_global->timer);
- SIMIX_cond_destroy(smpi_global->timer_cond);
-
- for (curr = smpi_global->do_once_duration_nodes; NULL != curr; curr = next) {
- next = curr->next;
- xbt_free(curr->file);
- xbt_free(curr);