root/opal/dss/dss_open_close.c

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

DEFINITIONS

This source file includes following definitions.
  1. opal_value_construct
  2. opal_value_destruct
  3. opal_buffer_construct
  4. opal_buffer_destruct
  5. opal_dss_type_info_construct
  6. opal_dss_type_info_destruct
  7. opal_pstat_construct
  8. diskstat_cons
  9. diskstat_dest
  10. netstat_cons
  11. netstat_dest
  12. opal_node_stats_construct
  13. opal_node_stats_destruct
  14. opal_envar_construct
  15. opal_envar_destruct
  16. opal_dss_register_vars
  17. opal_dss_close
  18. opal_dss_open
  19. opal_dss_structured

   1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
   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-2009 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-2013 Los Alamos National Security, Inc.  All rights reserved.
  14  * Copyright (c) 2014-2018 Intel, Inc. All rights reserved.
  15  * Copyright (c) 2015      Research Organization for Information Science
  16  *                         and Technology (RIST). All rights reserved.
  17  * Copyright (c) 2017      IBM Corporation. All rights reserved.
  18  * Copyright (c) 2018      Triad National Security, LLC. All rights
  19  *                         reserved.
  20  * $COPYRIGHT$
  21  *
  22  * Additional copyrights may follow
  23  *
  24  * $HEADER$
  25  */
  26 /** @file:
  27  *
  28  */
  29 #include "opal_config.h"
  30 
  31 #include "opal/runtime/opal.h"
  32 #include "opal/mca/base/mca_base_var.h"
  33 
  34 #include "opal/dss/dss_internal.h"
  35 
  36 /**
  37  * globals
  38  */
  39 bool opal_dss_initialized = false;
  40 int opal_dss_verbose = -1;  /* by default disabled */
  41 int opal_dss_initial_size = -1;
  42 int opal_dss_threshold_size = -1;
  43 opal_pointer_array_t opal_dss_types = {{0}};
  44 opal_data_type_t opal_dss_num_reg_types = {0};
  45 static opal_dss_buffer_type_t default_buf_type = OPAL_DSS_BUFFER_NON_DESC;
  46 
  47 /* variable group id */
  48 static int opal_dss_group_id = -1;
  49 
  50 static mca_base_var_enum_value_t buffer_type_values[] = {
  51     {OPAL_DSS_BUFFER_NON_DESC, "non-described"},
  52     {OPAL_DSS_BUFFER_FULLY_DESC, "described"},
  53     {0, NULL}
  54 };
  55 
  56 opal_dss_t opal_dss = {
  57     opal_dss_pack,
  58     opal_dss_unpack,
  59     opal_dss_copy,
  60     opal_dss_compare,
  61     opal_dss_print,
  62     opal_dss_structured,
  63     opal_dss_peek,
  64     opal_dss_unload,
  65     opal_dss_load,
  66     opal_dss_copy_payload,
  67     opal_dss_register,
  68     opal_dss_lookup_data_type,
  69     opal_dss_dump_data_types,
  70     opal_dss_dump
  71 };
  72 
  73 /**
  74  * Object constructors, destructors, and instantiations
  75  */
  76 /** Value **/
  77 static void opal_value_construct(opal_value_t* ptr)
  78 {
  79     ptr->key = NULL;
  80     ptr->type = OPAL_UNDEF;
  81     memset(&ptr->data, 0, sizeof(ptr->data));
  82 }
  83 static void opal_value_destruct(opal_value_t* ptr)
  84 {
  85     if (NULL != ptr->key) {
  86         free(ptr->key);
  87     }
  88     if (OPAL_STRING == ptr->type &&
  89         NULL != ptr->data.string) {
  90         free(ptr->data.string);
  91     }
  92     if (OPAL_BYTE_OBJECT == ptr->type &&
  93         NULL != ptr->data.bo.bytes) {
  94         free(ptr->data.bo.bytes);
  95     }
  96 }
  97 OBJ_CLASS_INSTANCE(opal_value_t,
  98                    opal_list_item_t,
  99                    opal_value_construct,
 100                    opal_value_destruct);
 101 
 102 
 103 static void opal_buffer_construct (opal_buffer_t* buffer)
 104 {
 105     /** set the default buffer type */
 106     buffer->type = default_buf_type;
 107 
 108     /* Make everything NULL to begin with */
 109 
 110     buffer->base_ptr = buffer->pack_ptr = buffer->unpack_ptr = NULL;
 111     buffer->bytes_allocated = buffer->bytes_used = 0;
 112 }
 113 
 114 static void opal_buffer_destruct (opal_buffer_t* buffer)
 115 {
 116     if (NULL != buffer->base_ptr) {
 117         free (buffer->base_ptr);
 118     }
 119 }
 120 
 121 OBJ_CLASS_INSTANCE(opal_buffer_t,
 122                    opal_object_t,
 123                    opal_buffer_construct,
 124                    opal_buffer_destruct);
 125 
 126 
 127 static void opal_dss_type_info_construct(opal_dss_type_info_t *obj)
 128 {
 129     obj->odti_name = NULL;
 130     obj->odti_pack_fn = NULL;
 131     obj->odti_unpack_fn = NULL;
 132     obj->odti_copy_fn = NULL;
 133     obj->odti_compare_fn = NULL;
 134     obj->odti_print_fn = NULL;
 135     obj->odti_structured = false;
 136 }
 137 
 138 static void opal_dss_type_info_destruct(opal_dss_type_info_t *obj)
 139 {
 140     if (NULL != obj->odti_name) {
 141         free(obj->odti_name);
 142     }
 143 }
 144 
 145 OBJ_CLASS_INSTANCE(opal_dss_type_info_t, opal_object_t,
 146                    opal_dss_type_info_construct,
 147                    opal_dss_type_info_destruct);
 148 
 149 
 150 static void opal_pstat_construct(opal_pstats_t *obj)
 151 {
 152     memset(obj->node, 0, sizeof(obj->node));
 153     memset(obj->cmd, 0, sizeof(obj->cmd));
 154     obj->rank = 0;
 155     obj->pid = 0;
 156     obj->state[0] = 'U';
 157     obj->state[1] = '\0';
 158     obj->percent_cpu = 0.0;
 159     obj->time.tv_sec = 0;
 160     obj->time.tv_usec = 0;
 161     obj->priority = -1;
 162     obj->num_threads = -1;
 163     obj->pss = 0.0;
 164     obj->vsize = 0.0;
 165     obj->rss = 0.0;
 166     obj->peak_vsize = 0.0;
 167     obj->processor = -1;
 168     obj->sample_time.tv_sec = 0;
 169     obj->sample_time.tv_usec = 0;
 170 }
 171 OBJ_CLASS_INSTANCE(opal_pstats_t, opal_list_item_t,
 172                    opal_pstat_construct,
 173                    NULL);
 174 
 175 static void diskstat_cons(opal_diskstats_t *ptr)
 176 {
 177     ptr->disk = NULL;
 178 }
 179 static void diskstat_dest(opal_diskstats_t *ptr)
 180 {
 181     if (NULL != ptr->disk) {
 182         free(ptr->disk);
 183     }
 184 }
 185 OBJ_CLASS_INSTANCE(opal_diskstats_t,
 186                    opal_list_item_t,
 187                    diskstat_cons, diskstat_dest);
 188 
 189 static void netstat_cons(opal_netstats_t *ptr)
 190 {
 191     ptr->net_interface = NULL;
 192 }
 193 static void netstat_dest(opal_netstats_t *ptr)
 194 {
 195     if (NULL != ptr->net_interface) {
 196         free(ptr->net_interface);
 197     }
 198 }
 199 OBJ_CLASS_INSTANCE(opal_netstats_t,
 200                    opal_list_item_t,
 201                    netstat_cons, netstat_dest);
 202 
 203 static void opal_node_stats_construct(opal_node_stats_t *obj)
 204 {
 205     obj->la = 0.0;
 206     obj->la5 = 0.0;
 207     obj->la15 = 0.0;
 208     obj->total_mem = 0;
 209     obj->free_mem = 0.0;
 210     obj->buffers = 0.0;
 211     obj->cached = 0.0;
 212     obj->swap_cached = 0.0;
 213     obj->swap_total = 0.0;
 214     obj->swap_free = 0.0;
 215     obj->mapped = 0.0;
 216     obj->sample_time.tv_sec = 0;
 217     obj->sample_time.tv_usec = 0;
 218     OBJ_CONSTRUCT(&obj->diskstats, opal_list_t);
 219     OBJ_CONSTRUCT(&obj->netstats, opal_list_t);
 220 }
 221 static void opal_node_stats_destruct(opal_node_stats_t *obj)
 222 {
 223     opal_list_item_t *item;
 224     while (NULL != (item = opal_list_remove_first(&obj->diskstats))) {
 225         OBJ_RELEASE(item);
 226     }
 227     OBJ_DESTRUCT(&obj->diskstats);
 228     while (NULL != (item = opal_list_remove_first(&obj->netstats))) {
 229         OBJ_RELEASE(item);
 230     }
 231     OBJ_DESTRUCT(&obj->netstats);
 232 }
 233 OBJ_CLASS_INSTANCE(opal_node_stats_t, opal_object_t,
 234                    opal_node_stats_construct,
 235                    opal_node_stats_destruct);
 236 
 237 
 238 static void opal_envar_construct(opal_envar_t *obj)
 239 {
 240     obj->envar = NULL;
 241     obj->value = NULL;
 242     obj->separator = '\0';
 243 }
 244 static void opal_envar_destruct(opal_envar_t *obj)
 245 {
 246     if (NULL != obj->envar) {
 247         free(obj->envar);
 248     }
 249     if (NULL != obj->value) {
 250         free(obj->value);
 251     }
 252 }
 253 OBJ_CLASS_INSTANCE(opal_envar_t,
 254                    opal_list_item_t,
 255                    opal_envar_construct,
 256                    opal_envar_destruct);
 257 
 258 int opal_dss_register_vars (void)
 259 {
 260     mca_base_var_enum_t *new_enum;
 261     char *enviro_val;
 262     int ret;
 263 
 264     enviro_val = getenv("OPAL_dss_debug");
 265     if (NULL != enviro_val) {  /* debug requested */
 266         opal_dss_verbose = 0;
 267     }
 268 
 269     opal_dss_group_id = mca_base_var_group_register ("opal", "dss", NULL, NULL);
 270 
 271     /** set the default buffer type. If we are in debug mode, then we default
 272      * to fully described buffers. Otherwise, we default to non-described for brevity
 273      * and performance
 274      */
 275 #if OPAL_ENABLE_DEBUG
 276     default_buf_type = OPAL_DSS_BUFFER_FULLY_DESC;
 277 #else
 278     default_buf_type = OPAL_DSS_BUFFER_NON_DESC;
 279 #endif
 280 
 281     ret = mca_base_var_enum_create ("buffer types", buffer_type_values, &new_enum);
 282     if (OPAL_SUCCESS != ret) {
 283         fprintf (stderr, "Fail A\n");
 284         return ret;
 285     }
 286 
 287     ret = mca_base_var_register ("opal", "dss", NULL, "buffer_type",
 288                                  "Set the default mode for OpenRTE buffers (0=non-described, 1=described)",
 289                                  MCA_BASE_VAR_TYPE_INT, new_enum, 0, MCA_BASE_VAR_FLAG_SETTABLE,
 290                                  OPAL_INFO_LVL_8, MCA_BASE_VAR_SCOPE_ALL_EQ,
 291                                  &default_buf_type);
 292     OBJ_RELEASE(new_enum);
 293     if (0 > ret) {
 294         return ret;
 295     }
 296 
 297     /* setup the initial size of the buffer. */
 298     opal_dss_initial_size = OPAL_DSS_DEFAULT_INITIAL_SIZE;
 299     ret = mca_base_var_register ("opal", "dss", NULL, "buffer_initial_size", NULL,
 300                                  MCA_BASE_VAR_TYPE_INT, NULL, 0, MCA_BASE_VAR_FLAG_SETTABLE,
 301                                  OPAL_INFO_LVL_8, MCA_BASE_VAR_SCOPE_ALL_EQ,
 302                                  &opal_dss_initial_size);
 303     if (0 > ret) {
 304         return ret;
 305     }
 306 
 307     /* the threshold as to where to stop doubling the size of the buffer
 308      * allocated memory and start doing additive increases */
 309     opal_dss_threshold_size = OPAL_DSS_DEFAULT_THRESHOLD_SIZE;
 310     ret = mca_base_var_register ("opal", "dss", NULL, "buffer_threshold_size", NULL,
 311                                  MCA_BASE_VAR_TYPE_INT, NULL, 0, MCA_BASE_VAR_FLAG_SETTABLE,
 312                                  OPAL_INFO_LVL_8, MCA_BASE_VAR_SCOPE_ALL_EQ,
 313                                  &opal_dss_threshold_size);
 314 
 315     return (0 > ret) ? ret : OPAL_SUCCESS;
 316 }
 317 
 318 static void opal_dss_close (void)
 319 {
 320     opal_dss_initialized = false;
 321 
 322     for (int i = 0 ; i < opal_pointer_array_get_size(&opal_dss_types) ; ++i) {
 323         opal_dss_type_info_t *info = (opal_dss_type_info_t*)opal_pointer_array_get_item(&opal_dss_types, i);
 324         if (NULL != info) {
 325             opal_pointer_array_set_item(&opal_dss_types, i, NULL);
 326             OBJ_RELEASE(info);
 327         }
 328     }
 329 
 330     OBJ_DESTRUCT(&opal_dss_types);
 331 }
 332 
 333 int opal_dss_open(void)
 334 {
 335     int rc;
 336     opal_data_type_t tmp;
 337 
 338     if (opal_dss_initialized) {
 339         return OPAL_SUCCESS;
 340     }
 341 
 342     /* Lock DSS MCA variables */
 343     mca_base_var_group_set_var_flag (opal_dss_group_id, MCA_BASE_VAR_FLAG_SETTABLE, false);
 344 
 345     /* Setup the types array */
 346     OBJ_CONSTRUCT(&opal_dss_types, opal_pointer_array_t);
 347     if (OPAL_SUCCESS != (rc = opal_pointer_array_init(&opal_dss_types,
 348                                                       OPAL_DSS_ID_DYNAMIC,
 349                                                       OPAL_DSS_ID_MAX,
 350                                                       OPAL_DSS_ID_MAX))) {
 351         return rc;
 352     }
 353     opal_dss_num_reg_types = 0;
 354 
 355     /* Register all the intrinsic types */
 356 
 357     tmp = OPAL_NULL;
 358     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_null,
 359                                           opal_dss_unpack_null,
 360                                           (opal_dss_copy_fn_t)opal_dss_copy_null,
 361                                           (opal_dss_compare_fn_t)opal_dss_compare_null,
 362                                           (opal_dss_print_fn_t)opal_dss_print_null,
 363                                           OPAL_DSS_UNSTRUCTURED,
 364                                           "OPAL_NULL", &tmp))) {
 365         return rc;
 366     }
 367     tmp = OPAL_BYTE;
 368     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_byte,
 369                                           opal_dss_unpack_byte,
 370                                           (opal_dss_copy_fn_t)opal_dss_std_copy,
 371                                           (opal_dss_compare_fn_t)opal_dss_compare_byte,
 372                                           (opal_dss_print_fn_t)opal_dss_print_byte,
 373                                           OPAL_DSS_UNSTRUCTURED,
 374                                           "OPAL_BYTE", &tmp))) {
 375         return rc;
 376     }
 377     tmp = OPAL_BOOL;
 378     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_bool,
 379                                           opal_dss_unpack_bool,
 380                                           (opal_dss_copy_fn_t)opal_dss_std_copy,
 381                                           (opal_dss_compare_fn_t)opal_dss_compare_bool,
 382                                           (opal_dss_print_fn_t)opal_dss_print_bool,
 383                                           OPAL_DSS_UNSTRUCTURED,
 384                                           "OPAL_BOOL", &tmp))) {
 385         return rc;
 386     }
 387     tmp = OPAL_INT;
 388     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_int,
 389                                           opal_dss_unpack_int,
 390                                           (opal_dss_copy_fn_t)opal_dss_std_copy,
 391                                           (opal_dss_compare_fn_t)opal_dss_compare_int,
 392                                           (opal_dss_print_fn_t)opal_dss_print_int,
 393                                           OPAL_DSS_UNSTRUCTURED,
 394                                           "OPAL_INT", &tmp))) {
 395         return rc;
 396     }
 397     tmp = OPAL_UINT;
 398     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_int,
 399                                           opal_dss_unpack_int,
 400                                           (opal_dss_copy_fn_t)opal_dss_std_copy,
 401                                           (opal_dss_compare_fn_t)opal_dss_compare_uint,
 402                                           (opal_dss_print_fn_t)opal_dss_print_uint,
 403                                           OPAL_DSS_UNSTRUCTURED,
 404                                           "OPAL_UINT", &tmp))) {
 405         return rc;
 406     }
 407     tmp = OPAL_INT8;
 408     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_byte,
 409                                           opal_dss_unpack_byte,
 410                                           (opal_dss_copy_fn_t)opal_dss_std_copy,
 411                                           (opal_dss_compare_fn_t)opal_dss_compare_int8,
 412                                           (opal_dss_print_fn_t)opal_dss_print_int8,
 413                                           OPAL_DSS_UNSTRUCTURED,
 414                                           "OPAL_INT8", &tmp))) {
 415         return rc;
 416     }
 417     tmp = OPAL_UINT8;
 418     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_byte,
 419                                           opal_dss_unpack_byte,
 420                                           (opal_dss_copy_fn_t)opal_dss_std_copy,
 421                                           (opal_dss_compare_fn_t)opal_dss_compare_uint8,
 422                                           (opal_dss_print_fn_t)opal_dss_print_uint8,
 423                                           OPAL_DSS_UNSTRUCTURED,
 424                                           "OPAL_UINT8", &tmp))) {
 425         return rc;
 426     }
 427     tmp = OPAL_INT16;
 428     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_int16,
 429                                           opal_dss_unpack_int16,
 430                                           (opal_dss_copy_fn_t)opal_dss_std_copy,
 431                                           (opal_dss_compare_fn_t)opal_dss_compare_int16,
 432                                           (opal_dss_print_fn_t)opal_dss_print_int16,
 433                                           OPAL_DSS_UNSTRUCTURED,
 434                                           "OPAL_INT16", &tmp))) {
 435         return rc;
 436     }
 437     tmp = OPAL_UINT16;
 438     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_int16,
 439                                           opal_dss_unpack_int16,
 440                                           (opal_dss_copy_fn_t)opal_dss_std_copy,
 441                                           (opal_dss_compare_fn_t)opal_dss_compare_uint16,
 442                                           (opal_dss_print_fn_t)opal_dss_print_uint16,
 443                                           OPAL_DSS_UNSTRUCTURED,
 444                                           "OPAL_UINT16", &tmp))) {
 445         return rc;
 446     }
 447     tmp = OPAL_INT32;
 448     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_int32,
 449                                           opal_dss_unpack_int32,
 450                                           (opal_dss_copy_fn_t)opal_dss_std_copy,
 451                                           (opal_dss_compare_fn_t)opal_dss_compare_int32,
 452                                           (opal_dss_print_fn_t)opal_dss_print_int32,
 453                                           OPAL_DSS_UNSTRUCTURED,
 454                                           "OPAL_INT32", &tmp))) {
 455         return rc;
 456     }
 457     tmp = OPAL_UINT32;
 458     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_int32,
 459                                           opal_dss_unpack_int32,
 460                                           (opal_dss_copy_fn_t)opal_dss_std_copy,
 461                                           (opal_dss_compare_fn_t)opal_dss_compare_uint32,
 462                                           (opal_dss_print_fn_t)opal_dss_print_uint32,
 463                                           OPAL_DSS_UNSTRUCTURED,
 464                                           "OPAL_UINT32", &tmp))) {
 465         return rc;
 466     }
 467     tmp = OPAL_INT64;
 468     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_int64,
 469                                           opal_dss_unpack_int64,
 470                                           (opal_dss_copy_fn_t)opal_dss_std_copy,
 471                                           (opal_dss_compare_fn_t)opal_dss_compare_int64,
 472                                           (opal_dss_print_fn_t)opal_dss_print_int64,
 473                                           OPAL_DSS_UNSTRUCTURED,
 474                                           "OPAL_INT64", &tmp))) {
 475         return rc;
 476     }
 477     tmp = OPAL_UINT64;
 478     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_int64,
 479                                           opal_dss_unpack_int64,
 480                                           (opal_dss_copy_fn_t)opal_dss_std_copy,
 481                                           (opal_dss_compare_fn_t)opal_dss_compare_uint64,
 482                                           (opal_dss_print_fn_t)opal_dss_print_uint64,
 483                                           OPAL_DSS_UNSTRUCTURED,
 484                                           "OPAL_UINT64", &tmp))) {
 485         return rc;
 486     }
 487     tmp = OPAL_SIZE;
 488     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_sizet,
 489                                           opal_dss_unpack_sizet,
 490                                           (opal_dss_copy_fn_t)opal_dss_std_copy,
 491                                           (opal_dss_compare_fn_t)opal_dss_compare_size,
 492                                           (opal_dss_print_fn_t)opal_dss_print_size,
 493                                           OPAL_DSS_UNSTRUCTURED,
 494                                           "OPAL_SIZE", &tmp))) {
 495         return rc;
 496     }
 497     tmp = OPAL_PID;
 498     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_pid,
 499                                           opal_dss_unpack_pid,
 500                                           (opal_dss_copy_fn_t)opal_dss_std_copy,
 501                                           (opal_dss_compare_fn_t)opal_dss_compare_pid,
 502                                           (opal_dss_print_fn_t)opal_dss_print_pid,
 503                                           OPAL_DSS_UNSTRUCTURED,
 504                                           "OPAL_PID", &tmp))) {
 505         return rc;
 506     }
 507     tmp = OPAL_STRING;
 508     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_string,
 509                                           opal_dss_unpack_string,
 510                                           (opal_dss_copy_fn_t)opal_dss_copy_string,
 511                                           (opal_dss_compare_fn_t)opal_dss_compare_string,
 512                                           (opal_dss_print_fn_t)opal_dss_print_string,
 513                                           OPAL_DSS_STRUCTURED,
 514                                           "OPAL_STRING", &tmp))) {
 515         return rc;
 516     }
 517     tmp = OPAL_DATA_TYPE;
 518     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_data_type,
 519                                           opal_dss_unpack_data_type,
 520                                           (opal_dss_copy_fn_t)opal_dss_std_copy,
 521                                           (opal_dss_compare_fn_t)opal_dss_compare_dt,
 522                                           (opal_dss_print_fn_t)opal_dss_print_data_type,
 523                                           OPAL_DSS_UNSTRUCTURED,
 524                                           "OPAL_DATA_TYPE", &tmp))) {
 525         return rc;
 526     }
 527 
 528     tmp = OPAL_BYTE_OBJECT;
 529     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_byte_object,
 530                                           opal_dss_unpack_byte_object,
 531                                           (opal_dss_copy_fn_t)opal_dss_copy_byte_object,
 532                                           (opal_dss_compare_fn_t)opal_dss_compare_byte_object,
 533                                           (opal_dss_print_fn_t)opal_dss_print_byte_object,
 534                                           OPAL_DSS_STRUCTURED,
 535                                           "OPAL_BYTE_OBJECT", &tmp))) {
 536         return rc;
 537     }
 538 
 539     tmp = OPAL_PSTAT;
 540     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_pstat,
 541                                                      opal_dss_unpack_pstat,
 542                                                      (opal_dss_copy_fn_t)opal_dss_copy_pstat,
 543                                                      (opal_dss_compare_fn_t)opal_dss_compare_pstat,
 544                                                      (opal_dss_print_fn_t)opal_dss_print_pstat,
 545                                                      OPAL_DSS_STRUCTURED,
 546                                                      "OPAL_PSTAT", &tmp))) {
 547         return rc;
 548     }
 549 
 550     tmp = OPAL_NODE_STAT;
 551     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_node_stat,
 552                                                      opal_dss_unpack_node_stat,
 553                                                      (opal_dss_copy_fn_t)opal_dss_copy_node_stat,
 554                                                      (opal_dss_compare_fn_t)opal_dss_compare_node_stat,
 555                                                      (opal_dss_print_fn_t)opal_dss_print_node_stat,
 556                                                      OPAL_DSS_STRUCTURED,
 557                                                      "OPAL_NODE_STAT", &tmp))) {
 558         return rc;
 559     }
 560     tmp = OPAL_VALUE;
 561     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_value,
 562                                                      opal_dss_unpack_value,
 563                                                      (opal_dss_copy_fn_t)opal_dss_copy_value,
 564                                                      (opal_dss_compare_fn_t)opal_dss_compare_value,
 565                                                      (opal_dss_print_fn_t)opal_dss_print_value,
 566                                                      OPAL_DSS_STRUCTURED,
 567                                                      "OPAL_VALUE", &tmp))) {
 568         return rc;
 569     }
 570     tmp = OPAL_BUFFER;
 571     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_buffer_contents,
 572                                                      opal_dss_unpack_buffer_contents,
 573                                                      (opal_dss_copy_fn_t)opal_dss_copy_buffer_contents,
 574                                                      (opal_dss_compare_fn_t)opal_dss_compare_buffer_contents,
 575                                                      (opal_dss_print_fn_t)opal_dss_print_buffer_contents,
 576                                                      OPAL_DSS_STRUCTURED,
 577                                                      "OPAL_BUFFER", &tmp))) {
 578         return rc;
 579     }
 580     tmp = OPAL_FLOAT;
 581     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_float,
 582                                                      opal_dss_unpack_float,
 583                                                      (opal_dss_copy_fn_t)opal_dss_std_copy,
 584                                                      (opal_dss_compare_fn_t)opal_dss_compare_float,
 585                                                      (opal_dss_print_fn_t)opal_dss_print_float,
 586                                                      OPAL_DSS_UNSTRUCTURED,
 587                                                      "OPAL_FLOAT", &tmp))) {
 588         return rc;
 589     }
 590     tmp = OPAL_DOUBLE;
 591     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_double,
 592                                                      opal_dss_unpack_double,
 593                                                      (opal_dss_copy_fn_t)opal_dss_std_copy,
 594                                                      (opal_dss_compare_fn_t)opal_dss_compare_double,
 595                                                      (opal_dss_print_fn_t)opal_dss_print_double,
 596                                                      OPAL_DSS_UNSTRUCTURED,
 597                                                      "OPAL_DOUBLE", &tmp))) {
 598         return rc;
 599     }
 600     tmp = OPAL_TIMEVAL;
 601     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_timeval,
 602                                                      opal_dss_unpack_timeval,
 603                                                      (opal_dss_copy_fn_t)opal_dss_std_copy,
 604                                                      (opal_dss_compare_fn_t)opal_dss_compare_timeval,
 605                                                      (opal_dss_print_fn_t)opal_dss_print_timeval,
 606                                                      OPAL_DSS_UNSTRUCTURED,
 607                                                      "OPAL_TIMEVAL", &tmp))) {
 608         return rc;
 609     }
 610      tmp = OPAL_TIME;
 611     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_time,
 612                                                      opal_dss_unpack_time,
 613                                                      (opal_dss_copy_fn_t)opal_dss_std_copy,
 614                                                      (opal_dss_compare_fn_t)opal_dss_compare_time,
 615                                                      (opal_dss_print_fn_t)opal_dss_print_time,
 616                                                      OPAL_DSS_UNSTRUCTURED,
 617                                                      "OPAL_TIME", &tmp))) {
 618         return rc;
 619     }
 620 
 621     tmp = OPAL_NAME;
 622     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_name,
 623                                           opal_dss_unpack_name,
 624                                           (opal_dss_copy_fn_t)opal_dss_copy_name,
 625                                           (opal_dss_compare_fn_t)opal_dss_compare_name,
 626                                           (opal_dss_print_fn_t)opal_dss_print_name,
 627                                           OPAL_DSS_UNSTRUCTURED,
 628                                           "OPAL_NAME", &tmp))) {
 629         return rc;
 630     }
 631 
 632     tmp = OPAL_JOBID;
 633     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_jobid,
 634                                           opal_dss_unpack_jobid,
 635                                           (opal_dss_copy_fn_t)opal_dss_copy_jobid,
 636                                           (opal_dss_compare_fn_t)opal_dss_compare_jobid,
 637                                           (opal_dss_print_fn_t)opal_dss_print_jobid,
 638                                           OPAL_DSS_UNSTRUCTURED,
 639                                           "OPAL_JOBID", &tmp))) {
 640         return rc;
 641     }
 642 
 643     tmp = OPAL_VPID;
 644     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_vpid,
 645                                           opal_dss_unpack_vpid,
 646                                           (opal_dss_copy_fn_t)opal_dss_copy_vpid,
 647                                           (opal_dss_compare_fn_t)opal_dss_compare_vpid,
 648                                           (opal_dss_print_fn_t)opal_dss_print_vpid,
 649                                           OPAL_DSS_UNSTRUCTURED,
 650                                           "OPAL_VPID", &tmp))) {
 651         return rc;
 652     }
 653 
 654 
 655     tmp = OPAL_STATUS;
 656     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_status,
 657                                           opal_dss_unpack_status,
 658                                           (opal_dss_copy_fn_t)opal_dss_std_copy,
 659                                           (opal_dss_compare_fn_t)opal_dss_compare_status,
 660                                           (opal_dss_print_fn_t)opal_dss_print_status,
 661                                           OPAL_DSS_UNSTRUCTURED,
 662                                           "OPAL_STATUS", &tmp))) {
 663         return rc;
 664     }
 665 
 666     tmp = OPAL_ENVAR;
 667     if (OPAL_SUCCESS != (rc = opal_dss.register_type(opal_dss_pack_envar,
 668                                           opal_dss_unpack_envar,
 669                                           (opal_dss_copy_fn_t)opal_dss_copy_envar,
 670                                           (opal_dss_compare_fn_t)opal_dss_compare_envar,
 671                                           (opal_dss_print_fn_t)opal_dss_print_envar,
 672                                           OPAL_DSS_UNSTRUCTURED,
 673                                           "OPAL_ENVAR", &tmp))) {
 674         return rc;
 675     }
 676     /* All done */
 677 
 678     opal_dss_initialized = true;
 679 
 680     opal_finalize_register_cleanup (opal_dss_close);
 681 
 682     return OPAL_SUCCESS;
 683 }
 684 
 685 bool opal_dss_structured(opal_data_type_t type)
 686 {
 687     int i;
 688 
 689     /* find the type */
 690     for (i = 0 ; i < opal_dss_types.size ; ++i) {
 691         opal_dss_type_info_t *info = (opal_dss_type_info_t*)opal_pointer_array_get_item(&opal_dss_types, i);
 692         if (NULL != info && info->odti_type == type) {
 693             return info->odti_structured;
 694         }
 695     }
 696 
 697     /* default to false */
 698     return false;
 699 }

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