cpc_set_t *cpc_set_create(cpc_t *cpc); int cpc_set_destroy(cpc_t *cpc, cpc_set_t *set); int cpc_set_add_request(cpc_t *cpc, cpc_set_t *set, const char *event, uint64_t preset, uint_t flags, uint_t nattrs, const cpc_attr_t *attrs); int cpc_set_request_preset(cpc_t *cpc, cpc_set_t *set, int index, uint64_t preset);
不透明数据类型 cpc_set_t 表示请求的集合。这些集合称为集。cpc_set_create() 函数可用于创建空集。cpc_set_destroy() 函数可销毁一个集,并释放该集使用的所有内存。销毁集将释放该集使用的硬件资源。
cpc_set_add_request() 函数可用于向集中添加请求。以下列出了请求的参数。
用于指定要进行计数的事件的名称的字符串。
用作计数器初始值的 64 位无符号整数。
应用于一组请求标志的逻辑或运算的结果。
attrs 指向的数组中的属性个数。
指向 cpc_attr_t 结构数组的指针。
以下列出了有效的请求标志。
利用此标志,当 CPU 在用户模式下执行时可对出现的事件进行计数。
利用此标志,当 CPU 在特权模式下执行时可对出现的事件进行计数。
此标志可请求在硬件计数器溢出时发出通知。
CPC 接口可将属性作为 cpc_attr_t 结构数组来进行传递。
cpc_set_add_request() 函数成功返回时,它将返回一个索引。此索引会引用通过调用 cpc_set_add_request() 函数时添加的请求所生成的数据。
cpc_set_request_preset() 函数可更改请求的预设值。通过更改可将新的预设值与溢出集重新绑定在一起。
cpc_walk_requests() 函数可针对 cpc_set_t 中的每个请求调用用户提供的 action() 例程。arg 参数的值会在未进行解释的情况下传递给用户例程。应用程序使用 cpc_walk_requests() 函数可列显集中每个请求的配置。cpc_walk_requests() 函数的语法如下:
void cpc_walk_requests(cpc_t *cpc, cpc_set_t *set, void *arg, void (*action)(void *arg, int index, const char *event, uint64_t preset, uint_t flags, int nattrs, const cpc_attr_t *attrs));