Solaris 动态跟踪指南

接口属性

DTrace 使用由两个稳定性级别和一个相关性类组成的三重属性来描述接口。根据约定,接口属性按以下顺序列出,并用斜杠分隔:

name-stability /  data-stability / dependency-class

当接口名称显示在 D 程序中或 dtrace(1M) 命令行上时,接口的 name stability 描述与其名称关联的稳定性级别。例如,execname D 变量是一个“稳定”名称:根据以上介绍的稳定接口规则,Sun 保证在 D 程序中继续支持该标识符。

接口的 data stability 不同于与接口名称关联的稳定性。此稳定性级别说明,Sun 承诺维护接口以及任何关联的数据语义使用的数据格式。例如,pid D 变量是一个“稳定”接口:在 Solaris 中,进程 ID 是一个“稳定”概念。Sun 保证 pid 变量的类型将为 pid_t,并具有如下语义:根据稳定接口规则,将其设置为与触发给定探测器的线程对应的进程 ID。

接口的 dependency class 与其名称和数据稳定性均不同,用于说明接口是否特定于当前操作平台或微处理器。

我们将很快看到,DTrace 和 D 编译器可跟踪所有 DTrace 接口实体的稳定性属性,包括提供器、探测器说明、D 变量、D 函数、类型和程序语句本身。请注意,这三个值均能独立变化。例如,curthread D 变量具有“稳定/专用/公用”等属性:变量名称为“稳定”并且为所有 Solaris 操作平台“公用”,但该变量提供对作为 Solaris 内核实现产物的“专用”数据格式的访问。与所定义的变量相同,大多数 D 变量都提供“稳定/稳定/公用”等属性。