00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "ad_hfs.h"
00010
00011 void ADIOI_HFS_IreadContig(ADIO_File fd, void *buf, int count,
00012 MPI_Datatype datatype, int file_ptr_type,
00013 ADIO_Offset offset, ADIO_Request *request, int *error_code)
00014 {
00015 ADIO_Status status;
00016 int len, typesize;
00017
00018
00019
00020 *request = ADIOI_Malloc_request();
00021 (*request)->optype = ADIOI_READ;
00022 (*request)->fd = fd;
00023 (*request)->queued = 0;
00024 (*request)->datatype = datatype;
00025
00026 MPI_Type_size(datatype, &typesize);
00027 len = count * typesize;
00028 ADIOI_HFS_ReadContig(fd, buf, len, MPI_BYTE, file_ptr_type, offset,
00029 &status, error_code);
00030
00031 #ifdef HAVE_STATUS_SET_BYTES
00032 if (*error_code == MPI_SUCCESS) {
00033 MPI_Get_elements(&status, MPI_BYTE, &len);
00034 (*request)->nbytes = len;
00035 }
00036 #endif
00037
00038 fd->async_count++;
00039 }
00040
00041
00042
00043 void ADIOI_HFS_IreadStrided(ADIO_File fd, void *buf, int count,
00044 MPI_Datatype datatype, int file_ptr_type,
00045 ADIO_Offset offset, ADIO_Request *request, int
00046 *error_code)
00047 {
00048 ADIO_Status status;
00049 #ifdef HAVE_STATUS_SET_BYTES
00050 int typesize;
00051 #endif
00052
00053
00054
00055 *request = ADIOI_Malloc_request();
00056 (*request)->optype = ADIOI_READ;
00057 (*request)->fd = fd;
00058 (*request)->queued = 0;
00059 (*request)->datatype = datatype;
00060
00061 ADIOI_HFS_ReadStrided(fd, buf, count, datatype, file_ptr_type,
00062 offset, &status, error_code);
00063
00064 fd->async_count++;
00065
00066 #ifdef HAVE_STATUS_SET_BYTES
00067 if (*error_code == MPI_SUCCESS) {
00068 MPI_Type_size(datatype, &typesize);
00069 (*request)->nbytes = count * typesize;
00070 }
00071 #endif
00072 }