root/opal/dss/dss_internal.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 (c) 2012      Los Alamos National Security, Inc.  All rights reserved.
  14  * Copyright (c) 2014-2018 Intel, Inc. All rights reserved.
  15  * Copyright (c) 2014      Research Organization for Information Science
  16  *                         and Technology (RIST). All rights reserved.
  17  * Copyright (c) 2015 Cisco Systems, Inc.  All rights reserved.
  18  * $COPYRIGHT$
  19  *
  20  * Additional copyrights may follow
  21  *
  22  * $HEADER$
  23  *
  24  */
  25 #ifndef OPAL_DSS_INTERNAL_H_
  26 #define OPAL_DSS_INTERNAL_H_
  27 
  28 #include "opal_config.h"
  29 #include "opal/constants.h"
  30 
  31 #ifdef HAVE_SYS_TIME_H
  32 #include <sys/time.h> /* for struct timeval */
  33 #endif
  34 
  35 #include "opal/class/opal_pointer_array.h"
  36 
  37 #include "opal/dss/dss.h"
  38 #include "opal/util/proc.h"
  39 
  40 #if !defined(STDC_HEADERS) && HAVE_MEMORY_H
  41 #    include <memory.h>
  42 #endif
  43 #include <string.h>
  44 
  45 BEGIN_C_DECLS
  46 
  47 /*
  48  * The default starting chunk size
  49  */
  50 #define OPAL_DSS_DEFAULT_INITIAL_SIZE  2048
  51 /*
  52  * The default threshold size when we switch from doubling the
  53  * buffer size to addatively increasing it
  54  */
  55 #define OPAL_DSS_DEFAULT_THRESHOLD_SIZE 4096
  56 
  57 /*
  58  * Internal type corresponding to size_t.  Do not use this in
  59  * interface calls - use OPAL_SIZE instead.
  60  */
  61 #if SIZEOF_SIZE_T == 1
  62 #define DSS_TYPE_SIZE_T OPAL_UINT8
  63 #elif SIZEOF_SIZE_T == 2
  64 #define DSS_TYPE_SIZE_T OPAL_UINT16
  65 #elif SIZEOF_SIZE_T == 4
  66 #define DSS_TYPE_SIZE_T OPAL_UINT32
  67 #elif SIZEOF_SIZE_T == 8
  68 #define DSS_TYPE_SIZE_T OPAL_UINT64
  69 #else
  70 #error Unsupported size_t size!
  71 #endif
  72 
  73 /*
  74  * Internal type corresponding to bool.  Do not use this in interface
  75  * calls - use OPAL_BOOL instead.
  76  */
  77 #if SIZEOF__BOOL == 1
  78 #define DSS_TYPE_BOOL OPAL_UINT8
  79 #elif SIZEOF__BOOL == 2
  80 #define DSS_TYPE_BOOL OPAL_UINT16
  81 #elif SIZEOF__BOOL == 4
  82 #define DSS_TYPE_BOOL OPAL_UINT32
  83 #elif SIZEOF__BOOL == 8
  84 #define DSS_TYPE_BOOL OPAL_UINT64
  85 #else
  86 #error Unsupported bool size!
  87 #endif
  88 
  89 /*
  90  * Internal type corresponding to int and unsigned int.  Do not use
  91  * this in interface calls - use OPAL_INT / OPAL_UINT instead.
  92  */
  93 #if SIZEOF_INT == 1
  94 #define DSS_TYPE_INT OPAL_INT8
  95 #define DSS_TYPE_UINT OPAL_UINT8
  96 #elif SIZEOF_INT == 2
  97 #define DSS_TYPE_INT OPAL_INT16
  98 #define DSS_TYPE_UINT OPAL_UINT16
  99 #elif SIZEOF_INT == 4
 100 #define DSS_TYPE_INT OPAL_INT32
 101 #define DSS_TYPE_UINT OPAL_UINT32
 102 #elif SIZEOF_INT == 8
 103 #define DSS_TYPE_INT OPAL_INT64
 104 #define DSS_TYPE_UINT OPAL_UINT64
 105 #else
 106 #error Unsupported int size!
 107 #endif
 108 
 109 /*
 110  * Internal type corresponding to pid_t.  Do not use this in interface
 111  * calls - use OPAL_PID instead.
 112  */
 113 #if SIZEOF_PID_T == 1
 114 #define DSS_TYPE_PID_T OPAL_UINT8
 115 #elif SIZEOF_PID_T == 2
 116 #define DSS_TYPE_PID_T OPAL_UINT16
 117 #elif SIZEOF_PID_T == 4
 118 #define DSS_TYPE_PID_T OPAL_UINT32
 119 #elif SIZEOF_PID_T == 8
 120 #define DSS_TYPE_PID_T OPAL_UINT64
 121 #else
 122 #error Unsupported pid_t size!
 123 #endif
 124 
 125 /* Unpack generic size macros */
 126 #define UNPACK_SIZE_MISMATCH(unpack_type, remote_type, ret)                 \
 127     do {                                                                    \
 128         switch(remote_type) {                                               \
 129         case OPAL_UINT8:                                                    \
 130             UNPACK_SIZE_MISMATCH_FOUND(unpack_type, uint8_t, remote_type);  \
 131             break;                                                          \
 132         case OPAL_INT8:                                                     \
 133             UNPACK_SIZE_MISMATCH_FOUND(unpack_type, int8_t, remote_type);   \
 134             break;                                                          \
 135         case OPAL_UINT16:                                                   \
 136             UNPACK_SIZE_MISMATCH_FOUND(unpack_type, uint16_t, remote_type); \
 137             break;                                                          \
 138         case OPAL_INT16:                                                    \
 139             UNPACK_SIZE_MISMATCH_FOUND(unpack_type, int16_t, remote_type);  \
 140             break;                                                          \
 141         case OPAL_UINT32:                                                   \
 142             UNPACK_SIZE_MISMATCH_FOUND(unpack_type, uint32_t, remote_type); \
 143             break;                                                          \
 144         case OPAL_INT32:                                                    \
 145             UNPACK_SIZE_MISMATCH_FOUND(unpack_type, int32_t, remote_type);  \
 146             break;                                                          \
 147         case OPAL_UINT64:                                                   \
 148             UNPACK_SIZE_MISMATCH_FOUND(unpack_type, uint64_t, remote_type); \
 149             break;                                                          \
 150         case OPAL_INT64:                                                    \
 151             UNPACK_SIZE_MISMATCH_FOUND(unpack_type, int64_t, remote_type);  \
 152             break;                                                          \
 153         default:                                                            \
 154             ret = OPAL_ERR_NOT_FOUND;                                       \
 155         }                                                                   \
 156     } while (0)
 157 
 158 /* NOTE: do not need to deal with endianness here, as the unpacking of
 159    the underling sender-side type will do that for us.  Repeat: the
 160    data in tmpbuf[] is already in host byte order. */
 161 #define UNPACK_SIZE_MISMATCH_FOUND(unpack_type, tmptype, tmpdsstype)        \
 162     do {                                                                    \
 163         int32_t i;                                                          \
 164         tmptype *tmpbuf = (tmptype*)malloc(sizeof(tmptype) * (*num_vals));  \
 165         ret = opal_dss_unpack_buffer(buffer, tmpbuf, num_vals, tmpdsstype); \
 166         for (i = 0 ; i < *num_vals ; ++i) {                                 \
 167             ((unpack_type*) dest)[i] = (unpack_type)(tmpbuf[i]);            \
 168         }                                                                   \
 169         free(tmpbuf);                                                       \
 170     } while (0)
 171 
 172 
 173 /**
 174  * Internal struct used for holding registered dss functions
 175  */
 176 struct opal_dss_type_info_t {
 177     opal_object_t super;
 178     /* type identifier */
 179     opal_data_type_t odti_type;
 180     /** Debugging string name */
 181     char *odti_name;
 182     /** Pack function */
 183     opal_dss_pack_fn_t odti_pack_fn;
 184     /** Unpack function */
 185     opal_dss_unpack_fn_t odti_unpack_fn;
 186     /** copy function */
 187     opal_dss_copy_fn_t odti_copy_fn;
 188     /** compare function */
 189     opal_dss_compare_fn_t odti_compare_fn;
 190     /** print function */
 191     opal_dss_print_fn_t odti_print_fn;
 192     /** flag to indicate structured data */
 193     bool odti_structured;
 194 };
 195 /**
 196  * Convenience typedef
 197  */
 198 typedef struct opal_dss_type_info_t opal_dss_type_info_t;
 199 OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_dss_type_info_t);
 200 
 201 /*
 202  * globals needed within dss
 203  */
 204 extern bool opal_dss_initialized;
 205 extern bool opal_dss_debug;
 206 extern int opal_dss_verbose;
 207 extern int opal_dss_initial_size;
 208 extern int opal_dss_threshold_size;
 209 extern opal_pointer_array_t opal_dss_types;
 210 extern opal_data_type_t opal_dss_num_reg_types;
 211 
 212 /*
 213  * Implementations of API functions
 214  */
 215 
 216 int opal_dss_pack(opal_buffer_t *buffer, const void *src,
 217                   int32_t num_vals,
 218                   opal_data_type_t type);
 219 int opal_dss_unpack(opal_buffer_t *buffer, void *dest,
 220                     int32_t *max_num_vals,
 221                     opal_data_type_t type);
 222 
 223 int opal_dss_copy(void **dest, void *src, opal_data_type_t type);
 224 
 225 int opal_dss_compare(const void *value1, const void *value2,
 226                      opal_data_type_t type);
 227 
 228 int opal_dss_print(char **output, char *prefix, void *src, opal_data_type_t type);
 229 
 230 int opal_dss_dump(int output_stream, void *src, opal_data_type_t type);
 231 
 232 int opal_dss_peek(opal_buffer_t *buffer, opal_data_type_t *type,
 233                   int32_t *number);
 234 
 235 int opal_dss_peek_type(opal_buffer_t *buffer, opal_data_type_t *type);
 236 
 237 int opal_dss_unload(opal_buffer_t *buffer, void **payload,
 238                     int32_t *bytes_used);
 239 int opal_dss_load(opal_buffer_t *buffer, void *payload, int32_t bytes_used);
 240 
 241 int opal_dss_copy_payload(opal_buffer_t *dest, opal_buffer_t *src);
 242 
 243 int opal_dss_register(opal_dss_pack_fn_t pack_fn,
 244                       opal_dss_unpack_fn_t unpack_fn,
 245                       opal_dss_copy_fn_t copy_fn,
 246                       opal_dss_compare_fn_t compare_fn,
 247                       opal_dss_print_fn_t print_fn,
 248                       bool structured,
 249                       const char *name, opal_data_type_t *type);
 250 
 251 bool opal_dss_structured(opal_data_type_t type);
 252 
 253 char *opal_dss_lookup_data_type(opal_data_type_t type);
 254 
 255 void opal_dss_dump_data_types(int output);
 256 
 257 /*
 258  * Specialized functions
 259  */
 260 OPAL_DECLSPEC    int opal_dss_pack_buffer(opal_buffer_t *buffer, const void *src,
 261                                           int32_t num_vals, opal_data_type_t type);
 262 
 263 OPAL_DECLSPEC    int opal_dss_unpack_buffer(opal_buffer_t *buffer, void *dst,
 264                                             int32_t *num_vals, opal_data_type_t type);
 265 
 266 /*
 267  * Internal pack functions
 268  */
 269 
 270 int opal_dss_pack_null(opal_buffer_t *buffer, const void *src,
 271                        int32_t num_vals, opal_data_type_t type);
 272 int opal_dss_pack_byte(opal_buffer_t *buffer, const void *src,
 273                        int32_t num_vals, opal_data_type_t type);
 274 
 275 int opal_dss_pack_bool(opal_buffer_t *buffer, const void *src,
 276                        int32_t num_vals, opal_data_type_t type);
 277 
 278 int opal_dss_pack_int(opal_buffer_t *buffer, const void *src,
 279                       int32_t num_vals, opal_data_type_t type);
 280 int opal_dss_pack_int16(opal_buffer_t *buffer, const void *src,
 281                         int32_t num_vals, opal_data_type_t type);
 282 int opal_dss_pack_int32(opal_buffer_t *buffer, const void *src,
 283                         int32_t num_vals, opal_data_type_t type);
 284 int opal_dss_pack_int64(opal_buffer_t *buffer, const void *src,
 285                         int32_t num_vals, opal_data_type_t type);
 286 
 287 int opal_dss_pack_sizet(opal_buffer_t *buffer, const void *src,
 288                         int32_t num_vals, opal_data_type_t type);
 289 
 290 int opal_dss_pack_pid(opal_buffer_t *buffer, const void *src,
 291                       int32_t num_vals, opal_data_type_t type);
 292 
 293 int opal_dss_pack_string(opal_buffer_t *buffer, const void *src,
 294                          int32_t num_vals, opal_data_type_t type);
 295 
 296 int opal_dss_pack_data_type(opal_buffer_t *buffer, const void *src,
 297                             int32_t num_vals, opal_data_type_t type);
 298 
 299 int opal_dss_pack_byte_object(opal_buffer_t *buffer, const void *src,
 300                               int32_t num_vals, opal_data_type_t type);
 301 
 302 int opal_dss_pack_pstat(opal_buffer_t *buffer, const void *src,
 303                         int32_t num_vals, opal_data_type_t type);
 304 
 305 int opal_dss_pack_node_stat(opal_buffer_t *buffer, const void *src,
 306                             int32_t num_vals, opal_data_type_t type);
 307 
 308 int opal_dss_pack_value(opal_buffer_t *buffer, const void *src,
 309                         int32_t num_vals, opal_data_type_t type);
 310 
 311 int opal_dss_pack_buffer_contents(opal_buffer_t *buffer, const void *src,
 312                                   int32_t num_vals, opal_data_type_t type);
 313 
 314 int opal_dss_pack_float(opal_buffer_t *buffer, const void *src,
 315                         int32_t num_vals, opal_data_type_t type);
 316 
 317 int opal_dss_pack_double(opal_buffer_t *buffer, const void *src,
 318                          int32_t num_vals, opal_data_type_t type);
 319 
 320 int opal_dss_pack_timeval(opal_buffer_t *buffer, const void *src,
 321                           int32_t num_vals, opal_data_type_t type);
 322 
 323 int opal_dss_pack_time(opal_buffer_t *buffer, const void *src,
 324                        int32_t num_vals, opal_data_type_t type);
 325 
 326 int opal_dss_pack_name(opal_buffer_t *buffer, const void *src,
 327                       int32_t num_vals, opal_data_type_t type);
 328 
 329 int opal_dss_pack_jobid(opal_buffer_t *buffer, const void *src,
 330                        int32_t num_vals, opal_data_type_t type);
 331 
 332 int opal_dss_pack_vpid(opal_buffer_t *buffer, const void *src,
 333                       int32_t num_vals, opal_data_type_t type);
 334 
 335 int opal_dss_pack_status(opal_buffer_t *buffer, const void *src,
 336                          int32_t num_vals, opal_data_type_t type);
 337 int opal_dss_pack_envar(opal_buffer_t *buffer, const void *src,
 338                         int32_t num_vals, opal_data_type_t type);
 339 
 340 /*
 341  * Internal unpack functions
 342  */
 343 
 344 int opal_dss_unpack_null(opal_buffer_t *buffer, void *dest,
 345                          int32_t *num_vals, opal_data_type_t type);
 346 int opal_dss_unpack_byte(opal_buffer_t *buffer, void *dest,
 347                          int32_t *num_vals, opal_data_type_t type);
 348 
 349 int opal_dss_unpack_bool(opal_buffer_t *buffer, void *dest,
 350                          int32_t *num_vals, opal_data_type_t type);
 351 
 352 int opal_dss_unpack_int(opal_buffer_t *buffer, void *dest,
 353                         int32_t *num_vals, opal_data_type_t type);
 354 int opal_dss_unpack_int16(opal_buffer_t *buffer, void *dest,
 355                           int32_t *num_vals, opal_data_type_t type);
 356 int opal_dss_unpack_int32(opal_buffer_t *buffer, void *dest,
 357                           int32_t *num_vals, opal_data_type_t type);
 358 int opal_dss_unpack_int64(opal_buffer_t *buffer, void *dest,
 359                           int32_t *num_vals, opal_data_type_t type);
 360 
 361 int opal_dss_unpack_sizet(opal_buffer_t *buffer, void *dest,
 362                           int32_t *num_vals, opal_data_type_t type);
 363 
 364 int opal_dss_unpack_pid(opal_buffer_t *buffer, void *dest,
 365                         int32_t *num_vals, opal_data_type_t type);
 366 
 367 int opal_dss_unpack_string(opal_buffer_t *buffer, void *dest,
 368                            int32_t *num_vals, opal_data_type_t type);
 369 
 370 int opal_dss_unpack_data_type(opal_buffer_t *buffer, void *dest,
 371                               int32_t *num_vals, opal_data_type_t type);
 372 
 373 int opal_dss_unpack_byte_object(opal_buffer_t *buffer, void *dest,
 374                                 int32_t *num_vals, opal_data_type_t type);
 375 
 376 int opal_dss_unpack_pstat(opal_buffer_t *buffer, void *dest,
 377                           int32_t *num_vals, opal_data_type_t type);
 378 
 379 int opal_dss_unpack_node_stat(opal_buffer_t *buffer, void *dest,
 380                               int32_t *num_vals, opal_data_type_t type);
 381 
 382 int opal_dss_unpack_value(opal_buffer_t *buffer, void *dest,
 383                           int32_t *num_vals, opal_data_type_t type);
 384 
 385 int opal_dss_unpack_buffer_contents(opal_buffer_t *buffer, void *dest,
 386                                     int32_t *num_vals, opal_data_type_t type);
 387 
 388 int opal_dss_unpack_float(opal_buffer_t *buffer, void *dest,
 389                           int32_t *num_vals, opal_data_type_t type);
 390 
 391 int opal_dss_unpack_double(opal_buffer_t *buffer, void *dest,
 392                            int32_t *num_vals, opal_data_type_t type);
 393 
 394 int opal_dss_unpack_timeval(opal_buffer_t *buffer, void *dest,
 395                             int32_t *num_vals, opal_data_type_t type);
 396 
 397 int opal_dss_unpack_time(opal_buffer_t *buffer, void *dest,
 398                          int32_t *num_vals, opal_data_type_t type);
 399 
 400 int opal_dss_unpack_name(opal_buffer_t *buffer, void *dest,
 401                         int32_t *num_vals, opal_data_type_t type);
 402 
 403 int opal_dss_unpack_jobid(opal_buffer_t *buffer, void *dest,
 404                          int32_t *num_vals, opal_data_type_t type);
 405 
 406 int opal_dss_unpack_vpid(opal_buffer_t *buffer, void *dest,
 407                         int32_t *num_vals, opal_data_type_t type);
 408 
 409 int opal_dss_unpack_status(opal_buffer_t *buffer, void *dest,
 410                            int32_t *num_vals, opal_data_type_t type);
 411 
 412 int opal_dss_unpack_envar(opal_buffer_t *buffer, void *dest,
 413                           int32_t *num_vals, opal_data_type_t type);
 414 
 415 /*
 416  * Internal copy functions
 417  */
 418 
 419 int opal_dss_std_copy(void **dest, void *src, opal_data_type_t type);
 420 
 421 int opal_dss_copy_null(char **dest, char *src, opal_data_type_t type);
 422 
 423 int opal_dss_copy_string(char **dest, char *src, opal_data_type_t type);
 424 
 425 int opal_dss_copy_byte_object(opal_byte_object_t **dest, opal_byte_object_t *src,
 426                               opal_data_type_t type);
 427 
 428 int opal_dss_copy_pstat(opal_pstats_t **dest, opal_pstats_t *src,
 429                         opal_data_type_t type);
 430 
 431 int opal_dss_copy_node_stat(opal_node_stats_t **dest, opal_node_stats_t *src,
 432                             opal_data_type_t type);
 433 
 434 int opal_dss_copy_value(opal_value_t **dest, opal_value_t *src,
 435                         opal_data_type_t type);
 436 
 437 int opal_dss_copy_buffer_contents(opal_buffer_t **dest, opal_buffer_t *src,
 438                                   opal_data_type_t type);
 439 
 440 int opal_dss_copy_name(opal_process_name_t **dest, opal_process_name_t *src, opal_data_type_t type);
 441 
 442 int opal_dss_copy_jobid(opal_jobid_t **dest, opal_jobid_t *src, opal_data_type_t type);
 443 
 444 int opal_dss_copy_vpid(opal_vpid_t **dest, opal_vpid_t *src, opal_data_type_t type);
 445 
 446 int opal_dss_copy_envar(opal_envar_t **dest, opal_envar_t *src, opal_data_type_t type);
 447 
 448 
 449 /*
 450  * Internal compare functions
 451  */
 452 
 453 int opal_dss_compare_bool(bool *value1, bool *value2, opal_data_type_t type);
 454 
 455 int opal_dss_compare_int(int *value1, int *value2, opal_data_type_t type);
 456 int opal_dss_compare_uint(unsigned int *value1, unsigned int *value2, opal_data_type_t type);
 457 
 458 int opal_dss_compare_size(size_t *value1, size_t *value2, opal_data_type_t type);
 459 
 460 int opal_dss_compare_pid(pid_t *value1, pid_t *value2, opal_data_type_t type);
 461 
 462 int opal_dss_compare_byte(char *value1, char *value2, opal_data_type_t type);
 463 int opal_dss_compare_char(char *value1, char *value2, opal_data_type_t type);
 464 int opal_dss_compare_int8(int8_t *value1, int8_t *value2, opal_data_type_t type);
 465 int opal_dss_compare_uint8(uint8_t *value1, uint8_t *value2, opal_data_type_t type);
 466 
 467 int opal_dss_compare_int16(int16_t *value1, int16_t *value2, opal_data_type_t type);
 468 int opal_dss_compare_uint16(uint16_t *value1, uint16_t *value2, opal_data_type_t type);
 469 
 470 int opal_dss_compare_int32(int32_t *value1, int32_t *value2, opal_data_type_t type);
 471 int opal_dss_compare_uint32(uint32_t *value1, uint32_t *value2, opal_data_type_t type);
 472 
 473 int opal_dss_compare_int64(int64_t *value1, int64_t *value2, opal_data_type_t type);
 474 int opal_dss_compare_uint64(uint64_t *value1, uint64_t *value2, opal_data_type_t type);
 475 
 476 int opal_dss_compare_null(char *value1, char *value2, opal_data_type_t type);
 477 
 478 int opal_dss_compare_string(char *value1, char *value2, opal_data_type_t type);
 479 
 480 int opal_dss_compare_dt(opal_data_type_t *value1, opal_data_type_t *value2, opal_data_type_t type);
 481 
 482 int opal_dss_compare_byte_object(opal_byte_object_t *value1, opal_byte_object_t *value2, opal_data_type_t type);
 483 
 484 int opal_dss_compare_pstat(opal_pstats_t *value1, opal_pstats_t *value2, opal_data_type_t type);
 485 
 486 int opal_dss_compare_node_stat(opal_node_stats_t *value1, opal_node_stats_t *value2, opal_data_type_t type);
 487 
 488 int opal_dss_compare_value(opal_value_t *value1, opal_value_t *value2, opal_data_type_t type);
 489 
 490 int opal_dss_compare_buffer_contents(opal_buffer_t *value1, opal_buffer_t *value2, opal_data_type_t type);
 491 
 492 int opal_dss_compare_float(float *value1, float *value2, opal_data_type_t type);
 493 
 494 int opal_dss_compare_double(double *value1, double *value2, opal_data_type_t type);
 495 
 496 int opal_dss_compare_timeval(struct timeval *value1, struct timeval *value2, opal_data_type_t type);
 497 
 498 int opal_dss_compare_time(time_t *value1, time_t *value2, opal_data_type_t type);
 499 
 500 int opal_dss_compare_name(opal_process_name_t *value1,
 501                           opal_process_name_t *value2,
 502                           opal_data_type_t type);
 503 
 504 int opal_dss_compare_vpid(opal_vpid_t *value1,
 505                           opal_vpid_t *value2,
 506                           opal_data_type_t type);
 507 
 508 int opal_dss_compare_jobid(opal_jobid_t *value1,
 509                            opal_jobid_t *value2,
 510                            opal_data_type_t type);
 511 
 512 int opal_dss_compare_status(int *value1, int *value2, opal_data_type_t type);
 513 int opal_dss_compare_envar(opal_envar_t *value1, opal_envar_t *value2, opal_data_type_t type);
 514 
 515 /*
 516  * Internal print functions
 517  */
 518 int opal_dss_print_byte(char **output, char *prefix, uint8_t *src, opal_data_type_t type);
 519 
 520 int opal_dss_print_string(char **output, char *prefix, char *src, opal_data_type_t type);
 521 
 522 int opal_dss_print_size(char **output, char *prefix, size_t *src, opal_data_type_t type);
 523 int opal_dss_print_pid(char **output, char *prefix, pid_t *src, opal_data_type_t type);
 524 int opal_dss_print_bool(char **output, char *prefix, bool *src, opal_data_type_t type);
 525 int opal_dss_print_int(char **output, char *prefix, int *src, opal_data_type_t type);
 526 int opal_dss_print_uint(char **output, char *prefix, int *src, opal_data_type_t type);
 527 int opal_dss_print_uint8(char **output, char *prefix, uint8_t *src, opal_data_type_t type);
 528 int opal_dss_print_uint16(char **output, char *prefix, uint16_t *src, opal_data_type_t type);
 529 int opal_dss_print_uint32(char **output, char *prefix, uint32_t *src, opal_data_type_t type);
 530 int opal_dss_print_int8(char **output, char *prefix, int8_t *src, opal_data_type_t type);
 531 int opal_dss_print_int16(char **output, char *prefix, int16_t *src, opal_data_type_t type);
 532 int opal_dss_print_int32(char **output, char *prefix, int32_t *src, opal_data_type_t type);
 533 #ifdef HAVE_INT64_T
 534 int opal_dss_print_uint64(char **output, char *prefix, uint64_t *src, opal_data_type_t type);
 535 int opal_dss_print_int64(char **output, char *prefix, int64_t *src, opal_data_type_t type);
 536 #else
 537 int opal_dss_print_uint64(char **output, char *prefix, void *src, opal_data_type_t type);
 538 int opal_dss_print_int64(char **output, char *prefix, void *src, opal_data_type_t type);
 539 #endif
 540 int opal_dss_print_null(char **output, char *prefix, void *src, opal_data_type_t type);
 541 int opal_dss_print_data_type(char **output, char *prefix, opal_data_type_t *src, opal_data_type_t type);
 542 int opal_dss_print_byte_object(char **output, char *prefix, opal_byte_object_t *src, opal_data_type_t type);
 543 int opal_dss_print_pstat(char **output, char *prefix, opal_pstats_t *src, opal_data_type_t type);
 544 int opal_dss_print_node_stat(char **output, char *prefix, opal_node_stats_t *src, opal_data_type_t type);
 545 int opal_dss_print_value(char **output, char *prefix, opal_value_t *src, opal_data_type_t type);
 546 int opal_dss_print_buffer_contents(char **output, char *prefix, opal_buffer_t *src, opal_data_type_t type);
 547 int opal_dss_print_float(char **output, char *prefix, float *src, opal_data_type_t type);
 548 int opal_dss_print_double(char **output, char *prefix, double *src, opal_data_type_t type);
 549 int opal_dss_print_timeval(char **output, char *prefix, struct timeval *src, opal_data_type_t type);
 550 int opal_dss_print_time(char **output, char *prefix, time_t *src, opal_data_type_t type);
 551 int opal_dss_print_name(char **output, char *prefix, opal_process_name_t *name, opal_data_type_t type);
 552 int opal_dss_print_jobid(char **output, char *prefix, opal_process_name_t *src, opal_data_type_t type);
 553 int opal_dss_print_vpid(char **output, char *prefix, opal_process_name_t *src, opal_data_type_t type);
 554 int opal_dss_print_status(char **output, char *prefix, int *src, opal_data_type_t type);
 555 int opal_dss_print_envar(char **output, char *prefix,
 556                          opal_envar_t *src, opal_data_type_t type);
 557 
 558 
 559 /*
 560  * Internal helper functions
 561  */
 562 
 563 char* opal_dss_buffer_extend(opal_buffer_t *bptr, size_t bytes_to_add);
 564 
 565 bool opal_dss_too_small(opal_buffer_t *buffer, size_t bytes_reqd);
 566 
 567 opal_dss_type_info_t* opal_dss_find_type(opal_data_type_t type);
 568 
 569 int opal_dss_store_data_type(opal_buffer_t *buffer, opal_data_type_t type);
 570 
 571 int opal_dss_get_data_type(opal_buffer_t *buffer, opal_data_type_t *type);
 572 
 573 END_C_DECLS
 574 
 575 #endif

/* [<][>][^][v][top][bottom][index][help] */