NAME¶
QmcContext - container for a PMAPI context and its metrics
C++ SYNOPSIS¶
#include <QmcContext.h>
CC ... -lqmc -lpcp
DESCRIPTION¶
A 
QmcContext object is a container for a single 
PMAPI(3) context.
  The object maintains a list of all the metric descriptors (
QmcDesc),
  instance domains (
QmcIndom) and metrics (
QmcMetric) using the
  context to minimize the duplication of these objects.
CONSTRUCTORS¶
A 
QmcContext object should be constructed through the
  
QmcGroup::use interface.
DESCRIPTOR LOOKUP¶
The metric and instance domain descriptors are cached by the 
QmcContext
  object to reduce duplicate 
QmcDesc(3) and 
QmcIndom(3) objects
  and 
PMAPI(3) calls required to create them. Also the mapping from
  metrics names to 
pmIDs is also maintained to avoid
  
pmLookupName(3) calls.
  - int lookupDesc(const char *name, pmID& id);
 
  - Search for the metric name in the name list and set id to
      the known pmID. If not found, use pmLookupName(3) to get the
      mapping. If this call fails, the PMAPI(3) error code will be
      returned.
 
  - int lookupDesc(const char *name, uint_t& desc, uint_t&
    indom);
 
  - Find the index desc and indom to the QmcDesc object
      and the QmcIndom object for the metric name. The indexes can
      then be used with QmcContext::desc and QmcContext::indom to
      obtain references to the real objects. The methods will return a
      PMAPI(3) error code if the metric descriptor or instance domain
      could not be obtained.
 
  - int lookupDesc(pmID pmid, uint_t& desc, uint_t&
    indom);
 
  - Find the index desc and indom to the QmcDesc object
      and the QmcIndom object for the metric pmid. The indexes can
      then be used with QmcContext::desc and QmcContext::indom to
      obtain references to the real objects. The methods will return a
      PMAPI(3) error code if the metric descriptor or instance domain
      could not be obtained.
 
SEE ALSO¶
PMAPI(3), 
QMC(3), 
QmcDesc(3), 
QmcGroup(3),
  
QmcIndom(3), 
QmcMetric(3), 
pmflush(3),
  
pmLookupName(3) and 
pmprintf(3).
DIAGNOSTICS¶
Error messages are generated using 
pmprintf(3) but are not flushed. It is
  the responsibility of the user to call 
pmflush(3) to output any
  messages.
Additional diagnostics may be activated by adding 
DBG_TRACE_PMC and
  
DBG_TRACE_OPTFETCH to the global 
pmDebug.