pm_set_program_pthread_mx 和 pm_set_program_pthread_mm 子例程

用途

为目标 pthread 设置计数器多路复用方式和多方式的性能监视器编程。

性能监视器 API 库 (libpmapi.a)

语法

#include <pmapi.h>  

int pm_set_program_pthread_mx ( pid,  tid,  ptid,  *prog)
pid_t pid;
tid_t tid;
ptid_t ptid;
pm_prog_mx_t *prog;

int pm_set_program_pthread_mm ( pid, tid, ptid, *prog_mm)
pid_t pid;
tid_t tid;
ptid_t ptid;
pm_prog_mm_t *prog_mm;

描述

pm_set_program_pthread_mxpm_set_program_pthread_mm 子例程分别以计数器多路复用方式或目标 pthread 的多方式设置 "性能监视器" 编程。 pthread 必须停止,并且必须是 debuggee 进程的一部分,在调用进程的控制下。

pm_set_program_pthread_mx 设置包含要计数的事件数组事件的列表以及要计数的方式。 该方式是所有事件列表的全局方式。 要计数的事件位于事件标识列表的数组中。

pm_set_program_pthread_mm 子例程设置包含要计数的事件数组的列表,以及用于计数每个事件数组的关联方式。 为每个事件数组定义计数方式。

必须从 pm_inititialize 子例程返回的列表中选择事件标识。

如果 pthread 以 1: 1 方式运行,那么必须仅指定 tid 参数。 如果 pthread 以 m: n 方式运行,那么必须仅指定 ptid 参数。 如果同时指定了 ptidtid 参数,那么它们必须引用具有指定的 ptid 参数的单个 pthread ,并且当前正在具有指定的 tid 参数的内核线程上运行。

这两个子例程的计数方式包括 "用户方式" 和/或 "内核方式"; 以及 "初始计数状态"。 对于 "用户方式" 和 "内核方式" ,缺省值设置为 "关闭" ,而 "初始缺省状态" 设置为延迟计数,直到调用 pm_start_pthread 子例程为止。

当您使用 pm_set_program_pthread_mm 子例程进行多方式计数时, "进程树方式" 和 "启动计数方式" 由它们在第一个编程集中定义的值固定。

如果该列表包含可与阈值一起使用的事件 (如 pm_initialize 子例程所指示) ,那么还可以指定阈值。

参数

描述
pid 目标 pthread 的进程标识。 目标进程必须是调用者进程的调试器。
tid 目标 pthread 的线程标识。 要忽略此参数,请将其设置为 0。
ptid 目标 pthread 的 pthread 标识。 要忽略此参数,请将其设置为 0。
* 程序 指定要在 "性能监视器" 设置中使用的事件和方式。 prog 参数支持以下方式:
用户
在用户方式下运行的进程计数 (缺省值设置为 "关闭")。
PM_KERNEL
在内核方式下运行的进程计数 (缺省设置为 "关闭")。
PM_COUNT
立即开始计数 (缺省设置为 "不开始计数")。
* 进步毫米 指定要在 "性能监视器" 设置中使用的事件和关联方式。 prog_mm 参数支持以下方式:
用户
在用户方式下运行的进程计数 (缺省值设置为 "关闭")。
PM_KERNEL
在内核方式下运行的进程计数 (缺省设置为 "关闭")。
PM_COUNT
立即开始计数 (缺省值设置为 "不开始计数")。
PM_PROCTREE
仅对调用进程及其后代将计数设置为 "开启" (缺省值设置为 "关闭")。

PM_PROCTREE 方式和在第一个设置中定义的 PM_COUNT 方式将修正计数的值。

返回值

描述
0 操作成功完成。
Positive error code 请参阅 pm_error 子例程 以解码错误代码。

错误代码

请参阅 pm_error 子例程

文件

描述
/usr/include/pmapi.h 定义标准宏,数据类型和子例程。