1 /* -*- Mode: C; c-basic-offset:4 ; -*- */
4 * Copyright (C) 1997 University of Chicago.
5 * See COPYRIGHT notice in top-level directory.
13 #ifdef AGGREGATION_PROFILE
17 void ADIOI_GEN_ReadContig(ADIO_File fd
, void *buf
, int count
,
18 MPI_Datatype datatype
, int file_ptr_type
,
19 ADIO_Offset offset
, ADIO_Status
*status
,
22 int err
= -1, datatype_size
;
24 static char myname
[] = "ADIOI_GEN_READCONTIG";
26 #ifdef AGGREGATION_PROFILE
27 MPE_Log_event (5034, 0, NULL
);
29 MPI_Type_size(datatype
, &datatype_size
);
30 len
= (ADIO_Offset
)datatype_size
* (ADIO_Offset
)count
;
31 ADIOI_Assert(len
== (unsigned int) len
); /* read takes an unsigned int parm */
33 if (file_ptr_type
== ADIO_INDIVIDUAL
) {
37 if (fd
->fp_sys_posn
!= offset
) {
38 #ifdef ADIOI_MPE_LOGGING
39 MPE_Log_event( ADIOI_MPE_lseek_a
, 0, NULL
);
41 err
= lseek(fd
->fd_sys
, offset
, SEEK_SET
);
42 #ifdef ADIOI_MPE_LOGGING
43 MPE_Log_event( ADIOI_MPE_lseek_b
, 0, NULL
);
45 /* --BEGIN ERROR HANDLING-- */
47 *error_code
= MPIO_Err_create_code(MPI_SUCCESS
,
51 "**io %s", strerror(errno
));
55 /* --END ERROR HANDLING-- */
58 #ifdef ADIOI_MPE_LOGGING
59 MPE_Log_event( ADIOI_MPE_read_a
, 0, NULL
);
61 err
= read(fd
->fd_sys
, buf
, (unsigned int)len
);
62 #ifdef ADIOI_MPE_LOGGING
63 MPE_Log_event( ADIOI_MPE_read_b
, 0, NULL
);
65 /* --BEGIN ERROR HANDLING-- */
67 *error_code
= MPIO_Err_create_code(MPI_SUCCESS
,
71 "**io %s", strerror(errno
));
75 /* --END ERROR HANDLING-- */
77 fd
->fp_sys_posn
= offset
+ err
;
79 if (file_ptr_type
== ADIO_INDIVIDUAL
) {
83 #ifdef HAVE_STATUS_SET_BYTES
84 if (err
!= -1) MPIR_Status_set_bytes(status
, datatype
, err
);
87 *error_code
= MPI_SUCCESS
;
88 #ifdef AGGREGATION_PROFILE
89 MPE_Log_event (5035, 0, NULL
);