Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Now call communicate and get_route with void* and not char*.
[simgrid.git] / include / smpi / smpi.h
index 68c9cf9..0a4152e 100644 (file)
@@ -12,6 +12,9 @@
 #include <xbt/misc.h>
 #include <xbt/function_types.h>
 
+#define sleep(x) smpi_sleep(x)
+#define gettimeofday(x, y) smpi_gettimeofday(x, y)
+
 #define MPI_CALL(type,name,args) \
   type name args __attribute__((weak)); \
   type P##name args
@@ -68,6 +71,7 @@ typedef struct {
 } MPI_Status;
 
 #define MPI_STATUS_IGNORE NULL
+#define MPI_STATUSES_IGNORE NULL
 
 #define MPI_DATATYPE_NULL NULL
 extern MPI_Datatype MPI_CHAR;
@@ -421,6 +425,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(unsigned long long) smpi_rastro_resolution (void);
+XBT_PUBLIC(unsigned long long) smpi_rastro_timestamp (void);
 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);
@@ -444,6 +450,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);