Globale Klassenvariablen

Variablen globaler Klassen haben globalen Geltungsbereich und sind überall in einem Vue -Script sichtbar. Sie können eine globale Variable in einer oder mehreren Klauseln eines Vue -Scripts verwenden. Sie können auch am Anfang textuell vor der ersten Klausel für Klarheit deklariert werden. Globale Variablen werden nach Bedarf mit null oder NULL initialisiert.

Alle Variablen in einem Vue -Script werden standardmäßig einer globalen Klasse zugeordnet, es sei denn, der Deklaration wird eine explizite nicht globale Klassenkennung vorangestellt. Sie können globale Variablen auch explizit deklarieren, indem Sie beim Deklarieren einer Variablen die Klassenkennung __global verwenden. Listenvariablen werden per Definition immer als Variablen der globalen Klasse erstellt.

Lesevorgänge und Aktualisierungen von globalen Variablen werden nur dann serialisiert, wenn sie den Listentyp aufweisen. Es gibt keine Garantien für Datenrennen, wenn Sonden gleichzeitig ausgegeben werden. Globale Variablen, die nicht vom Listentyp sind, sind nützlich für die Erfassung von Profilermittlung und anderen Statistikdaten.

Sie können globale Variablen im Prädikatsabschnitt einer Klausel Vue verwenden.

Die folgenden Scripts sind Beispiele für die Initialisierung und Verwendung globaler Variablen:

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 */
	}