20 #ifndef OPAL_DSS_INTERNAL_H_
21 #define OPAL_DSS_INTERNAL_H_
23 #include "opal_config.h"
24 #include "opal/constants.h"
31 # if !defined(STDC_HEADERS) && HAVE_MEMORY_H
42 #define OPAL_DSS_DEFAULT_INITIAL_SIZE 128
47 #define OPAL_DSS_DEFAULT_THRESHOLD_SIZE 1024
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
62 #error Unsupported size_t size!
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
78 #error Unsupported bool size!
86 #define DSS_TYPE_INT OPAL_INT8
87 #define DSS_TYPE_UINT OPAL_UINT8
89 #define DSS_TYPE_INT OPAL_INT16
90 #define DSS_TYPE_UINT OPAL_UINT16
92 #define DSS_TYPE_INT OPAL_INT32
93 #define DSS_TYPE_UINT OPAL_UINT32
95 #define DSS_TYPE_INT OPAL_INT64
96 #define DSS_TYPE_UINT OPAL_UINT64
98 #error Unsupported int size!
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
114 #error Unsupported pid_t size!
118 #define UNPACK_SIZE_MISMATCH(unpack_type, remote_type, ret) \
120 switch(remote_type) { \
122 UNPACK_SIZE_MISMATCH_FOUND(unpack_type, uint8_t, remote_type); \
125 UNPACK_SIZE_MISMATCH_FOUND(unpack_type, int8_t, remote_type); \
128 UNPACK_SIZE_MISMATCH_FOUND(unpack_type, uint16_t, remote_type); \
131 UNPACK_SIZE_MISMATCH_FOUND(unpack_type, int16_t, remote_type); \
134 UNPACK_SIZE_MISMATCH_FOUND(unpack_type, uint32_t, remote_type); \
137 UNPACK_SIZE_MISMATCH_FOUND(unpack_type, int32_t, remote_type); \
140 UNPACK_SIZE_MISMATCH_FOUND(unpack_type, uint64_t, remote_type); \
143 UNPACK_SIZE_MISMATCH_FOUND(unpack_type, int64_t, remote_type); \
146 ret = OPAL_ERR_NOT_FOUND; \
153 #define UNPACK_SIZE_MISMATCH_FOUND(unpack_type, tmptype, tmpdsstype) \
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]); \
171 opal_data_type_t odti_type;
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;
206 extern opal_data_type_t opal_dss_num_reg_types;
212 int opal_dss_set(
opal_dss_value_t *value,
void *new_value, opal_data_type_t type);
214 int opal_dss_get(
void **data,
opal_dss_value_t *value, opal_data_type_t type);
220 opal_data_type_t type);
222 int32_t *max_num_vals,
223 opal_data_type_t type);
225 int opal_dss_copy(
void **dest,
void *src, opal_data_type_t type);
227 int opal_dss_compare(
const void *value1,
const void *value2,
228 opal_data_type_t type);
230 int opal_dss_print(
char **output,
char *prefix,
void *src, opal_data_type_t type);
232 int opal_dss_dump(
int output_stream,
void *src, opal_data_type_t type);
234 int opal_dss_size(
size_t *size,
void *src, opal_data_type_t type);
236 int opal_dss_peek(
opal_buffer_t *buffer, opal_data_type_t *type,
239 int opal_dss_peek_type(
opal_buffer_t *buffer, opal_data_type_t *type);
242 int32_t *bytes_used);
243 int opal_dss_load(
opal_buffer_t *buffer,
void *payload, int32_t bytes_used);
255 const char *name, opal_data_type_t *type);
259 char *opal_dss_lookup_data_type(opal_data_type_t type);
261 void opal_dss_dump_data_types(
int output);
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);
269 OPAL_DECLSPEC
int opal_dss_unpack_buffer(
opal_buffer_t *buffer,
void *dst,
270 int32_t *num_vals, opal_data_type_t type);
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);
281 int opal_dss_pack_bool(
opal_buffer_t *buffer,
const void *src,
282 int32_t num_vals, opal_data_type_t type);
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);
293 int opal_dss_pack_sizet(
opal_buffer_t *buffer,
const void *src,
294 int32_t num_vals, opal_data_type_t type);
296 int opal_dss_pack_pid(
opal_buffer_t *buffer,
const void *src,
297 int32_t num_vals, opal_data_type_t type);
299 int opal_dss_pack_string(
opal_buffer_t *buffer,
const void *src,
300 int32_t num_vals, opal_data_type_t type);
302 int opal_dss_pack_data_type(
opal_buffer_t *buffer,
const void *src,
303 int32_t num_vals, opal_data_type_t type);
305 int opal_dss_pack_data_value(
opal_buffer_t *buffer,
const void *src,
306 int32_t num_vals, opal_data_type_t type);
308 int opal_dss_pack_byte_object(
opal_buffer_t *buffer,
const void *src,
309 int32_t num_vals, opal_data_type_t type);
311 int opal_dss_pack_pstat(
opal_buffer_t *buffer,
const void *src,
312 int32_t num_vals, opal_data_type_t type);
314 int opal_dss_pack_node_stat(
opal_buffer_t *buffer,
const void *src,
315 int32_t num_vals, opal_data_type_t type);
322 int32_t *num_vals, opal_data_type_t type);
324 int32_t *num_vals, opal_data_type_t type);
327 int32_t *num_vals, opal_data_type_t type);
330 int32_t *num_vals, opal_data_type_t type);
332 int32_t *num_vals, opal_data_type_t type);
334 int32_t *num_vals, opal_data_type_t type);
336 int32_t *num_vals, opal_data_type_t type);
339 int32_t *num_vals, opal_data_type_t type);
342 int32_t *num_vals, opal_data_type_t type);
344 int opal_dss_unpack_string(
opal_buffer_t *buffer,
void *dest,
345 int32_t *num_vals, opal_data_type_t type);
347 int opal_dss_unpack_data_type(
opal_buffer_t *buffer,
void *dest,
348 int32_t *num_vals, opal_data_type_t type);
350 int opal_dss_unpack_data_value(
opal_buffer_t *buffer,
void *dest,
351 int32_t *num_vals, opal_data_type_t type);
353 int opal_dss_unpack_byte_object(
opal_buffer_t *buffer,
void *dest,
354 int32_t *num_vals, opal_data_type_t type);
357 int32_t *num_vals, opal_data_type_t type);
359 int opal_dss_unpack_node_stat(
opal_buffer_t *buffer,
void *dest,
360 int32_t *num_vals, opal_data_type_t type);
366 int opal_dss_std_copy(
void **dest,
void *src, opal_data_type_t type);
368 int opal_dss_copy_null(
char **dest,
char *src, opal_data_type_t type);
370 int opal_dss_copy_string(
char **dest,
char *src, opal_data_type_t type);
373 opal_data_type_t type);
376 opal_data_type_t type);
379 opal_data_type_t type);
382 opal_data_type_t type);
388 int opal_dss_compare_bool(
bool *value1,
bool *value2, opal_data_type_t type);
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);
393 int opal_dss_compare_size(
size_t *value1,
size_t *value2, opal_data_type_t type);
395 int opal_dss_compare_pid(pid_t *value1, pid_t *value2, opal_data_type_t type);
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);
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);
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);
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);
411 int opal_dss_compare_null(
char *value1,
char *value2, opal_data_type_t type);
413 int opal_dss_compare_string(
char *value1,
char *value2, opal_data_type_t type);
415 int opal_dss_compare_dt(opal_data_type_t *value1, opal_data_type_t *value2, opal_data_type_t type);
428 int opal_dss_std_size(
size_t *size,
void *src, opal_data_type_t type);
430 int opal_dss_size_string(
size_t *size,
char *src, opal_data_type_t type);
432 int opal_dss_size_data_value(
size_t *size,
opal_dss_value_t *src, opal_data_type_t type);
434 int opal_dss_size_byte_object(
size_t *size,
opal_byte_object_t *src, opal_data_type_t type);
436 int opal_dss_size_pstat(
size_t *size,
opal_pstats_t *src, opal_data_type_t type);
438 int opal_dss_size_node_stat(
size_t *size,
opal_node_stats_t *src, opal_data_type_t type);
443 int opal_dss_print_byte(
char **output,
char *prefix, uint8_t *src, opal_data_type_t type);
445 int opal_dss_print_string(
char **output,
char *prefix,
char *src, opal_data_type_t type);
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);
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);
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);
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);
486 char* opal_dss_buffer_extend(
opal_buffer_t *bptr,
size_t bytes_to_add);
488 bool opal_dss_too_small(
opal_buffer_t *buffer,
size_t bytes_reqd);
492 int opal_dss_store_data_type(
opal_buffer_t *buffer, opal_data_type_t type);
494 int opal_dss_get_data_type(
opal_buffer_t *buffer, opal_data_type_t *type);
dynamic pointer array
Definition: opal_pointer_array.h:45
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_pack_fn_t odti_pack_fn
Pack function.
Definition: dss_internal.h:175
See opal_bitmap.h for an explanation of why there is a split between OPAL and ORTE for this generic c...
opal_dss_release_fn_t odti_release_fn
Release function.
Definition: dss_internal.h:187
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
Definition: dss_types.h:121
Definition: dss_types.h:89
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
bool odti_structured
flag to indicate structured data
Definition: dss_internal.h:189
opal_dss_compare_fn_t odti_compare_fn
compare function
Definition: dss_internal.h:181
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_unpack_fn_t odti_unpack_fn
Unpack function.
Definition: dss_internal.h:177
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
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_copy_fn_t odti_copy_fn
copy function
Definition: dss_internal.h:179
Base object.
Definition: opal_object.h:182
opal_dss_size_fn_t odti_size_fn
size function
Definition: dss_internal.h:183
Definition: dss_types.h:100
uint8_t opal_dss_buffer_type_t
buffer type
Definition: dss_types.h:148
Structure for holding a buffer to be used with the RML or OOB subsystems.
Definition: dss_types.h:159
Definition: dss_types.h:47
opal_dss_print_fn_t odti_print_fn
print function
Definition: dss_internal.h:185
bool opal_dss_initialized
globals
Definition: dss_open_close.c:31
char * odti_name
Debugging string name.
Definition: dss_internal.h:173
#define OBJ_CLASS_DECLARATION(NAME)
Declaration for class descriptor.
Definition: opal_object.h:236
Internal struct used for holding registered dss functions.
Definition: dss_internal.h:168
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