root/opal/mca/pmix/pmix4x/pmix/src/mca/bfrops/base/base.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-2019 Intel, Inc.  All rights reserved.
  15  * Copyright (c) 2015-2019 Research Organization for Information Science
  16  *                         and Technology (RIST).  All rights reserved.
  17  * Copyright (c) 2019      Mellanox Technologies, Inc.
  18  *                         All rights reserved.
  19  * $COPYRIGHT$
  20  *
  21  * Additional copyrights may follow
  22  *
  23  * $HEADER$
  24  *
  25  */
  26 #ifndef PMIX_BFROP_BASE_H_
  27 #define PMIX_BFROP_BASE_H_
  28 
  29 #include <src/include/pmix_config.h>
  30 
  31 
  32 #ifdef HAVE_SYS_TIME_H
  33 #include <sys/time.h> /* for struct timeval */
  34 #endif
  35 #ifdef HAVE_STRING_H
  36 #include <string.h>
  37 #endif
  38 
  39 #include "src/class/pmix_pointer_array.h"
  40 #include "src/mca/mca.h"
  41 #include "src/mca/base/pmix_mca_base_framework.h"
  42 #include "src/include/pmix_globals.h"
  43 #include "src/mca/bfrops/bfrops.h"
  44 
  45 
  46  BEGIN_C_DECLS
  47 
  48 /*
  49  * MCA Framework
  50  */
  51  PMIX_EXPORT extern pmix_mca_base_framework_t pmix_bfrops_base_framework;
  52 /**
  53  * BFROP select function
  54  *
  55  * Cycle across available components and construct the list
  56  * of active modules
  57  */
  58  PMIX_EXPORT pmix_status_t pmix_bfrop_base_select(void);
  59 
  60 /**
  61  * Track an active component / module
  62  */
  63 struct pmix_bfrops_base_active_module_t {
  64     pmix_list_item_t super;
  65     pmix_status_t pri;
  66     pmix_bfrops_module_t *module;
  67     pmix_bfrops_base_component_t *component;
  68 };
  69 typedef struct pmix_bfrops_base_active_module_t pmix_bfrops_base_active_module_t;
  70 PMIX_CLASS_DECLARATION(pmix_bfrops_base_active_module_t);
  71 
  72 
  73 /* framework globals */
  74 struct pmix_bfrops_globals_t {
  75   pmix_list_t actives;
  76   bool initialized;
  77   size_t initial_size;
  78   size_t threshold_size;
  79   pmix_bfrop_buffer_type_t default_type;
  80 };
  81 typedef struct pmix_bfrops_globals_t pmix_bfrops_globals_t;
  82 
  83 PMIX_EXPORT extern pmix_bfrops_globals_t pmix_bfrops_globals;
  84 
  85 /*
  86  * The default starting chunk size
  87  */
  88 #define PMIX_BFROP_DEFAULT_INITIAL_SIZE  128
  89 /*
  90  * The default threshold size when we switch from doubling the
  91  * buffer size to additively increasing it
  92  */
  93 #define PMIX_BFROP_DEFAULT_THRESHOLD_SIZE 1024
  94 
  95 /*
  96  * Internal type corresponding to size_t.  Do not use this in
  97  * interface calls - use PMIX_SIZE instead.
  98  */
  99 #if SIZEOF_SIZE_T == 1
 100 #define BFROP_TYPE_SIZE_T PMIX_UINT8
 101 #elif SIZEOF_SIZE_T == 2
 102 #define BFROP_TYPE_SIZE_T PMIX_UINT16
 103 #elif SIZEOF_SIZE_T == 4
 104 #define BFROP_TYPE_SIZE_T PMIX_UINT32
 105 #elif SIZEOF_SIZE_T == 8
 106 #define BFROP_TYPE_SIZE_T PMIX_UINT64
 107 #else
 108 #error Unsupported size_t size!
 109 #endif
 110 
 111 /*
 112  * Internal type corresponding to bool.  Do not use this in interface
 113  * calls - use PMIX_BOOL instead.
 114  */
 115 #if SIZEOF__BOOL == 1
 116 #define BFROP_TYPE_BOOL PMIX_UINT8
 117 #elif SIZEOF__BOOL == 2
 118 #define BFROP_TYPE_BOOL PMIX_UINT16
 119 #elif SIZEOF__BOOL == 4
 120 #define BFROP_TYPE_BOOL PMIX_UINT32
 121 #elif SIZEOF__BOOL == 8
 122 #define BFROP_TYPE_BOOL PMIX_UINT64
 123 #else
 124 #error Unsupported bool size!
 125 #endif
 126 
 127 /*
 128  * Internal type corresponding to int and unsigned int.  Do not use
 129  * this in interface calls - use PMIX_INT / PMIX_UINT instead.
 130  */
 131 #if SIZEOF_INT == 1
 132 #define BFROP_TYPE_INT PMIX_INT8
 133 #define BFROP_TYPE_UINT PMIX_UINT8
 134 #elif SIZEOF_INT == 2
 135 #define BFROP_TYPE_INT PMIX_INT16
 136 #define BFROP_TYPE_UINT PMIX_UINT16
 137 #elif SIZEOF_INT == 4
 138 #define BFROP_TYPE_INT PMIX_INT32
 139 #define BFROP_TYPE_UINT PMIX_UINT32
 140 #elif SIZEOF_INT == 8
 141 #define BFROP_TYPE_INT PMIX_INT64
 142 #define BFROP_TYPE_UINT PMIX_UINT64
 143 #else
 144 #error Unsupported INT size!
 145 #endif
 146 
 147 /*
 148  * Internal type corresponding to pid_t.  Do not use this in interface
 149  * calls - use PMIX_PID instead.
 150  */
 151 #if SIZEOF_PID_T == 1
 152 #define BFROP_TYPE_PID_T PMIX_UINT8
 153 #elif SIZEOF_PID_T == 2
 154 #define BFROP_TYPE_PID_T PMIX_UINT16
 155 #elif SIZEOF_PID_T == 4
 156 #define BFROP_TYPE_PID_T PMIX_UINT32
 157 #elif SIZEOF_PID_T == 8
 158 #define BFROP_TYPE_PID_T PMIX_UINT64
 159 #else
 160 #error Unsupported pid_t size!
 161 #endif
 162 
 163 /* Unpack generic size macros */
 164 #define PMIX_BFROP_UNPACK_SIZE_MISMATCH(reg_types, unpack_type, remote_type, ret)                     \
 165     do {                                                                        \
 166         switch(remote_type) {                                                   \
 167             case PMIX_UINT8:                                                    \
 168                 PMIX_BFROP_UNPACK_SIZE_MISMATCH_FOUND(reg_types, unpack_type, uint8_t, remote_type);  \
 169                 break;                                                          \
 170             case PMIX_INT8:                                                     \
 171                 PMIX_BFROP_UNPACK_SIZE_MISMATCH_FOUND(reg_types, unpack_type, int8_t, remote_type);   \
 172                 break;                                                          \
 173             case PMIX_UINT16:                                                   \
 174                 PMIX_BFROP_UNPACK_SIZE_MISMATCH_FOUND(reg_types, unpack_type, uint16_t, remote_type); \
 175                 break;                                                          \
 176             case PMIX_INT16:                                                    \
 177                 PMIX_BFROP_UNPACK_SIZE_MISMATCH_FOUND(reg_types, unpack_type, int16_t, remote_type);  \
 178                 break;                                                          \
 179             case PMIX_UINT32:                                                   \
 180                 PMIX_BFROP_UNPACK_SIZE_MISMATCH_FOUND(reg_types, unpack_type, uint32_t, remote_type); \
 181                 break;                                                          \
 182             case PMIX_INT32:                                                    \
 183                 PMIX_BFROP_UNPACK_SIZE_MISMATCH_FOUND(reg_types, unpack_type, int32_t, remote_type);  \
 184                 break;                                                          \
 185             case PMIX_UINT64:                                                   \
 186                 PMIX_BFROP_UNPACK_SIZE_MISMATCH_FOUND(reg_types, unpack_type, uint64_t, remote_type); \
 187                 break;                                                          \
 188             case PMIX_INT64:                                                    \
 189                 PMIX_BFROP_UNPACK_SIZE_MISMATCH_FOUND(reg_types, unpack_type, int64_t, remote_type);  \
 190                 break;                                                          \
 191             default:                                                            \
 192                 ret = PMIX_ERR_NOT_FOUND;                                       \
 193         }                                                                       \
 194     } while (0)
 195 
 196 #define PMIX_BFROPS_PACK_TYPE(r, b, s, n, t, arr)                           \
 197     do {                                                                    \
 198         pmix_bfrop_type_info_t *__info;                                     \
 199         /* Lookup the pack function for this type and call it */            \
 200         __info = (pmix_bfrop_type_info_t*)pmix_pointer_array_get_item((arr),\
 201                                                                       (t)); \
 202         if (NULL == __info) {                                               \
 203             (r) = PMIX_ERR_UNKNOWN_DATA_TYPE;                               \
 204         } else {                                                            \
 205             (r) = __info->odti_pack_fn(arr, b, s, n, t);                 \
 206         }                                                                   \
 207     } while(0)
 208 
 209 #define PMIX_BFROPS_UNPACK_TYPE(r, b, d, n, t, arr)                         \
 210     do {                                                                    \
 211         pmix_bfrop_type_info_t *__info;                                     \
 212         /* Lookup the unpack function for this type and call it */          \
 213         __info = (pmix_bfrop_type_info_t*)pmix_pointer_array_get_item((arr),\
 214                                                                       (t)); \
 215         if (NULL == __info) {                                               \
 216             (r) = PMIX_ERR_UNKNOWN_DATA_TYPE;                               \
 217         } else {                                                            \
 218             (r) = __info->odti_unpack_fn(arr, b, d, n, t);                  \
 219         }                                                                   \
 220     } while(0)
 221 
 222 /* NOTE: do not need to deal with endianness here, as the unpacking of
 223    the underling sender-side type will do that for us.  Repeat: the
 224    data in tmpbuf[] is already in host byte order. */
 225 #define PMIX_BFROP_UNPACK_SIZE_MISMATCH_FOUND(reg_types, unpack_type, tmptype, tmpbfroptype)    \
 226     do {                                                                    \
 227         int32_t i;                                                          \
 228         tmptype *tmpbuf = (tmptype*)calloc(*num_vals, sizeof(tmptype));     \
 229         PMIX_BFROPS_UNPACK_TYPE(ret, buffer, tmpbuf, num_vals, tmpbfroptype, reg_types);        \
 230         if (PMIX_ERR_UNKNOWN_DATA_TYPE != ret) {                            \
 231             for (i = 0 ; i < *num_vals ; ++i) {                             \
 232                 ((unpack_type*) dest)[i] = (unpack_type)(tmpbuf[i]);        \
 233             }                                                               \
 234         }                                                                   \
 235         free(tmpbuf);                                                       \
 236     } while (0)
 237 
 238 /* for backwards compatibility */
 239 typedef struct pmix_info_array {
 240     size_t size;
 241     pmix_info_t *array;
 242 } pmix_info_array_t;
 243 
 244 typedef pmix_status_t (*pmix_bfrop_internal_pack_fn_t)(pmix_pointer_array_t *regtypes,
 245                                                        pmix_buffer_t *buffer,
 246                                                        const void *src,
 247                                                        int32_t num_values,
 248                                                        pmix_data_type_t type);
 249 
 250 typedef pmix_status_t (*pmix_bfrop_internal_unpack_fn_t)(pmix_pointer_array_t *regtypes,
 251                                                          pmix_buffer_t *buffer, void *dest,
 252                                                          int32_t *max_num_values,
 253                                                          pmix_data_type_t type);
 254 
 255 /**
 256  * Internal struct used for holding registered bfrop functions
 257  */
 258  typedef struct {
 259     pmix_object_t super;
 260     /* type identifier */
 261     pmix_data_type_t odti_type;
 262     /** Debugging string name */
 263     char *odti_name;
 264     /** Pack function */
 265     pmix_bfrop_internal_pack_fn_t odti_pack_fn;
 266     /** Unpack function */
 267     pmix_bfrop_internal_unpack_fn_t odti_unpack_fn;
 268     /** copy function */
 269     pmix_bfrop_copy_fn_t odti_copy_fn;
 270     /** prpmix_status_t function */
 271     pmix_bfrop_print_fn_t odti_print_fn;
 272 } pmix_bfrop_type_info_t;
 273 PMIX_EXPORT PMIX_CLASS_DECLARATION(pmix_bfrop_type_info_t);
 274 
 275 /* macro for registering data types - overwrite an existing
 276  * duplicate one based on type name */
 277 #define PMIX_REGISTER_TYPE(n, t, p, u, c, pr, arr)                  \
 278  do {                                                               \
 279     pmix_bfrop_type_info_t *_info;                                  \
 280     _info = PMIX_NEW(pmix_bfrop_type_info_t);                       \
 281     _info->odti_name = strdup((n));                                 \
 282     _info->odti_type = (t);                                         \
 283     _info->odti_pack_fn = (pmix_bfrop_internal_pack_fn_t)(p);           \
 284     _info->odti_unpack_fn = (pmix_bfrop_internal_unpack_fn_t)(u);       \
 285     _info->odti_copy_fn = (pmix_bfrop_copy_fn_t)(c) ;               \
 286     _info->odti_print_fn = (pmix_bfrop_print_fn_t)(pr) ;            \
 287     pmix_pointer_array_set_item((arr), (t), _info);                 \
 288 } while (0)
 289 
 290 /* API Stub functions */
 291 PMIX_EXPORT char* pmix_bfrops_stub_get_available_modules(void);
 292 PMIX_EXPORT pmix_status_t pmix_bfrops_stub_assign_module(struct pmix_peer_t *peer,
 293                                              const char *version);
 294 PMIX_EXPORT pmix_buffer_t* pmix_bfrops_stub_create_buffer(struct pmix_peer_t *pr);
 295 PMIX_EXPORT void pmix_bfrops_construct_buffer(struct pmix_peer_t *pr,
 296                                               pmix_buffer_t *buf);
 297 PMIX_EXPORT pmix_status_t pmix_bfrops_stub_pack(struct pmix_peer_t *peer,
 298                                                 pmix_buffer_t *buffer,
 299                                                 const void *src,
 300                                                 int32_t num_values,
 301                                                 pmix_data_type_t type);
 302 PMIX_EXPORT pmix_status_t pmix_bfrops_stub_unpack(struct pmix_peer_t *peer,
 303                                                   pmix_buffer_t *buffer, void *dest,
 304                                                   int32_t *max_num_values,
 305                                                   pmix_data_type_t type);
 306 PMIX_EXPORT pmix_status_t pmix_bfrops_stub_copy(struct pmix_peer_t *peer,
 307                                                 void **dest, void *src,
 308                                                 pmix_data_type_t type);
 309 PMIX_EXPORT pmix_status_t pmix_bfrops_stub_print(struct pmix_peer_t *peer,
 310                                                  char **output, char *prefix,
 311                                                  void *src, pmix_data_type_t type);
 312 PMIX_EXPORT pmix_status_t pmix_bfrops_stub_copy_payload(struct pmix_peer_t *peer,
 313                                                         pmix_buffer_t *dest,
 314                                                         pmix_buffer_t *src);
 315 PMIX_EXPORT pmix_status_t pmix_bfrops_stub_value_xfer(struct pmix_peer_t *peer,
 316                                                       pmix_value_t *dest,
 317                                                       const pmix_value_t *src);
 318 PMIX_EXPORT void pmix_bfrops_stub_value_load(struct pmix_peer_t *peer,
 319                                              pmix_value_t *v, void *data,
 320                                              pmix_data_type_t type);
 321 PMIX_EXPORT pmix_status_t pmix_bfrops_stub_value_unload(struct pmix_peer_t *peer,
 322                                                         pmix_value_t *kv,
 323                                                         void **data, size_t *sz);
 324 PMIX_EXPORT pmix_value_cmp_t pmix_bfrops_stub_value_cmp(struct pmix_peer_t *peer,
 325                                                         pmix_value_t *p1, pmix_value_t *p2);
 326 PMIX_EXPORT pmix_status_t pmix_bfrops_stub_register_type(struct pmix_peer_t *peer,
 327                                                          const char *name, pmix_data_type_t type,
 328                                                          pmix_bfrop_pack_fn_t pack,
 329                                                          pmix_bfrop_unpack_fn_t unpack,
 330                                                          pmix_bfrop_copy_fn_t copy,
 331                                                          pmix_bfrop_print_fn_t print);
 332 
 333 /* data type string function */
 334 PMIX_EXPORT const char* pmix_bfrops_base_data_type_string(pmix_pointer_array_t *regtypes,
 335                                                           pmix_data_type_t type);
 336 
 337 /*
 338  * "Standard" pack functions
 339  */
 340 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack(pmix_pointer_array_t *regtypes,
 341                                                 pmix_buffer_t *buffer,
 342                                                 const void *src, int num_vals,
 343                                                 pmix_data_type_t type);
 344 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_buffer(pmix_pointer_array_t *regtypes,
 345                                                        pmix_buffer_t *buffer,
 346                                                        const void *src, int32_t num_vals,
 347                                                        pmix_data_type_t type);
 348 
 349 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_bool(pmix_pointer_array_t *regtypes,
 350                                                      pmix_buffer_t *buffer, const void *src,
 351                                                      int32_t num_vals, pmix_data_type_t type);
 352 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_int(pmix_pointer_array_t *regtypes,
 353                                                     pmix_buffer_t *buffer, const void *src,
 354                                                     int32_t num_vals, pmix_data_type_t type);
 355 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_sizet(pmix_pointer_array_t *regtypes,
 356                                                       pmix_buffer_t *buffer, const void *src,
 357                                                       int32_t num_vals, pmix_data_type_t type);
 358 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_byte(pmix_pointer_array_t *regtypes,
 359                                                      pmix_buffer_t *buffer, const void *src,
 360                                                      int32_t num_vals, pmix_data_type_t type);
 361 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_string(pmix_pointer_array_t *regtypes,
 362                                                        pmix_buffer_t *buffer, const void *src,
 363                                                        int32_t num_vals, pmix_data_type_t type);
 364 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_pid(pmix_pointer_array_t *regtypes,
 365                                                     pmix_buffer_t *buffer, const void *src,
 366                                                     int32_t num_vals, pmix_data_type_t type);
 367 
 368 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_int16(pmix_pointer_array_t *regtypes,
 369                                                       pmix_buffer_t *buffer, const void *src,
 370                                                       int32_t num_vals, pmix_data_type_t type);
 371 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_int32(pmix_pointer_array_t *regtypes,
 372                                                       pmix_buffer_t *buffer, const void *src,
 373                                                       int32_t num_vals, pmix_data_type_t type);
 374 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_int64(pmix_pointer_array_t *regtypes,
 375                                                       pmix_buffer_t *buffer, const void *src,
 376                                                       int32_t num_vals, pmix_data_type_t type);
 377 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_string(pmix_pointer_array_t *regtypes,
 378                                                        pmix_buffer_t *buffer, const void *src,
 379                                                        int32_t num_vals, pmix_data_type_t type);
 380 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_float(pmix_pointer_array_t *regtypes,
 381                                                       pmix_buffer_t *buffer, const void *src,
 382                                                       int32_t num_vals, pmix_data_type_t type);
 383 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_double(pmix_pointer_array_t *regtypes,
 384                                                        pmix_buffer_t *buffer, const void *src,
 385                                                        int32_t num_vals, pmix_data_type_t type);
 386 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_timeval(pmix_pointer_array_t *regtypes,
 387                                                         pmix_buffer_t *buffer, const void *src,
 388                                                         int32_t num_vals, pmix_data_type_t type);
 389 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_time(pmix_pointer_array_t *regtypes,
 390                                                      pmix_buffer_t *buffer, const void *src,
 391                                                      int32_t num_vals, pmix_data_type_t type);
 392 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_status(pmix_pointer_array_t *regtypes,
 393                                                        pmix_buffer_t *buffer, const void *src,
 394                                                        int32_t num_vals, pmix_data_type_t type);
 395 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_buf(pmix_pointer_array_t *regtypes,
 396                                                     pmix_buffer_t *buffer, const void *src,
 397                                                     int32_t num_vals, pmix_data_type_t type);
 398 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_bo(pmix_pointer_array_t *regtypes,
 399                                                    pmix_buffer_t *buffer, const void *src,
 400                                                    int32_t num_vals, pmix_data_type_t type);
 401 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_proc(pmix_pointer_array_t *regtypes,
 402                                                      pmix_buffer_t *buffer, const void *src,
 403                                                      int32_t num_vals, pmix_data_type_t type);
 404 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_value(pmix_pointer_array_t *regtypes,
 405                                                       pmix_buffer_t *buffer, const void *src,
 406                                                       int32_t num_vals, pmix_data_type_t type);
 407 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_info(pmix_pointer_array_t *regtypes,
 408                                                      pmix_buffer_t *buffer, const void *src,
 409                                                      int32_t num_vals, pmix_data_type_t type);
 410 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_pdata(pmix_pointer_array_t *regtypes,
 411                                                       pmix_buffer_t *buffer, const void *src,
 412                                                       int32_t num_vals, pmix_data_type_t type);
 413 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_app(pmix_pointer_array_t *regtypes,
 414                                                     pmix_buffer_t *buffer, const void *src,
 415                                                     int32_t num_vals, pmix_data_type_t type);
 416 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_kval(pmix_pointer_array_t *regtypes,
 417                                                      pmix_buffer_t *buffer, const void *src,
 418                                                      int32_t num_vals, pmix_data_type_t type);
 419 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_array(pmix_pointer_array_t *regtypes,
 420                                                       pmix_buffer_t *buffer, const void *src,
 421                                                       int32_t num_vals, pmix_data_type_t type);
 422 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_modex(pmix_buffer_t *buffer, const void *src,
 423                                                       int32_t num_vals, pmix_data_type_t type);
 424 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_persist(pmix_pointer_array_t *regtypes,
 425                                                         pmix_buffer_t *buffer, const void *src,
 426                                                         int32_t num_vals, pmix_data_type_t type);
 427 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_datatype(pmix_pointer_array_t *regtypes,
 428                                                          pmix_buffer_t *buffer, const void *src,
 429                                                          int32_t num_vals, pmix_data_type_t type);
 430 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_ptr(pmix_pointer_array_t *regtypes,
 431                                                     pmix_buffer_t *buffer, const void *src,
 432                                                     int32_t num_vals, pmix_data_type_t type);
 433 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_scope(pmix_pointer_array_t *regtypes,
 434                                                       pmix_buffer_t *buffer, const void *src,
 435                                                       int32_t num_vals, pmix_data_type_t type);
 436 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_range(pmix_pointer_array_t *regtypes,
 437                                                       pmix_buffer_t *buffer, const void *src,
 438                                                       int32_t num_vals, pmix_data_type_t type);
 439 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_cmd(pmix_pointer_array_t *regtypes,
 440                                                     pmix_buffer_t *buffer, const void *src,
 441                                                     int32_t num_vals, pmix_data_type_t type);
 442 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_info_directives(pmix_pointer_array_t *regtypes,
 443                                                                 pmix_buffer_t *buffer, const void *src,
 444                                                                 int32_t num_vals, pmix_data_type_t type);
 445 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_pstate(pmix_pointer_array_t *regtypes,
 446                                                        pmix_buffer_t *buffer, const void *src,
 447                                                        int32_t num_vals, pmix_data_type_t type);
 448 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_pinfo(pmix_pointer_array_t *regtypes,
 449                                                       pmix_buffer_t *buffer, const void *src,
 450                                                       int32_t num_vals, pmix_data_type_t type);
 451 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_darray(pmix_pointer_array_t *regtypes,
 452                                                        pmix_buffer_t *buffer, const void *src,
 453                                                        int32_t num_vals, pmix_data_type_t type);
 454 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_rank(pmix_pointer_array_t *regtypes,
 455                                                      pmix_buffer_t *buffer, const void *src,
 456                                                      int32_t num_vals, pmix_data_type_t type);
 457 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_query(pmix_pointer_array_t *regtypes,
 458                                                       pmix_buffer_t *buffer, const void *src,
 459                                                       int32_t num_vals, pmix_data_type_t type);
 460 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_val(pmix_pointer_array_t *regtypes,
 461                                                     pmix_buffer_t *buffer,
 462                                                     pmix_value_t *p);
 463 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_alloc_directive(pmix_pointer_array_t *regtypes,
 464                                                                 pmix_buffer_t *buffer, const void *src,
 465                                                                 int32_t num_vals, pmix_data_type_t type);
 466 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_iof_channel(pmix_pointer_array_t *regtypes,
 467                                                             pmix_buffer_t *buffer, const void *src,
 468                                                             int32_t num_vals, pmix_data_type_t type);
 469 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_envar(pmix_pointer_array_t *regtypes,
 470                                                       pmix_buffer_t *buffer, const void *src,
 471                                                       int32_t num_vals, pmix_data_type_t type);
 472 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_coord(pmix_pointer_array_t *regtypes,
 473                                                       pmix_buffer_t *buffer, const void *src,
 474                                                       int32_t num_vals, pmix_data_type_t type);
 475 PMIX_EXPORT pmix_status_t pmix_bfrops_base_pack_regattr(pmix_pointer_array_t *regtypes,
 476                                                         pmix_buffer_t *buffer, const void *src,
 477                                                         int32_t num_vals, pmix_data_type_t type);
 478 
 479 /*
 480 * "Standard" unpack functions
 481 */
 482 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack(pmix_pointer_array_t *regtypes,
 483                                                   pmix_buffer_t *buffer,
 484                                                   void *dst, int32_t *num_vals,
 485                                                   pmix_data_type_t type);
 486 
 487 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_bool(pmix_pointer_array_t *regtypes,
 488                                                        pmix_buffer_t *buffer, void *dest,
 489                                                        int32_t *num_vals, pmix_data_type_t type);
 490 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_byte(pmix_pointer_array_t *regtypes,
 491                                                        pmix_buffer_t *buffer, void *dest,
 492                                                        int32_t *num_vals, pmix_data_type_t type);
 493 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_string(pmix_pointer_array_t *regtypes,
 494                                                          pmix_buffer_t *buffer, void *dest,
 495                                                          int32_t *num_vals, pmix_data_type_t type);
 496 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_int(pmix_pointer_array_t *regtypes,
 497                                                       pmix_buffer_t *buffer, void *dest,
 498                                                       int32_t *num_vals, pmix_data_type_t type);
 499 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_sizet(pmix_pointer_array_t *regtypes,
 500                                                         pmix_buffer_t *buffer, void *dest,
 501                                                         int32_t *num_vals, pmix_data_type_t type);
 502 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_pid(pmix_pointer_array_t *regtypes,
 503                                                       pmix_buffer_t *buffer, void *dest,
 504                                                       int32_t *num_vals, pmix_data_type_t type);
 505 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_int16(pmix_pointer_array_t *regtypes,
 506                                                         pmix_buffer_t *buffer, void *dest,
 507                                                         int32_t *num_vals, pmix_data_type_t type);
 508 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_int32(pmix_pointer_array_t *regtypes,
 509                                                         pmix_buffer_t *buffer, void *dest,
 510                                                         int32_t *num_vals, pmix_data_type_t type);
 511 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_datatype(pmix_pointer_array_t *regtypes,
 512                                                            pmix_buffer_t *buffer, void *dest,
 513                                                            int32_t *num_vals, pmix_data_type_t type);
 514 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_int64(pmix_pointer_array_t *regtypes,
 515                                                         pmix_buffer_t *buffer, void *dest,
 516                                                         int32_t *num_vals, pmix_data_type_t type);
 517 
 518 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_float(pmix_pointer_array_t *regtypes,
 519                                                         pmix_buffer_t *buffer, void *dest,
 520                                                         int32_t *num_vals, pmix_data_type_t type);
 521 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_double(pmix_pointer_array_t *regtypes,
 522                                                          pmix_buffer_t *buffer, void *dest,
 523                                                          int32_t *num_vals, pmix_data_type_t type);
 524 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_timeval(pmix_pointer_array_t *regtypes,
 525                                                           pmix_buffer_t *buffer, void *dest,
 526                                                           int32_t *num_vals, pmix_data_type_t type);
 527 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_time(pmix_pointer_array_t *regtypes,
 528                                                        pmix_buffer_t *buffer, void *dest,
 529                                                        int32_t *num_vals, pmix_data_type_t type);
 530 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_status(pmix_pointer_array_t *regtypes,
 531                                                          pmix_buffer_t *buffer, void *dest,
 532                                                          int32_t *num_vals, pmix_data_type_t type);
 533 
 534 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_val(pmix_pointer_array_t *regtypes,
 535                                                       pmix_buffer_t *buffer,
 536                                                       pmix_value_t *val);
 537 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_value(pmix_pointer_array_t *regtypes,
 538                                                         pmix_buffer_t *buffer, void *dest,
 539                                                         int32_t *num_vals, pmix_data_type_t type);
 540 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_info(pmix_pointer_array_t *regtypes,
 541                                                        pmix_buffer_t *buffer, void *dest,
 542                                                        int32_t *num_vals, pmix_data_type_t type);
 543 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_pdata(pmix_pointer_array_t *regtypes,
 544                                                         pmix_buffer_t *buffer, void *dest,
 545                                                         int32_t *num_vals, pmix_data_type_t type);
 546 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_buf(pmix_pointer_array_t *regtypes,
 547                                                       pmix_buffer_t *buffer, void *dest,
 548                                                       int32_t *num_vals, pmix_data_type_t type);
 549 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_proc(pmix_pointer_array_t *regtypes,
 550                                                        pmix_buffer_t *buffer, void *dest,
 551                                                        int32_t *num_vals, pmix_data_type_t type);
 552 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_app(pmix_pointer_array_t *regtypes,
 553                                                       pmix_buffer_t *buffer, void *dest,
 554                                                       int32_t *num_vals, pmix_data_type_t type);
 555 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_kval(pmix_pointer_array_t *regtypes,
 556                                                        pmix_buffer_t *buffer, void *dest,
 557                                                        int32_t *num_vals, pmix_data_type_t type);
 558 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_modex(pmix_pointer_array_t *regtypes,
 559                                                         pmix_buffer_t *buffer, void *dest,
 560                                                         int32_t *num_vals, pmix_data_type_t type);
 561 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_persist(pmix_pointer_array_t *regtypes,
 562                                                           pmix_buffer_t *buffer, void *dest,
 563                                                           int32_t *num_vals, pmix_data_type_t type);
 564 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_bo(pmix_pointer_array_t *regtypes,
 565                                                      pmix_buffer_t *buffer, void *dest,
 566                                                      int32_t *num_vals, pmix_data_type_t type);
 567 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_ptr(pmix_pointer_array_t *regtypes,
 568                                                       pmix_buffer_t *buffer, void *dest,
 569                                                       int32_t *num_vals, pmix_data_type_t type);
 570 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_scope(pmix_pointer_array_t *regtypes,
 571                                                         pmix_buffer_t *buffer, void *dest,
 572                                                         int32_t *num_vals, pmix_data_type_t type);
 573 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_range(pmix_pointer_array_t *regtypes,
 574                                                         pmix_buffer_t *buffer, void *dest,
 575                                                         int32_t *num_vals, pmix_data_type_t type);
 576 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_cmd(pmix_pointer_array_t *regtypes,
 577                                                       pmix_buffer_t *buffer, void *dest,
 578                                                       int32_t *num_vals, pmix_data_type_t type);
 579 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_info_directives(pmix_pointer_array_t *regtypes,
 580                                                                   pmix_buffer_t *buffer, void *dest,
 581                                                                   int32_t *num_vals, pmix_data_type_t type);
 582 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_datatype(pmix_pointer_array_t *regtypes,
 583                                                            pmix_buffer_t *buffer, void *dest,
 584                                                            int32_t *num_vals, pmix_data_type_t type);
 585 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_pstate(pmix_pointer_array_t *regtypes,
 586                                                          pmix_buffer_t *buffer, void *dest,
 587                                                          int32_t *num_vals, pmix_data_type_t type);
 588 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_pinfo(pmix_pointer_array_t *regtypes,
 589                                                         pmix_buffer_t *buffer, void *dest,
 590                                                         int32_t *num_vals, pmix_data_type_t type);
 591 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_darray(pmix_pointer_array_t *regtypes,
 592                                                          pmix_buffer_t *buffer, void *dest,
 593                                                          int32_t *num_vals, pmix_data_type_t type);
 594 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_rank(pmix_pointer_array_t *regtypes,
 595                                                        pmix_buffer_t *buffer, void *dest,
 596                                                        int32_t *num_vals, pmix_data_type_t type);
 597 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_query(pmix_pointer_array_t *regtypes,
 598                                                         pmix_buffer_t *buffer, void *dest,
 599                                                         int32_t *num_vals, pmix_data_type_t type);
 600 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_alloc_directive(pmix_pointer_array_t *regtypes,
 601                                                                   pmix_buffer_t *buffer, void *dest,
 602                                                                   int32_t *num_vals, pmix_data_type_t type);
 603 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_iof_channel(pmix_pointer_array_t *regtypes,
 604                                                               pmix_buffer_t *buffer, void *dest,
 605                                                               int32_t *num_vals, pmix_data_type_t type);
 606 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_envar(pmix_pointer_array_t *regtypes,
 607                                                         pmix_buffer_t *buffer, void *dest,
 608                                                         int32_t *num_vals, pmix_data_type_t type);
 609 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_coord(pmix_pointer_array_t *regtypes,
 610                                                         pmix_buffer_t *buffer, void *dest,
 611                                                         int32_t *num_vals, pmix_data_type_t type);
 612 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_regattr(pmix_pointer_array_t *regtypes,
 613                                                           pmix_buffer_t *buffer, void *dest,
 614                                                           int32_t *num_vals, pmix_data_type_t type);
 615 /**** DEPRECATED ****/
 616 PMIX_EXPORT pmix_status_t pmix_bfrops_base_unpack_array(pmix_pointer_array_t *regtypes,
 617                                                         pmix_buffer_t *buffer, void *dest,
 618                                                         int32_t *num_vals, pmix_data_type_t type);
 619 
 620 /*
 621 * "Standard" copy functions
 622 */
 623 PMIX_EXPORT pmix_status_t pmix_bfrops_base_copy(pmix_pointer_array_t *regtypes,
 624                                                 void **dest, void *src,
 625                                                 pmix_data_type_t type);
 626 PMIX_EXPORT pmix_status_t pmix_bfrops_base_copy_payload(pmix_buffer_t *dest,
 627                                                         pmix_buffer_t *src);
 628 
 629 PMIX_EXPORT pmix_status_t pmix_bfrops_base_std_copy(void **dest, void *src,
 630                                                     pmix_data_type_t type);
 631 
 632 PMIX_EXPORT pmix_status_t pmix_bfrops_base_copy_string(char **dest, char *src,
 633                                                        pmix_data_type_t type);
 634 
 635 PMIX_EXPORT pmix_status_t pmix_bfrops_base_copy_value(pmix_value_t **dest,
 636                                                       pmix_value_t *src,
 637                                                       pmix_data_type_t type);
 638 PMIX_EXPORT pmix_status_t pmix_bfrops_base_copy_proc(pmix_proc_t **dest,
 639                                                      pmix_proc_t *src,
 640                                                      pmix_data_type_t type);
 641 PMIX_EXPORT pmix_status_t pmix_bfrops_base_copy_app(pmix_app_t **dest,
 642                                                     pmix_app_t *src,
 643                                                     pmix_data_type_t type);
 644 PMIX_EXPORT pmix_status_t pmix_bfrops_base_copy_info(pmix_info_t **dest,
 645                                                      pmix_info_t *src,
 646                                                      pmix_data_type_t type);
 647 PMIX_EXPORT pmix_status_t pmix_bfrops_base_copy_buf(pmix_buffer_t **dest,
 648                                                     pmix_buffer_t *src,
 649                                                     pmix_data_type_t type);
 650 PMIX_EXPORT pmix_status_t pmix_bfrops_base_copy_kval(pmix_kval_t **dest,
 651                                                      pmix_kval_t *src,
 652                                                      pmix_data_type_t type);
 653 PMIX_EXPORT pmix_status_t pmix_bfrop_base_copy_persist(pmix_persistence_t **dest,
 654                                                        pmix_persistence_t *src,
 655                                                        pmix_data_type_t type);
 656 PMIX_EXPORT pmix_status_t pmix_bfrops_base_copy_bo(pmix_byte_object_t **dest,
 657                                                    pmix_byte_object_t *src,
 658                                                    pmix_data_type_t type);
 659 PMIX_EXPORT pmix_status_t pmix_bfrops_base_copy_pdata(pmix_pdata_t **dest,
 660                                                       pmix_pdata_t *src,
 661                                                       pmix_data_type_t type);
 662 PMIX_EXPORT pmix_status_t pmix_bfrops_base_copy_pinfo(pmix_proc_info_t **dest,
 663                                                       pmix_proc_info_t *src,
 664                                                       pmix_data_type_t type);
 665 PMIX_EXPORT pmix_status_t pmix_bfrops_base_copy_darray(pmix_data_array_t **dest,
 666                                                        pmix_data_array_t *src,
 667                                                        pmix_data_type_t type);
 668 PMIX_EXPORT pmix_status_t pmix_bfrops_base_copy_query(pmix_query_t **dest,
 669                                                       pmix_query_t *src,
 670                                                       pmix_data_type_t type);
 671 PMIX_EXPORT pmix_status_t pmix_bfrops_base_copy_envar(pmix_envar_t **dest,
 672                                                       pmix_envar_t *src,
 673                                                       pmix_data_type_t type);
 674 PMIX_EXPORT pmix_status_t pmix_bfrops_base_copy_coord(pmix_coord_t **dest,
 675                                                       pmix_coord_t *src,
 676                                                       pmix_data_type_t type);
 677 PMIX_EXPORT pmix_status_t pmix_bfrops_base_copy_regattr(pmix_regattr_t **dest,
 678                                                         pmix_regattr_t *src,
 679                                                         pmix_data_type_t type);
 680 
 681 /*
 682 * "Standard" print functions
 683 */
 684 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print(pmix_pointer_array_t *regtypes,
 685                                                  char **output, char *prefix,
 686                                                  void *src, pmix_data_type_t type);
 687 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_bool(char **output, char *prefix,
 688                                                       bool *src, pmix_data_type_t type);
 689 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_byte(char **output, char *prefix,
 690                                                       uint8_t *src, pmix_data_type_t type);
 691 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_string(char **output, char *prefix,
 692                                                         char *src, pmix_data_type_t type);
 693 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_size(char **output, char *prefix,
 694                                                       size_t *src, pmix_data_type_t type);
 695 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_pid(char **output, char *prefix,
 696                                                      pid_t *src, pmix_data_type_t type);
 697 
 698 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_int(char **output, char *prefix,
 699                                                      int *src, pmix_data_type_t type);
 700 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_int8(char **output, char *prefix,
 701                                                       int8_t *src, pmix_data_type_t type);
 702 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_int16(char **output, char *prefix,
 703                                                        int16_t *src, pmix_data_type_t type);
 704 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_int32(char **output, char *prefix,
 705                                                        int32_t *src, pmix_data_type_t type);
 706 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_int64(char **output, char *prefix,
 707                                                        int64_t *src, pmix_data_type_t type);
 708 
 709 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_uint(char **output, char *prefix,
 710                                                       uint *src, pmix_data_type_t type);
 711 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_uint8(char **output, char *prefix,
 712                                                        uint8_t *src, pmix_data_type_t type);
 713 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_uint16(char **output, char *prefix,
 714                                                         uint16_t *src, pmix_data_type_t type);
 715 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_uint32(char **output, char *prefix,
 716                                                         uint32_t *src, pmix_data_type_t type);
 717 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_uint64(char **output, char *prefix,
 718                                                         uint64_t *src, pmix_data_type_t type);
 719 
 720 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_float(char **output, char *prefix,
 721                                                        float *src, pmix_data_type_t type);
 722 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_double(char **output, char *prefix,
 723                                                         double *src, pmix_data_type_t type);
 724 
 725 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_timeval(char **output, char *prefix,
 726                                                          struct timeval *src, pmix_data_type_t type);
 727 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_time(char **output, char *prefix,
 728                                                       time_t *src, pmix_data_type_t type);
 729 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_status(char **output, char *prefix,
 730                                                         pmix_status_t *src, pmix_data_type_t type);
 731 
 732 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_value(char **output, char *prefix,
 733                                                        pmix_value_t *src, pmix_data_type_t type);
 734 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_proc(char **output, char *prefix,
 735                                                       pmix_proc_t *src, pmix_data_type_t type);
 736 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_app(char **output, char *prefix,
 737                                                      pmix_app_t *src, pmix_data_type_t type);
 738 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_info(char **output, char *prefix,
 739                                                       pmix_info_t *src, pmix_data_type_t type);
 740 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_buf(char **output, char *prefix,
 741                                                      pmix_buffer_t *src, pmix_data_type_t type);
 742 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_kval(char **output, char *prefix,
 743                                                       pmix_kval_t *src, pmix_data_type_t type);
 744 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_persist(char **output, char *prefix,
 745                                                          pmix_persistence_t *src, pmix_data_type_t type);
 746 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_bo(char **output, char *prefix,
 747                                                     pmix_byte_object_t *src, pmix_data_type_t type);
 748 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_pdata(char **output, char *prefix,
 749                                                        pmix_pdata_t *src, pmix_data_type_t type);
 750 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_ptr(char **output, char *prefix,
 751                                                      void *src, pmix_data_type_t type);
 752 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_scope(char **output, char *prefix,
 753                                                        pmix_scope_t *src, pmix_data_type_t type);
 754 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_range(char **output, char *prefix,
 755                                                        pmix_data_range_t *src, pmix_data_type_t type);
 756 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_cmd(char **output, char *prefix,
 757                                                      pmix_cmd_t *src, pmix_data_type_t type);
 758 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_info_directives(char **output, char *prefix,
 759                                                                  pmix_info_directives_t *src,
 760                                                                  pmix_data_type_t type);
 761 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_datatype(char **output, char *prefix,
 762                                                           pmix_data_type_t *src,
 763                                                           pmix_data_type_t type);
 764 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_pstate(char **output, char *prefix,
 765                                                         pmix_proc_state_t *src,
 766                                                         pmix_data_type_t type);
 767 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_pinfo(char **output, char *prefix,
 768                                                        pmix_proc_info_t *src,
 769                                                        pmix_data_type_t type);
 770 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_darray(char **output, char *prefix,
 771                                                         pmix_data_array_t *src,
 772                                                         pmix_data_type_t type);
 773 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_query(char **output, char *prefix,
 774                                                        pmix_query_t *src,
 775                                                        pmix_data_type_t type);
 776 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_rank(char **output, char *prefix,
 777                                                       pmix_rank_t *src,
 778                                                       pmix_data_type_t type);
 779 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_alloc_directive(char **output, char *prefix,
 780                                                                  pmix_alloc_directive_t *src,
 781                                                                  pmix_data_type_t type);
 782 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_iof_channel(char **output, char *prefix,
 783                                                             pmix_iof_channel_t *src,
 784                                                             pmix_data_type_t type);
 785 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_envar(char **output, char *prefix,
 786                                                        pmix_envar_t *src,
 787                                                        pmix_data_type_t type);
 788 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_coord(char **output, char *prefix,
 789                                                        pmix_coord_t *src,
 790                                                        pmix_data_type_t type);
 791 PMIX_EXPORT pmix_status_t pmix_bfrops_base_print_regattr(char **output, char *prefix,
 792                                                          pmix_regattr_t *src,
 793                                                          pmix_data_type_t type);
 794 
 795 /*
 796  * Common helper functions
 797  */
 798 
 799 PMIX_EXPORT char* pmix_bfrop_buffer_extend(pmix_buffer_t *bptr, size_t bytes_to_add);
 800 
 801 PMIX_EXPORT bool pmix_bfrop_too_small(pmix_buffer_t *buffer, size_t bytes_reqd);
 802 
 803 PMIX_EXPORT pmix_status_t pmix_bfrop_store_data_type(pmix_pointer_array_t *regtypes,
 804                                                      pmix_buffer_t *buffer, pmix_data_type_t type);
 805 
 806 PMIX_EXPORT pmix_status_t pmix_bfrop_get_data_type(pmix_pointer_array_t *regtypes,
 807                                                    pmix_buffer_t *buffer, pmix_data_type_t *type);
 808 
 809 PMIX_EXPORT pmix_status_t pmix_bfrops_base_copy_payload(pmix_buffer_t *dest,
 810                                                         pmix_buffer_t *src);
 811 
 812 PMIX_EXPORT void pmix_bfrops_base_value_load(pmix_value_t *v, const void *data,
 813                                              pmix_data_type_t type);
 814 
 815 PMIX_EXPORT pmix_status_t pmix_bfrops_base_value_unload(pmix_value_t *kv,
 816                                                         void **data,
 817                                                         size_t *sz);
 818 
 819 PMIX_EXPORT pmix_status_t pmix_bfrops_base_value_xfer(pmix_value_t *p,
 820                                                       const pmix_value_t *src);
 821 
 822 PMIX_EXPORT pmix_value_cmp_t pmix_bfrops_base_value_cmp(pmix_value_t *p,
 823                                                         pmix_value_t *p1);
 824 
 825 END_C_DECLS
 826 
 827 #endif

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