This source file includes following definitions.
- ADIOI_GEN_Fcntl
1
2
3
4
5
6
7
8 #include "adio.h"
9
10 #ifdef HAVE_UNISTD_H
11 #include <unistd.h>
12 #endif
13
14 void ADIOI_GEN_Fcntl(ADIO_File fd, int flag, ADIO_Fcntl_t *fcntl_struct,
15 int *error_code)
16 {
17 static char myname[] = "ADIOI_GEN_FCNTL";
18
19 switch(flag) {
20 case ADIO_FCNTL_GET_FSIZE:
21 #ifdef ADIOI_MPE_LOGGING
22 MPE_Log_event( ADIOI_MPE_lseek_a, 0, NULL );
23 #endif
24 fcntl_struct->fsize = lseek(fd->fd_sys, 0, SEEK_END);
25 #ifdef ADIOI_MPE_LOGGING
26 MPE_Log_event( ADIOI_MPE_lseek_b, 0, NULL );
27 #endif
28 if (fd->fp_sys_posn != -1) {
29 #ifdef ADIOI_MPE_LOGGING
30 MPE_Log_event( ADIOI_MPE_lseek_a, 0, NULL );
31 #endif
32 lseek(fd->fd_sys, fd->fp_sys_posn, SEEK_SET);
33 #ifdef ADIOI_MPE_LOGGING
34 MPE_Log_event( ADIOI_MPE_lseek_b, 0, NULL );
35 #endif
36 }
37 if (fcntl_struct->fsize == -1) {
38 *error_code = MPIO_Err_create_code(MPI_SUCCESS,
39 MPIR_ERR_RECOVERABLE, myname,
40 __LINE__, MPI_ERR_IO, "**io",
41 "**io %s", strerror(errno));
42 }
43 else *error_code = MPI_SUCCESS;
44 break;
45
46 case ADIO_FCNTL_SET_DISKSPACE:
47 ADIOI_GEN_Prealloc(fd, fcntl_struct->diskspace, error_code);
48 break;
49
50 case ADIO_FCNTL_SET_ATOMICITY:
51 fd->atomicity = (fcntl_struct->atomicity == 0) ? 0 : 1;
52 *error_code = MPI_SUCCESS;
53 break;
54
55
56 default:
57 *error_code = MPIO_Err_create_code(MPI_SUCCESS,
58 MPIR_ERR_RECOVERABLE,
59 myname, __LINE__,
60 MPI_ERR_ARG,
61 "**flag", "**flag %d", flag);
62
63 }
64 }