XBT_PRIVATE int smpi_mpi_cart_shift(MPI_Comm comm, int direction, int disp, int *rank_source, int *rank_dest);
XBT_PRIVATE int smpi_mpi_cartdim_get(MPI_Comm comm, int *ndims);
XBT_PRIVATE int smpi_mpi_dims_create(int nnodes, int ndims, int dims[]);
+XBT_PRIVATE void smpi_graph_topo_destroy(MPIR_Graph_Topology cart);
+XBT_PRIVATE void smpi_dist_graph_topo_destroy(MPIR_Dist_Graph_Topology cart);
XBT_PRIVATE smpi_process_data_t smpi_process_data();
XBT_PRIVATE smpi_process_data_t smpi_process_remote_data(int index);
extern XBT_PRIVATE bool smpi_privatize_global_variables;
extern XBT_PRIVATE char* smpi_start_data_exe; //start of the data+bss segment of the executable
extern XBT_PRIVATE int smpi_size_data_exe; //size of the data+bss segment of the executable
-extern XBT_PRIVATE bool smpi_cfg_shared_malloc; // Whether to activate shared malloc
+
+typedef enum { shmalloc_none, shmalloc_local, shmalloc_global } shared_malloc_type;
+extern XBT_PRIVATE shared_malloc_type smpi_cfg_shared_malloc; // Whether to activate shared malloc
XBT_PRIVATE void smpi_switch_data_segment(int dest);
XBT_PRIVATE void smpi_really_switch_data_segment(int dest);