/* Convert between Fortran and C MPI_BOTTOM */
#define F2C_BOTTOM(addr) ((addr!=MPI_IN_PLACE && *(int*)addr == MPI_FORTRAN_BOTTOM) ? MPI_BOTTOM : (addr))
#define F2C_IN_PLACE(addr) ((addr!=MPI_BOTTOM &&*(int*)addr == MPI_FORTRAN_IN_PLACE) ? MPI_IN_PLACE : (addr))
/* Convert between Fortran and C MPI_BOTTOM */
#define F2C_BOTTOM(addr) ((addr!=MPI_IN_PLACE && *(int*)addr == MPI_FORTRAN_BOTTOM) ? MPI_BOTTOM : (addr))
#define F2C_IN_PLACE(addr) ((addr!=MPI_BOTTOM &&*(int*)addr == MPI_FORTRAN_IN_PLACE) ? MPI_IN_PLACE : (addr))
int* comm, MPI_Status* status, int* ierr) {
*ierr = MPI_Sendrecv(sendbuf, *sendcount, get_datatype(*sendtype), *dst,
*sendtag, recvbuf, *recvcount,get_datatype(*recvtype), *src, *recvtag,
int* comm, MPI_Status* status, int* ierr) {
*ierr = MPI_Sendrecv(sendbuf, *sendcount, get_datatype(*sendtype), *dst,
*sendtag, recvbuf, *recvcount,get_datatype(*recvtype), *src, *recvtag,
}
void mpi_recv_init_(void *buf, int* count, int* datatype, int* src, int* tag,
}
void mpi_recv_init_(void *buf, int* count, int* datatype, int* src, int* tag,
void mpi_wait_(int* request, MPI_Status* status, int* ierr) {
MPI_Request req = find_request(*request);
void mpi_wait_(int* request, MPI_Status* status, int* ierr) {
MPI_Request req = find_request(*request);
for(i = 0; i < *count; i++) {
if(reqs[i]==MPI_REQUEST_NULL){
free_request(requests[i]);
for(i = 0; i < *count; i++) {
if(reqs[i]==MPI_REQUEST_NULL){
free_request(requests[i]);
void mpi_test_ (int * request, int *flag, MPI_Status * status, int* ierr){
MPI_Request req = find_request(*request);
void mpi_test_ (int * request, int *flag, MPI_Status * status, int* ierr){
MPI_Request req = find_request(*request);
- *ierr= MPI_Testall(*count, reqs, flag, statuses);
+ *ierr= MPI_Testall(*count, reqs, flag, F2C_STATUSES_IGNORE(statuses));
for(i = 0; i < *count; i++) {
if(reqs[i]==MPI_REQUEST_NULL){
free_request(requests[i]);
for(i = 0; i < *count; i++) {
if(reqs[i]==MPI_REQUEST_NULL){
free_request(requests[i]);
}
void mpi_get_count_(MPI_Status * status, int* datatype, int *count, int* ierr){
}
void mpi_get_count_(MPI_Status * status, int* datatype, int *count, int* ierr){
}
void mpi_attr_get_(int* comm, int* keyval, void* attr_value, int* flag, int* ierr ){
}
void mpi_attr_get_(int* comm, int* keyval, void* attr_value, int* flag, int* ierr ){
{
*ierr = MPI_Sendrecv_replace(buf, *count, get_datatype(*datatype), *dst, *sendtag, *src,
{
*ierr = MPI_Sendrecv_replace(buf, *count, get_datatype(*datatype), *dst, *sendtag, *src,
}
void mpi_testany_ (int* count, int* requests, int *index, int *flag, MPI_Status* status, int* ierr)
}
void mpi_testany_ (int* count, int* requests, int *index, int *flag, MPI_Status* status, int* ierr)
- *ierr = MPI_Testany(*count, reqs, index, flag, status);
+ *ierr = MPI_Testany(*count, reqs, index, flag, F2C_STATUS_IGNORE(status));
if(*index!=MPI_UNDEFINED)
if(reqs[*index]==MPI_REQUEST_NULL){
free_request(requests[*index]);
if(*index!=MPI_UNDEFINED)
if(reqs[*index]==MPI_REQUEST_NULL){
free_request(requests[*index]);
void mpi_type_contiguous_ (int* count, int* old_type, int* newtype, int* ierr) {
MPI_Datatype tmp;
*ierr = MPI_Type_contiguous(*count, get_datatype(*old_type), &tmp);
void mpi_type_contiguous_ (int* count, int* old_type, int* newtype, int* ierr) {
MPI_Datatype tmp;
*ierr = MPI_Type_contiguous(*count, get_datatype(*old_type), &tmp);
- *ierr = MPI_Testsome(*incount, reqs, outcount, indices, statuses);
+ *ierr = MPI_Testsome(*incount, reqs, outcount, indices, F2C_STATUSES_IGNORE(statuses));
}
void mpi_probe_ (int* source, int* tag, int* comm, MPI_Status* status, int* ierr) {
}
void mpi_probe_ (int* source, int* tag, int* comm, MPI_Status* status, int* ierr) {
- *ierr = MPI_Probe(*source, *tag, get_comm(*comm), status);
+ *ierr = MPI_Probe(*source, *tag, get_comm(*comm), F2C_STATUS_IGNORE(status));