1STAPEX(5) File Formats Manual STAPEX(5)
2
3
4
6 stapex - systemtap examples
7
8
9
11 These examples give a feel for basic systemtap syntax and control
12 structures.
13
14 global odds, evens
15
16 probe begin {
17 # "no" and "ne" are local integers
18 for (i=0; i<10; i++) {
19 if (i % 2) odds [no++] = i
20 else evens [ne++] = i
21 }
22 delete odds[2]
23 delete evens[3]
24 exit ()
25 }
26
27 probe end {
28 foreach (x+ in odds) {
29 printf ("odds[%d] = %d0, x, odds[x])
30 }
31 foreach (x in evens-) {
32 printf ("evens[%d] = %d0, x, evens[x])
33 }
34 }
35 This prints:
36 odds[1] = 1
37 odds[3] = 5
38 odds[4] = 7
39 odds[5] = 9
40 evens[5] = 8
41 evens[4] = 6
42 evens[2] = 2
43 evens[1] = 0
44 Note that all variables types are inferred, and that all locals and
45 globals are automatically initialized.
46
47
48 This script prints the primes between 0 and 49.
49 function isprime (x) {
50 if (x < 2) return 0
51 for (i=2; i<x; i++) {
52 if (x % i == 0) return 0
53 if (i * i > x) break
54 }
55 return 1
56 }
57 probe begin {
58 for (i=0; i<50; i++)
59 if (isprime (i)) printf("%d0, i)
60 exit()
61 }
62
63
64 This script demonstrates recursive functions.
65 function fibonacci(i) {
66 if (i < 1) error ("bad number")
67 if (i == 1) return 1
68 if (i == 2) return 2
69 return fibonacci (i-1) + fibonacci (i-2)
70 }
71 probe begin {
72 printf ("11th fibonacci number: %d0, fibonacci (11))
73 exit ()
74 }
75 Any larger number may exceed the MAXACTION or MAXNESTING limits, and
76 result in an error.
77
78
79
81 To trace entry and exit from a function, use a pair of probes:
82 probe kernel.function("sys_mkdir") { println ("enter") }
83 probe kernel.function("sys_mkdir").return { println ("exit") }
84
85 To list the probeable functions in the kernel, use the last-pass option
86 to the translator. That output needs to be filtered because each in‐
87 lined function instance is listed separately.
88 % stap -p2 -e 'probe kernel.function("*") {}' | sort | uniq
89
90
92 /usr/doc/systemtap*/examples [22mstap(1) stapprobes(5) stapfuncs(5)
93
94
95
96
97Red Hat 2008-03-27 STAPEX(5)