root/opal/mca/pmix/pmix4x/pmix/src/mca/base/pmix_mca_base_var_group.h

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

INCLUDED FROM


   1 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
   2 /*
   3  * Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana
   4  *                         University Research and Technology
   5  *                         Corporation.  All rights reserved.
   6  * Copyright (c) 2004-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) 2008-2011 Cisco Systems, Inc.  All rights reserved.
  14  * Copyright (c) 2012-2013 Los Alamos National Security, LLC. All rights
  15  *                         reserved.
  16  * Copyright (c) 2016-2017 Intel, Inc. All rights reserved.
  17  * $COPYRIGHT$
  18  *
  19  * Additional copyrights may follow
  20  *
  21  * $HEADER$
  22  */
  23 
  24 #ifndef PMIX_MCA_BASE_VAR_GROUP_H
  25 #define PMIX_MCA_BASE_VAR_GROUP_H
  26 
  27 #include "src/mca/mca.h"
  28 
  29 struct pmix_mca_base_var_group_t {
  30     pmix_list_item_t super;
  31 
  32     /** Index of group */
  33     int group_index;
  34 
  35     /** Group is valid (registered) */
  36     bool group_isvalid;
  37 
  38     /** Group name */
  39     char *group_full_name;
  40 
  41     char *group_project;
  42     char *group_framework;
  43     char *group_component;
  44 
  45     /** Group help message (description) */
  46     char *group_description;
  47 
  48     /** Integer value array of subgroup indices */
  49     pmix_value_array_t group_subgroups;
  50 
  51     /** Integer array of group variables */
  52     pmix_value_array_t group_vars;
  53 
  54 };
  55 
  56 typedef struct pmix_mca_base_var_group_t pmix_mca_base_var_group_t;
  57 
  58 /**
  59  * Object declaration for pmix_mca_base_var_group_t
  60  */
  61 PMIX_EXPORT PMIX_CLASS_DECLARATION(pmix_mca_base_var_group_t);
  62 
  63 /**
  64  * Register an MCA variable group
  65  *
  66  * @param[in] project_name Project name for this group.
  67  * @param[in] framework_name Framework name for this group.
  68  * @param[in] component_name Component name for this group.
  69  * @param[in] descrition Description of this group.
  70  *
  71  * @retval index Unique group index
  72  * @return pmix error code on Error
  73  *
  74  * Create an MCA variable group. If the group already exists
  75  * this call is equivalent to pmix_mca_base_ver_find_group().
  76  */
  77 PMIX_EXPORT int pmix_mca_base_var_group_register(const char *project_name,
  78                                                  const char *framework_name,
  79                                                  const char *component_name,
  80                                                  const char *description);
  81 
  82 /**
  83  * Register an MCA variable group for a component
  84  *
  85  * @param[in] component [in] Pointer to the component for which the
  86  * group is being registered.
  87  * @param[in] description Description of this group.
  88  *
  89  * @retval index Unique group index
  90  * @return pmix error code on Error
  91  */
  92 PMIX_EXPORT int pmix_mca_base_var_group_component_register (const pmix_mca_base_component_t *component,
  93                                                             const char *description);
  94 
  95 /**
  96  * Deregister an MCA param group
  97  *
  98  * @param group_index [in] Group index from pmix_mca_base_var_group_register (),
  99  * pmix_mca_base_var_group_find().
 100  *
 101  * This call deregisters all associated variables and subgroups.
 102  */
 103 PMIX_EXPORT int pmix_mca_base_var_group_deregister (int group_index);
 104 
 105 /**
 106  * Find an MCA group
 107  *
 108  * @param[in] project_name   Project name
 109  * @param[in] framework_name Framework name
 110  * @param[in] component_name Component name
 111  *
 112  * @returns PMIX_SUCCESS if found
 113  * @returns PMIX_ERR_NOT_FOUND if not found
 114  */
 115 PMIX_EXPORT int pmix_mca_base_var_group_find (const char *project_name,
 116                                               const char *framework_name,
 117                                               const char *component_name);
 118 
 119 /**
 120  * Find an MCA group by its full name
 121  *
 122  * @param[in]  full_name Full name of MCA variable group. Ex: shmem_mmap
 123  * @param[out] index     Index of group if found
 124  *
 125  * @returns PMIX_SUCCESS if found
 126  * @returns PMIX_ERR_NOT_FOUND if not found
 127  */
 128 PMIX_EXPORT int pmix_mca_base_var_group_find_by_name (const char *full_name, int *index);
 129 
 130 /**
 131  * Get the group at a specified index
 132  *
 133  * @param[in] group_index Group index
 134  * @param[out] group Storage for the group object pointer.
 135  *
 136  * @retval PMIX_ERR_NOT_FOUND If the group specified by group_index does not exist.
 137  * @retval PMIX_SUCCESS If the group is found
 138  *
 139  * The returned pointer belongs to the MCA variable system. Do not modify/release/retain
 140  * the pointer.
 141  */
 142 PMIX_EXPORT int pmix_mca_base_var_group_get (const int group_index,
 143                                              const pmix_mca_base_var_group_t **group);
 144 
 145 /**
 146  * Set/unset a flags for all variables in a group.
 147  *
 148  * @param[in] group_index Index of group
 149  * @param[in] flag Flag(s) to set or unset.
 150  * @param[in] set Boolean indicating whether to set flag(s).
 151  *
 152  * Set a flag for every variable in a group. See pmix_mca_base_var_set_flag() for more info.
 153  */
 154 PMIX_EXPORT int pmix_mca_base_var_group_set_var_flag (const int group_index, int flags,
 155                                                       bool set);
 156 
 157 /**
 158  * Get the number of registered MCA groups
 159  *
 160  * @retval count Number of registered MCA groups
 161  */
 162 PMIX_EXPORT int pmix_mca_base_var_group_get_count (void);
 163 
 164 /**
 165  * Get a relative timestamp for the MCA group system
 166  *
 167  * @retval stamp
 168  *
 169  * This value will change if groups or variables are either added or removed.
 170  */
 171 PMIX_EXPORT int pmix_mca_base_var_group_get_stamp (void);
 172 
 173 #endif /* PMIX_MCA_BASE_VAR_GROUP_H */

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