NAME

       pmConvScale - rescale a performance metric value


C SYNOPSIS

       #include <pcp/pmapi.h>

       int  pmConvScale(int  type, const pmAtomValue *ival, const
       pmUnits *iunit, pmAtomValue *oval, pmUnits *ounit)

       cc ... -lpcp


DESCRIPTION

       All performance metric values may be encoded in a  pmAtom­
       Value union, defined as follows;

            typedef union {
                __int32_t    l;     /* 32-bit signed */
                __uint32_t   ul;    /* 32-bit unsigned */
                __int64_t    ll;    /* 64-bit signed */
                __uint64_t   ull;   /* 64-bit unsigned */
                float        f;     /* 32-bit floating point */
                double       d;     /* 64-bit floating point */
                char         *cp;   /* char ptr */
                void         *vp;   /* void ptr */
            } pmAtomValue;

       The  encoding of a performance metric's dimensionality and
       scale uses a pmUnits structure; see pmLookupDesc(3).

       Given a performance metric value pointed to by ival multi­
       ply  it  by  a  scale factor and return the value in oval.
       The scaling takes place from the units  defined  by  iunit
       into  the  units  defined by ounit.  Both input and output
       units must have the same dimensionality.

       The performance metric type for both input and output val­
       ues  is  determined  by type, the value for which is typi­
       cally extracted from a pmDesc structure, following a  call
       to pmLookupDesc(3) for a particular performance metric.

       pmConvScale  is  most  useful  when  values  returned  via
       pmFetch(3),  (and  possibly  extracted  using   pmExtract­
       Value(3))  need to be normalized into some canonical scale
       and units for the purposes of computation.

       As a special case, if all components of the dimension  are
       zero,  then this is treated as synonymous with a ``count''
       dimension of one, and so the  ``count''  scale  components
       determine  the  relative  scaling.   This accommodates the
       case where performance metrics are dimensionless,  without
       special case handling on the part of the caller.

       PMAPI(3),   pmAtomStr(3),  pmExtractValue(3),  pmFetch(3),
       pmLookupDesc(3), pmPrintValue(3),  pmTypeStr(3)  and  pmU­
       nitsStr(3).


DIAGNOSTICS

       PM_ERR_CONV

              iunit  and  ounit have different dimensionality, or
              have inappropriate type

       PM_ERR_UNIT

              Inappropriate iunit or ounit parameter


Man(1) output converted with man2html