Back to home page

EIC code displayed by LXR

 
 

    


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-2013 Los Alamos National Security, LLC. All rights
0015  *                         reserved.
0016  * Copyright (c) 2016-2017 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 #ifndef PMIX_MCA_BASE_VAR_GROUP_H
0026 #define PMIX_MCA_BASE_VAR_GROUP_H
0027 
0028 #include "src/mca/mca.h"
0029 
0030 struct pmix_mca_base_var_group_t {
0031     pmix_list_item_t super;
0032 
0033     /** Index of group */
0034     int group_index;
0035 
0036     /** Group is valid (registered) */
0037     bool group_isvalid;
0038 
0039     /** Group name */
0040     char *group_full_name;
0041 
0042     char *group_project;
0043     char *group_framework;
0044     char *group_component;
0045 
0046     /** Group help message (description) */
0047     char *group_description;
0048 
0049     /** Integer value array of subgroup indices */
0050     pmix_value_array_t group_subgroups;
0051 
0052     /** Integer array of group variables */
0053     pmix_value_array_t group_vars;
0054 };
0055 
0056 typedef struct pmix_mca_base_var_group_t pmix_mca_base_var_group_t;
0057 
0058 /**
0059  * Object declaration for pmix_mca_base_var_group_t
0060  */
0061 PMIX_EXPORT PMIX_CLASS_DECLARATION(pmix_mca_base_var_group_t);
0062 
0063 /**
0064  * Register an MCA variable group
0065  *
0066  * @param[in] project_name Project name for this group.
0067  * @param[in] framework_name Framework name for this group.
0068  * @param[in] component_name Component name for this group.
0069  * @param[in] description Description of this group.
0070  *
0071  * @retval index Unique group index
0072  * @return pmix error code on Error
0073  *
0074  * Create an MCA variable group. If the group already exists
0075  * this call is equivalent to pmix_mca_base_ver_find_group().
0076  */
0077 PMIX_EXPORT int pmix_mca_base_var_group_register(const char *project_name,
0078                                                  const char *framework_name,
0079                                                  const char *component_name,
0080                                                  const char *description);
0081 
0082 /**
0083  * Register an MCA variable group for a component
0084  *
0085  * @param[in] component [in] Pointer to the component for which the
0086  * group is being registered.
0087  * @param[in] description Description of this group.
0088  *
0089  * @retval index Unique group index
0090  * @return pmix error code on Error
0091  */
0092 PMIX_EXPORT int
0093 pmix_mca_base_var_group_component_register(const pmix_mca_base_component_t *component,
0094                                            const char *description);
0095 
0096 /**
0097  * Deregister an MCA param group
0098  *
0099  * @param group_index [in] Group index from pmix_mca_base_var_group_register (),
0100  * pmix_mca_base_var_group_find().
0101  *
0102  * This call deregisters all associated variables and subgroups.
0103  */
0104 PMIX_EXPORT int pmix_mca_base_var_group_deregister(int group_index);
0105 
0106 /**
0107  * Find an MCA group
0108  *
0109  * @param[in] project_name   Project name
0110  * @param[in] framework_name Framework name
0111  * @param[in] component_name Component name
0112  *
0113  * @returns PMIX_SUCCESS if found
0114  * @returns PMIX_ERR_NOT_FOUND if not found
0115  */
0116 PMIX_EXPORT int pmix_mca_base_var_group_find(const char *project_name, const char *framework_name,
0117                                              const char *component_name);
0118 
0119 /**
0120  * Find an MCA group by its full name
0121  *
0122  * @param[in]  full_name Full name of MCA variable group. Ex: shmem_mmap
0123  * @param[out] index     Index of group if found
0124  *
0125  * @returns PMIX_SUCCESS if found
0126  * @returns PMIX_ERR_NOT_FOUND if not found
0127  */
0128 PMIX_EXPORT int pmix_mca_base_var_group_find_by_name(const char *full_name, int *index);
0129 
0130 /**
0131  * Get the group at a specified index
0132  *
0133  * @param[in] group_index Group index
0134  * @param[out] group Storage for the group object pointer.
0135  *
0136  * @retval PMIX_ERR_NOT_FOUND If the group specified by group_index does not exist.
0137  * @retval PMIX_SUCCESS If the group is found
0138  *
0139  * The returned pointer belongs to the MCA variable system. Do not modify/release/retain
0140  * the pointer.
0141  */
0142 PMIX_EXPORT int pmix_mca_base_var_group_get(const int group_index,
0143                                             const pmix_mca_base_var_group_t **group);
0144 /**
0145  * Get the number of registered MCA groups
0146  *
0147  * @retval count Number of registered MCA groups
0148  */
0149 PMIX_EXPORT int pmix_mca_base_var_group_get_count(void);
0150 
0151 /**
0152  * Get a relative timestamp for the MCA group system
0153  *
0154  * @retval stamp
0155  *
0156  * This value will change if groups or variables are either added or removed.
0157  */
0158 PMIX_EXPORT int pmix_mca_base_var_group_get_stamp(void);
0159 
0160 #endif /* PMIX_MCA_BASE_VAR_GROUP_H */