This source file includes following definitions.
- ADIOI_PFS_ReadComplete
- ADIOI_PFS_WriteComplete
1
2
3
4
5
6
7
8 #include "ad_pfs.h"
9
10 void ADIOI_PFS_ReadComplete(ADIO_Request *request, ADIO_Status *status,
11 int *error_code)
12 {
13 int err=0;
14 static char myname[] = "ADIOI_PFS_READCOMPLETE";
15
16 if (*request == ADIO_REQUEST_NULL) {
17 *error_code = MPI_SUCCESS;
18 return;
19 }
20
21 if ((*request)->queued) {
22 err = _iowait(*((long *) (*request)->handle));
23 if (err == -1) {
24 *error_code = MPIO_Err_create_code(MPI_SUCCESS,
25 MPIR_ERR_RECOVERABLE, myname,
26 __LINE__, MPI_ERR_IO, "**io",
27 "**io %s", strerror(errno));
28 }
29 else *error_code = MPI_SUCCESS;
30 }
31 else *error_code = MPI_SUCCESS;
32 #ifdef HAVE_STATUS_SET_BYTES
33 if ((*request)->nbytes != -1)
34 MPIR_Status_set_bytes(status, (*request)->datatype, (*request)->nbytes);
35 #endif
36
37 if ((*request)->queued != -1) {
38
39
40
41
42
43
44
45
46
47
48
49 if ((*request)->queued) ADIOI_Del_req_from_list(request);
50
51 (*request)->fd->async_count--;
52 if ((*request)->handle) ADIOI_Free((*request)->handle);
53 ADIOI_Free_request((ADIOI_Req_node *) (*request));
54 *request = ADIO_REQUEST_NULL;
55 }
56 }
57
58
59 void ADIOI_PFS_WriteComplete(ADIO_Request *request, ADIO_Status *status, int *error_code)
60 {
61 ADIOI_PFS_ReadComplete(request, status, error_code);
62 }