OpenMPI 0.1.1

- Main Page
- Related Pages
- Modules
- Data Structures
- Files

- File List
- Globals

dss_internal.h
1 /* -*- C -*-
2 *
3 * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
4 * University Research and Technology
5 * Corporation. All rights reserved.
6 * Copyright (c) 2004-2006 The University of Tennessee and The University
7 * of Tennessee Research Foundation. All rights
8 * reserved.
9 * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
10 * University of Stuttgart. All rights reserved.
11 * Copyright (c) 2004-2005 The Regents of the University of California.
12 * All rights reserved.
13 * $COPYRIGHT$
14 *
15 * Additional copyrights may follow
16 *
17 * $HEADER$
18 *
19 */
20 #ifndef OPAL_DSS_INTERNAL_H_
21 #define OPAL_DSS_INTERNAL_H_
22
23 #include "opal_config.h"
24 #include "opal/constants.h"
25
26 #include "opal/class/opal_pointer_array.h"
27
28 #include "opal/dss/dss.h"
29
30 #ifdef HAVE_STRING_H
31 # if !defined(STDC_HEADERS) && HAVE_MEMORY_H
32 # include <memory.h>
33 # endif
34 # include <string.h>
35 #endif
36
37 BEGIN_C_DECLS
38
39 /*
40 * The default starting chunk size
41 */
42 #define OPAL_DSS_DEFAULT_INITIAL_SIZE 128
43 /*
44 * The default threshold size when we switch from doubling the
45 * buffer size to addatively increasing it
46 */
47 #define OPAL_DSS_DEFAULT_THRESHOLD_SIZE 1024
48
49 /*
50 * Internal type corresponding to size_t. Do not use this in
51 * interface calls - use OPAL_SIZE instead.
52 */
53 #if SIZEOF_SIZE_T == 1
54 #define DSS_TYPE_SIZE_T OPAL_UINT8
55 #elif SIZEOF_SIZE_T == 2
56 #define DSS_TYPE_SIZE_T OPAL_UINT16
57 #elif SIZEOF_SIZE_T == 4
58 #define DSS_TYPE_SIZE_T OPAL_UINT32
59 #elif SIZEOF_SIZE_T == 8
60 #define DSS_TYPE_SIZE_T OPAL_UINT64
61 #else
62 #error Unsupported size_t size!
63 #endif
64
65 /*
66 * Internal type corresponding to bool. Do not use this in interface
67 * calls - use OPAL_BOOL instead.
68 */
69 #if SIZEOF_BOOL == 1
70 #define DSS_TYPE_BOOL OPAL_UINT8
71 #elif SIZEOF_BOOL == 2
72 #define DSS_TYPE_BOOL OPAL_UINT16
73 #elif SIZEOF_BOOL == 4
74 #define DSS_TYPE_BOOL OPAL_UINT32
75 #elif SIZEOF_BOOL == 8
76 #define DSS_TYPE_BOOL OPAL_UINT64
77 #else
78 #error Unsupported bool size!
79 #endif
80
81 /*
82 * Internal type corresponding to int and unsigned int. Do not use
83 * this in interface calls - use OPAL_INT / OPAL_UINT instead.
84 */
85 #if SIZEOF_INT == 1
86 #define DSS_TYPE_INT OPAL_INT8
87 #define DSS_TYPE_UINT OPAL_UINT8
88 #elif SIZEOF_INT == 2
89 #define DSS_TYPE_INT OPAL_INT16
90 #define DSS_TYPE_UINT OPAL_UINT16
91 #elif SIZEOF_INT == 4
92 #define DSS_TYPE_INT OPAL_INT32
93 #define DSS_TYPE_UINT OPAL_UINT32
94 #elif SIZEOF_INT == 8
95 #define DSS_TYPE_INT OPAL_INT64
96 #define DSS_TYPE_UINT OPAL_UINT64
97 #else
98 #error Unsupported int size!
99 #endif
100
101 /*
102 * Internal type corresponding to pid_t. Do not use this in interface
103 * calls - use OPAL_PID instead.
104 */
105 #if SIZEOF_PID_T == 1
106 #define DSS_TYPE_PID_T OPAL_UINT8
107 #elif SIZEOF_PID_T == 2
108 #define DSS_TYPE_PID_T OPAL_UINT16
109 #elif SIZEOF_PID_T == 4
110 #define DSS_TYPE_PID_T OPAL_UINT32
111 #elif SIZEOF_PID_T == 8
112 #define DSS_TYPE_PID_T OPAL_UINT64
113 #else
114 #error Unsupported pid_t size!
115 #endif
116
117 /* Unpack generic size macros */
118 #define UNPACK_SIZE_MISMATCH(unpack_type, remote_type, ret) \
119 do { \
120 switch(remote_type) { \
121 case OPAL_UINT8: \
122 UNPACK_SIZE_MISMATCH_FOUND(unpack_type, uint8_t, remote_type); \
123 break; \
124 case OPAL_INT8: \
125 UNPACK_SIZE_MISMATCH_FOUND(unpack_type, int8_t, remote_type); \
126 break; \
127 case OPAL_UINT16: \
128 UNPACK_SIZE_MISMATCH_FOUND(unpack_type, uint16_t, remote_type); \
129 break; \
130 case OPAL_INT16: \
131 UNPACK_SIZE_MISMATCH_FOUND(unpack_type, int16_t, remote_type); \
132 break; \
133 case OPAL_UINT32: \
134 UNPACK_SIZE_MISMATCH_FOUND(unpack_type, uint32_t, remote_type); \
135 break; \
136 case OPAL_INT32: \
137 UNPACK_SIZE_MISMATCH_FOUND(unpack_type, int32_t, remote_type); \
138 break; \
139 case OPAL_UINT64: \
140 UNPACK_SIZE_MISMATCH_FOUND(unpack_type, uint64_t, remote_type); \
141 break; \
142 case OPAL_INT64: \
143 UNPACK_SIZE_MISMATCH_FOUND(unpack_type, int64_t, remote_type); \
144 break; \
145 default: \
146 ret = OPAL_ERR_NOT_FOUND; \
147 } \
148 } while (0)
149
150 /* NOTE: do not need to deal with endianness here, as the unpacking of
151 the underling sender-side type will do that for us. Repeat: the
152 data in tmpbuf[] is already in host byte order. */
153 #define UNPACK_SIZE_MISMATCH_FOUND(unpack_type, tmptype, tmpdsstype) \
154 do { \
155 int32_t i; \
156 tmptype *tmpbuf = (tmptype*)malloc(sizeof(tmptype) * (*num_vals)); \
157 ret = opal_dss_unpack_buffer(buffer, tmpbuf, num_vals, tmpdsstype); \
158 for (i = 0 ; i < *num_vals ; ++i) { \
159 ((unpack_type*) dest)[i] = (unpack_type)(tmpbuf[i]); \
160 } \
161 free(tmpbuf); \
162 } while (0)
163
164
165 /**
166 * Internal struct used for holding registered dss functions
167 */
168 struct opal_dss_type_info_t {
169 opal_object_t super;
170 /* type identifier */
171 opal_data_type_t odti_type;
172 /** Debugging string name */
173 char *odti_name;
174 /** Pack function */
175 opal_dss_pack_fn_t odti_pack_fn;
176 /** Unpack function */
177 opal_dss_unpack_fn_t odti_unpack_fn;
178 /** copy function */
179 opal_dss_copy_fn_t odti_copy_fn;
180 /** compare function */
181 opal_dss_compare_fn_t odti_compare_fn;
182 /** size function */
183 opal_dss_size_fn_t odti_size_fn;
184 /** print function */
185 opal_dss_print_fn_t odti_print_fn;
186 /** Release function */
187 opal_dss_release_fn_t odti_release_fn;
188 /** flag to indicate structured data */
189 bool odti_structured;
190 };
191 /**
192 * Convenience typedef
193 */
194 typedef struct opal_dss_type_info_t opal_dss_type_info_t;
195 OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_dss_type_info_t);
196
197 /*
198 * globals needed within dss
199 */
200 extern bool opal_dss_initialized;
201 extern bool opal_dss_debug;
202 extern int opal_dss_verbose;
203 extern int opal_dss_initial_size;
204 extern int opal_dss_threshold_size;
205 extern opal_pointer_array_t opal_dss_types;
206 extern opal_data_type_t opal_dss_num_reg_types;
207
208 /*
209 * Implementations of API functions
210 */
211
212 int opal_dss_set(opal_dss_value_t *value, void *new_value, opal_data_type_t type);
213
214 int opal_dss_get(void **data, opal_dss_value_t *value, opal_data_type_t type);
215
216 int opal_dss_set_buffer_type(opal_buffer_t *buffer, opal_dss_buffer_type_t type);
217
218 int opal_dss_pack(opal_buffer_t *buffer, const void *src,
219 int32_t num_vals,
220 opal_data_type_t type);
221 int opal_dss_unpack(opal_buffer_t *buffer, void *dest,
222 int32_t *max_num_vals,
223 opal_data_type_t type);
224
225 int opal_dss_copy(void **dest, void *src, opal_data_type_t type);
226
227 int opal_dss_compare(const void *value1, const void *value2,
228 opal_data_type_t type);
229
230 int opal_dss_print(char **output, char *prefix, void *src, opal_data_type_t type);
231
232 int opal_dss_dump(int output_stream, void *src, opal_data_type_t type);
233
234 int opal_dss_size(size_t *size, void *src, opal_data_type_t type);
235
236 int opal_dss_peek(opal_buffer_t *buffer, opal_data_type_t *type,
237 int32_t *number);
238
239 int opal_dss_peek_type(opal_buffer_t *buffer, opal_data_type_t *type);
240
241 int opal_dss_unload(opal_buffer_t *buffer, void **payload,
242 int32_t *bytes_used);
243 int opal_dss_load(opal_buffer_t *buffer, void *payload, int32_t bytes_used);
244
245 int opal_dss_copy_payload(opal_buffer_t *dest, opal_buffer_t *src);
246
247 int opal_dss_register(opal_dss_pack_fn_t pack_fn,
248 opal_dss_unpack_fn_t unpack_fn,
249 opal_dss_copy_fn_t copy_fn,
250 opal_dss_compare_fn_t compare_fn,
251 opal_dss_size_fn_t size_fn,
252 opal_dss_print_fn_t print_fn,
253 opal_dss_release_fn_t release_fn,
254 bool structured,
255 const char *name, opal_data_type_t *type);
256
257 void opal_dss_release(opal_dss_value_t *value);
258
259 char *opal_dss_lookup_data_type(opal_data_type_t type);
260
261 void opal_dss_dump_data_types(int output);
262
263 /*
264 * Specialized functions
265 */
266 OPAL_DECLSPEC int opal_dss_pack_buffer(opal_buffer_t *buffer, const void *src,
267 int32_t num_vals, opal_data_type_t type);
268
269 OPAL_DECLSPEC int opal_dss_unpack_buffer(opal_buffer_t *buffer, void *dst,
270 int32_t *num_vals, opal_data_type_t type);
271
272 /*
273 * Internal pack functions
274 */
275
276 int opal_dss_pack_null(opal_buffer_t *buffer, const void *src,
277 int32_t num_vals, opal_data_type_t type);
278 int opal_dss_pack_byte(opal_buffer_t *buffer, const void *src,
279 int32_t num_vals, opal_data_type_t type);
280
281 int opal_dss_pack_bool(opal_buffer_t *buffer, const void *src,
282 int32_t num_vals, opal_data_type_t type);
283
284 int opal_dss_pack_int(opal_buffer_t *buffer, const void *src,
285 int32_t num_vals, opal_data_type_t type);
286 int opal_dss_pack_int16(opal_buffer_t *buffer, const void *src,
287 int32_t num_vals, opal_data_type_t type);
288 int opal_dss_pack_int32(opal_buffer_t *buffer, const void *src,
289 int32_t num_vals, opal_data_type_t type);
290 int opal_dss_pack_int64(opal_buffer_t *buffer, const void *src,
291 int32_t num_vals, opal_data_type_t type);
292
293 int opal_dss_pack_sizet(opal_buffer_t *buffer, const void *src,
294 int32_t num_vals, opal_data_type_t type);
295
296 int opal_dss_pack_pid(opal_buffer_t *buffer, const void *src,
297 int32_t num_vals, opal_data_type_t type);
298
299 int opal_dss_pack_string(opal_buffer_t *buffer, const void *src,
300 int32_t num_vals, opal_data_type_t type);
301
302 int opal_dss_pack_data_type(opal_buffer_t *buffer, const void *src,
303 int32_t num_vals, opal_data_type_t type);
304
305 int opal_dss_pack_data_value(opal_buffer_t *buffer, const void *src,
306 int32_t num_vals, opal_data_type_t type);
307
308 int opal_dss_pack_byte_object(opal_buffer_t *buffer, const void *src,
309 int32_t num_vals, opal_data_type_t type);
310
311 int opal_dss_pack_pstat(opal_buffer_t *buffer, const void *src,
312 int32_t num_vals, opal_data_type_t type);
313
314 int opal_dss_pack_node_stat(opal_buffer_t *buffer, const void *src,
315 int32_t num_vals, opal_data_type_t type);
316
317 /*
318 * Internal unpack functions
319 */
320
321 int opal_dss_unpack_null(opal_buffer_t *buffer, void *dest,
322 int32_t *num_vals, opal_data_type_t type);
323 int opal_dss_unpack_byte(opal_buffer_t *buffer, void *dest,
324 int32_t *num_vals, opal_data_type_t type);
325
326 int opal_dss_unpack_bool(opal_buffer_t *buffer, void *dest,
327 int32_t *num_vals, opal_data_type_t type);
328
329 int opal_dss_unpack_int(opal_buffer_t *buffer, void *dest,
330 int32_t *num_vals, opal_data_type_t type);
331 int opal_dss_unpack_int16(opal_buffer_t *buffer, void *dest,
332 int32_t *num_vals, opal_data_type_t type);
333 int opal_dss_unpack_int32(opal_buffer_t *buffer, void *dest,
334 int32_t *num_vals, opal_data_type_t type);
335 int opal_dss_unpack_int64(opal_buffer_t *buffer, void *dest,
336 int32_t *num_vals, opal_data_type_t type);
337
338 int opal_dss_unpack_sizet(opal_buffer_t *buffer, void *dest,
339 int32_t *num_vals, opal_data_type_t type);
340
341 int opal_dss_unpack_pid(opal_buffer_t *buffer, void *dest,
342 int32_t *num_vals, opal_data_type_t type);
343
344 int opal_dss_unpack_string(opal_buffer_t *buffer, void *dest,
345 int32_t *num_vals, opal_data_type_t type);
346
347 int opal_dss_unpack_data_type(opal_buffer_t *buffer, void *dest,
348 int32_t *num_vals, opal_data_type_t type);
349
350 int opal_dss_unpack_data_value(opal_buffer_t *buffer, void *dest,
351 int32_t *num_vals, opal_data_type_t type);
352
353 int opal_dss_unpack_byte_object(opal_buffer_t *buffer, void *dest,
354 int32_t *num_vals, opal_data_type_t type);
355
356 int opal_dss_unpack_pstat(opal_buffer_t *buffer, void *dest,
357 int32_t *num_vals, opal_data_type_t type);
358
359 int opal_dss_unpack_node_stat(opal_buffer_t *buffer, void *dest,
360 int32_t *num_vals, opal_data_type_t type);
361
362 /*
363 * Internal copy functions
364 */
365
366 int opal_dss_std_copy(void **dest, void *src, opal_data_type_t type);
367
368 int opal_dss_copy_null(char **dest, char *src, opal_data_type_t type);
369
370 int opal_dss_copy_string(char **dest, char *src, opal_data_type_t type);
371
372 int opal_dss_copy_byte_object(opal_byte_object_t **dest, opal_byte_object_t *src,
373 opal_data_type_t type);
374
375 int opal_dss_copy_data_value(opal_dss_value_t **dest, opal_dss_value_t *src,
376 opal_data_type_t type);
377
378 int opal_dss_copy_pstat(opal_pstats_t **dest, opal_pstats_t *src,
379 opal_data_type_t type);
380
381 int opal_dss_copy_node_stat(opal_node_stats_t **dest, opal_node_stats_t *src,
382 opal_data_type_t type);
383
384 /*
385 * Internal compare functions
386 */
387
388 int opal_dss_compare_bool(bool *value1, bool *value2, opal_data_type_t type);
389
390 int opal_dss_compare_int(int *value1, int *value2, opal_data_type_t type);
391 int opal_dss_compare_uint(unsigned int *value1, unsigned int *value2, opal_data_type_t type);
392
393 int opal_dss_compare_size(size_t *value1, size_t *value2, opal_data_type_t type);
394
395 int opal_dss_compare_pid(pid_t *value1, pid_t *value2, opal_data_type_t type);
396
397 int opal_dss_compare_byte(char *value1, char *value2, opal_data_type_t type);
398 int opal_dss_compare_char(char *value1, char *value2, opal_data_type_t type);
399 int opal_dss_compare_int8(int8_t *value1, int8_t *value2, opal_data_type_t type);
400 int opal_dss_compare_uint8(uint8_t *value1, uint8_t *value2, opal_data_type_t type);
401
402 int opal_dss_compare_int16(int16_t *value1, int16_t *value2, opal_data_type_t type);
403 int opal_dss_compare_uint16(uint16_t *value1, uint16_t *value2, opal_data_type_t type);
404
405 int opal_dss_compare_int32(int32_t *value1, int32_t *value2, opal_data_type_t type);
406 int opal_dss_compare_uint32(uint32_t *value1, uint32_t *value2, opal_data_type_t type);
407
408 int opal_dss_compare_int64(int64_t *value1, int64_t *value2, opal_data_type_t type);
409 int opal_dss_compare_uint64(uint64_t *value1, uint64_t *value2, opal_data_type_t type);
410
411 int opal_dss_compare_null(char *value1, char *value2, opal_data_type_t type);
412
413 int opal_dss_compare_string(char *value1, char *value2, opal_data_type_t type);
414
415 int opal_dss_compare_dt(opal_data_type_t *value1, opal_data_type_t *value2, opal_data_type_t type);
416
417 int opal_dss_compare_data_value(opal_dss_value_t *value1, opal_dss_value_t *value2, opal_data_type_t type);
418
419 int opal_dss_compare_byte_object(opal_byte_object_t *value1, opal_byte_object_t *value2, opal_data_type_t type);
420
421 int opal_dss_compare_pstat(opal_pstats_t *value1, opal_pstats_t *value2, opal_data_type_t type);
422
423 int opal_dss_compare_node_stat(opal_node_stats_t *value1, opal_node_stats_t *value2, opal_data_type_t type);
424
425 /*
426 * Internal size functions
427 */
428 int opal_dss_std_size(size_t *size, void *src, opal_data_type_t type);
429
430 int opal_dss_size_string(size_t *size, char *src, opal_data_type_t type);
431
432 int opal_dss_size_data_value(size_t *size, opal_dss_value_t *src, opal_data_type_t type);
433
434 int opal_dss_size_byte_object(size_t *size, opal_byte_object_t *src, opal_data_type_t type);
435
436 int opal_dss_size_pstat(size_t *size, opal_pstats_t *src, opal_data_type_t type);
437
438 int opal_dss_size_node_stat(size_t *size, opal_node_stats_t *src, opal_data_type_t type);
439
440 /*
441 * Internal print functions
442 */
443 int opal_dss_print_byte(char **output, char *prefix, uint8_t *src, opal_data_type_t type);
444
445 int opal_dss_print_string(char **output, char *prefix, char *src, opal_data_type_t type);
446
447 int opal_dss_print_size(char **output, char *prefix, size_t *src, opal_data_type_t type);
448 int opal_dss_print_pid(char **output, char *prefix, pid_t *src, opal_data_type_t type);
449 int opal_dss_print_bool(char **output, char *prefix, bool *src, opal_data_type_t type);
450 int opal_dss_print_int(char **output, char *prefix, int *src, opal_data_type_t type);
451 int opal_dss_print_uint(char **output, char *prefix, int *src, opal_data_type_t type);
452 int opal_dss_print_uint8(char **output, char *prefix, uint8_t *src, opal_data_type_t type);
453 int opal_dss_print_uint16(char **output, char *prefix, uint16_t *src, opal_data_type_t type);
454 int opal_dss_print_uint32(char **output, char *prefix, uint32_t *src, opal_data_type_t type);
455 int opal_dss_print_int8(char **output, char *prefix, int8_t *src, opal_data_type_t type);
456 int opal_dss_print_int16(char **output, char *prefix, int16_t *src, opal_data_type_t type);
457 int opal_dss_print_int32(char **output, char *prefix, int32_t *src, opal_data_type_t type);
458 #ifdef HAVE_INT64_T
459 int opal_dss_print_uint64(char **output, char *prefix, uint64_t *src, opal_data_type_t type);
460 int opal_dss_print_int64(char **output, char *prefix, int64_t *src, opal_data_type_t type);
461 #else
462 int opal_dss_print_uint64(char **output, char *prefix, void *src, opal_data_type_t type);
463 int opal_dss_print_int64(char **output, char *prefix, void *src, opal_data_type_t type);
464 #endif
465 int opal_dss_print_null(char **output, char *prefix, void *src, opal_data_type_t type);
466 int opal_dss_print_data_type(char **output, char *prefix, opal_data_type_t *src, opal_data_type_t type);
467 int opal_dss_print_data_value(char **output, char *prefix, opal_dss_value_t *src, opal_data_type_t type);
468 int opal_dss_print_byte_object(char **output, char *prefix, opal_byte_object_t *src, opal_data_type_t type);
469 int opal_dss_print_pstat(char **output, char *prefix, opal_pstats_t *src, opal_data_type_t type);
470 int opal_dss_print_node_stat(char **output, char *prefix, opal_node_stats_t *src, opal_data_type_t type);
471
472
473 /*
474 * Internal release functions
475 */
476 void opal_dss_std_release(opal_dss_value_t *value);
477
478 void opal_dss_std_obj_release(opal_dss_value_t *value);
479
480 void opal_dss_release_byte_object(opal_dss_value_t *value);
481
482 /*
483 * Internal helper functions
484 */
485
486 char* opal_dss_buffer_extend(opal_buffer_t *bptr, size_t bytes_to_add);
487
488 bool opal_dss_too_small(opal_buffer_t *buffer, size_t bytes_reqd);
489
490 opal_dss_type_info_t* opal_dss_find_type(opal_data_type_t type);
491
492 int opal_dss_store_data_type(opal_buffer_t *buffer, opal_data_type_t type);
493
494 int opal_dss_get_data_type(opal_buffer_t *buffer, opal_data_type_t *type);
495
496 END_C_DECLS
497
498 #endif
opal_pointer_array_t
dynamic pointer array
Definition: opal_pointer_array.h:45
opal_dss_copy_fn_t
int(* opal_dss_copy_fn_t)(void **dest, void *src, opal_data_type_t type)
Copy a data value from one location to another.
Definition: dss.h:382
opal_dss_type_info_t::odti_pack_fn
opal_dss_pack_fn_t odti_pack_fn
Pack function.
Definition: dss_internal.h:175
opal_pointer_array.h
See opal_bitmap.h for an explanation of why there is a split between OPAL and ORTE for this generic c...
opal_dss_type_info_t::odti_release_fn
opal_dss_release_fn_t odti_release_fn
Release function.
Definition: dss_internal.h:187
opal_dss_unpack_fn_t
int(* opal_dss_unpack_fn_t)(opal_buffer_t *buffer, void *dest, int32_t *max_num_values, opal_data_type_t type)
Unpack values from a buffer.
Definition: dss.h:212
opal_node_stats_t
Definition: dss_types.h:121
opal_dss_value_t
Definition: dss_types.h:89
opal_dss_size_fn_t
int(* opal_dss_size_fn_t)(size_t *size, void *src, opal_data_type_t type)
Compute size of data value.
Definition: dss.h:423
opal_dss_type_info_t::odti_structured
bool odti_structured
flag to indicate structured data
Definition: dss_internal.h:189
opal_dss_type_info_t::odti_compare_fn
opal_dss_compare_fn_t odti_compare_fn
compare function
Definition: dss_internal.h:181
opal_dss_release_fn_t
void(* opal_dss_release_fn_t)(opal_dss_value_t *value)
Release the storage used by a data value.
Definition: dss.h:494
opal_dss_type_info_t::odti_unpack_fn
opal_dss_unpack_fn_t odti_unpack_fn
Unpack function.
Definition: dss_internal.h:177
opal_dss_compare_fn_t
int(* opal_dss_compare_fn_t)(const void *value1, const void *value2, opal_data_type_t type)
Compare two data values.
Definition: dss.h:397
opal_dss_print_fn_t
int(* opal_dss_print_fn_t)(char **output, char *prefix, void *src, opal_data_type_t type)
Print a data value.
Definition: dss.h:437
opal_dss_type_info_t::odti_copy_fn
opal_dss_copy_fn_t odti_copy_fn
copy function
Definition: dss_internal.h:179
opal_object_t
Base object.
Definition: opal_object.h:182
opal_dss_type_info_t::odti_size_fn
opal_dss_size_fn_t odti_size_fn
size function
Definition: dss_internal.h:183
opal_pstats_t
Definition: dss_types.h:100
opal_dss_buffer_type_t
uint8_t opal_dss_buffer_type_t
buffer type
Definition: dss_types.h:148
opal_buffer_t
Structure for holding a buffer to be used with the RML or OOB subsystems.
Definition: dss_types.h:159
opal_byte_object_t
Definition: dss_types.h:47
opal_dss_type_info_t::odti_print_fn
opal_dss_print_fn_t odti_print_fn
print function
Definition: dss_internal.h:185
dss.h
Data packing subsystem.
opal_dss_initialized
bool opal_dss_initialized
globals
Definition: dss_open_close.c:31
opal_dss_type_info_t::odti_name
char * odti_name
Debugging string name.
Definition: dss_internal.h:173
OBJ_CLASS_DECLARATION
#define OBJ_CLASS_DECLARATION(NAME)
Declaration for class descriptor.
Definition: opal_object.h:236
opal_dss_type_info_t
Internal struct used for holding registered dss functions.
Definition: dss_internal.h:168
opal_dss_pack_fn_t
int(* opal_dss_pack_fn_t)(opal_buffer_t *buffer, const void *src, int32_t num_values, opal_data_type_t type)
Top-level itnerface function to pack one or more values into a buffer.
Definition: dss.h:107