![]() |
|
|||
File indexing completed on 2025-02-22 10:47:22
0001 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */ 0002 /* 0003 * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana 0004 * University Research and Technology 0005 * Corporation. All rights reserved. 0006 * Copyright (c) 2004-2006 The University of Tennessee and The University 0007 * of Tennessee Research Foundation. All rights 0008 * reserved. 0009 * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, 0010 * University of Stuttgart. All rights reserved. 0011 * Copyright (c) 2004-2005 The Regents of the University of California. 0012 * All rights reserved. 0013 * Copyright (c) 2008-2011 Cisco Systems, Inc. All rights reserved. 0014 * Copyright (c) 2012-2015 Los Alamos National Security, LLC. All rights 0015 * reserved. 0016 * Copyright (c) 2016-2020 Intel, Inc. All rights reserved. 0017 * Copyright (c) 2021-2022 Nanook Consulting. All rights reserved. 0018 * $COPYRIGHT$ 0019 * 0020 * Additional copyrights may follow 0021 * 0022 * $HEADER$ 0023 */ 0024 0025 /** @file 0026 * This file presents the MCA variable interface. 0027 * 0028 * Note that there are two scopes for MCA variables: "normal" and 0029 * attributes. Specifically, all MCA variables are "normal" -- some 0030 * are special and may also be found on attributes on communicators, 0031 * datatypes, or windows. 0032 * 0033 * In general, these functions are intended to be used as follows: 0034 * 0035 * - Creating MCA variables 0036 * -# Register a variable, get an index back 0037 * - Using MCA variables 0038 * -# Lookup a "normal" variable value on a specific index, or 0039 * -# Lookup an attribute variable on a specific index and 0040 * communicator / datatype / window. 0041 * 0042 * MCA variables can be defined in multiple different places. As 0043 * such, variables are \em resolved to find their value. The order 0044 * of resolution is as follows: 0045 * 0046 * - An "override" location that is only available to be set via the 0047 * pmix_mca_base_param API. 0048 * - Look for an environment variable corresponding to the MCA 0049 * variable. 0050 * - See if a file contains the MCA variable (MCA variable files are 0051 * read only once -- when the first time any mca_param_t function is 0052 * invoked). 0053 * - If nothing else was found, use the variable's default value. 0054 * 0055 * Note that there is a second header file (pmix_mca_base_vari.h) 0056 * that contains several internal type declarations for the variable 0057 * system. The internal file is only used within the variable system 0058 * itself; it should not be required by any other PMIX entities. 0059 */ 0060 0061 #ifndef PMIX_MCA_BASE_VAR_H 0062 #define PMIX_MCA_BASE_VAR_H 0063 0064 #include "src/include/pmix_config.h" 0065 0066 #include "src/class/pmix_list.h" 0067 #include "src/class/pmix_value_array.h" 0068 #include "src/mca/base/pmix_mca_base_framework.h" 0069 #include "src/mca/base/pmix_mca_base_var_enum.h" 0070 #include "src/mca/base/pmix_mca_base_var_group.h" 0071 #include "src/mca/mca.h" 0072 0073 /** 0074 * The types of MCA variables. 0075 */ 0076 typedef enum { 0077 /** The variable is of type int. */ 0078 PMIX_MCA_BASE_VAR_TYPE_INT, 0079 /** The variable is of type unsigned int */ 0080 PMIX_MCA_BASE_VAR_TYPE_UNSIGNED_INT, 0081 /** The variable is of type unsigned long */ 0082 PMIX_MCA_BASE_VAR_TYPE_UNSIGNED_LONG, 0083 /** The variable is of type unsigned long long */ 0084 PMIX_MCA_BASE_VAR_TYPE_UNSIGNED_LONG_LONG, 0085 /** The variable is of type size_t */ 0086 PMIX_MCA_BASE_VAR_TYPE_SIZE_T, 0087 /** The variable is of type string. */ 0088 PMIX_MCA_BASE_VAR_TYPE_STRING, 0089 /** The variable is of type string and contains version. */ 0090 PMIX_MCA_BASE_VAR_TYPE_VERSION_STRING, 0091 /** The variable is of type bool */ 0092 PMIX_MCA_BASE_VAR_TYPE_BOOL, 0093 /** The variable is of type double */ 0094 PMIX_MCA_BASE_VAR_TYPE_DOUBLE, 0095 /** Maximum variable type. */ 0096 PMIX_MCA_BASE_VAR_TYPE_MAX 0097 } pmix_mca_base_var_type_t; 0098 0099 PMIX_EXPORT extern const char *pmix_var_type_names[]; 0100 0101 /** 0102 * Source of an MCA variable's value 0103 */ 0104 typedef enum { 0105 /** The default value */ 0106 PMIX_MCA_BASE_VAR_SOURCE_DEFAULT, 0107 /** The value came from the command line */ 0108 PMIX_MCA_BASE_VAR_SOURCE_COMMAND_LINE, 0109 /** The value came from the environment */ 0110 PMIX_MCA_BASE_VAR_SOURCE_ENV, 0111 /** The value came from a file */ 0112 PMIX_MCA_BASE_VAR_SOURCE_FILE, 0113 /** The value came a "set" API call */ 0114 PMIX_MCA_BASE_VAR_SOURCE_SET, 0115 /** The value came from the override file */ 0116 PMIX_MCA_BASE_VAR_SOURCE_OVERRIDE, 0117 0118 /** Maximum source type */ 0119 PMIX_MCA_BASE_VAR_SOURCE_MAX 0120 } pmix_mca_base_var_source_t; 0121 0122 typedef enum { 0123 PMIX_MCA_BASE_VAR_SYN_FLAG_DEPRECATED = 0x0001 0124 } pmix_mca_base_var_syn_flag_t; 0125 0126 typedef enum { 0127 PMIX_MCA_BASE_VAR_FLAG_NONE = 0x0000, 0128 /** Variable is deprecated */ 0129 PMIX_MCA_BASE_VAR_FLAG_DEPRECATED = 0x0008, 0130 /** Variable is valid */ 0131 PMIX_MCA_BASE_VAR_FLAG_VALID = 0x00010000, 0132 /** Variable is a synonym */ 0133 PMIX_MCA_BASE_VAR_FLAG_SYNONYM = 0x00020000, 0134 /** mbv_source_file needs to be freed */ 0135 PMIX_MCA_BASE_VAR_FLAG_SOURCE_FILE_NEEDS_FREE = 0x00040000 0136 } pmix_mca_base_var_flag_internal_t; 0137 0138 /** 0139 * Types for MCA parameters. 0140 */ 0141 typedef union { 0142 /** integer value */ 0143 int intval; 0144 /** unsigned int value */ 0145 unsigned int uintval; 0146 /** string value */ 0147 char *stringval; 0148 /** boolean value */ 0149 bool boolval; 0150 /** unsigned long value */ 0151 unsigned long ulval; 0152 /** unsigned long long value */ 0153 unsigned long long ullval; 0154 /** size_t value */ 0155 size_t sizetval; 0156 /** double value */ 0157 double lfval; 0158 } pmix_mca_base_var_storage_t; 0159 0160 /** 0161 * Entry for holding information about an MCA variable. 0162 */ 0163 struct pmix_mca_base_var_t { 0164 /** Allow this to be an PMIX OBJ */ 0165 pmix_object_t super; 0166 0167 /** Variable index. This will remain constant until pmix_mca_base_var_finalize() 0168 is called. */ 0169 int mbv_index; 0170 /** Group index. This will remain constant until pmix_mca_base_var_finalize() 0171 is called. This variable will be deregistered if the associated group 0172 is deregistered with pmix_mca_base_var_group_deregister() */ 0173 int mbv_group_index; 0174 0175 /** Enum indicating the type of the variable (integer, string, boolean) */ 0176 pmix_mca_base_var_type_t mbv_type; 0177 0178 /** String of the variable name */ 0179 char *mbv_variable_name; 0180 /** Full variable name, in case it is not <framework>_<component>_<param> */ 0181 char *mbv_full_name; 0182 /** Long variable name <project>_<framework>_<component>_<name> */ 0183 char *mbv_long_name; 0184 char *mbv_prefix; 0185 0186 /** List of synonym names for this variable. This *must* be a 0187 pointer (vs. a plain pmix_list_t) because we copy this whole 0188 struct into a new var for permanent storage 0189 (pmix_vale_array_append_item()), and the internal pointers in 0190 the pmix_list_t will be invalid when that happens. Hence, we 0191 simply keep a pointer to an external pmix_list_t. Synonyms 0192 are uncommon enough that this is not a big performance hit. */ 0193 pmix_value_array_t mbv_synonyms; 0194 0195 /** Variable flags */ 0196 pmix_mca_base_var_flag_internal_t mbv_flags; 0197 0198 /** Source of the current value */ 0199 pmix_mca_base_var_source_t mbv_source; 0200 0201 /** Synonym for */ 0202 int mbv_synonym_for; 0203 0204 /** Variable description */ 0205 char *mbv_description; 0206 0207 /** File the value came from */ 0208 char *mbv_source_file; 0209 0210 /** Value enumerator (only valid for integer variables) */ 0211 pmix_mca_base_var_enum_t *mbv_enumerator; 0212 0213 /** Bind value for this variable (0 - none) */ 0214 int mbv_bind; 0215 0216 /** Storage for this variable */ 0217 pmix_mca_base_var_storage_t *mbv_storage; 0218 0219 /** File value structure */ 0220 void *mbv_file_value; 0221 }; 0222 /** 0223 * Convenience typedef. 0224 */ 0225 typedef struct pmix_mca_base_var_t pmix_mca_base_var_t; 0226 0227 /* 0228 * Global functions for MCA 0229 */ 0230 0231 BEGIN_C_DECLS 0232 0233 /** 0234 * Object declarayion for pmix_mca_base_var_t 0235 */ 0236 PMIX_EXPORT PMIX_CLASS_DECLARATION(pmix_mca_base_var_t); 0237 0238 /** 0239 * Initialize the MCA variable system. 0240 * 0241 * @retval PMIX_SUCCESS 0242 * 0243 * This function initializes the MCA variable system. It is 0244 * invoked internally (by pmix_mca_base_open()) and is only documented 0245 * here for completeness. 0246 */ 0247 PMIX_EXPORT int pmix_mca_base_var_init(void); 0248 0249 /** 0250 * Register an MCA variable 0251 * 0252 * @param[in] project_name The name of the project associated with 0253 * this variable 0254 * @param[in] framework_name The name of the framework associated with 0255 * this variable 0256 * @param[in] component_name The name of the component associated with 0257 * this variable 0258 * @param[in] variable_name The name of this variable 0259 * @param[in] description A string describing the use and valid 0260 * values of the variable (string). 0261 * @param[in] type The type of this variable (string, int, bool). 0262 * @param[in] enumerator Enumerator describing valid values. 0263 * @param[in] bind Hint for MPIT to specify type of binding (0 = none) 0264 * @param[in] flags Flags for this variable. 0265 * @param[in] info_lvl Info level of this variable 0266 * @param[in] scope Indicates the scope of this variable 0267 * @param[in,out] storage Pointer to the value's location. 0268 * 0269 * @retval index Index value representing this variable. 0270 * @retval PMIX_ERR_OUT_OF_RESOURCE Upon failure to allocate memory. 0271 * @retval PMIX_ERROR Upon failure to register the variable. 0272 * 0273 * This function registers an MCA variable and associates it 0274 * with a specific group. 0275 * 0276 * {description} is a string of arbitrary length (verbose is good!) 0277 * for explaining what the variable is for and what its valid values 0278 * are. This message is used in help messages, such as the output 0279 * from the ompi_info executable. The {description} string is copied 0280 * internally; the caller can free {description} upon successful 0281 * return. 0282 * 0283 * {enumerator} is either NULL or a handle that was created via 0284 * pmix_mca_base_var_enum_create(), and describes the valid values of an 0285 * integer variable (i.e., one with type MCA_BASE_VAR_TYPE_INT). When 0286 * a non-NULL {enumerator} is used, the value set for this variable by 0287 * the user will be compared against the values in the enumerator. 0288 * The MCA variable system will allow the parameter to be set to 0289 * either one of the enumerator values (0, 1, 2, etc) or a string 0290 * representing one of those values. {enumerator} is retained until 0291 * either the variable is deregistered using 0292 * pmix_mca_base_var_deregister(), pmix_mca_base_var_group_deregister(), or 0293 * pmix_mca_base_var_finalize(). {enumerator} should be NULL for 0294 * parameters that do not support enumerated values. 0295 * 0296 * {flags} indicate attributes of this variable (internal, settable, 0297 * default only, etc.), as listed below. 0298 * 0299 * If MCA_BASE_VAR_FLAG_INTERNAL is set in {flags}, this variable 0300 * is not shown by default in the output of ompi_info. That is, 0301 * this variable is considered internal to the PMIX implementation 0302 * and is not supposed to be viewed / changed by the user. 0303 * 0304 * If MCA_BASE_VAR_FLAG_DEFAULT_ONLY is set in {flags}, then the value 0305 * provided in storage will not be modified by the MCA variable system 0306 * (i.e., users cannot set the value of this variable via CLI 0307 * parameter, environment variable, file, etc.). It is up to the 0308 * caller to specify (using the scope) if this value may change 0309 * (MCA_BASE_VAR_SCOPE_READONLY) or remain constant 0310 * (MCA_BASE_VAR_SCOPE_CONSTANT). MCA_BASE_VAR_FLAG_DEFAULT_ONLY must 0311 * not be specified with MCA_BASE_VAR_FLAG_SETTABLE. 0312 * 0313 * Set MCA_BASE_VAR_FLAG_DEPRECATED in {flags} to indicate that 0314 * this variable name is deprecated. The user will get a warning 0315 * if they set this variable. 0316 * 0317 * {scope} is for informational purposes to indicate how this variable 0318 * can be set, or if it is considered constant or readonly (which, by 0319 * MPI_T's definitions, are different things). See the comments in 0320 * the description of pmix_mca_base_var_scope_t for information about the 0321 * different scope meanings. 0322 * 0323 * {storage} points to a (char *), (int), or (bool) where the value of 0324 * this variable is stored ({type} indicates the type of this 0325 * pointer). The location pointed to by {storage} must exist until 0326 * the variable is deregistered. Note that the initial value in 0327 * {storage} may be overwritten if the MCA_BASE_VAR_FLAG_DEFAULT_ONLY 0328 * flag is not set (e.g., if the user sets this variable via CLI 0329 * option, environment variable, or file value). If input value of 0330 * {storage} points to a (char *), the pointed-to string will be 0331 * duplicated and maintained internally by the MCA variable system; 0332 * the caller may free the original string after this function returns 0333 * successfully. 0334 */ 0335 PMIX_EXPORT int pmix_mca_base_var_register(const char *project_name, const char *framework_name, 0336 const char *component_name, const char *variable_name, 0337 const char *description, pmix_mca_base_var_type_t type, 0338 void *storage); 0339 0340 /** 0341 * Convenience function for registering a variable associated with a 0342 * component. 0343 * 0344 * While quite similar to pmix_mca_base_var_register(), there is one key 0345 * difference: vars registered this this function will automatically 0346 * be unregistered / made unavailable when that component is closed by 0347 * its framework. 0348 */ 0349 PMIX_EXPORT int pmix_mca_base_component_var_register( 0350 const pmix_mca_base_component_t *component, const char *variable_name, const char *description, 0351 pmix_mca_base_var_type_t type, void *storage); 0352 0353 /** 0354 * Convenience function for registering a variable associated with a framework. This 0355 * function is equivalent to pmix_mca_base_var_register with component_name = "base" and 0356 * with the MCA_BASE_VAR_FLAG_DWG set. See pmix_mca_base_var_register(). 0357 */ 0358 PMIX_EXPORT int pmix_mca_base_framework_var_register( 0359 const pmix_mca_base_framework_t *framework, const char *variable_name, const char *help_msg, 0360 pmix_mca_base_var_type_t type, void *storage); 0361 0362 /** 0363 * Register a synonym name for an MCA variable. 0364 * 0365 * @param[in] synonym_for The index of the original variable. This index 0366 * must not refer to a synonym. 0367 * @param[in] project_name The project this synonym belongs to. Should 0368 * not be NULL (except for legacy reasons). 0369 * @param[in] framework_name The framework this synonym belongs to. 0370 * @param[in] component_name The component this synonym belongs to. 0371 * @param[in] synonym_name The synonym name. 0372 * @param[in] flags Flags for this synonym. 0373 * 0374 * @returns index Variable index for new synonym on success. 0375 * @returns PMIX_ERR_BAD_VAR If synonym_for does not reference a valid 0376 * variable. 0377 * @returns PMIX_ERR_OUT_OF_RESOURCE If memory could not be allocated. 0378 * @returns PMIX_ERROR For all other errors. 0379 * 0380 * Upon success, this function creates a synonym MCA variable 0381 * that will be treated almost exactly like the original. The 0382 * type (int or string) is irrelevant; this function simply 0383 * creates a new name that by which the same variable value is 0384 * accessible. 0385 * 0386 * Note that the original variable name has precedence over all 0387 * synonyms. For example, consider the case if variable is 0388 * originally registered under the name "A" and is later 0389 * registered with synonyms "B" and "C". If the user sets values 0390 * for both MCA variable names "A" and "B", the value associated 0391 * with the "A" name will be used and the value associated with 0392 * the "B" will be ignored (and will not even be visible by the 0393 * pmix_mca_base_var_*() API). If the user sets values for both MCA 0394 * variable names "B" and "C" (and does *not* set a value for 0395 * "A"), it is undefined as to which value will be used. 0396 */ 0397 PMIX_EXPORT int pmix_mca_base_var_register_synonym(int synonym_for, const char *project_name, 0398 const char *framework_name, 0399 const char *component_name, 0400 const char *synonym_name, 0401 pmix_mca_base_var_syn_flag_t flags); 0402 0403 /** 0404 * Deregister a MCA variable or synonym 0405 * 0406 * @param vari Index returned from pmix_mca_base_var_register() or 0407 * pmix_mca_base_var_register_synonym(). 0408 * 0409 * Deregistering a variable does not free the variable or any memory associated 0410 * with it. All memory will be freed and the variable index released when 0411 * pmix_mca_base_var_finalize() is called. 0412 * 0413 * If an enumerator is associated with this variable it will be dereferenced. 0414 */ 0415 PMIX_EXPORT int pmix_mca_base_var_deregister(int vari); 0416 0417 /** 0418 * Get the current value of an MCA variable. 0419 * 0420 * @param[in] vari Index of variable 0421 * @param[in,out] value Pointer to copy the value to. Can be NULL. 0422 * @param[in,out] value_size Size of memory pointed to by value. 0423 * copied size will be returned in value_size. 0424 * @param[out] source Source of current value. Can be NULL. 0425 * @param[out] source_file Source file for the current value if 0426 * it was set from a file. 0427 * 0428 * @return PMIX_ERROR Upon failure. The contents of value are 0429 * undefined. 0430 * @return PMIX_SUCCESS Upon success. value (if not NULL) will be filled 0431 * with the variable's current value. value_size will contain the size 0432 * copied. source (if not NULL) will contain the source of the variable. 0433 * 0434 * Note: The value can be changed by the registering code without using 0435 * the pmix_mca_base_var_* interface so the source may be incorrect. 0436 */ 0437 PMIX_EXPORT int pmix_mca_base_var_get_value(int vari, void *value, 0438 pmix_mca_base_var_source_t *source, 0439 const char **source_file); 0440 0441 /** 0442 * Find the index for an MCA variable based on its names. 0443 * 0444 * @param project_name Name of the project 0445 * @param type_name Name of the type containing the variable. 0446 * @param component_name Name of the component containing the variable. 0447 * @param param_name Name of the variable. 0448 * 0449 * @retval PMIX_ERROR If the variable was not found. 0450 * @retval vari If the variable was found. 0451 * 0452 * It is not always convenient to widely propagate a variable's index 0453 * value, or it may be necessary to look up the variable from a 0454 * different component. This function can be used to look up the index 0455 * of any registered variable. The returned index can be used with 0456 * pmix_mca_base_var_get() and pmix_mca_base_var_get_value(). 0457 */ 0458 PMIX_EXPORT int pmix_mca_base_var_find(const char *project_name, const char *type_name, 0459 const char *component_name, const char *param_name); 0460 0461 /** 0462 * Find the index for a variable based on its full name 0463 * 0464 * @param full_name [in] Full name of the variable 0465 * @param vari [out] Index of the variable 0466 * 0467 * See pmix_mca_base_var_find(). 0468 */ 0469 PMIX_EXPORT int pmix_mca_base_var_find_by_name(const char *full_name, int *vari); 0470 0471 /** 0472 * Check that two MCA variables were not both set to non-default 0473 * values. 0474 * 0475 * @param type_a [in] Framework name of variable A (string). 0476 * @param component_a [in] Component name of variable A (string). 0477 * @param param_a [in] Variable name of variable A (string. 0478 * @param type_b [in] Framework name of variable A (string). 0479 * @param component_b [in] Component name of variable A (string). 0480 * @param param_b [in] Variable name of variable A (string. 0481 * 0482 * This function is useful for checking that the user did not set both 0483 * of 2 mutually-exclusive MCA variables. 0484 * 0485 * This function will print an pmix_show_help() message and return 0486 * PMIX_ERR_BAD_VAR if it finds that the two variables both have 0487 * value sources that are not MCA_BASE_VAR_SOURCE_DEFAULT. This 0488 * means that both variables have been set by the user (i.e., they're 0489 * not default values). 0490 * 0491 * Note that pmix_show_help() allows itself to be hooked, so if this 0492 * happens after the aggregated pmix_show_help() system is 0493 * initialized, the messages will be aggregated (w00t). 0494 * 0495 * @returns PMIX_ERR_BAD_VAR if the two variables have sources that 0496 * are not MCA_BASE_VAR_SOURCE_DEFAULT. 0497 * @returns PMIX_SUCCESS otherwise. 0498 */ 0499 PMIX_EXPORT int pmix_mca_base_var_check_exclusive(const char *project, const char *type_a, 0500 const char *component_a, const char *param_a, 0501 const char *type_b, const char *component_b, 0502 const char *param_b); 0503 0504 /** 0505 * Obtain basic info on a single variable (name, help message, etc) 0506 * 0507 * @param[in] vari Valid variable index. 0508 * @param[out] var Storage for the variable pointer. 0509 * 0510 * @retval PMIX_SUCCESS Upon success. 0511 * @retval pmix error code Upon failure. 0512 * 0513 * The returned pointer belongs to the MCA variable system. Do not 0514 * modify/free/retain the pointer. 0515 */ 0516 PMIX_EXPORT int pmix_mca_base_var_get(int vari, const pmix_mca_base_var_t **var); 0517 0518 /** 0519 * Obtain the number of variables that have been registered. 0520 * 0521 * @retval count on success 0522 * @return pmix error code on error 0523 * 0524 * Note: This function does not return the number of valid MCA variables as 0525 * pmix_mca_base_var_deregister() has no impact on the variable count. The count 0526 * returned is equal to the number of calls to pmix_mca_base_var_register with 0527 * unique names. ie. two calls with the same name will not affect the count. 0528 */ 0529 PMIX_EXPORT int pmix_mca_base_var_get_count(void); 0530 0531 /** 0532 * Obtain a list of environment variables describing the all 0533 * valid (non-default) MCA variables and their sources. 0534 * 0535 * @param[out] env A pointer to an argv-style array of key=value 0536 * strings, suitable for use in an environment 0537 * @param[out] num_env A pointer to an int, containing the length 0538 * of the env array (not including the final NULL entry). 0539 * 0540 * @retval PMIX_SUCCESS Upon success. 0541 * @retval PMIX_ERROR Upon failure. 0542 * 0543 * This function is similar to pmix_mca_base_var_dump() except that 0544 * its output is in terms of an argv-style array of key=value 0545 * strings, suitable for using in an environment. 0546 */ 0547 PMIX_EXPORT int pmix_mca_base_var_build_env(char ***env, int *num_env); 0548 0549 /** 0550 * Shut down the MCA variable system (normally only invoked by the 0551 * MCA framework itself). 0552 * 0553 * @returns PMIX_SUCCESS This function never fails. 0554 * 0555 * This function shuts down the MCA variable repository and frees all 0556 * associated memory. No other pmix_mca_base_var*() functions can be 0557 * invoked after this function. 0558 * 0559 * This function is normally only invoked by the MCA framework itself 0560 * when the process is shutting down (e.g., during MPI_FINALIZE). It 0561 * is only documented here for completeness. 0562 */ 0563 PMIX_EXPORT int pmix_mca_base_var_finalize(void); 0564 0565 typedef enum { 0566 /* Dump human-readable strings */ 0567 PMIX_MCA_BASE_VAR_DUMP_READABLE = 0, 0568 /* Dump easily parsable strings */ 0569 PMIX_MCA_BASE_VAR_DUMP_PARSABLE = 1, 0570 /* Dump simple name=value string */ 0571 PMIX_MCA_BASE_VAR_DUMP_SIMPLE = 2 0572 } pmix_mca_base_var_dump_type_t; 0573 0574 /** 0575 * Dump strings describing the MCA variable at an index. 0576 * 0577 * @param[in] vari Variable index 0578 * @param[out] out Array of strings describing this variable 0579 * @param[in] output_type Type of output desired 0580 * 0581 * This function returns an array of strings describing the variable. All strings 0582 * and the array must be freed by the caller. 0583 */ 0584 PMIX_EXPORT int pmix_mca_base_var_dump(int vari, char ***out, 0585 pmix_mca_base_var_dump_type_t output_type); 0586 0587 #define MCA_COMPILETIME_VER "print_compiletime_version" 0588 #define MCA_RUNTIME_VER "print_runtime_version" 0589 0590 PMIX_EXPORT int pmix_mca_base_var_cache_files(bool rel_path_search); 0591 0592 END_C_DECLS 0593 0594 #endif /* PMIX_MCA_BASE_VAR_H */
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |