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.