Blame src/include/mpit.h

Packit Service c5cf8c
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
Packit Service c5cf8c
/*
Packit Service c5cf8c
 *  (C) 2013 by Argonne National Laboratory.
Packit Service c5cf8c
 *      See COPYRIGHT in top-level directory.
Packit Service c5cf8c
 */
Packit Service c5cf8c
Packit Service c5cf8c
/* Interfaces in this file are intended to be used by modules other than
Packit Service c5cf8c
 * MPIR_T. They use these interfaces to declare, create, operate and expose
Packit Service c5cf8c
 * enums, control variables, performance variables and categories.
Packit Service c5cf8c
 */
Packit Service c5cf8c
#ifndef MPIT_H_INCLUDED
Packit Service c5cf8c
#define MPIT_H_INCLUDED
Packit Service c5cf8c
Packit Service c5cf8c
#include "mpitimpl.h"
Packit Service c5cf8c
Packit Service c5cf8c
/* Stamp to indicate a change in categories */
Packit Service c5cf8c
extern int cat_stamp;
Packit Service c5cf8c
Packit Service c5cf8c
/* Tables to store enums, categories, cvars, pvars.
Packit Service c5cf8c
 * All tables need random access except enum_table. But we still implement
Packit Service c5cf8c
 * enum_table as an array, since it is handy and element size of
Packit Service c5cf8c
 * enum_table (i.e., sizeof(enum_item_t)) is small.
Packit Service c5cf8c
 */
