CPC Buffer Operations
The following routines provide access to the data in a
cpc_buf_t structure.
int cpc_buf_get(cpc_t *cpc, cpc_buf_t *buf, int index, uint64_t *val);
int cpc_buf_set(cpc_t *cpc, cpc_buf_t *buf, int index, uint64_t *val);
hrtime_t cpc_buf_hrtime(cpc_t *cpc, cpc_buf_t *buf);
uint64_t cpc_buf_tick(cpc_t *cpc, cpc_buf_t *buf);
int cpc_buf_sub(cpc_t *cpc, cpc_buf_t *result, cpc_buf_t *left
cpc_buf_t *right);
int cpc_buf_add(cpc_t *cpc, cpc_buf_t *result, cpc_buf_t *left,
cpc_buf_t *right);
int cpc_buf_copy(cpc_t *cpc, cpc_buf_t *dest, cpc_buf_t *src);
void cpc_buf_zero(cpc_t *cpc, cpc_buf_t *buf);The cpc_buf_get()
function retrieves the value of
the counter that is identified by the index
parameter. The index parameter is a value that
is returned by the cpc_set_add_request()
function
before the set is bound. The cpc_buf_get()
function
stores the value of the counter at the location indicated by the
val parameter.
The cpc_buf_set()
function sets the value of the
counter that is identified by the index
parameter. The index parameter is a value that
is returned by the cpc_set_add_request()
function
before the set is bound. The cpc_buf_set()
function
sets the counter's value to the value at the location indicated by the
val parameter. Neither the
cpc_buf_get()
function nor the
cpc_buf_set()
function change the preset of
the corresponding CPC request.
The cpc_buf_hrtime()
function returns the high
resolution timestamp that indicates when the hardware was sampled. The
cpc_buf_tick()
function returns the number of
CPU clock cycles that have elapsed while the LWP is running.
The cpc_buf_sub()
function computes the difference
between the counters and tick values that are specified in the
left and right
parameters. The cpc_buf_sub()
function stores the
results in result. A given invocation of the
cpc_buf_sub()
function must have all
cpc_buf_t values originate from the
same cpc_set_t structure. The
result index contains the result of the
left - right
computation for each request index in the buffers. The result index
also contains the tick difference. The
cpc_buf_sub()
function sets the
high-resolution timestamp of the destination buffer to the most recent
time of the left or
right buffers.
The cpc_buf_add()
function computes the total of
the counters and tick values that are specified in the
left and right
parameters. The cpc_buf_add()
function stores the
results in result. A given invocation of the
cpc_buf_add()
function must have all
cpc_buf_t values originate from the
same cpc_set_t structure. The
result index contains the result of the
left + right
computation for each request index in the buffers. The result index
also contains the tick total. The
cpc_buf_add()
function sets the
high-resolution timestamp of the destination buffer to the most recent
time of the left or
right buffers.
The cpc_buf_copy()
function makes
dest identical to
src.
The cpc_buf_zero()
function sets everything in
buf to zero.