This source file includes following definitions.
- main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #include "ompi_config.h"
25
26 #include <stdio.h>
27 #include <string.h>
28 #include <ctype.h>
29 #ifdef HAVE_UNISTD_H
30 #include <unistd.h>
31 #endif
32 #ifdef HAVE_NETDB_H
33 #include <netdb.h>
34 #endif
35 #ifdef HAVE_SYS_PARAM_H
36 #include <sys/param.h>
37 #endif
38 #include <errno.h>
39 #include <signal.h>
40
41 #include "opal/version.h"
42 #include "opal/mca/installdirs/installdirs.h"
43 #include "opal/class/opal_object.h"
44 #include "opal/class/opal_pointer_array.h"
45 #include "opal/runtime/opal.h"
46 #if OPAL_ENABLE_FT_CR == 1
47 #include "opal/runtime/opal_cr.h"
48 #endif
49 #include "opal/mca/base/base.h"
50 #include "opal/runtime/opal_info_support.h"
51 #include "opal/util/argv.h"
52 #include "opal/util/show_help.h"
53
54 #if OMPI_RTE_ORTE
55 #include "orte/runtime/orte_info_support.h"
56 #endif
57
58 #include "ompi/communicator/communicator.h"
59 #include "ompi/tools/ompi_info/ompi_info.h"
60 #include "ompi/runtime/ompi_info_support.h"
61
62
63
64
65
66
67 int main(int argc, char *argv[])
68 {
69 int ret = 0;
70 bool acted = false;
71 bool want_all = false;
72 char **app_env = NULL, **global_env = NULL;
73 int i;
74 opal_cmd_line_t *ompi_info_cmd_line;
75 opal_pointer_array_t mca_types;
76 opal_pointer_array_t component_map;
77 opal_info_component_map_t *map;
78
79
80
81 signal(SIGPIPE, SIG_IGN);
82
83
84 if (OPAL_SUCCESS != opal_init_util(&argc, &argv)) {
85 opal_show_help("help-opal_info.txt", "lib-call-fail", true,
86 "opal_init_util", __FILE__, __LINE__, NULL);
87 exit(ret);
88 }
89
90 ompi_info_cmd_line = OBJ_NEW(opal_cmd_line_t);
91 if (NULL == ompi_info_cmd_line) {
92 ret = errno;
93 opal_show_help("help-opal_info.txt", "lib-call-fail", true,
94 "opal_cmd_line_create", __FILE__, __LINE__, NULL);
95 exit(ret);
96 }
97
98
99
100
101 if (OPAL_SUCCESS != (ret = opal_info_init(argc, argv, ompi_info_cmd_line))) {
102 exit(ret);
103 }
104
105 if (opal_cmd_line_is_taken(ompi_info_cmd_line, "version")) {
106 fprintf(stdout, "Open MPI v%s\n\n%s\n",
107 OPAL_VERSION, PACKAGE_BUGREPORT);
108 exit(0);
109 }
110
111
112 OBJ_CONSTRUCT(&mca_types, opal_pointer_array_t);
113 opal_pointer_array_init(&mca_types, 128, INT_MAX, 64);
114
115
116 opal_info_register_types(&mca_types);
117
118 #if OMPI_RTE_ORTE
119
120 orte_info_register_types(&mca_types);
121 #endif
122
123 ompi_info_register_types(&mca_types);
124
125
126 OBJ_CONSTRUCT(&component_map, opal_pointer_array_t);
127 opal_pointer_array_init(&component_map, 64, INT_MAX, 32);
128
129
130 if (OMPI_SUCCESS != (ret = ompi_info_register_framework_params(&component_map))) {
131 if (OMPI_ERR_BAD_PARAM == ret) {
132
133 opal_info_do_params(true, opal_cmd_line_is_taken(ompi_info_cmd_line, "internal"),
134 &mca_types, &component_map, NULL);
135 }
136 exit(1);
137 }
138
139
140 want_all = opal_cmd_line_is_taken(ompi_info_cmd_line, "all");
141 if (want_all) {
142 opal_info_out("Package", "package", OPAL_PACKAGE_STRING);
143 ompi_info_show_ompi_version(opal_info_ver_full);
144 }
145 if (want_all || opal_cmd_line_is_taken(ompi_info_cmd_line, "path")) {
146 opal_info_do_path(want_all, ompi_info_cmd_line);
147 acted = true;
148 }
149 if (want_all || opal_cmd_line_is_taken(ompi_info_cmd_line, "arch")) {
150 opal_info_do_arch();
151 acted = true;
152 }
153 if (want_all || opal_cmd_line_is_taken(ompi_info_cmd_line, "hostname")) {
154 opal_info_do_hostname();
155 acted = true;
156 }
157 if (want_all || opal_cmd_line_is_taken(ompi_info_cmd_line, "config")) {
158 ompi_info_do_config(true);
159 acted = true;
160 }
161 if (want_all || opal_cmd_line_is_taken(ompi_info_cmd_line, "param") ||
162 opal_cmd_line_is_taken(ompi_info_cmd_line, "params")) {
163 opal_info_do_params(want_all, opal_cmd_line_is_taken(ompi_info_cmd_line, "internal"),
164 &mca_types, &component_map, ompi_info_cmd_line);
165 acted = true;
166 }
167 if (opal_cmd_line_is_taken(ompi_info_cmd_line, "type")) {
168 opal_info_do_type(ompi_info_cmd_line);
169 acted = true;
170 }
171
172
173
174 if (!acted) {
175 opal_info_out("Package", "package", OPAL_PACKAGE_STRING);
176 ompi_info_show_ompi_version(opal_info_ver_full);
177 opal_info_show_path(opal_info_path_prefix, opal_install_dirs.prefix);
178 opal_info_do_arch();
179 opal_info_do_hostname();
180 ompi_info_do_config(false);
181 opal_info_show_component_version(&mca_types, &component_map, opal_info_type_all,
182 opal_info_component_all, opal_info_ver_full,
183 opal_info_ver_all);
184 }
185
186
187
188 if (NULL != app_env) {
189 opal_argv_free(app_env);
190 }
191 if (NULL != global_env) {
192 opal_argv_free(global_env);
193 }
194 ompi_info_close_components();
195 OBJ_RELEASE(ompi_info_cmd_line);
196 OBJ_DESTRUCT(&mca_types);
197 for (i=0; i < component_map.size; i++) {
198 if (NULL != (map = (opal_info_component_map_t*)opal_pointer_array_get_item(&component_map, i))) {
199 OBJ_RELEASE(map);
200 }
201 }
202 OBJ_DESTRUCT(&component_map);
203
204 opal_info_finalize();
205
206
207
208 opal_finalize_util();
209
210 return 0;
211 }