root/orte/util/attr.h

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

INCLUDED FROM


   1 /*
   2  * Copyright (c) 2014-2018 Intel, Inc. All rights reserved.
   3  * Copyright (c) 2016      Research Organization for Information Science
   4  *                         and Technology (RIST). All rights reserved.
   5  * $COPYRIGHT$
   6  *
   7  * Additional copyrights may follow
   8  *
   9  * $HEADER$
  10  */
  11 
  12 #ifndef ORTE_ATTRS_H
  13 #define ORTE_ATTRS_H
  14 
  15 #include "orte_config.h"
  16 #include "orte/types.h"
  17 
  18 /*** FLAG FOR SETTING ATTRIBUTES - INDICATES IF THE
  19  *** ATTRIBUTE IS TO BE SHARED WITH REMOTE PROCS OR NOT
  20  */
  21 #define ORTE_ATTR_LOCAL    true      // for local use only
  22 #define ORTE_ATTR_GLOBAL   false     // include when sending this object
  23 
  24 /* define the mininum value of the ORTE keys just in
  25  * case someone someday puts a layer underneath us */
  26 #define ORTE_ATTR_KEY_BASE        0
  27 
  28 /*** ATTRIBUTE FLAGS - never sent anywwhere ***/
  29 typedef uint8_t orte_app_context_flags_t;
  30 #define ORTE_APP_FLAG_USED_ON_NODE  0x01  // is being used on the local node
  31 
  32 
  33 /* APP_CONTEXT ATTRIBUTE KEYS */
  34 #define ORTE_APP_HOSTFILE            1    // string  - hostfile
  35 #define ORTE_APP_ADD_HOSTFILE        2    // string  - hostfile to be added
  36 #define ORTE_APP_DASH_HOST           3    // string  - hosts specified with -host option
  37 #define ORTE_APP_ADD_HOST            4    // string  - hosts to be added
  38 #define ORTE_APP_USER_CWD            5    // bool  - user specified cwd
  39 #define ORTE_APP_SSNDIR_CWD          6    // bool  - use session dir as cwd
  40 #define ORTE_APP_PRELOAD_BIN         7    // bool  - move binaries to remote nodes prior to exec
  41 #define ORTE_APP_PRELOAD_FILES       8    // string  - files to be moved to remote nodes prior to exec
  42 #define ORTE_APP_SSTORE_LOAD         9    // string
  43 #define ORTE_APP_RECOV_DEF          10    // bool  - whether or not a recovery policy was defined
  44 #define ORTE_APP_MAX_RESTARTS       11    // int32 - max number of times a process can be restarted
  45 #define ORTE_APP_MIN_NODES          12    // int64 - min number of nodes required
  46 #define ORTE_APP_MANDATORY          13    // bool - flag if nodes requested in -host are "mandatory" vs "optional"
  47 #define ORTE_APP_MAX_PPN            14    // uint32 - maximum number of procs/node for this app
  48 #define ORTE_APP_PREFIX_DIR         15    // string - prefix directory for this app, if override necessary
  49 #define ORTE_APP_NO_CACHEDIR        16    // bool - flag that a cache dir is not to be specified for a Singularity container
  50 #define ORTE_APP_SET_ENVAR          17    // opal_envar_t - set the given envar to the specified value
  51 #define ORTE_APP_UNSET_ENVAR        18    // string - name of envar to unset, if present
  52 #define ORTE_APP_PREPEND_ENVAR      19    // opal_envar_t - prepend the specified value to the given envar
  53 #define ORTE_APP_APPEND_ENVAR       20    // opal_envar_t - append the specified value to the given envar
  54 #define ORTE_APP_ADD_ENVAR          21    // opal_envar_t - add envar, do not override pre-existing one
  55 #define ORTE_APP_PSET_NAME          23    // string - user-assigned name for the process
  56                                           //          set containing the given process
  57 
  58 #define ORTE_APP_MAX_KEY        100
  59 
  60 
  61 /*** NODE FLAGS - never sent anywhere ***/
  62 typedef uint8_t orte_node_flags_t;
  63 #define ORTE_NODE_FLAG_DAEMON_LAUNCHED    0x01   // whether or not the daemon on this node has been launched
  64 #define ORTE_NODE_FLAG_LOC_VERIFIED       0x02   // whether or not the location has been verified - used for
  65                                                  // environments where the daemon's final destination is uncertain
  66 #define ORTE_NODE_FLAG_OVERSUBSCRIBED     0x04   // whether or not this node is oversubscribed
  67 #define ORTE_NODE_FLAG_MAPPED             0x08   // whether we have been added to the current map
  68 #define ORTE_NODE_FLAG_SLOTS_GIVEN        0x10   // the number of slots was specified - used only in non-managed environments
  69 #define ORTE_NODE_NON_USABLE              0x20   // the node is hosting a tool and is NOT to be used for jobs
  70 
  71 
  72 /*** NODE ATTRIBUTE KEYS - never sent anywhere ***/
  73 #define ORTE_NODE_START_KEY    ORTE_APP_MAX_KEY
  74 
  75 #define ORTE_NODE_USERNAME       (ORTE_NODE_START_KEY + 1)
  76 #define ORTE_NODE_LAUNCH_ID      (ORTE_NODE_START_KEY + 2)   // int32 - Launch id needed by some systems to launch a proc on this node
  77 #define ORTE_NODE_HOSTID         (ORTE_NODE_START_KEY + 3)   // orte_vpid_t - if this "node" is a coprocessor being hosted on a different node, then
  78                                                              // we need to know the id of our "host" to help any procs on us to determine locality
  79 #define ORTE_NODE_ALIAS          (ORTE_NODE_START_KEY + 4)   // comma-separate list of alternate names for the node
  80 #define ORTE_NODE_SERIAL_NUMBER  (ORTE_NODE_START_KEY + 5)   // string - serial number: used if node is a coprocessor
  81 #define ORTE_NODE_PORT           (ORTE_NODE_START_KEY + 6)   // int32 - Alternate port to be passed to plm
  82 
  83 #define ORTE_NODE_MAX_KEY        200
  84 
  85 /*** JOB FLAGS - included in orte_job_t transmissions ***/
  86 typedef uint16_t orte_job_flags_t;
  87 #define ORTE_JOB_FLAGS_T  OPAL_UINT16
  88 #define ORTE_JOB_FLAG_UPDATED            0x0001   // job has been updated and needs to be included in the pidmap message
  89 #define ORTE_JOB_FLAG_RESTARTED          0x0004   // some procs in this job are being restarted
  90 #define ORTE_JOB_FLAG_ABORTED            0x0008   // did this job abort?
  91 #define ORTE_JOB_FLAG_DEBUGGER_DAEMON    0x0010   // job is launching debugger daemons
  92 #define ORTE_JOB_FLAG_FORWARD_OUTPUT     0x0020   // forward output from the apps
  93 #define ORTE_JOB_FLAG_DO_NOT_MONITOR     0x0040   // do not monitor apps for termination
  94 #define ORTE_JOB_FLAG_FORWARD_COMM       0x0080   //
  95 #define ORTE_JOB_FLAG_RECOVERABLE        0x0100   // job is recoverable
  96 #define ORTE_JOB_FLAG_RESTART            0x0200   //
  97 #define ORTE_JOB_FLAG_PROCS_MIGRATING    0x0400   // some procs in job are migrating from one node to another
  98 #define ORTE_JOB_FLAG_OVERSUBSCRIBED     0x0800   // at least one node in the job is oversubscribed
  99 
 100 /***   JOB ATTRIBUTE KEYS   ***/
 101 #define ORTE_JOB_START_KEY   ORTE_NODE_MAX_KEY
 102 
 103 #define ORTE_JOB_LAUNCH_MSG_SENT        (ORTE_JOB_START_KEY + 1)     // timeval - time launch message was sent
 104 #define ORTE_JOB_LAUNCH_MSG_RECVD       (ORTE_JOB_START_KEY + 2)     // timeval - time launch message was recvd
 105 #define ORTE_JOB_MAX_LAUNCH_MSG_RECVD   (ORTE_JOB_START_KEY + 3)     // timeval - max time for launch msg to be received
 106 #define ORTE_JOB_CKPT_STATE             (ORTE_JOB_START_KEY + 5)     // size_t - ckpt state
 107 #define ORTE_JOB_SNAPSHOT_REF           (ORTE_JOB_START_KEY + 6)     // string - snapshot reference
 108 #define ORTE_JOB_SNAPSHOT_LOC           (ORTE_JOB_START_KEY + 7)     // string - snapshot location
 109 #define ORTE_JOB_SNAPC_INIT_BAR         (ORTE_JOB_START_KEY + 8)     // orte_grpcomm_coll_id_t - collective id
 110 #define ORTE_JOB_SNAPC_FINI_BAR         (ORTE_JOB_START_KEY + 9)     // orte_grpcomm_coll_id_t - collective id
 111 #define ORTE_JOB_NUM_NONZERO_EXIT       (ORTE_JOB_START_KEY + 10)    // int32 - number of procs with non-zero exit codes
 112 #define ORTE_JOB_FAILURE_TIMER_EVENT    (ORTE_JOB_START_KEY + 11)    // opal_ptr (orte_timer_t*) - timer event for failure detect/response if fails to launch
 113 #define ORTE_JOB_ABORTED_PROC           (ORTE_JOB_START_KEY + 12)    // opal_ptr (orte_proc_t*) - proc that caused abort to happen
 114 #define ORTE_JOB_MAPPER                 (ORTE_JOB_START_KEY + 13)    // bool - job consists of MapReduce mappers
 115 #define ORTE_JOB_REDUCER                (ORTE_JOB_START_KEY + 14)    // bool - job consists of MapReduce reducers
 116 #define ORTE_JOB_COMBINER               (ORTE_JOB_START_KEY + 15)    // bool - job consists of MapReduce combiners
 117 #define ORTE_JOB_INDEX_ARGV             (ORTE_JOB_START_KEY + 16)    // bool - automatically index argvs
 118 #define ORTE_JOB_NO_VM                  (ORTE_JOB_START_KEY + 17)    // bool - do not use VM launch
 119 #define ORTE_JOB_SPIN_FOR_DEBUG         (ORTE_JOB_START_KEY + 18)    // bool - job consists of continuously operating apps
 120 #define ORTE_JOB_CONTINUOUS_OP          (ORTE_JOB_START_KEY + 19)    // bool - recovery policy defined for job
 121 #define ORTE_JOB_RECOVER_DEFINED        (ORTE_JOB_START_KEY + 20)    // bool - recovery policy has been defined
 122 #define ORTE_JOB_NON_ORTE_JOB           (ORTE_JOB_START_KEY + 22)    // bool - non-orte job
 123 #define ORTE_JOB_STDOUT_TARGET          (ORTE_JOB_START_KEY + 23)    // orte_jobid_t - job that is to receive the stdout (on its stdin) from this one
 124 #define ORTE_JOB_POWER                  (ORTE_JOB_START_KEY + 24)    // string - power setting for nodes in job
 125 #define ORTE_JOB_MAX_FREQ               (ORTE_JOB_START_KEY + 25)    // string - max freq setting for nodes in job
 126 #define ORTE_JOB_MIN_FREQ               (ORTE_JOB_START_KEY + 26)    // string - min freq setting for nodes in job
 127 #define ORTE_JOB_GOVERNOR               (ORTE_JOB_START_KEY + 27)    // string - governor used for nodes in job
 128 #define ORTE_JOB_FAIL_NOTIFIED          (ORTE_JOB_START_KEY + 28)    // bool - abnormal term of proc within job has been reported
 129 #define ORTE_JOB_TERM_NOTIFIED          (ORTE_JOB_START_KEY + 29)    // bool - normal term of job has been reported
 130 #define ORTE_JOB_PEER_MODX_ID           (ORTE_JOB_START_KEY + 30)    // orte_grpcomm_coll_id_t - collective id
 131 #define ORTE_JOB_INIT_BAR_ID            (ORTE_JOB_START_KEY + 31)    // orte_grpcomm_coll_id_t - collective id
 132 #define ORTE_JOB_FINI_BAR_ID            (ORTE_JOB_START_KEY + 32)    // orte_grpcomm_coll_id_t - collective id
 133 #define ORTE_JOB_FWDIO_TO_TOOL          (ORTE_JOB_START_KEY + 33)    // Forward IO for this job to the tool requesting its spawn
 134 #define ORTE_JOB_PHYSICAL_CPUIDS        (ORTE_JOB_START_KEY + 34)    // bool - Hostfile contains physical jobids in cpuset
 135 #define ORTE_JOB_LAUNCHED_DAEMONS       (ORTE_JOB_START_KEY + 35)    // bool - Job caused new daemons to be spawned
 136 #define ORTE_JOB_REPORT_BINDINGS        (ORTE_JOB_START_KEY + 36)    // bool - Report process bindings
 137 #define ORTE_JOB_CPU_LIST               (ORTE_JOB_START_KEY + 37)    // string - cpus to which procs are to be bound
 138 #define ORTE_JOB_NOTIFICATIONS          (ORTE_JOB_START_KEY + 38)    // string - comma-separated list of desired notifications+methods
 139 #define ORTE_JOB_ROOM_NUM               (ORTE_JOB_START_KEY + 39)    // int - number of remote request's hotel room
 140 #define ORTE_JOB_LAUNCH_PROXY           (ORTE_JOB_START_KEY + 40)    // opal_process_name_t - name of spawn requestor
 141 #define ORTE_JOB_NSPACE_REGISTERED      (ORTE_JOB_START_KEY + 41)    // bool - job has been registered with embedded PMIx server
 142 #define ORTE_JOB_FIXED_DVM              (ORTE_JOB_START_KEY + 42)    // bool - do not change the size of the DVM for this job
 143 #define ORTE_JOB_DVM_JOB                (ORTE_JOB_START_KEY + 43)    // bool - job is using a DVM
 144 #define ORTE_JOB_CANCELLED              (ORTE_JOB_START_KEY + 44)    // bool - job was cancelled
 145 #define ORTE_JOB_OUTPUT_TO_FILE         (ORTE_JOB_START_KEY + 45)    // string - name of directory to which stdout/err is to be directed
 146 #define ORTE_JOB_MERGE_STDERR_STDOUT    (ORTE_JOB_START_KEY + 46)    // bool - merge stderr into stdout stream
 147 #define ORTE_JOB_TAG_OUTPUT             (ORTE_JOB_START_KEY + 47)    // bool - tag stdout/stderr
 148 #define ORTE_JOB_TIMESTAMP_OUTPUT       (ORTE_JOB_START_KEY + 48)    // bool - timestamp stdout/stderr
 149 #define ORTE_JOB_MULTI_DAEMON_SIM       (ORTE_JOB_START_KEY + 49)    // bool - multiple daemons/node to simulate large cluster
 150 #define ORTE_JOB_NOTIFY_COMPLETION      (ORTE_JOB_START_KEY + 50)    // bool - notify parent proc when spawned job terminates
 151 #define ORTE_JOB_TRANSPORT_KEY          (ORTE_JOB_START_KEY + 51)    // string - transport keys assigned to this job
 152 #define ORTE_JOB_INFO_CACHE             (ORTE_JOB_START_KEY + 52)    // opal_list_t - list of opal_value_t to be included in job_info
 153 #define ORTE_JOB_FULLY_DESCRIBED        (ORTE_JOB_START_KEY + 53)    // bool - job is fully described in launch msg
 154 #define ORTE_JOB_SILENT_TERMINATION     (ORTE_JOB_START_KEY + 54)    // bool - do not generate an event notification when job
 155                                                                      //        normally terminates
 156 #define ORTE_JOB_SET_ENVAR              (ORTE_JOB_START_KEY + 55)    // opal_envar_t - set the given envar to the specified value
 157 #define ORTE_JOB_UNSET_ENVAR            (ORTE_JOB_START_KEY + 56)    // string - name of envar to unset, if present
 158 #define ORTE_JOB_PREPEND_ENVAR          (ORTE_JOB_START_KEY + 57)    // opal_envar_t - prepend the specified value to the given envar
 159 #define ORTE_JOB_APPEND_ENVAR           (ORTE_JOB_START_KEY + 58)    // opal_envar_t - append the specified value to the given envar
 160 #define ORTE_JOB_ADD_ENVAR              (ORTE_JOB_START_KEY + 59)    // opal_envar_t - add envar, do not override pre-existing one
 161 #define ORTE_JOB_APP_SETUP_DATA         (ORTE_JOB_START_KEY + 60)    // opal_byte_object_t - blob containing app setup data
 162 
 163 #define ORTE_JOB_MAX_KEY   300
 164 
 165 
 166 /*** PROC FLAGS - never sent anywhere ***/
 167 typedef uint16_t orte_proc_flags_t;
 168 #define ORTE_PROC_FLAG_ALIVE         0x0001  // proc has been launched and has not yet terminated
 169 #define ORTE_PROC_FLAG_ABORT         0x0002  // proc called abort
 170 #define ORTE_PROC_FLAG_UPDATED       0x0004  // proc has been updated and need to be included in the next pidmap message
 171 #define ORTE_PROC_FLAG_LOCAL         0x0008  // indicate that this proc is local
 172 #define ORTE_PROC_FLAG_REPORTED      0x0010  // indicate proc has reported in
 173 #define ORTE_PROC_FLAG_REG           0x0020  // proc has registered
 174 #define ORTE_PROC_FLAG_HAS_DEREG     0x0040  // proc has deregistered
 175 #define ORTE_PROC_FLAG_AS_MPI        0x0080  // proc is MPI process
 176 #define ORTE_PROC_FLAG_IOF_COMPLETE  0x0100  // IOF has completed
 177 #define ORTE_PROC_FLAG_WAITPID       0x0200  // waitpid fired
 178 #define ORTE_PROC_FLAG_RECORDED      0x0400  // termination has been recorded
 179 #define ORTE_PROC_FLAG_DATA_IN_SM    0x0800  // modex data has been stored in the local shared memory region
 180 #define ORTE_PROC_FLAG_DATA_RECVD    0x1000  // modex data for this proc has been received
 181 #define ORTE_PROC_FLAG_SM_ACCESS     0x2000  // indicate if process can read modex data from shared memory region
 182 #define ORTE_PROC_FLAG_TOOL          0x4000  // proc is a tool and doesn't count against allocations
 183 
 184 /***   PROCESS ATTRIBUTE KEYS   ***/
 185 #define ORTE_PROC_START_KEY   ORTE_JOB_MAX_KEY
 186 
 187 #define ORTE_PROC_NOBARRIER       (ORTE_PROC_START_KEY +  1)           // bool  - indicates proc should not barrier in orte_init
 188 #define ORTE_PROC_CPU_BITMAP      (ORTE_PROC_START_KEY +  2)           // string - string representation of cpu bindings
 189 #define ORTE_PROC_HWLOC_LOCALE    (ORTE_PROC_START_KEY +  3)           // opal_ptr (hwloc_obj_t) = pointer to object where proc was mapped
 190 #define ORTE_PROC_HWLOC_BOUND     (ORTE_PROC_START_KEY +  4)           // opal_ptr (hwloc_obj_t) = pointer to object where proc was bound
 191 #define ORTE_PROC_PRIOR_NODE      (ORTE_PROC_START_KEY +  5)           // void* - pointer to orte_node_t where this proc last executed
 192 #define ORTE_PROC_NRESTARTS       (ORTE_PROC_START_KEY +  6)           // int32 - number of times this process has been restarted
 193 #define ORTE_PROC_RESTART_TIME    (ORTE_PROC_START_KEY +  7)           // timeval - time of last restart
 194 #define ORTE_PROC_FAST_FAILS      (ORTE_PROC_START_KEY +  8)           // int32 - number of failures in "fast" window
 195 #define ORTE_PROC_CKPT_STATE      (ORTE_PROC_START_KEY +  9)           // size_t - ckpt state
 196 #define ORTE_PROC_SNAPSHOT_REF    (ORTE_PROC_START_KEY + 10)           // string - snapshot reference
 197 #define ORTE_PROC_SNAPSHOT_LOC    (ORTE_PROC_START_KEY + 11)           // string - snapshot location
 198 #define ORTE_PROC_NODENAME        (ORTE_PROC_START_KEY + 12)           // string - node where proc is located, used only by tools
 199 #define ORTE_PROC_CGROUP          (ORTE_PROC_START_KEY + 13)           // string - name of cgroup this proc shall be assigned to
 200 #define ORTE_PROC_NBEATS          (ORTE_PROC_START_KEY + 14)           // int32 - number of heartbeats in current window
 201 
 202 #define ORTE_PROC_MAX_KEY   400
 203 
 204 /*** RML ATTRIBUTE keys ***/
 205 #define ORTE_RML_START_KEY  ORTE_PROC_MAX_KEY
 206 #define ORTE_RML_TRANSPORT_TYPE         (ORTE_RML_START_KEY +  1)   // string - null terminated string containing transport type
 207 #define ORTE_RML_PROTOCOL_TYPE          (ORTE_RML_START_KEY +  2)   // string - protocol type (e.g., as returned by fi_info)
 208 #define ORTE_RML_CONDUIT_ID             (ORTE_RML_START_KEY +  3)   // orte_rml_conduit_t - conduit_id for this transport
 209 #define ORTE_RML_INCLUDE_COMP_ATTRIB    (ORTE_RML_START_KEY +  4)   // string - comma delimited list of RML component names to be considered
 210 #define ORTE_RML_EXCLUDE_COMP_ATTRIB    (ORTE_RML_START_KEY +  5)   // string - comma delimited list of RML component names to be excluded
 211 #define ORTE_RML_TRANSPORT_ATTRIB       (ORTE_RML_START_KEY +  6)   // string - comma delimited list of transport types to be considered (e.g., "fabric,ethernet")
 212 #define ORTE_RML_QUALIFIER_ATTRIB       (ORTE_RML_START_KEY +  7)   // string - comma delimited list of qualifiers (e.g., routed=direct,bandwidth=xxx)
 213 #define ORTE_RML_PROVIDER_ATTRIB        (ORTE_RML_START_KEY +  8)   // string - comma delimited list of provider names to be considered
 214 #define ORTE_RML_PROTOCOL_ATTRIB        (ORTE_RML_START_KEY +  9)   // string - comma delimited list of protocols to be considered (e.g., tcp,udp)
 215 #define ORTE_RML_ROUTED_ATTRIB          (ORTE_RML_START_KEY + 10)   // string - comma delimited list of routed modules to be considered
 216 
 217 #define ORTE_ATTR_KEY_MAX  1000
 218 
 219 
 220 /*** FLAG OPS ***/
 221 #define ORTE_FLAG_SET(p, f)         ((p)->flags |= (f))
 222 #define ORTE_FLAG_UNSET(p, f)       ((p)->flags &= ~(f))
 223 #define ORTE_FLAG_TEST(p, f)        ((p)->flags & (f))
 224 
 225 ORTE_DECLSPEC const char *orte_attr_key_to_str(orte_attribute_key_t key);
 226 
 227 /* Retrieve the named attribute from a list */
 228 ORTE_DECLSPEC bool orte_get_attribute(opal_list_t *attributes, orte_attribute_key_t key,
 229                                       void **data, opal_data_type_t type);
 230 
 231 /* Set the named attribute in a list, overwriting any prior entry */
 232 ORTE_DECLSPEC int orte_set_attribute(opal_list_t *attributes, orte_attribute_key_t key,
 233                                      bool local, void *data, opal_data_type_t type);
 234 
 235 /* Remove the named attribute from a list */
 236 ORTE_DECLSPEC void orte_remove_attribute(opal_list_t *attributes, orte_attribute_key_t key);
 237 
 238 ORTE_DECLSPEC orte_attribute_t* orte_fetch_attribute(opal_list_t *attributes,
 239                                                      orte_attribute_t *prev,
 240                                                      orte_attribute_key_t key);
 241 
 242 ORTE_DECLSPEC int orte_add_attribute(opal_list_t *attributes,
 243                                      orte_attribute_key_t key, bool local,
 244                                      void *data, opal_data_type_t type);
 245 
 246 ORTE_DECLSPEC int orte_prepend_attribute(opal_list_t *attributes,
 247                                          orte_attribute_key_t key, bool local,
 248                                          void *data, opal_data_type_t type);
 249 
 250 ORTE_DECLSPEC int orte_attr_load(orte_attribute_t *kv,
 251                                  void *data, opal_data_type_t type);
 252 
 253 ORTE_DECLSPEC int orte_attr_unload(orte_attribute_t *kv,
 254                                    void **data, opal_data_type_t type);
 255 
 256 /*
 257  * Register a handler for converting attr keys to strings
 258  *
 259  * Handlers will be invoked by orte_attr_key_to_str to return the appropriate value.
 260  */
 261 typedef char* (*orte_attr2str_fn_t)(orte_attribute_key_t key);
 262 
 263 ORTE_DECLSPEC int orte_attr_register(const char *project,
 264                                      orte_attribute_key_t key_base,
 265                                      orte_attribute_key_t key_max,
 266                                      orte_attr2str_fn_t converter);
 267 
 268 #endif

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