This source file includes following definitions.
- mca_base_component_compare_priority
- mca_base_component_compare
- mca_base_component_compatible
- 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 "opal_config.h"
21
22 #include <string.h>
23
24 #include "opal/mca/mca.h"
25 #include "opal/mca/base/base.h"
26 #include "opal/util/printf.h"
27
28
29
30
31
32
33
34
35
36
37
38
39
40 int
41 mca_base_component_compare_priority(mca_base_component_priority_list_item_t *a,
42 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 mca_base_component_compare(a->super.cli_component,
52 b->super.cli_component);
53 }
54 }
55
56
57 int mca_base_component_compare(const mca_base_component_t* aa,
58 const mca_base_component_t* bb)
59 {
60 int val;
61
62 val = strncmp(aa->mca_type_name, bb->mca_type_name,
63 MCA_BASE_MAX_TYPE_NAME_LEN);
64 if (val != 0) {
65 return -val;
66 }
67
68 val = strncmp(aa->mca_component_name, bb->mca_component_name,
69 MCA_BASE_MAX_COMPONENT_NAME_LEN);
70 if (val != 0) {
71 return -val;
72 }
73
74
75
76 if (aa->mca_component_major_version >
77 bb->mca_component_major_version) {
78 return -1;
79 } else if (aa->mca_component_major_version <
80 bb->mca_component_major_version) {
81 return 1;
82 } else if (aa->mca_component_minor_version >
83 bb->mca_component_minor_version) {
84 return -1;
85 } else if (aa->mca_component_minor_version <
86 bb->mca_component_minor_version) {
87 return 1;
88 } else if (aa->mca_component_release_version >
89 bb->mca_component_release_version) {
90 return -1;
91 } else if (aa->mca_component_release_version <
92 bb->mca_component_release_version) {
93 return 1;
94 }
95
96 return 0;
97 }
98
99
100
101
102
103
104 int mca_base_component_compatible(
105 const mca_base_component_t* aa,
106 const mca_base_component_t* bb)
107 {
108 int val;
109
110 val = strncmp(aa->mca_type_name, bb->mca_type_name,
111 MCA_BASE_MAX_TYPE_NAME_LEN);
112 if (val != 0) {
113 return -val;
114 }
115
116 val = strncmp(aa->mca_component_name, bb->mca_component_name,
117 MCA_BASE_MAX_COMPONENT_NAME_LEN);
118 if (val != 0) {
119 return -val;
120 }
121
122
123
124 if (aa->mca_component_major_version >
125 bb->mca_component_major_version) {
126 return -1;
127 } else if (aa->mca_component_major_version <
128 bb->mca_component_major_version) {
129 return 1;
130 } else if (aa->mca_component_minor_version >
131 bb->mca_component_minor_version) {
132 return -1;
133 } else if (aa->mca_component_minor_version <
134 bb->mca_component_minor_version) {
135 return 1;
136 }
137 return 0;
138 }
139
140
141
142
143
144 char * mca_base_component_to_string(const mca_base_component_t *a) {
145 char * str = NULL;
146 if(0 > opal_asprintf(&str, "%s.%s.%d.%d", a->mca_type_name,
147 a->mca_component_name, a->mca_component_major_version,
148 a->mca_component_minor_version)) {
149 return NULL;
150 }
151 return str;
152 }
153