Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
merge branches
[simgrid.git] / include / smpi / smpi.h
index dafc86d..ce54b09 100644 (file)
@@ -23,6 +23,7 @@ SG_BEGIN_DECL()
 #define MPI_THREAD_MULTIPLE   3
 //FIXME: check values
 #define MPI_MAX_PROCESSOR_NAME 100
+#define MPI_MAX_NAME_STRING    100
 #define MPI_MAX_ERROR_STRING   100
 #define MPI_MAX_DATAREP_STRIN  100
 #define MPI_MAX_INFO_KEY       100
@@ -208,6 +209,7 @@ MPI_CALL(XBT_PUBLIC(int), MPI_Group_range_excl,
 
 MPI_CALL(XBT_PUBLIC(int), MPI_Comm_rank, (MPI_Comm comm, int *rank));
 MPI_CALL(XBT_PUBLIC(int), MPI_Comm_size, (MPI_Comm comm, int *size));
+MPI_CALL(XBT_PUBLIC(int), MPI_Comm_get_name, (MPI_Comm comm, char* name, int* len));
 MPI_CALL(XBT_PUBLIC(int), MPI_Get_processor_name, (char *name, int *resultlen));
 MPI_CALL(XBT_PUBLIC(int), MPI_Get_count,
                             (MPI_Status * status, MPI_Datatype datatype,
@@ -220,6 +222,7 @@ MPI_CALL(XBT_PUBLIC(int), MPI_Comm_dup, (MPI_Comm comm, MPI_Comm * newcomm));
 MPI_CALL(XBT_PUBLIC(int), MPI_Comm_create,
                             (MPI_Comm comm, MPI_Group group, MPI_Comm * newcomm));
 MPI_CALL(XBT_PUBLIC(int), MPI_Comm_free, (MPI_Comm * comm));
+MPI_CALL(XBT_PUBLIC(int), MPI_Comm_disconnect, (MPI_Comm * comm));
 MPI_CALL(XBT_PUBLIC(int), MPI_Comm_split, (MPI_Comm comm, int color, int key, MPI_Comm* comm_out));
 
 MPI_CALL(XBT_PUBLIC(int), MPI_Send_init,
@@ -418,8 +421,8 @@ XBT_PUBLIC(void) smpi_exit(int);
 
 XBT_PUBLIC(unsigned int) smpi_sleep(unsigned int secs);
 XBT_PUBLIC(int) smpi_gettimeofday(struct timeval *tv, struct timezone *tz);
-XBT_PUBLIC(void) smpi_sample_1(int global, const char *file, int line,
-                               int iters, double threshold);
+XBT_PUBLIC(int) smpi_sample_1(int global, const char *file, int line,
+                              int iters, double threshold);
 XBT_PUBLIC(int) smpi_sample_2(int global, const char *file, int line);
 XBT_PUBLIC(void) smpi_sample_3(int global, const char *file, int line);
 XBT_PUBLIC(void) smpi_sample_flops(double flops);
@@ -441,6 +444,13 @@ XBT_PUBLIC(void *) smpi_shared_malloc(size_t size, const char *file,
 XBT_PUBLIC(void) smpi_shared_free(void *data);
 #define SMPI_SHARED_FREE(data) smpi_shared_free(data)
 
+XBT_PUBLIC(int) smpi_shared_known_call(const char* func, const char* input);
+XBT_PUBLIC(void*) smpi_shared_get_call(const char* func, const char* input);
+XBT_PUBLIC(void*) smpi_shared_set_call(const char* func, const char* input, void* data);
+#define SMPI_SHARED_CALL(func, input, ...) \
+   (smpi_shared_known_call(#func, input) ? smpi_shared_get_call(#func, input) \
+                                         : smpi_shared_set_call(#func, input, func(__VA_ARGS__)))
+
 /* Fortran specific stuff */
 XBT_PUBLIC(int) MAIN__(void);