This source file includes following definitions.
- MPI_Info_set
1
2
3
4
5
6
7
8 #include "mpioimpl.h"
9
10 #ifdef HAVE_WEAK_SYMBOLS
11
12 #if defined(HAVE_PRAGMA_WEAK)
13 #pragma weak MPI_Info_set = PMPI_Info_set
14 #elif defined(HAVE_PRAGMA_HP_SEC_DEF)
15 #pragma _HP_SECONDARY_DEF PMPI_Info_set MPI_Info_set
16 #elif defined(HAVE_PRAGMA_CRI_DUP)
17 #pragma _CRI duplicate MPI_Info_set as PMPI_Info_set
18
19 #endif
20
21
22 #define MPIO_BUILD_PROFILING
23 #include "mpioprof.h"
24 #endif
25
26
27
28
29
30
31
32
33
34
35
36 int MPI_Info_set(MPI_Info info, char *key, char *value)
37 {
38 MPI_Info prev, curr;
39
40 if ((info <= (MPI_Info) 0) || (info->cookie != MPIR_INFO_COOKIE)) {
41 FPRINTF(stderr, "MPI_Info_set: Invalid info object\n");
42 MPI_Abort(MPI_COMM_WORLD, 1);
43 }
44
45 if (key <= (char *) 0) {
46 FPRINTF(stderr, "MPI_Info_set: key is an invalid address\n");
47 MPI_Abort(MPI_COMM_WORLD, 1);
48 }
49
50 if (value <= (char *) 0) {
51 FPRINTF(stderr, "MPI_Info_set: value is an invalid address\n");
52 MPI_Abort(MPI_COMM_WORLD, 1);
53 }
54
55 if (strlen(key) > MPI_MAX_INFO_KEY) {
56 FPRINTF(stderr, "MPI_Info_set: key is longer than MPI_MAX_INFO_KEY\n");
57 MPI_Abort(MPI_COMM_WORLD, 1);
58 }
59
60 if (strlen(value) > MPI_MAX_INFO_VAL) {
61 FPRINTF(stderr, "MPI_Info_set: value is longer than MPI_MAX_INFO_VAL\n");
62 MPI_Abort(MPI_COMM_WORLD, 1);
63 }
64
65 if (!strlen(key)) {
66 FPRINTF(stderr, "MPI_Info_set: key is a null string\n");
67 MPI_Abort(MPI_COMM_WORLD, 1);
68 }
69
70 if (!strlen(value)) {
71 FPRINTF(stderr, "MPI_Info_set: value is a null string\n");
72 MPI_Abort(MPI_COMM_WORLD, 1);
73 }
74
75 prev = info;
76 curr = info->next;
77
78 while (curr) {
79 if (!strcmp(curr->key, key)) {
80 ADIOI_Free(curr->value);
81 curr->value = ADIOI_Strdup(value);
82 break;
83 }
84 prev = curr;
85 curr = curr->next;
86 }
87
88 if (!curr) {
89 prev->next = (MPI_Info) ADIOI_Malloc(sizeof(struct MPIR_Info));
90 curr = prev->next;
91 curr->cookie = 0;
92 curr->key = ADIOI_Strdup(key);
93 curr->value = ADIOI_Strdup(value);
94 curr->next = 0;
95 }
96
97 return MPI_SUCCESS;
98 }