全局类变量
全局类的变量具有全局作用域,并且在 Vue 脚本中随处可见。 可以在 Vue 脚本的一个或多个子句中使用全局变量。 为了清晰明了,也可在第一个子句之前的开始处以文本形式声明这些变量。 相应地将全局变量初始化为 0 或 NULL。
缺省情况下,会为 Vue 脚本中的所有变量分配全局类,除非将显式非全局类说明符作为声明的前缀。 在声明变量时,您还可以使用 __global 类说明符来显式声明全局变量。 根据定义,列表变量总是创建为全局类变量。
除非全局变量是列表类型,否则不会对它们的读取和更新进行序列化。 在同时发出调查时,不保证数据速度。 非列表类型的全局变量对于收集概要分析和其他统计信息很有用。
可以在 Vue 子句的谓词部分中使用全局变量。
以下脚本是初始化和使用全局变量的示例:
int wcount; /* Global variable declared before first clause */
@@BEGIN
{
int f_count; /* Global variable declared inside @@BEGIN */
__global int z_count; /* Global variable declared with __global prefix */
f_count = 12;
}
@@syscall:*:read:entry
when (z_count == 0)
{
int m_count; /* Global variable declared inside a probe */
m_count += f_count; /* f_count already declared in earlier probe */
printf("m_count = %d\n", m_count);
if (wcount == 1)
exit();
}
@@syscall:*:write:entry
{
m_count++; /* m_count already declared in earlier probe */
}
@@syscall:*:write:exit
{
wcount = 1; /* w_count declared globally */
}