This source file includes following definitions.
- ADIO_End
- ADIOI_End_call
1
2
3
4
5
6
7 #include "adio.h"
8 #include "adio_extern.h"
9
10 void ADIO_End(int *error_code)
11 {
12 ADIOI_Flatlist_node *curr, *next;
13 ADIOI_Datarep *datarep, *datarep_next;
14
15
16
17
18
19
20
21
22 #if 0
23 PMPI_File_set_errhandler(MPI_FILE_NULL, MPI_ERRORS_RETURN);
24 #endif
25
26
27 curr = ADIOI_Flatlist;
28 while (curr) {
29 if (curr->blocklens) ADIOI_Free(curr->blocklens);
30 if (curr->indices) ADIOI_Free(curr->indices);
31 next = curr->next;
32 ADIOI_Free(curr);
33 curr = next;
34 }
35 ADIOI_Flatlist = NULL;
36
37
38 if (ADIOI_Ftable) ADIOI_Free(ADIOI_Ftable);
39 #ifndef HAVE_MPI_INFO
40 if (MPIR_Infotable) ADIOI_Free(MPIR_Infotable);
41 #endif
42
43
44
45 datarep = ADIOI_Datarep_head;
46 while (datarep) {
47 datarep_next = datarep->next;
48 ADIOI_Free(datarep->name);
49 ADIOI_Free(datarep);
50 datarep = datarep_next;
51 }
52
53 if( ADIOI_syshints != MPI_INFO_NULL)
54 MPI_Info_free(&ADIOI_syshints);
55
56 MPI_Op_free(&ADIO_same_amode);
57
58 *error_code = MPI_SUCCESS;
59 }
60
61
62
63
64
65
66 int ADIOI_End_call(MPI_Comm comm, int keyval, void *attribute_val, void
67 *extra_state)
68 {
69 int error_code;
70
71 ADIOI_UNREFERENCED_ARG(comm);
72 ADIOI_UNREFERENCED_ARG(attribute_val);
73 ADIOI_UNREFERENCED_ARG(extra_state);
74
75 MPI_Comm_free_keyval (&keyval);
76
77
78
79
80 if (ADIOI_cb_config_list_keyval != MPI_KEYVAL_INVALID)
81 MPI_Comm_free_keyval (&ADIOI_cb_config_list_keyval);
82
83 ADIO_End(&error_code);
84 return error_code;
85 }