int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int src, int tag, MPI_Comm comm, MPI_Status *status);
int MPI_Isend(void *buf, int count, MPI_Datatype datatype, int dst, int tag, MPI_Comm comm, MPI_Request *request);
int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dst, int tag, MPI_Comm comm);
+int MPI_Bcast(void *buf, int count, MPI_Datatype datatype, int root, MPI_Comm comm);
int MPI_Comm_split(MPI_Comm comm, int color, int key, MPI_Comm *comm_out);
// smpi functions
void smpi_exit(int);
int smpi_gettimeofday(struct timeval *tv, struct timezone *tz);
+void smpi_do_once_1(const char *file, int line);
+int smpi_do_once_2(void);
+void smpi_do_once_3(void);
+#define DO_ONCE for (smpi_do_once_1(__FILE__, __LINE__); smpi_do_once_2(); smpi_do_once_3())
+
#endif