#include "xbt.h"
#include "xbt/xbt_os_time.h"
#include "simgrid/simix.h"
-#include "smpi/smpi.h"
+#include "smpi/smpi_interface.h"
#include "smpi/smpif.h"
#include "smpi/smpi_cocci.h"
#include "instr/instr_private.h"
#define NON_PERSISTENT 0x2
#define SEND 0x4
#define RECV 0x8
-#define RECV_DELETE 0x10
-
+#define RECV_DELETE 0x10
+#define ISEND 0x20
+#define SSEND 0x40
// this struct is here to handle the problem of non-contignous data
// for each such structure these function should be implemented (vector
// index hvector hindex struct)
int dst, int tag, MPI_Comm comm);
MPI_Request smpi_mpi_recv_init(void *buf, int count, MPI_Datatype datatype,
int src, int tag, MPI_Comm comm);
+MPI_Request smpi_mpi_ssend_init(void *buf, int count, MPI_Datatype datatype,
+ int dst, int tag, MPI_Comm comm);
void smpi_mpi_start(MPI_Request request);
void smpi_mpi_startall(int count, MPI_Request * requests);
void smpi_mpi_request_free(MPI_Request * request);
int dst, int tag, MPI_Comm comm);
MPI_Request smpi_mpi_isend(void *buf, int count, MPI_Datatype datatype,
int dst, int tag, MPI_Comm comm);
+MPI_Request smpi_mpi_issend(void *buf, int count, MPI_Datatype datatype,
+ int dst, int tag, MPI_Comm comm);
MPI_Request smpi_irecv_init(void *buf, int count, MPI_Datatype datatype,
int src, int tag, MPI_Comm comm);
MPI_Request smpi_mpi_irecv(void *buf, int count, MPI_Datatype datatype,
int tag, MPI_Comm comm, MPI_Status * status);
void smpi_mpi_send(void *buf, int count, MPI_Datatype datatype, int dst,
int tag, MPI_Comm comm);
+void smpi_mpi_ssend(void *buf, int count, MPI_Datatype datatype, int dst,
+ int tag, MPI_Comm comm);
void smpi_mpi_sendrecv(void *sendbuf, int sendcount, MPI_Datatype sendtype,
int dst, int sendtag, void *recvbuf, int recvcount,
MPI_Datatype recvtype, int src, int recvtag,
void* recvbuf, int* recvcounts, int* recvdisps, int* recvtype, int* comm, int* ierr);
void mpi_get_processor_name__(char *name, int *resultlen, int* ierr);
void mpi_test__ (int * request, int *flag, MPI_Status * status, int* ierr);
+void mpi_testall__ (int* count, int * requests, int *flag, MPI_Status * statuses, int* ierr);
void mpi_get_count__(MPI_Status * status, int* datatype, int *count, int* ierr);
void mpi_type_extent__(int* datatype, MPI_Aint * extent, int* ierr);
void mpi_attr_get__(int* comm, int* keyval, void* attr_value, int* flag, int* ierr );
int* recvtype, int* src, int* recvtag,
int* comm, MPI_Status* status, int* ierr);
+/********** Tracing **********/
+/* from smpi_instr.c */
+void TRACE_internal_smpi_set_category (const char *category);
+const char *TRACE_internal_smpi_get_category (void);
+void TRACE_smpi_collective_in(int rank, int root, const char *operation);
+void TRACE_smpi_collective_out(int rank, int root, const char *operation);
+void TRACE_smpi_computing_init(int rank);
+void TRACE_smpi_computing_out(int rank);
+void TRACE_smpi_computing_in(int rank);
#endif