root/opal/mca/base/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) 2017      Research Organization for Information Science
  17  *                         and Technology (RIST). All rights reserved.
  18  * $COPYRIGHT$
  19  *
  20  * Additional copyrights may follow
  21  *
  22  * $HEADER$
  23  */
  24 
  25 #ifndef OPAL_MCA_BASE_VAR_GROUP_H
  26 #define OPAL_MCA_BASE_VAR_GROUP_H
  27 
  28 #include "opal/mca/mca.h"
  29 
  30 struct mca_base_var_group_t {
  31     opal_list_item_t super;
  32 
  33     /** Index of group */
  34     int group_index;
  35 
  36     /** Group is valid (registered) */
  37     bool group_isvalid;
  38 
  39     /** Group name */
  40     char *group_full_name;
  41 
  42     char *group_project;
  43     char *group_framework;
  44     char *group_component;
  45 
  46     /** Group help message (description) */
  47     char *group_description;
  48 
  49     /** Integer value array of subgroup indices */
  50     opal_value_array_t group_subgroups;
  51 
  52     /** Integer array of group variables */
  53     opal_value_array_t group_vars;
  54 
  55     /** Integer array of group performance variables */
  56     opal_value_array_t group_pvars;
  57 
  58     /** Pointer array of group enums */
  59     opal_value_array_t group_enums;
  60 };
  61 
  62 typedef struct mca_base_var_group_t mca_base_var_group_t;
  63 
  64 /**
  65  * Object declaration for mca_base_var_group_t
  66  */
  67 OPAL_DECLSPEC OBJ_CLASS_DECLARATION(mca_base_var_group_t);
  68 
  69 /**
  70  * Register an MCA variable group
  71  *
  72  * @param[in] project_name Project name for this group.
  73  * @param[in] framework_name Framework name for this group.
  74  * @param[in] component_name Component name for this group.
  75  * @param[in] descrition Description of this group.
  76  *
  77  * @retval index Unique group index
  78  * @return opal error code on Error
  79  *
  80  * Create an MCA variable group. If the group already exists
  81  * this call is equivalent to mca_base_ver_find_group().
  82  */
  83 OPAL_DECLSPEC int mca_base_var_group_register(const char *project_name,
  84                                               const char *framework_name,
  85                                               const char *component_name,
  86                                               const char *description);
  87 
  88 /**
  89  * Register an MCA variable group for a component
  90  *
  91  * @param[in] component [in] Pointer to the component for which the
  92  * group is being registered.
  93  * @param[in] description Description of this group.
  94  *
  95  * @retval index Unique group index
  96  * @return opal error code on Error
  97  */
  98 OPAL_DECLSPEC int mca_base_var_group_component_register (const mca_base_component_t *component,
  99                                                          const char *description);
 100 
 101 /**
 102  * Deregister an MCA param group
 103  *
 104  * @param group_index [in] Group index from mca_base_var_group_register (),
 105  * mca_base_var_group_find().
 106  *
 107  * This call deregisters all associated variables and subgroups.
 108  */
 109 OPAL_DECLSPEC int mca_base_var_group_deregister (int group_index);
 110 
 111 /**
 112  * Find an MCA group
 113  *
 114  * @param[in] project_name   Project name
 115  * @param[in] framework_name Framework name
 116  * @param[in] component_name Component name
 117  *
 118  * @returns OPAL_SUCCESS if found
 119  * @returns OPAL_ERR_NOT_FOUND if not found
 120  */
 121 OPAL_DECLSPEC int mca_base_var_group_find (const char *project_name,
 122                                            const char *framework_name,
 123                                            const char *component_name);
 124 
 125 /**
 126  * Find an MCA group by its full name
 127  *
 128  * @param[in]  full_name Full name of MCA variable group. Ex: shmem_mmap
 129  * @param[out] index     Index of group if found
 130  *
 131  * @returns OPAL_SUCCESS if found
 132  * @returns OPAL_ERR_NOT_FOUND if not found
 133  */
 134 OPAL_DECLSPEC int mca_base_var_group_find_by_name (const char *full_name, int *index);
 135 
 136 /**
 137  * Get the group at a specified index
 138  *
 139  * @param[in] group_index Group index
 140  * @param[out] group Storage for the group object pointer.
 141  *
 142  * @retval OPAL_ERR_NOT_FOUND If the group specified by group_index does not exist.
 143  * @retval OPAL_SUCCESS If the group is found
 144  *
 145  * The returned pointer belongs to the MCA variable system. Do not modify/release/retain
 146  * the pointer.
 147  */
 148 OPAL_DECLSPEC int mca_base_var_group_get (const int group_index,
 149                                           const mca_base_var_group_t **group);
 150 
 151 /**
 152  * Set/unset a flags for all variables in a group.
 153  *
 154  * @param[in] group_index Index of group
 155  * @param[in] flag Flag(s) to set or unset.
 156  * @param[in] set Boolean indicating whether to set flag(s).
 157  *
 158  * Set a flag for every variable in a group. See mca_base_var_set_flag() for more info.
 159  */
 160 OPAL_DECLSPEC int mca_base_var_group_set_var_flag (const int group_index, int flags,
 161                                                    bool set);
 162 
 163 /**
 164  * Get the number of registered MCA groups
 165  *
 166  * @retval count Number of registered MCA groups
 167  */
 168 OPAL_DECLSPEC int mca_base_var_group_get_count (void);
 169 
 170 /**
 171  * Get a relative timestamp for the MCA group system
 172  *
 173  * @retval stamp
 174  *
 175  * This value will change if groups or variables are either added or removed.
 176  */
 177 OPAL_DECLSPEC int mca_base_var_group_get_stamp (void);
 178 
 179 #endif /* OPAL_MCA_BASE_VAR_GROUP_H */

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