pmwebtimerregister(3) — Linux manual page



NAME         top

       pmWebTimerRegister, pmWebTimerRelease,
       pmWebTimerSetMetricRegistry - thread-safe timer list management

C SYNOPSIS         top

       #include <pcp/pmwebapi.h>

       typedef void (*pmWebTimerCallBack)(void *data);
       int pmWebTimerRegister(pmWebTimerCallBack callback, void *data);

       int pmWebTimerRelease(int seq);
       int pmWebTimerSetMetricRegistry(struct mmv_registry *registry);
       cc ... -lpcp_web

DESCRIPTION         top

       The pmWebTimerRegister and related API functions provide a
       convenient thread-safe API for applications to manage a list of
       timer driven callbacks.  On the first call to pmWebTimerRegister
       or pmWebTimerSetMetricRegistry, an internal timer is set up and
       initialized to fire every 1.0 seconds.  Each time the timer
       fires, all currently registered callback functions will be called
       serially with the opaque data pointer that was supplied when each
       function was registered.  The pmWebTimerCallBack typedef provides
       a suitable callback function prototype.

       All registered callback functions should be non-blocking and
       execute quickly and synchronously.  Typical callback functions
       include refreshing instrumentation, calculating and updating
       performance metric values, periodic garbage collection and any
       other local function that requires regular execution.

       The pmWebTimerSetMetricRegistry function provides a convenient
       way for an application to pass in a pointer to an libpcp_mmv(3)
       registry that has been suitably initialized by the calling
       application.  This registry will be used to dynamically create
       six server resource metrics named NAME.mem.datasz,
       NAME.mem.maxrss,, NAME.cpu.sys, NAME.cpu.user and, where NAME is the root PCP PMNS(5) name set up by the
       calling application.  These metrics should be reasonably self
       explanatory; they provide resource usage metrics from the calling
       application / server and use getrusage(2), times(2) and

RETURN VALUE         top

       The pmWebTimerRegister function returns a positive integer handle
       that may be subsequently used in a call to pmWebTimerRelease to
       remove a timer from the internal timer list.  When a timer is
       removed with a call to pmWebTimerRelease, the internal data
       structures are freed.  The caller however, is responsible for
       freeing the associated data (since it may or may not be
       dynamically allocated).

DIAGNOSTICS         top

       On failure a negative PMAPI error code is returned in all cases.

SEE ALSO         top

       pmproxy(1), mmv_stats_registry(3), PMAPI(3) and PMWEBAPI(3).

COLOPHON         top

       This page is part of the PCP (Performance Co-Pilot) project.
       Information about the project can be found at 
       ⟨⟩.  If you have a bug report for this manual
       page, send it to  This page was obtained from the
       project's upstream Git repository
       ⟨⟩ on 2021-08-27.
       (At that time, the date of the most recent commit that was found
       in the repository was 2021-08-27.)  If you discover any rendering
       problems in this HTML version of the page, or you believe there
       is a better or more up-to-date source for the page, or you have
       corrections or improvements to the information in this COLOPHON
       (which is not part of the original manual page), send a mail to

Performance Co-Pilot               PCP             PMWEBTIMERREGISTER(3)