外部变量
内核类变量、入口和出口类变量以及内置变量都是外部变量。
它们独立于 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 位进程和内核。