This source file includes following definitions.
- pmix_mca_base_component_compare_priority
- pmix_mca_base_component_compare
- pmix_mca_base_component_compatible
- pmix_mca_base_component_to_string
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #include <src/include/pmix_config.h>
21
22 #include <string.h>
23
24 #include "src/mca/mca.h"
25 #include "src/mca/base/base.h"
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 int
41 pmix_mca_base_component_compare_priority(pmix_mca_base_component_priority_list_item_t *a,
42 pmix_mca_base_component_priority_list_item_t *b)
43 {
44
45
46 if (a->cpli_priority > b->cpli_priority) {
47 return -1;
48 } else if (a->cpli_priority < b->cpli_priority) {
49 return 1;
50 } else {
51 return pmix_mca_base_component_compare(a->super.cli_component,
52 b->super.cli_component);
53 }
54 }
55
56
57 int pmix_mca_base_component_compare(const pmix_mca_base_component_t* aa,
58 const pmix_mca_base_component_t* bb)
59 {
60 int val;
61
62 val = strncmp(aa->pmix_mca_type_name, bb->pmix_mca_type_name,
63 PMIX_MCA_BASE_MAX_TYPE_NAME_LEN);
64 if (val != 0) {
65 return -val;
66 }
67
68 val = strncmp(aa->pmix_mca_component_name, bb->pmix_mca_component_name,
69 PMIX_MCA_BASE_MAX_COMPONENT_NAME_LEN);
70 if (val != 0) {
71 return -val;
72 }
73
74
75
76 if (aa->pmix_mca_component_major_version >
77 bb->pmix_mca_component_major_version) {
78 return -1;
79 } else if (aa->pmix_mca_component_major_version <
80 bb->pmix_mca_component_major_version) {
81 return 1;
82 } else if (aa->pmix_mca_component_minor_version >
83 bb->pmix_mca_component_minor_version) {
84 return -1;
85 } else if (aa->pmix_mca_component_minor_version <
86 bb->pmix_mca_component_minor_version) {
87 return 1;
88 } else if (aa->pmix_mca_component_release_version >
89 bb->pmix_mca_component_release_version) {
90 return -1;
91 } else if (aa->pmix_mca_component_release_version <
92 bb->pmix_mca_component_release_version) {
93 return 1;
94 }
95
96 return 0;
97 }
98
99
100
101
102
103
104 int pmix_mca_base_component_compatible(const pmix_mca_base_component_t* aa,
105 const pmix_mca_base_component_t* bb)
106 {
107 int val;
108
109 val = strncmp(aa->pmix_mca_type_name, bb->pmix_mca_type_name,
110 PMIX_MCA_BASE_MAX_TYPE_NAME_LEN);
111 if (val != 0) {
112 return -val;
113 }
114
115 val = strncmp(aa->pmix_mca_component_name, bb->pmix_mca_component_name,
116 PMIX_MCA_BASE_MAX_COMPONENT_NAME_LEN);
117 if (val != 0) {
118 return -val;
119 }
120
121
122
123 if (aa->pmix_mca_component_major_version >
124 bb->pmix_mca_component_major_version) {
125 return -1;
126 } else if (aa->pmix_mca_component_major_version <
127 bb->pmix_mca_component_major_version) {
128 return 1;
129 } else if (aa->pmix_mca_component_minor_version >
130 bb->pmix_mca_component_minor_version) {
131 return -1;
132 } else if (aa->pmix_mca_component_minor_version <
133 bb->pmix_mca_component_minor_version) {
134 return 1;
135 }
136 return 0;
137 }
138
139
140
141
142
143 char * pmix_mca_base_component_to_string(const pmix_mca_base_component_t *a) {
144 char * str = NULL;
145 if(0 > asprintf(&str, "%s.%s.%d.%d", a->pmix_mca_type_name,
146 a->pmix_mca_component_name, a->pmix_mca_component_major_version,
147 a->pmix_mca_component_minor_version)) {
148 return NULL;
149 }
150 return str;
151 }