pm_get_program_thread_mx 和 pm_get_program_thread_mm 子例程

用途

检索目标线程的计数器多路复用方式和多方式下的 "性能监视器" 设置。

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

语法

#include <pmapi.h>

int pm_get_program_thread_mx ( pid,  tid,  *prog)
pid_t pid;
tid_t tid;
pm_prog_mx_t *prog;

int pm_get_program_thread_mm (pid, tid, *prog_mm)
pid_t pid;
tid_t tid;
pm_prog_mm_t *prog_mm;

描述

这些子例程仅支持 1: 1 线程技术模型。 它们已分别被支持 1: 1 和 M: N 线程模型的 pm_get_program_pthread_mxpm_get_program_pthread_mm 子例程取代。 对 pm_get_program_thread_mx 子例程或对 pm_get_program_thread_mm 子例程的调用分别相当于对 pm_get_program_pthread_mx 子例程或具有等于 0 的 ptid 参数的 pm_get_program_pthread_mm 子例程的调用。

pm_get_program_thread_mx 子例程和 pm_get_program_thread_mm 子例程检索目标内核线程的性能监视器设置。 线程必须停止,并且必须是在调用进程控制下的调试进程的一部分。 这包括方式信息和正在计数的事件,这些事件位于事件标识列表的数组中。 事件标识来自 pm_initialize 子例程返回的列表。

在多路复用方式下计数时,该方式对于所有事件列表都是全局方式。 以多方式计数时,会将方式与每个事件列表相关联。

计数模式包括用户模式,内核模式和当前计数状态。

如果列表包含可与阈值一起使用的事件 (如 pm_init 子例程所指示) ,那么还会返回阈值值。

用户应用程序必须释放已分配的数组以存储事件列表 ( prog 参数中的 events_set 字段)。

参数

描述
pid 目标线程的进程标识。 目标进程必须是调试进程的自变量。
tid 目标线程的线程标识。
* 程序 返回设置的性能监视器事件和方式。 它支持以下方式:
PM_USER
正在对以用户方式运行的进程进行计数。
PM_KERNEL
正在内核方式下运行的进程计数。
PM_COUNT
正在计数。
* 进步毫米 返回设置了哪些性能监视器事件和关联方式。 它支持以下方式:
用户
正在对以用户方式运行的进程进行计数。
PM_KERNEL
正在内核方式下运行的进程计数。
PM_COUNT
正在计数。
PM_PROCTREE
仅适用于调用进程及其后代的计数。

PM_PROCTREE 方式和 PM_COUNT 方式是所有方式集的公共方式。

返回值

描述
重大安全事件数量 未发生错误。
正错误代码 请参阅 pm_error 子例程 以解码错误代码。

错误代码

请参阅 pm_error 子例程

文件

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