Packit Service c5cf8c
extern UT_array *enum_table;
Packit Service c5cf8c
extern UT_array *cat_table;
Packit Service c5cf8c
extern UT_array *cvar_table;
Packit Service c5cf8c
extern UT_array *pvar_table;
Packit Service c5cf8c
Packit Service c5cf8c
/* Hash tables to quick locate category, cvar, pvar indices by their names */
Packit Service c5cf8c
extern name2index_hash_t *cat_hash;
Packit Service c5cf8c
extern name2index_hash_t *cvar_hash;
Packit Service c5cf8c
/* pvar names are unique per pvar class. So we use multiple hashs */
Packit Service c5cf8c
extern name2index_hash_t *pvar_hashs[MPIR_T_PVAR_CLASS_NUMBER];
Packit Service c5cf8c
Packit Service c5cf8c
/* See description in mpit.c */
Packit Service c5cf8c
extern void MPIR_T_enum_create(const char *name, MPI_T_enum * handle);
Packit Service c5cf8c
extern void MPIR_T_enum_add_item(MPI_T_enum handle, const char *item_name, int item_value);
Packit Service c5cf8c
extern int MPIR_T_cat_add_pvar(const char *cat_name, int pvar_index);
Packit Service c5cf8c
extern int MPIR_T_cat_add_cvar(const char *cat_name, int cvar_index);
Packit Service c5cf8c
extern int MPIR_T_cat_add_subcat(const char *parent_name, const char *child_name);
Packit Service c5cf8c
extern int MPIR_T_cat_add_desc(const char *cat_name, const char *cat_desc);
Packit Service c5cf8c
Packit Service c5cf8c
static inline cvar_table_entry_t *LOOKUP_CVAR_BY_NAME(const char *cvar_name)
Packit Service c5cf8c
{
Packit Service c5cf8c
    unsigned cvar_idx;
Packit Service c5cf8c
    name2index_hash_t *hash_entry;
Packit Service c5cf8c
    HASH_FIND_STR(cvar_hash, cvar_name, hash_entry);
Packit Service c5cf8c
    MPIR_Assert(hash_entry != NULL);
Packit Service c5cf8c
    cvar_idx = hash_entry->idx;
Packit Service c5cf8c
    return (cvar_table_entry_t *) utarray_eltptr(cvar_table, cvar_idx);
Packit Service c5cf8c
}
Packit Service c5cf8c
Packit Service c5cf8c
/* Helper macros for getting the default value of a cvar */
Packit Service c5cf8c
#define MPIR_CVAR_GET_DEFAULT_INT(name_,out_ptr_)   \
Packit Service c5cf8c
    do {  \
Packit Service c5cf8c
        cvar_table_entry_t *cvar = LOOKUP_CVAR_BY_NAME(#name_); \
Packit Service c5cf8c
        *(out_ptr_) = cvar->defaultval.d; \
Packit Service c5cf8c
    } while (0)
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_CVAR_GET_DEFAULT_BOOLEAN(name_,out_ptr_)   \
Packit Service c5cf8c
    do {  \
Packit Service c5cf8c
        MPIR_CVAR_GET_DEFAULT_INT(name_,out_ptr_); \
Packit Service c5cf8c
    } while (0)
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_CVAR_GET_DEFAULT_UNSIGNED(name_,out_ptr_)   \
Packit Service c5cf8c
    do {  \
Packit Service c5cf8c
        cvar_table_entry_t *cvar = LOOKUP_CVAR_BY_NAME(#name_); \
Packit Service c5cf8c
        *(out_ptr_) = cvar->defaultval.u; \
Packit Service c5cf8c
    } while (0)
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_CVAR_GET_DEFAULT_UNSIGNED_LONG(name_,out_ptr_)   \
Packit Service c5cf8c
    do {  \
Packit Service c5cf8c
        cvar_table_entry_t *cvar = LOOKUP_CVAR_BY_NAME(#name_); \
Packit Service c5cf8c
        *(out_ptr_) = cvar->defaultval.ul; \
Packit Service c5cf8c
    } while (0)
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_CVAR_GET_DEFAULT_UNSIGNED_LONG_LONG(name_,out_ptr_)   \
Packit Service c5cf8c
    do {  \
Packit Service c5cf8c
        cvar_table_entry_t *cvar = LOOKUP_CVAR_BY_NAME(#name_); \
Packit Service c5cf8c
        *(out_ptr_) = cvar->defaultval.ull; \
Packit Service c5cf8c
    } while (0)
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_CVAR_GET_DEFAULT_DOUBLE(name_,out_ptr_)   \
Packit Service c5cf8c
    do {  \
Packit Service c5cf8c
        cvar_table_entry_t *cvar = LOOKUP_CVAR_BY_NAME(#name_); \
Packit Service c5cf8c
        *(out_ptr_) = cvar->defaultval.f; \
Packit Service c5cf8c
    } while (0)
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_CVAR_GET_DEFAULT_STRING(name_,out_ptr_)   \
Packit Service c5cf8c
    do {  \
Packit Service c5cf8c
        cvar_table_entry_t *cvar = LOOKUP_CVAR_BY_NAME(#name_); \
Packit Service c5cf8c
        *(out_ptr_) = cvar->defaultval.str; \
Packit Service c5cf8c
    } while (0)
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_CVAR_GET_DEFAULT_RANGE(name_,out_ptr_)   \
Packit Service c5cf8c
    do {  \
Packit Service c5cf8c
        cvar_table_entry_t *cvar = LOOKUP_CVAR_BY_NAME(#name_); \
Packit Service c5cf8c
        *(out_ptr_) = cvar->defaultval.range; \
Packit Service c5cf8c
    } while (0)
Packit Service c5cf8c
Packit Service c5cf8c
/* Register a static cvar. A static pvar has NO binding and its address
Packit Service c5cf8c
 * and count are known at registeration time.
Packit Service c5cf8c
 * Attention: name_ is a token not a string
Packit Service c5cf8c
*/
Packit Service c5cf8c
#define MPIR_T_CVAR_REGISTER_STATIC(dtype_, name_, addr_, count_, verb_, \
Packit Service c5cf8c
            scope_, default_, cat_, desc_) \
Packit Service c5cf8c
    do { \
Packit Service c5cf8c
        MPIR_Assert(count_ > 0); \
Packit Service c5cf8c
        MPIR_T_CVAR_REGISTER_impl(dtype_, #name_, addr_, count_, MPI_T_ENUM_NULL, \
Packit Service c5cf8c
            verb_, MPI_T_BIND_NO_OBJECT, scope_, NULL, NULL, default_, cat_, desc_); \
Packit Service c5cf8c
    } while (0)
Packit Service c5cf8c
Packit Service c5cf8c
/* Register a dynamic cvar, which may have object binding and whose
Packit Service c5cf8c
 * address and count may be unknown at registeration time. It is
Packit Service c5cf8c
 * developers' duty to provide self-contained arguments.
Packit Service c5cf8c
*/
Packit Service c5cf8c
#define MPIR_T_CVAR_REGISTER_DYNAMIC(dtype_, name_, addr_, count_, etype_, \
Packit Service c5cf8c
            verb_, bind_, scope_, get_addr_, get_count_, default_, cat_, desc_) \
Packit Service c5cf8c
    do { \
Packit Service c5cf8c
        MPIR_Assert(addr_ != NULL || get_addr_ != NULL); \
Packit Service c5cf8c
        MPIR_Assert(count_ > 0 || get_count_ != NULL); \
Packit Service c5cf8c
        MPIR_T_CVAR_REGISTER_impl(dtype_, #name_, addr_, count_, etype_, \
Packit Service c5cf8c
            verb_, bind_, scope_, get_addr_, get_count_, default_, cat_, desc_); \
Packit Service c5cf8c
    } while (0)
Packit Service c5cf8c
Packit Service c5cf8c
/* stmt_ is executed only when ENABLE_PVAR_#MODULE is defined as 1 */
Packit Service c5cf8c
#define MPIR_T_PVAR_STMT(MODULE, stmt_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, stmt_)
Packit Service c5cf8c
Packit Service c5cf8c
/* The following are interfaces for each pvar classe,
Packit Service c5cf8c
 * basically including delcaration, access and registeration.
Packit Service c5cf8c
 */
Packit Service c5cf8c
Packit Service c5cf8c
/* STATE */
Packit Service c5cf8c
#define MPIR_T_PVAR_STATE_SET_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_STATE_SET_VAR_impl(ptr_, val_))
Packit Service c5cf8c
/* Not gated by MODULE, since it is supposed to be a rvalue */
Packit Service c5cf8c
#define MPIR_T_PVAR_STATE_GET_VAR(ptr_) \
Packit Service c5cf8c
    MPIR_T_PVAR_STATE_GET_VAR_impl(ptr_)
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_STATE_SET(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_STATE_SET_impl(name_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_STATE_GET(name_) \
Packit Service c5cf8c
    MPIR_T_PVAR_STATE_GET_impl(name_)
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_STATE_REGISTER_STATIC(MODULE, dtype_, name_, \
Packit Service c5cf8c
            initval_, etype_, verb_, bind_, flags_, cat_, desc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_STATE_REGISTER_STATIC_impl(dtype_, name_, \
Packit Service c5cf8c
            initval_, etype_, verb_, bind_, flags_, cat_, desc_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_STATE_REGISTER_DYNAMIC(MODULE, dtype_, name_, \
Packit Service c5cf8c
            addr_, count_, etype_, verb_, bind_, flags_, get_value_, get_count_, cat_, desc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_STATE_REGISTER_DYNAMIC_impl(dtype_, name_, \
Packit Service c5cf8c
            addr_, count_, etype_, verb_, bind_, flags_, get_value_, get_count_, cat_, desc_))
Packit Service c5cf8c
Packit Service c5cf8c
/* LEVEL */
Packit Service c5cf8c
#define MPIR_T_PVAR_LEVEL_SET_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_LEVEL_SET_VAR_impl(ptr_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_LEVEL_GET_VAR(ptr_) \
Packit Service c5cf8c
    MPIR_T_PVAR_LEVEL_GET_VAR_impl(ptr_)
Packit Service c5cf8c
#define MPIR_T_PVAR_LEVEL_INC_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_LEVEL_INC_VAR_impl(ptr_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_LEVEL_DEC_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_LEVEL_DEC_VAR_impl(ptr_, val_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_LEVEL_SET(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_LEVEL_SET_impl(name_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_LEVEL_GET(name_) \
Packit Service c5cf8c
    MPIR_T_PVAR_LEVEL_GET_impl(name_)
Packit Service c5cf8c
#define MPIR_T_PVAR_LEVEL_INC(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_LEVEL_INC_impl(name_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_LEVEL_DEC(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_LEVEL_DEC_impl(name_, val_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_LEVEL_REGISTER_STATIC(MODULE, dtype_, name_, \
Packit Service c5cf8c
            initval_, verb_, bind_, flags_, cat_, desc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_LEVEL_REGISTER_STATIC_impl(dtype_, name_, \
Packit Service c5cf8c
            initval_, verb_, bind_, flags_, cat_, desc_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_LEVEL_REGISTER_DYNAMIC(MODULE, dtype_, name_, \
Packit Service c5cf8c
            addr_, count_, verb_, bind_, flags_, get_value_, get_count_, cat_, desc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_LEVEL_REGISTER_DYNAMIC_impl(dtype_, name_, \
Packit Service c5cf8c
            addr_, count_, verb_, bind_, flags_, get_value_, get_count, cat_, desc_))
Packit Service c5cf8c
Packit Service c5cf8c
/* SIZE */
Packit Service c5cf8c
#define MPIR_T_PVAR_SIZE_SET_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_SIZE_SET_VAR_impl(ptr_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_SIZE_GET_VAR(ptr_) \
Packit Service c5cf8c
    MPIR_T_PVAR_SIZE_GET_VAR_impl(ptr_)
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_SIZE_SET(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_SIZE_SET_impl(name_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_SIZE_GET(name_) \
Packit Service c5cf8c
    MPIR_T_PVAR_SIZE_GET_impl(name_)
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_SIZE_REGISTER_STATIC(MODULE, dtype_, name_, \
Packit Service c5cf8c
            initval_, verb_, bind_, flags_, cat_, desc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_SIZE_REGISTER_STATIC_impl(dtype_, name_, \
Packit Service c5cf8c
            initval_, verb_, bind_, flags_, cat_, desc_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_SIZE_REGISTER_DYNAMIC(MODULE, dtype_, name_, \
Packit Service c5cf8c
            addr_, count_, verb_, bind_, flags_, get_value_, get_count_, cat_, desc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_SIZE_REGISTER_DYNAMIC_impl(dtype_, name_, \
Packit Service c5cf8c
            addr_, count_, verb_, bind_, flags_, get_value_, get_count, cat_, desc_))
Packit Service c5cf8c
Packit Service c5cf8c
/* PERCENTAGE */
Packit Service c5cf8c
#define MPIR_T_PVAR_PERCENTAGE_SET_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_PERCENTAGE_SET_VAR_impl(ptr_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_PERCENTAGE_GET_VAR(MODULE, ptr_) \
Packit Service c5cf8c
    MPIR_T_PVAR_PERCENTAGE_GET_VAR_impl(ptr_)
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_PERCENTAGE_SET(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_PERCENTAGE_SET_impl(name_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_PERCENTAGE_GET(MODULE, name_) \
Packit Service c5cf8c
    MPIR_T_PVAR_PERCENTAGE_GET_impl(name_)
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_PERCENTAGE_REGISTER_STATIC(MODULE, dtype_, name_, \
Packit Service c5cf8c
            initval_, verb_, bind_, flags_, cat_, desc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_PERCENTAGE_REGISTER_STATIC_impl(dtype_, name_, \
Packit Service c5cf8c
            initval_, verb_, bind_, flags_, cat_, desc_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_PERCENTAGE_REGISTER_DYNAMIC(MODULE, dtype_, name_, \
Packit Service c5cf8c
            addr_, count_, verb_, bind_, flags_, get_value_, get_count_, cat_, desc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_PERCENTAGE_REGISTER_DYNAMIC_impl(dtype_, name_, \
Packit Service c5cf8c
            addr_, count_, verb_, bind_, flags_, get_value_, get_count, cat_, desc_))
Packit Service c5cf8c
Packit Service c5cf8c
/* COUNTER */
Packit Service c5cf8c
#define MPIR_T_PVAR_COUNTER_INIT_VAR(MODULE, ptr_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_COUNTER_INIT_VAR_impl(ptr_))
Packit Service c5cf8c
#define MPIR_T_PVAR_COUNTER_GET_VAR(ptr_) \
Packit Service c5cf8c
    MPIR_T_PVAR_COUNTER_GET_VAR_impl(ptr_)
Packit Service c5cf8c
#define MPIR_T_PVAR_COUNTER_INC_VAR(MODULE, ptr_, inc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_COUNTER_INC_VAR_impl(ptr_, inc_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_COUNTER_INIT(MODULE, name_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_COUNTER_INIT_impl(name_))
Packit Service c5cf8c
#define MPIR_T_PVAR_COUNTER_GET(name_) \
Packit Service c5cf8c
    MPIR_T_PVAR_COUNTER_GET_impl(name_)
Packit Service c5cf8c
#define MPIR_T_PVAR_COUNTER_INC(MODULE, name_, inc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_COUNTER_INC_impl(name_, inc_))
Packit Service c5cf8c
#define MPIR_T_PVAR_COUNTER_ADDR(name_) \
Packit Service c5cf8c
    MPIR_T_PVAR_COUNTER_ADDR_impl(name_)
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_COUNTER_REGISTER_STATIC(MODULE, dtype_, name_, \
Packit Service c5cf8c
            verb_, bind_, flags_, cat_, desc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_COUNTER_REGISTER_STATIC_impl(dtype_, name_, \
Packit Service c5cf8c
            verb_, bind_, flags_, cat_, desc_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_COUNTER_REGISTER_DYNAMIC(MODULE, dtype_, name_, \
Packit Service c5cf8c
            addr_, count_, verb_, bind_, flags_, get_value_, get_count_, cat_, desc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_COUNTER_REGISTER_DYNAMIC_impl(dtype_, name_, \
Packit Service c5cf8c
            addr_, count_, verb_, bind_, flags_, get_value_, get_count_, cat_, desc_))
Packit Service c5cf8c
Packit Service c5cf8c
/* COUNTER ARRAY for user's convenience */
Packit Service c5cf8c
#define MPIR_T_PVAR_COUNTER_ARRAY_INIT_VAR(MODULE, ptr_, count_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_COUNTER_ARRAY_INIT_VAR_impl(ptr_, count_))
Packit Service c5cf8c
#define MPIR_T_PVAR_COUNTER_ARRAY_GET_VAR(ptr_, idx_) \
Packit Service c5cf8c
    MPIR_T_PVAR_COUNTER_ARRAY_GET_VAR_impl(ptr_, idx_)
Packit Service c5cf8c
#define MPIR_T_PVAR_COUNTER_ARRAY_INC_VAR(MODULE, ptr_, idx_, inc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_COUNTER_ARRAY_INC_VAR_impl(ptr_, idx_, inc_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_COUNTER_ARRAY_INIT(MODULE, name_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_COUNTER_ARRAY_INIT_impl(name_))
Packit Service c5cf8c
#define MPIR_T_PVAR_COUNTER_ARRAY_GET(name_, idx_) \
Packit Service c5cf8c
    MPIR_T_PVAR_COUNTER_ARRAY_GET_impl(name_, idx_)
Packit Service c5cf8c
#define MPIR_T_PVAR_COUNTER_ARRAY_INC(MODULE, ptr_, idx_, inc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_COUNTER_ARRAY_INC_impl(ptr_, idx_, inc_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_COUNTER_ARRAY_REGISTER_STATIC(MODULE, dtype_, name_, \
Packit Service c5cf8c
            verb_, bind_, flags_, cat_, desc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_COUNTER_ARRAY_REGISTER_STATIC_impl(dtype_, name_, \
Packit Service c5cf8c
            verb_, bind_, flags_, cat_, desc_))
Packit Service c5cf8c
Packit Service c5cf8c
/* ARRGEGATE */
Packit Service c5cf8c
#define MPIR_T_PVAR_AGGREGATE_INIT_VAR(MODULE, ptr_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_AGGREGATE_INIT_VAR_impl(ptr_))
Packit Service c5cf8c
#define MPIR_T_PVAR_AGGREGATE_GET_VAR(ptr_) \
Packit Service c5cf8c
    MPIR_T_PVAR_AGGREGATE_GET_VAR_impl(ptr_)
Packit Service c5cf8c
#define MPIR_T_PVAR_AGGREGATE_INC_VAR(MODULE, ptr_, inc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_AGGREGATE_INC_VAR_impl(ptr_, inc_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_AGGREGATE_INIT(MODULE, name_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_AGGREGATE_INIT_impl(name_))
Packit Service c5cf8c
#define MPIR_T_PVAR_AGGREGATE_GET(name_) \
Packit Service c5cf8c
    MPIR_T_PVAR_AGGREGATE_GET_impl(name_)
Packit Service c5cf8c
#define MPIR_T_PVAR_AGGREGATE_INC(MODULE, name_, inc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_AGGREGATE_INC_impl(name_, inc_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_AGGREGATE_REGISTER_STATIC(MODULE, dtype_, name_, \
Packit Service c5cf8c
            verb_, bind_, flags_, cat_, desc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_AGGREGATE_REGISTER_STATIC_impl(dtype_, name_, \
Packit Service c5cf8c
            verb_, bind_, flags_, cat_, desc_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_AGGREGATE_REGISTER_DYNAMIC(MODULE, dtype_, name_, \
Packit Service c5cf8c
            addr_, count_, verb_, bind_, flags_, get_value_, get_count_, cat_, desc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_AGGREGATE_REGISTER_DYNAMIC_impl(dtype_, name_, \
Packit Service c5cf8c
            addr_, count_, verb_, bind_, flags_, get_value_, get_count_, cat_, desc_))
Packit Service c5cf8c
Packit Service c5cf8c
/* TIMER */
Packit Service c5cf8c
Packit Service c5cf8c
/* A timer actually has a twin, i.e., a counter, which counts how many times
Packit Service c5cf8c
 the timer is started/stopped so that we could know the average time
Packit Service c5cf8c
 for events measured. In our impl, the twins are exposed to MPI_T through the
Packit Service c5cf8c
 same name, but in two MPI_T_PVAR classes (timer and counter) and two data types
Packit Service c5cf8c
 (double and unsigned long long) respectively.
Packit Service c5cf8c
*/
Packit Service c5cf8c
#define MPIR_T_PVAR_TIMER_INIT_VAR(MODULE, ptr_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_TIMER_INIT_VAR_impl(ptr_))
Packit Service c5cf8c
#define MPIR_T_PVAR_TIMER_GET_VAR(MODULE, ptr_, buf) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_TIMER_GET_VAR_impl(ptr_, buf))
Packit Service c5cf8c
#define MPIR_T_PVAR_TIMER_START_VAR(MODULE, ptr_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_TIMER_START_VAR_impl(ptr_))
Packit Service c5cf8c
#define MPIR_T_PVAR_TIMER_END_VAR(MODULE, ptr_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_TIMER_END_VAR_impl(ptr_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_TIMER_INIT(MODULE, name_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_TIMER_INIT_impl(name_))
Packit Service c5cf8c
#define MPIR_T_PVAR_TIMER_GET(MODULE, name_, buf_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_TIMER_GET_impl(name_, buf_))
Packit Service c5cf8c
#define MPIR_T_PVAR_TIMER_START(MODULE, name_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_TIMER_START_impl(name_))
Packit Service c5cf8c
#define MPIR_T_PVAR_TIMER_END(MODULE, name_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_TIMER_END_impl(name_))
Packit Service c5cf8c
#define MPIR_T_PVAR_TIMER_ADDR(name_) \
Packit Service c5cf8c
    MPIR_T_PVAR_TIMER_ADDR_impl(name_)
Packit Service c5cf8c
Packit Service c5cf8c
/* This macro actually register twins of a timer and a counter to MPIR_T */
Packit Service c5cf8c
#define MPIR_T_PVAR_TIMER_REGISTER_STATIC(MODULE, dtype_, name_, \
Packit Service c5cf8c
            verb_, bind_, flags_, cat_, desc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_TIMER_REGISTER_STATIC_impl(dtype_, name_, \
Packit Service c5cf8c
            verb_, bind_, flags_, cat_, desc_))
Packit Service c5cf8c
Packit Service c5cf8c
/* HIGHWATERMARK */
Packit Service c5cf8c
Packit Service c5cf8c
/* Embed type names in watermark operations because these operations need to
Packit Service c5cf8c
   know types of watermark to work, however we can't use typeof(ptr_) in C.
Packit Service c5cf8c
 */
Packit Service c5cf8c
#define MPIR_T_PVAR_UINT_HIGHWATERMARK_INIT_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_UINT_HIGHWATERMARK_INIT_VAR_impl(ptr_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_ULONG_HIGHWATERMARK_INIT_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_ULONG_HIGHWATERMARK_INIT_VAR_impl(ptr_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_ULONG2_HIGHWATERMARK_INIT_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_ULONG2_HIGHWATERMARK_INIT_VAR_impl(ptr_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_DOUBLE_HIGHWATERMARK_INIT_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_DOUBLE_HIGHWATERMARK_INIT_VAR_impl(ptr_, val_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_UINT_HIGHWATERMARK_UPDATE_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_UINT_HIGHWATERMARK_UPDATE_VAR_impl(ptr_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_ULONG_HIGHWATERMARK_UPDATE_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_ULONG_HIGHWATERMARK_UPDATE_VAR_impl(ptr_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_ULONG2_HIGHWATERMARK_UPDATE_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_ULONG2_HIGHWATERMARK_UPDATE_VAR_impl(ptr_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_DOUBLE_HIGHWATERMARK_UPDATE_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_DOUBLE_HIGHWATERMARK_UPDATE_VAR_impl(ptr_, val_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_UINT_HIGHWATERMARK_INIT(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_UINT_HIGHWATERMARK_INIT_impl(name_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_ULONG_HIGHWATERMARK_INIT(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_ULONG_HIGHWATERMARK_INIT_impl(name_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_ULONG2_HIGHWATERMARK_INIT(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_ULONG2_HIGHWATERMARK_INIT_impl(name_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_DOUBLE_HIGHWATERMARK_INIT(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_DOUBLE_HIGHWATERMARK_INIT_impl(name_, val_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_UINT_HIGHWATERMARK_UPDATE(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_UINT_HIGHWATERMARK_UPDATE_impl(name_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_ULONG_HIGHWATERMARK_UPDATE(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_ULONG_HIGHWATERMARK_UPDATE_impl(name_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_ULONG2_HIGHWATERMARK_UPDATE(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_ULONG2_HIGHWATERMARK_UPDATE_impl(name_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_DOUBLE_HIGHWATERMARK_UPDATE(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_DOUBLE_HIGHWATERMARK_UPDATE_impl(name_, val_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_HIGHWATERMARK_REGISTER_STATIC(MODULE, dtype_, \
Packit Service c5cf8c
            name_, initval_, verb_, bind_, flags_, cat_, desc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_HIGHWATERMARK_REGISTER_STATIC_impl(dtype_, name_, \
Packit Service c5cf8c
            initval_, verb_, bind_, flags_, cat_, desc_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_HIGHWATERMARK_REGISTER_DYNAMIC(MODULE, dtype_, name_, \
Packit Service c5cf8c
            addr_, count_, verb_, bind_, flags_, get_value_, get_count_, cat_, desc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_HIGHWATERMARK_REGISTER_DYNAMIC_impl(dtype_, name_, \
Packit Service c5cf8c
            addr_, count_, verb_, bind_, flags_, get_value_, get_count_, cat_, desc_))
Packit Service c5cf8c
Packit Service c5cf8c
/* LOWWATERMARK */
Packit Service c5cf8c
#define MPIR_T_PVAR_UINT_LOWWATERMARK_INIT_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_UINT_LOWWATERMARK_INIT_VAR_impl(ptr_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_ULONG_LOWWATERMARK_INIT_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_ULONG_LOWWATERMARK_INIT_VAR_impl(ptr_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_ULONG2_LOWWATERMARK_INIT_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_ULONG2_LOWWATERMARK_INIT_VAR_impl(ptr_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_DOUBLE_LOWWATERMARK_INIT_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_DOUBLE_LOWWATERMARK_INIT_VAR_impl(ptr_, val_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_UINT_LOWWATERMARK_UPDATE_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_UINT_LOWWATERMARK_UPDATE_VAR_impl(ptr_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_ULONG_LOWWATERMARK_UPDATE_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_ULONG_LOWWATERMARK_UPDATE_VAR_impl(ptr_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_ULONG2_LOWWATERMARK_UPDATE_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_ULONG2_LOWWATERMARK_UPDATE_VAR_impl(ptr_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_DOUBLE_LOWWATERMARK_UPDATE_VAR(MODULE, ptr_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_DOUBLE_LOWWATERMARK_UPDATE_VAR_impl(ptr_, val_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_UINT_LOWWATERMARK_INIT(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_UINT_LOWWATERMARK_INIT_impl(name_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_ULONG_LOWWATERMARK_INIT(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_ULONG_LOWWATERMARK_INIT_impl(name_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_ULONG2_LOWWATERMARK_INIT(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_ULONG2_LOWWATERMARK_INIT_impl(name_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_DOUBLE_LOWWATERMARK_INIT(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_DOUBLE_LOWWATERMARK_INIT_impl(name_, val_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_UINT_LOWWATERMARK_UPDATE(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_UINT_LOWWATERMARK_UPDATE_impl(name_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_ULONG_LOWWATERMARK_UPDATE(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_ULONG_LOWWATERMARK_UPDATE_impl(name_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_ULONG2_LOWWATERMARK_UPDATE(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_ULONG2_LOWWATERMARK_UPDATE_impl(name_, val_))
Packit Service c5cf8c
#define MPIR_T_PVAR_DOUBLE_LOWWATERMARK_UPDATE(MODULE, name_, val_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_DOUBLE_LOWWATERMARK_UPDATE_impl(name_, val_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_LOWWATERMARK_REGISTER_STATIC(MODULE, dtype_, name_, \
Packit Service c5cf8c
            initval_, verb_, bind_, flags_, cat_, desc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_LOWWATERMARK_REGISTER_STATIC_impl(dtype_, name_, \
Packit Service c5cf8c
            initval_, verb_, bind_, flags_, cat_, desc_))
Packit Service c5cf8c
Packit Service c5cf8c
#define MPIR_T_PVAR_LOWWATERMARK_REGISTER_DYNAMIC(MODULE, dtype_, name_, \
Packit Service c5cf8c
            addr_, count_, verb_, bind_, flags_, get_value_, get_count_, cat_, desc_) \
Packit Service c5cf8c
    PVAR_GATED_ACTION(MODULE, MPIR_T_PVAR_LOWWATERMARK_REGISTER_DYNAMIC_impl(dtype_, name_, \
Packit Service c5cf8c
            addr_, count_, verb_, bind_, flags_, get_value_, get_count_, cat_, desc_))
Packit Service c5cf8c
Packit Service c5cf8c
int MPIR_T_cvar_handle_alloc_impl(int cvar_index, void *obj_handle, MPI_T_cvar_handle * handle,
Packit Service c5cf8c
                                  int *count);
Packit Service c5cf8c
int MPIR_T_cvar_read_impl(MPI_T_cvar_handle handle, void *buf);
Packit Service c5cf8c
int MPIR_T_cvar_write_impl(MPI_T_cvar_handle handle, const void *buf);
Packit Service c5cf8c
int MPIR_T_pvar_session_create_impl(MPI_T_pvar_session * session);
Packit Service c5cf8c
int MPIR_T_pvar_session_free_impl(MPI_T_pvar_session * session);
Packit Service c5cf8c
int MPIR_T_pvar_handle_alloc_impl(MPI_T_pvar_session session, int pvar_index, void *obj_handle,
Packit Service c5cf8c
                                  MPI_T_pvar_handle * handle, int *count);
Packit Service c5cf8c
int MPIR_T_pvar_handle_free_impl(MPI_T_pvar_session session, MPI_T_pvar_handle * handle);
Packit Service c5cf8c
int MPIR_T_pvar_start_impl(MPI_T_pvar_session session, MPI_T_pvar_handle handle);
Packit Service c5cf8c
int MPIR_T_pvar_stop_impl(MPI_T_pvar_session session, MPI_T_pvar_handle handle);
Packit Service c5cf8c
int MPIR_T_pvar_read_impl(MPI_T_pvar_session session, MPI_T_pvar_handle handle, void *buf);
Packit Service c5cf8c
int MPIR_T_pvar_write_impl(MPI_T_pvar_session session, MPI_T_pvar_handle handle, const void *buf);
Packit Service c5cf8c
int MPIR_T_pvar_reset_impl(MPI_T_pvar_session session, MPI_T_pvar_handle handle);
Packit Service c5cf8c
int MPIR_T_pvar_readreset_impl(MPI_T_pvar_session session, MPI_T_pvar_handle handle, void *buf);
Packit Service c5cf8c
int MPIR_T_category_get_cvars_impl(int cat_index, int len, int indices[]);
Packit Service c5cf8c
int MPIR_T_category_get_pvars_impl(int cat_index, int len, int indices[]);
Packit Service c5cf8c
int MPIR_T_category_get_categories_impl(int cat_index, int len, int indices[]);
Packit Service c5cf8c
Packit Service c5cf8c
#endif /* MPIT_H_INCLUDED */