CPC Sampling Data Returns
The interfaces described in this section enable the return of data
from the counters to the application. Counter data resides in an
opaque data structure cpc_buf_t
. This data
structure takes a snapshot of the state of counters in use by a bound
set and includes the following information:
-
The 64-bit values of each counter
-
The timestamp of the most recent hardware snapshot
-
A cumulative CPU cycle counter that counts the number of CPU cycles the processor has used on the bound set
cpc_buf_t *cpc_buf_create(cpc_t *cpc, cpc_set_t *set); int cpc_buf_destroy(cpc_t *cpc, cpc_buf_t *buf); int cpc_set_sample(cpc_t *cpc, cpc_set_t *set, cpc_buf_t *buf);
The cpc_buf_create
()
function creates a buffer that
stores data from the set specified in
cpc_set_t
. The
cpc_buf_destroy
()
function frees the memory
that is associated with the given cpc_buf_t
.
The cpc_buf_sample
()
function takes a snapshot of
the counters that are counting on behalf of the specified set. The
specified set must already be bound and have a buffer created before
calling the cpc_buf_sample
()
function.
Sampling into a buffer does not update the preset of the requests
associated with that set. When a buffer is sampled with the
cpc_buf_sample
()
function, then unbound and
bound again, counts start from the preset of the request as in the
original call to the cpc_set_add_request
()
function.