1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 #ifndef OPAL_DSS_TYPES_H_
32 #define OPAL_DSS_TYPES_H_
33
34 #include "opal_config.h"
35
36 #ifdef HAVE_SYS_TIME_H
37 #include <sys/time.h>
38 #endif
39
40 #include "opal/class/opal_object.h"
41 #include "opal/class/opal_pointer_array.h"
42 #include "opal/class/opal_list.h"
43
44 typedef uint32_t opal_jobid_t;
45 typedef uint32_t opal_vpid_t;
46 typedef struct {
47 opal_jobid_t jobid;
48 opal_vpid_t vpid;
49 } opal_process_name_t;
50 #define OPAL_SIZEOF_PROCESS_NAME_T 8
51
52 BEGIN_C_DECLS
53
54 typedef uint8_t opal_data_type_t;
55 #define OPAL_DATA_TYPE_T OPAL_UINT8
56 #define OPAL_DSS_ID_MAX UINT8_MAX
57 #define OPAL_DSS_ID_INVALID OPAL_DSS_ID_MAX
58
59
60 typedef struct {
61 int32_t size;
62 uint8_t *bytes;
63 } opal_byte_object_t;
64
65
66 #define OPAL_UNDEF (opal_data_type_t) 0
67 #define OPAL_BYTE (opal_data_type_t) 1
68 #define OPAL_BOOL (opal_data_type_t) 2
69 #define OPAL_STRING (opal_data_type_t) 3
70 #define OPAL_SIZE (opal_data_type_t) 4
71 #define OPAL_PID (opal_data_type_t) 5
72
73 #define OPAL_INT (opal_data_type_t) 6
74 #define OPAL_INT8 (opal_data_type_t) 7
75 #define OPAL_INT16 (opal_data_type_t) 8
76 #define OPAL_INT32 (opal_data_type_t) 9
77 #define OPAL_INT64 (opal_data_type_t) 10
78
79 #define OPAL_UINT (opal_data_type_t) 11
80 #define OPAL_UINT8 (opal_data_type_t) 12
81 #define OPAL_UINT16 (opal_data_type_t) 13
82 #define OPAL_UINT32 (opal_data_type_t) 14
83 #define OPAL_UINT64 (opal_data_type_t) 15
84
85 #define OPAL_FLOAT (opal_data_type_t) 16
86 #define OPAL_DOUBLE (opal_data_type_t) 17
87
88 #define OPAL_TIMEVAL (opal_data_type_t) 18
89 #define OPAL_TIME (opal_data_type_t) 19
90
91 #define OPAL_BYTE_OBJECT (opal_data_type_t) 20
92 #define OPAL_DATA_TYPE (opal_data_type_t) 21
93 #define OPAL_NULL (opal_data_type_t) 22
94 #define OPAL_PSTAT (opal_data_type_t) 23
95 #define OPAL_NODE_STAT (opal_data_type_t) 24
96 #define OPAL_HWLOC_TOPO (opal_data_type_t) 25
97 #define OPAL_VALUE (opal_data_type_t) 26
98 #define OPAL_BUFFER (opal_data_type_t) 27
99 #define OPAL_PTR (opal_data_type_t) 28
100 #define OPAL_NAME (opal_data_type_t) 29
101 #define OPAL_JOBID (opal_data_type_t) 30
102 #define OPAL_VPID (opal_data_type_t) 31
103 #define OPAL_STATUS (opal_data_type_t) 32
104 #define OPAL_PERSIST (opal_data_type_t) 33
105 #define OPAL_SCOPE (opal_data_type_t) 34
106 #define OPAL_DATA_RANGE (opal_data_type_t) 35
107 #define OPAL_INFO_DIRECTIVES (opal_data_type_t) 36
108 #define OPAL_PROC_STATE (opal_data_type_t) 37
109 #define OPAL_PROC_INFO (opal_data_type_t) 38
110 #define OPAL_ENVAR (opal_data_type_t) 39
111
112
113 #define OPAL_DSS_ID_DYNAMIC (opal_data_type_t) 100
114
115
116 #define OPAL_VALUE1_GREATER +1
117 #define OPAL_VALUE2_GREATER -1
118 #define OPAL_EQUAL 0
119
120
121
122 typedef int opal_status_t;
123 typedef uint32_t opal_proc_state_t;
124
125
126 typedef struct {
127 opal_list_item_t super;
128 opal_process_name_t name;
129 char *hostname;
130 char *executable_name;
131 pid_t pid;
132 opal_status_t exit_code;
133 opal_proc_state_t state;
134 } opal_proc_info_t;
135 OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_proc_info_t);
136
137
138 typedef struct {
139 opal_list_item_t super;
140 char *envar;
141 char *value;
142 char separator;
143 } opal_envar_t;
144 OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_envar_t);
145
146
147 typedef struct {
148 opal_list_item_t super;
149 char *key;
150 opal_data_type_t type;
151 union {
152 bool flag;
153 uint8_t byte;
154 char *string;
155 size_t size;
156 pid_t pid;
157 int integer;
158 int8_t int8;
159 int16_t int16;
160 int32_t int32;
161 int64_t int64;
162 unsigned int uint;
163 uint8_t uint8;
164 uint16_t uint16;
165 uint32_t uint32;
166 uint64_t uint64;
167 opal_byte_object_t bo;
168 float fval;
169 double dval;
170 struct timeval tv;
171 time_t time;
172 opal_status_t status;
173 opal_process_name_t name;
174 opal_proc_info_t pinfo;
175 void *ptr;
176 opal_envar_t envar;
177 } data;
178 } opal_value_t;
179 OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_value_t);
180
181
182 #define OPAL_PSTAT_MAX_STRING_LEN 32
183 typedef struct {
184 opal_list_item_t super;
185
186 char node[OPAL_PSTAT_MAX_STRING_LEN];
187 int32_t rank;
188 pid_t pid;
189 char cmd[OPAL_PSTAT_MAX_STRING_LEN];
190
191 char state[2];
192 struct timeval time;
193 float percent_cpu;
194 int32_t priority;
195 int16_t num_threads;
196 float pss;
197 float vsize;
198 float rss;
199 float peak_vsize;
200 int16_t processor;
201
202 struct timeval sample_time;
203 } opal_pstats_t;
204 OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_pstats_t);
205 typedef struct {
206 opal_list_item_t super;
207 char *disk;
208 unsigned long num_reads_completed;
209 unsigned long num_reads_merged;
210 unsigned long num_sectors_read;
211 unsigned long milliseconds_reading;
212 unsigned long num_writes_completed;
213 unsigned long num_writes_merged;
214 unsigned long num_sectors_written;
215 unsigned long milliseconds_writing;
216 unsigned long num_ios_in_progress;
217 unsigned long milliseconds_io;
218 unsigned long weighted_milliseconds_io;
219 } opal_diskstats_t;
220 OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_diskstats_t);
221 typedef struct {
222 opal_list_item_t super;
223 char *net_interface;
224 unsigned long num_bytes_recvd;
225 unsigned long num_packets_recvd;
226 unsigned long num_recv_errs;
227 unsigned long num_bytes_sent;
228 unsigned long num_packets_sent;
229 unsigned long num_send_errs;
230 } opal_netstats_t;
231 OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_netstats_t);
232 typedef struct {
233 opal_object_t super;
234
235 float la;
236 float la5;
237 float la15;
238
239 float total_mem;
240 float free_mem;
241 float buffers;
242 float cached;
243 float swap_cached;
244 float swap_total;
245 float swap_free;
246 float mapped;
247
248 struct timeval sample_time;
249
250 opal_list_t diskstats;
251
252 opal_list_t netstats;
253
254 } opal_node_stats_t;
255 OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_node_stats_t);
256
257
258 #define OPAL_DSS_STRUCTURED true
259 #define OPAL_DSS_UNSTRUCTURED false
260
261
262
263
264 enum opal_dss_buffer_type_t {
265 OPAL_DSS_BUFFER_NON_DESC = 0x00,
266 OPAL_DSS_BUFFER_FULLY_DESC = 0x01
267 };
268
269 typedef enum opal_dss_buffer_type_t opal_dss_buffer_type_t;
270
271 #define OPAL_DSS_BUFFER_TYPE_HTON(h);
272 #define OPAL_DSS_BUFFER_TYPE_NTOH(h);
273
274
275
276
277
278 struct opal_buffer_t {
279
280 opal_object_t parent;
281
282 opal_dss_buffer_type_t type;
283
284 char *base_ptr;
285
286
287 char *pack_ptr;
288
289
290 char *unpack_ptr;
291
292
293 size_t bytes_allocated;
294
295
296 size_t bytes_used;
297 };
298
299
300
301 typedef struct opal_buffer_t opal_buffer_t;
302
303
304 OPAL_DECLSPEC OBJ_CLASS_DECLARATION (opal_buffer_t);
305
306 END_C_DECLS
307
308 #endif