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