外部变量

内核类变量、入口和出口类变量以及内置变量都是外部变量。

它们独立于 ProbeVue 框架存在,并在任何 Vue 脚本的上下文之外派生其值。 ProbeVue 允许在 Vue 脚本中提供外部变量的当前值。 这些变量在 Vue 脚本的上下文中始终是只读的。 任何尝试修改外部变量值的程序语句都会由编译器标记为非法语句。

虽然外部变量具有预定义的类型,但 ProbeVue 需要在访问这些变量的 Vue 脚本中显式声明所有外部变量 (内置变量除外)。 下表描述了如何确定外部变量的类型:

变量 TYPE
内核全局类 来自内核变量的 __kernel 声明语句。
入口类 Vue 脚本中的函数原型声明。 必须指定将在 Vue 脚本中使用的每个参数的数据类型。
内核函数的返回值 Vue 脚本中的函数原型声明。 必须提供返回值的类型。
内置变量 这些通常依赖于底层的内核变量。 其定义的类型和等效的 ProbeVue 类型如下所示:
内置变量 已定义类型 ProbeVue 类型
__tid tid_t long long
__pid pid_t long long
__ppid pid_t long long
__pgid pid_t long long
__pname char [32] String [32]
__uid uid_t unsigned int
__euid uid_t unsigned int
__trcid pid_t long long
__errno 整数 整数
__kernelmode 整数 整数
__r3..__r10 32 位用于 32 位进程

64 位用于 64 位进程

unsigned long
__curthread 不适用 所有成员均为 long long
__curproc 不适用 除了 cwd 之外的所有成员均为 long long。 cwd 成员是字符串类型。
__ublock 不适用 所有成员均为 long long
注: 返回的数据的最大大小可以小于类型的大小。 例如,AIX®中的进程 ID 可用 32 位整数表示,而 pid_t 数据类型则是 64 位整数,用于 64 位进程和内核。