1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
/*
* Copyright (C) by Argonne National Laboratory
* See COPYRIGHT in top-level directory
*/
#include "adio.h"
#include "mpiu_greq.h"
/* Generic implementation of IwriteContig calls the blocking WriteContig
* immediately.
*/
void ADIOI_FAKE_IwriteContig(ADIO_File fd, const void *buf, int count,
MPI_Datatype datatype, int file_ptr_type,
ADIO_Offset offset, ADIO_Request * request, int *error_code)
{
ADIO_Status status;
MPI_Count typesize;
int write_count;
MPI_Offset nbytes;
/* Call the blocking function. It will create an error code
* if necessary.
*/
ADIO_WriteContig(fd, buf, count, datatype, file_ptr_type, offset, &status, error_code);
if (*error_code == MPI_SUCCESS) {
MPI_Type_size_x(datatype, &typesize);
MPI_Get_count(&status, datatype, &write_count);
nbytes = write_count * typesize;
} else {
nbytes = 0;
}
MPIO_Completed_request_create(&fd, nbytes, error_code, request);
}
/* Generic implementation of IwriteStrided calls the blocking WriteStrided
* immediately.
*/
void ADIOI_FAKE_IwriteStrided(ADIO_File fd, const void *buf, int count,
MPI_Datatype datatype, int file_ptr_type,
ADIO_Offset offset, ADIO_Request * request, int *error_code)
{
ADIO_Status status;
MPI_Count typesize;
int write_count;
MPI_Offset nbytes;
/* Call the blocking function. It will create an error code
* if necessary.
*/
ADIO_WriteStrided(fd, buf, count, datatype, file_ptr_type, offset, &status, error_code);
if (*error_code == MPI_SUCCESS) {
MPI_Type_size_x(datatype, &typesize);
MPI_Get_count(&status, datatype, &write_count);
nbytes = write_count * typesize;
} else {
nbytes = 0;
}
MPIO_Completed_request_create(&fd, nbytes, error_code, request);
}
|