summaryrefslogtreecommitdiffstats
path: root/SystemTap_Beginners_Guide
diff options
authorajakop <ajakop>2015-06-17 17:42:58 +0000
committerajakop <ajakop>2015-06-17 17:42:58 +0000
commit7c787edaa5d0b8ad0b5e6176eb6247203c534254 (patch)
tree7cf3719e68c33248ceed97859dcec061cb616f5b /SystemTap_Beginners_Guide
parentadd new langref/*.html (diff)
removed man pages
Diffstat (limited to 'SystemTap_Beginners_Guide')
-rw-r--r--SystemTap_Beginners_Guide/Common_Content/images/title_logo.svg1954
-rw-r--r--SystemTap_Beginners_Guide/SystemTap_Beginners_Guide-Preface.html31
-rw-r--r--SystemTap_Beginners_Guide/appe-Publican-Revision_History.html5
-rw-r--r--SystemTap_Beginners_Guide/arrayoperators.html18
-rw-r--r--SystemTap_Beginners_Guide/arrayops-aggregates.html56
-rw-r--r--SystemTap_Beginners_Guide/arrayops-conditionals.html18
-rw-r--r--SystemTap_Beginners_Guide/arrayops-deleting.html18
-rw-r--r--SystemTap_Beginners_Guide/arrayops-foreach.html22
-rw-r--r--SystemTap_Beginners_Guide/arrayops-increment.html12
-rw-r--r--SystemTap_Beginners_Guide/arrayops-readvalues.html32
-rw-r--r--SystemTap_Beginners_Guide/associativearrays.html16
-rw-r--r--SystemTap_Beginners_Guide/commandlineargssect.html12
-rw-r--r--SystemTap_Beginners_Guide/cross-compiling.html162
-rw-r--r--SystemTap_Beginners_Guide/errors.html136
-rw-r--r--SystemTap_Beginners_Guide/futexcontentionsect.html34
-rw-r--r--SystemTap_Beginners_Guide/handlerconditionalstatements.html58
-rw-r--r--SystemTap_Beginners_Guide/index.html28
-rw-r--r--SystemTap_Beginners_Guide/inodewatch2sect.html13
-rw-r--r--SystemTap_Beginners_Guide/inodewatchsect.html26
-rw-r--r--SystemTap_Beginners_Guide/intro-systemtap-limitations.html14
-rw-r--r--SystemTap_Beginners_Guide/intro-systemtap-vs-others.html10
-rw-r--r--SystemTap_Beginners_Guide/introduction.html30
-rw-r--r--SystemTap_Beginners_Guide/ioblktimesect.html34
-rw-r--r--SystemTap_Beginners_Guide/iotimesect.html58
-rw-r--r--SystemTap_Beginners_Guide/ix01.html2
-rw-r--r--SystemTap_Beginners_Guide/mainsect-disk.html38
-rw-r--r--SystemTap_Beginners_Guide/mainsect-profiling.html17
-rw-r--r--SystemTap_Beginners_Guide/paracallgraph.html27
-rw-r--r--SystemTap_Beginners_Guide/pr01s02.html9
-rw-r--r--SystemTap_Beginners_Guide/references.html65
-rw-r--r--SystemTap_Beginners_Guide/runtimeerror.html69
-rw-r--r--SystemTap_Beginners_Guide/scriptconstructions.html21
-rw-r--r--SystemTap_Beginners_Guide/scripts.html229
-rw-r--r--SystemTap_Beginners_Guide/syscallsbyprocpidsect.html41
-rw-r--r--SystemTap_Beginners_Guide/systemtapscript-handler.html176
-rw-r--r--SystemTap_Beginners_Guide/targetavailable.html26
-rw-r--r--SystemTap_Beginners_Guide/targetvariables.html175
-rw-r--r--SystemTap_Beginners_Guide/threadtimessect.html17
-rw-r--r--SystemTap_Beginners_Guide/timeoutssect.html41
-rw-r--r--SystemTap_Beginners_Guide/topsyssect.html30
-rw-r--r--SystemTap_Beginners_Guide/traceio2sect.html19
-rw-r--r--SystemTap_Beginners_Guide/traceiosect.html23
-rw-r--r--SystemTap_Beginners_Guide/typecasting.html36
-rw-r--r--SystemTap_Beginners_Guide/understanding-how-systemtap-works.html72
-rw-r--r--SystemTap_Beginners_Guide/understanding-tapsets.html39
-rw-r--r--SystemTap_Beginners_Guide/useful-systemtap-scripts.html195
-rw-r--r--SystemTap_Beginners_Guide/userspace-probing.html113
-rw-r--r--SystemTap_Beginners_Guide/using-systemtap.html156
-rw-r--r--SystemTap_Beginners_Guide/using-usage.html148
-rw-r--r--SystemTap_Beginners_Guide/ustack.html52
-rw-r--r--SystemTap_Beginners_Guide/utargetvariable.html48
51 files changed, 3245 insertions, 1436 deletions
diff --git a/SystemTap_Beginners_Guide/Common_Content/images/title_logo.svg b/SystemTap_Beginners_Guide/Common_Content/images/title_logo.svg
index 05cc1c4c..b9c38f1d 100644
--- a/SystemTap_Beginners_Guide/Common_Content/images/title_logo.svg
+++ b/SystemTap_Beginners_Guide/Common_Content/images/title_logo.svg
@@ -1,350 +1,1774 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) --> 2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
4<svg 3<svg
4 xmlns:ns="http://creativecommons.org/ns#"
5 xmlns:dc="http://purl.org/dc/elements/1.1/" 5 xmlns:dc="http://purl.org/dc/elements/1.1/"
6 xmlns:cc="http://creativecommons.org/ns#" 6 xmlns:cc="http://web.resource.org/cc/"
7 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 7 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8 xmlns:svg="http://www.w3.org/2000/svg" 8 xmlns:svg="http://www.w3.org/2000/svg"
9 xmlns="http://www.w3.org/2000/svg" 9 xmlns="http://www.w3.org/2000/svg"
10 xmlns:xlink="http://www.w3.org/1999/xlink" 10 xmlns:xlink="http://www.w3.org/1999/xlink"
11 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 11 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 12 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13 version="1.1" 13 id="svg2444"
14 width="253.10916" 14 sodipodi:version="0.32"
15 height="195.16167" 15 inkscape:version="0.45.1"
16 id="svg2" 16 width="352.42969"
17 style="enable-background:new"> 17 height="330.09277"
18 version="1.0"
19 sodipodi:docname="smileytap.svg"
20 inkscape:output_extension="org.inkscape.output.svg.inkscape"
21 style="enable-background:new"
22 inkscape:export-filename="fche-smileytap-tagline.png"
23 inkscape:export-xdpi="510.67462"
24 inkscape:export-ydpi="510.67462"
25 sodipodi:docbase="git">
26 <metadata
27 id="metadata2449">
28 <rdf:RDF>
29 <ns:Work
30 rdf:about="">
31 <dc:format />
32 <dc:type
33 rdf:resource="" />
34 <dc:title />
35 <dc:date />
36 <dc:creator>
37 <ns:Agent>
38 <dc:title />
39 </ns:Agent>
40 </dc:creator>
41 <dc:rights>
42 <ns:Agent>
43 <dc:title />
44 </ns:Agent>
45 </dc:rights>
46 <dc:publisher>
47 <ns:Agent>
48 <dc:title />
49 </ns:Agent>
50 </dc:publisher>
51 <dc:identifier />
52 <dc:source />
53 <dc:relation />
54 <dc:language />
55 <dc:subject>
56 <rdf:Bag />
57 </dc:subject>
58 <dc:coverage />
59 <dc:description />
60 <dc:contributor>
61 <ns:Agent>
62 <dc:title />
63 </ns:Agent>
64 </dc:contributor>
65 <ns:license
66 rdf:resource="" />
67 </ns:Work>
68 <cc:Work
69 rdf:about="">
70 <dc:format>image/svg+xml</dc:format>
71 <dc:type
72 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
73 <cc:license
74 rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
75 <dc:title>systemtap logo</dc:title>
76 <dc:creator>
77 <cc:Agent>
78 <dc:title>Andy Fitzsimon, Red Hat</dc:title>
79 </cc:Agent>
80 </dc:creator>
81 <dc:date>2008</dc:date>
82 </cc:Work>
83 <cc:License
84 rdf:about="http://creativecommons.org/licenses/GPL/2.0/ and http://www.eclipse.org/legal/epl-v10.html">
85 </cc:License>
86 </rdf:RDF>
87 </metadata>
18 <defs 88 <defs
19 id="defs5"> 89 id="defs2447">
20 <linearGradient 90 <linearGradient
21 id="linearGradient6430"> 91 inkscape:collect="always"
92 id="linearGradient3899">
22 <stop 93 <stop
23 id="stop6432" 94 style="stop-color:#090909;stop-opacity:1;"
24 style="stop-color:#ce0000;stop-opacity:1" 95 offset="0"
25 offset="0" /> 96 id="stop3901" />
26 <stop 97 <stop
27 id="stop6434" 98 style="stop-color:#090909;stop-opacity:0;"
28 style="stop-color:#e90000;stop-opacity:1" 99 offset="1"
29 offset="1" /> 100 id="stop3903" />
30 </linearGradient> 101 </linearGradient>
31 <linearGradient 102 <linearGradient
32 id="linearGradient3218"> 103 id="linearGradient3426"
104 inkscape:collect="always">
33 <stop 105 <stop
34 id="stop3220" 106 id="stop3428"
35 style="stop-color:#000000;stop-opacity:1" 107 offset="0"
36 offset="0" /> 108 style="stop-color:#2e3436;stop-opacity:1" />
109 <stop
110 id="stop3430"
111 offset="1"
112 style="stop-color:#333532;stop-opacity:1" />
113 </linearGradient>
114 <inkscape:perspective
115 sodipodi:type="inkscape:persp3d"
116 inkscape:vp_x="-50 : 600 : 1"
117 inkscape:vp_y="0 : 1000 : 0"
118 inkscape:vp_z="700 : 600 : 1"
119 inkscape:persp3d-origin="300 : 400 : 1"
120 id="perspective242" />
121 <inkscape:perspective
122 sodipodi:type="inkscape:persp3d"
123 inkscape:vp_x="-50 : 600 : 1"
124 inkscape:vp_y="0 : 1000 : 0"
125 inkscape:vp_z="700 : 600 : 1"
126 inkscape:persp3d-origin="300 : 400 : 1"
127 id="perspective235" />
128 <linearGradient
129 id="linearGradient3833">
130 <stop
131 id="stop3836"
132 offset="0"
133 style="stop-color:#2e3436;stop-opacity:1" />
134 <stop
135 style="stop-color:#babdb6;stop-opacity:1"
136 offset="0.29007247"
137 id="stop3838" />
138 <stop
139 id="stop3840"
140 offset="0.43263254"
141 style="stop-color:#d3d7cf;stop-opacity:1" />
142 <stop
143 style="stop-color:#9a9b9a;stop-opacity:1;"
144 offset="0.58694303"
145 id="stop3842" />
146 <stop
147 id="stop3844"
148 offset="1"
149 style="stop-color:#eeeeec;stop-opacity:1" />
150 </linearGradient>
151 <linearGradient
152 inkscape:collect="always"
153 id="linearGradient3749">
154 <stop
155 style="stop-color:#babdb6;stop-opacity:1;"
156 offset="0"
157 id="stop3751" />
158 <stop
159 style="stop-color:#babdb6;stop-opacity:0;"
160 offset="1"
161 id="stop3753" />
162 </linearGradient>
163 <linearGradient
164 inkscape:collect="always"
165 id="linearGradient3529">
166 <stop
167 style="stop-color:#2e3436;stop-opacity:1;"
168 offset="0"
169 id="stop3531" />
170 <stop
171 style="stop-color:#2e3436;stop-opacity:0;"
172 offset="1"
173 id="stop3533" />
174 </linearGradient>
175 <linearGradient
176 inkscape:collect="always"
177 id="linearGradient3475">
178 <stop
179 style="stop-color:#babdb6;stop-opacity:1;"
180 offset="0"
181 id="stop3477" />
182 <stop
183 style="stop-color:#babdb6;stop-opacity:0;"
184 offset="1"
185 id="stop3479" />
186 </linearGradient>
187 <linearGradient
188 inkscape:collect="always"
189 id="linearGradient4303">
190 <stop
191 style="stop-color:#eeeeec;stop-opacity:1;"
192 offset="0"
193 id="stop4305" />
194 <stop
195 style="stop-color:#eeeeec;stop-opacity:0;"
196 offset="1"
197 id="stop4307" />
198 </linearGradient>
199 <linearGradient
200 id="linearGradient4265">
201 <stop
202 id="stop4267"
203 offset="0"
204 style="stop-color:#888a85;stop-opacity:1" />
205 <stop
206 style="stop-color:#babdb6;stop-opacity:1"
207 offset="0.29007247"
208 id="stop4269" />
209 <stop
210 id="stop4271"
211 offset="0.43263254"
212 style="stop-color:#d3d7cf;stop-opacity:1" />
213 <stop
214 style="stop-color:#9a9b9a;stop-opacity:1;"
215 offset="0.58694303"
216 id="stop4273" />
217 <stop
218 id="stop4275"
219 offset="1"
220 style="stop-color:#5c5c5c;stop-opacity:1;" />
221 </linearGradient>
222 <linearGradient
223 id="linearGradient4251">
224 <stop
225 id="stop4253"
226 offset="0"
227 style="stop-color:#babdb6;stop-opacity:1" />
228 <stop
229 style="stop-color:#2e3436;stop-opacity:1"
230 offset="0.83025926"
231 id="stop4259" />
232 <stop
233 id="stop4261"
234 offset="1"
235 style="stop-color:#888a85;stop-opacity:1" />
236 </linearGradient>
237 <linearGradient
238 inkscape:collect="always"
239 id="linearGradient4237">
240 <stop
241 style="stop-color:#eeeeec;stop-opacity:1"
242 offset="0"
243 id="stop4239" />
244 <stop
245 style="stop-color:#babdb6;stop-opacity:1"
246 offset="1"
247 id="stop4241" />
248 </linearGradient>
249 <linearGradient
250 id="linearGradient4181">
37 <stop 251 <stop
38 id="stop3222"
39 style="stop-color:#555753;stop-opacity:1" 252 style="stop-color:#555753;stop-opacity:1"
40 offset="1" /> 253 offset="0"
254 id="stop4183" />
255 <stop
256 id="stop4189"
257 offset="0.29007247"
258 style="stop-color:#babdb6;stop-opacity:1" />
259 <stop
260 style="stop-color:#d3d7cf;stop-opacity:1"
261 offset="0.43263254"
262 id="stop4199" />
263 <stop
264 id="stop4201"
265 offset="0.58694303"
266 style="stop-color:#9a9b9a;stop-opacity:1;" />
267 <stop
268 style="stop-color:#5c5c5c;stop-opacity:1;"
269 offset="1"
270 id="stop4185" />
41 </linearGradient> 271 </linearGradient>
42 <linearGradient 272 <linearGradient
43 id="linearGradient3210"> 273 inkscape:collect="always"
274 id="linearGradient4143">
44 <stop 275 <stop
45 id="stop3212" 276 style="stop-color:#eeeeec;stop-opacity:1;"
46 style="stop-color:#edd400;stop-opacity:1" 277 offset="0"
47 offset="0" /> 278 id="stop4145" />
48 <stop 279 <stop
49 id="stop3214" 280 style="stop-color:#eeeeec;stop-opacity:0;"
50 style="stop-color:#fce94f;stop-opacity:1" 281 offset="1"
51 offset="1" /> 282 id="stop4147" />
52 </linearGradient> 283 </linearGradient>
53 <linearGradient 284 <linearGradient
54 id="linearGradient3558"> 285 inkscape:collect="always"
286 id="linearGradient4057">
55 <stop 287 <stop
56 id="stop3560" 288 style="stop-color:#eeeeec;stop-opacity:1;"
57 style="stop-color:#4bc6ff;stop-opacity:1" 289 offset="0"
58 offset="0" /> 290 id="stop4059" />
59 <stop 291 <stop
60 id="stop3562" 292 style="stop-color:#eeeeec;stop-opacity:0;"
61 style="stop-color:#1fb7ff;stop-opacity:0" 293 offset="1"
62 offset="1" /> 294 id="stop4061" />
63 </linearGradient> 295 </linearGradient>
64 <linearGradient 296 <linearGradient
65 id="linearGradient2652"> 297 id="linearGradient4020">
66 <stop 298 <stop
67 id="stop2654" 299 style="stop-color:#aeb0ac;stop-opacity:1;"
68 style="stop-color:#ef5d29;stop-opacity:1" 300 offset="0"
69 offset="0" /> 301 id="stop4022" />
70 <stop 302 <stop
71 id="stop2656" 303 style="stop-color:#7f817c;stop-opacity:1;"
72 style="stop-color:#ef2929;stop-opacity:0" 304 offset="1"
73 offset="1" /> 305 id="stop4024" />
74 </linearGradient> 306 </linearGradient>
75 <linearGradient 307 <linearGradient
76 id="linearGradient3770"> 308 inkscape:collect="always"
309 id="linearGradient3964">
77 <stop 310 <stop
78 id="stop3772" 311 style="stop-color:#eeeeec;stop-opacity:1;"
79 style="stop-color:#999999;stop-opacity:0" 312 offset="0"
80 offset="0" /> 313 id="stop3966" />
81 <stop 314 <stop
82 id="stop3774" 315 style="stop-color:#eeeeec;stop-opacity:0;"
83 style="stop-color:#cccccc;stop-opacity:1" 316 offset="1"
84 offset="0.28968501" /> 317 id="stop3968" />
318 </linearGradient>
319 <linearGradient
320 inkscape:collect="always"
321 id="linearGradient3954">
85 <stop 322 <stop
86 id="stop3776" 323 style="stop-color:#eeeeec;stop-opacity:1;"
87 style="stop-color:#cccccc;stop-opacity:1" 324 offset="0"
88 offset="0.72421253" /> 325 id="stop3956" />
89 <stop 326 <stop
90 id="stop3778" 327 style="stop-color:#eeeeec;stop-opacity:0;"
91 style="stop-color:#999999;stop-opacity:0" 328 offset="1"
92 offset="1" /> 329 id="stop3958" />
93 </linearGradient> 330 </linearGradient>
94 <linearGradient 331 <linearGradient
95 id="linearGradient3578"> 332 inkscape:collect="always"
333 id="linearGradient3902">
96 <stop 334 <stop
97 id="stop3580" 335 style="stop-color:#eeeeec;stop-opacity:1;"
98 style="stop-color:#999999;stop-opacity:1" 336 offset="0"
99 offset="0" /> 337 id="stop3904" />
338 <stop
339 style="stop-color:#eeeeec;stop-opacity:0;"
340 offset="1"
341 id="stop3906" />
342 </linearGradient>
343 <linearGradient
344 inkscape:collect="always"
345 id="linearGradient3869">
100 <stop 346 <stop
101 id="stop3582"
102 style="stop-color:#ffffff;stop-opacity:1" 347 style="stop-color:#ffffff;stop-opacity:1"
103 offset="1" /> 348 offset="0"
349 id="stop3871" />
350 <stop
351 style="stop-color:#ffffff;stop-opacity:0"
352 offset="1"
353 id="stop3873" />
104 </linearGradient> 354 </linearGradient>
105 <linearGradient 355 <linearGradient
106 x1="292.98209" 356 inkscape:collect="always"
107 y1="248.94519" 357 id="linearGradient3839">
108 x2="292.71686" 358 <stop
109 y2="254.84595" 359 style="stop-color:#ffffff;stop-opacity:1;"
110 id="linearGradient3605" 360 offset="0"
111 xlink:href="#linearGradient3578" 361 id="stop3841" />
362 <stop
363 style="stop-color:#ffffff;stop-opacity:0;"
364 offset="1"
365 id="stop3843" />
366 </linearGradient>
367 <linearGradient
368 inkscape:collect="always"
369 xlink:href="#linearGradient3839"
370 id="linearGradient3845"
371 x1="2389"
372 y1="-1378.597"
373 x2="2389"
374 y2="-1290.3927"
375 gradientUnits="userSpaceOnUse"
376 gradientTransform="translate(0,-689)" />
377 <filter
378 inkscape:collect="always"
379 id="filter4133">
380 <feGaussianBlur
381 inkscape:collect="always"
382 stdDeviation="1.5412676"
383 id="feGaussianBlur4135" />
384 </filter>
385 <filter
386 inkscape:collect="always"
387 id="filter4285">
388 <feGaussianBlur
389 inkscape:collect="always"
390 stdDeviation="0.83627643"
391 id="feGaussianBlur4287" />
392 </filter>
393 <filter
394 inkscape:collect="always"
395 id="filter3523">
396 <feGaussianBlur
397 inkscape:collect="always"
398 stdDeviation="0.71744723"
399 id="feGaussianBlur3525" />
400 </filter>
401 <linearGradient
402 inkscape:collect="always"
403 xlink:href="#linearGradient3839"
404 id="linearGradient3735"
405 gradientUnits="userSpaceOnUse"
406 gradientTransform="translate(0,-1697)"
407 x1="2389"
408 y1="-1378.597"
409 x2="2389"
410 y2="-1290.3927" />
411 <radialGradient
412 inkscape:collect="always"
413 xlink:href="#linearGradient3749"
414 id="radialGradient3755"
415 cx="2450"
416 cy="-2733.3928"
417 fx="2257.6848"
418 fy="-2591.0503"
419 r="300"
112 gradientUnits="userSpaceOnUse" /> 420 gradientUnits="userSpaceOnUse" />
113 <linearGradient 421 <linearGradient
114 x1="579.61249" 422 inkscape:collect="always"
115 y1="-2053.46" 423 xlink:href="#linearGradient3839"
116 x2="633.25787" 424 id="linearGradient3868"
117 y2="-2073.55" 425 gradientUnits="userSpaceOnUse"
118 id="linearGradient3607" 426 gradientTransform="matrix(0.4806026,0,0,0.4806026,-458.9566,717.5776)"
119 xlink:href="#linearGradient3770" 427 x1="2389"
120 gradientUnits="userSpaceOnUse" 428 y1="-1378.597"
121 gradientTransform="matrix(0.8697037,0.5377184,-0.05088559,2.0041935,-132.86485,4079.057)" /> 429 x2="2389"
122 <linearGradient 430 y2="-1290.3927" />
123 x1="579.61249" 431 <radialGradient
124 y1="-2053.46" 432 r="22.98708"
125 x2="633.25787" 433 fy="270.2345"
126 y2="-2073.55" 434 fx="251.73764"
127 id="linearGradient3609" 435 cy="270.2345"
128 xlink:href="#linearGradient3770" 436 cx="251.73764"
129 gradientUnits="userSpaceOnUse" 437 gradientTransform="matrix(0.2925599,1.0369149,1.2784981,-3.1321826e-2,-194.17278,-1.3333034)"
130 gradientTransform="matrix(0.8697037,0.5377184,-0.05088559,2.0041935,-132.86485,4082.0622)" /> 438 gradientUnits="userSpaceOnUse"
131 <linearGradient 439 id="radialGradient3433"
132 x1="579.61249" 440 xlink:href="#linearGradient3588"
133 y1="-2053.46" 441 inkscape:collect="always" />
134 x2="633.25787" 442 <linearGradient
135 y2="-2073.55" 443 y2="325.23526"
136 id="linearGradient3611" 444 x2="248.91736"
137 xlink:href="#linearGradient3770" 445 y1="339.76562"
138 gradientUnits="userSpaceOnUse" 446 x1="249.93015"
139 gradientTransform="matrix(0.8697037,0.5377184,-0.05088559,2.0041935,-132.86485,4085.0674)" /> 447 gradientTransform="translate(0,-6)"
140 <linearGradient 448 gradientUnits="userSpaceOnUse"
141 x1="579.61249" 449 id="linearGradient3431"
142 y1="-2053.46" 450 xlink:href="#linearGradient5450"
143 x2="633.25787" 451 inkscape:collect="always" />
144 y2="-2073.55" 452 <linearGradient
145 id="linearGradient3613" 453 y2="325.23526"
146 xlink:href="#linearGradient3770" 454 x2="248.91736"
147 gradientUnits="userSpaceOnUse" 455 y1="339.76562"
148 gradientTransform="matrix(0.8697037,0.5377184,-0.05088559,2.0041935,-132.86485,4088.0726)" /> 456 x1="249.93015"
457 gradientTransform="translate(0,-6)"
458 gradientUnits="userSpaceOnUse"
459 id="linearGradient3429"
460 xlink:href="#linearGradient5450"
461 inkscape:collect="always" />
462 <linearGradient
463 y2="314.78635"
464 x2="244.02618"
465 y1="343.35193"
466 x1="245.14857"
467 gradientTransform="translate(0,-6)"
468 gradientUnits="userSpaceOnUse"
469 id="linearGradient3427"
470 xlink:href="#linearGradient5450"
471 inkscape:collect="always" />
149 <radialGradient 472 <radialGradient
150 cx="308.00009" 473 r="122.527"
151 cy="237.60178" 474 fy="73.899117"
152 r="13.826746" 475 fx="211.94524"
153 fx="308.00009" 476 cy="73.899117"
154 fy="237.60178" 477 cx="211.94524"
155 id="radialGradient3615" 478 gradientTransform="matrix(0,0.7436368,-1,0,296.89912,-109.13727)"
156 xlink:href="#linearGradient2652" 479 gradientUnits="userSpaceOnUse"
157 gradientUnits="userSpaceOnUse" 480 id="radialGradient3425"
158 gradientTransform="matrix(-2.470026,1.2123383,-2.5289897,-1.8798194,1652.7116,307.88628)" /> 481 xlink:href="#linearGradient3394"
482 inkscape:collect="always" />
159 <radialGradient 483 <radialGradient
160 cx="313.97348" 484 r="105.85726"
161 cy="257.40872" 485 fy="267.06989"
162 r="4.0046649" 486 fx="237.78722"
163 fx="313.97348" 487 cy="329.08261"
164 fy="257.40872" 488 cx="273.34"
165 id="radialGradient3617" 489 gradientTransform="matrix(-1.5189227,0,0,0.312383,582.14364,155.79911)"
166 xlink:href="#linearGradient3558" 490 gradientUnits="userSpaceOnUse"
167 gradientUnits="userSpaceOnUse" 491 id="radialGradient3423"
168 gradientTransform="matrix(-1.2239386,0.8005673,-1.1669368,-1.1126277,983.68752,289.08822)" /> 492 xlink:href="#linearGradient6157"
169 <linearGradient 493 inkscape:collect="always" />
170 x1="121.62237"
171 y1="166.88406"
172 x2="121.62236"
173 y2="63.590191"
174 id="linearGradient3216"
175 xlink:href="#linearGradient3210"
176 gradientUnits="userSpaceOnUse"
177 gradientTransform="matrix(0.9919329,0,0,0.9919329,-57.187787,-52.294514)" />
178 <linearGradient
179 x1="282.13562"
180 y1="198.85522"
181 x2="282.13562"
182 y2="220.4299"
183 id="linearGradient3224"
184 xlink:href="#linearGradient3218"
185 gradientUnits="userSpaceOnUse"
186 gradientTransform="translate(-58.623593,-52.746766)" />
187 <linearGradient
188 x1="282.13562"
189 y1="198.85522"
190 x2="282.13562"
191 y2="220.4299"
192 id="linearGradient6356"
193 xlink:href="#linearGradient3218"
194 gradientUnits="userSpaceOnUse"
195 gradientTransform="translate(-58.623593,-49.548418)" />
196 <filter 494 <filter
197 color-interpolation-filters="sRGB" 495 id="filter3604"
198 id="filter6426"> 496 inkscape:collect="always">
199 <feGaussianBlur 497 <feGaussianBlur
200 stdDeviation="1.3718847" 498 id="feGaussianBlur3606"
201 id="feGaussianBlur6428" /> 499 stdDeviation="2.4656103"
500 inkscape:collect="always" />
202 </filter> 501 </filter>
502 <filter
503 height="1.3160409"
504 y="-0.15802044"
505 width="1.080309"
506 x="-0.040154509"
507 id="filter3600"
508 inkscape:collect="always">
509 <feGaussianBlur
510 id="feGaussianBlur3602"
511 stdDeviation="3.0534157"
512 inkscape:collect="always" />
513 </filter>
514 <radialGradient
515 r="121"
516 fy="97.065582"
517 fx="259.50607"
518 cy="171"
519 cx="223"
520 gradientUnits="userSpaceOnUse"
521 id="radialGradient4148"
522 xlink:href="#linearGradient4875"
523 inkscape:collect="always" />
524 <radialGradient
525 r="121"
526 fy="97.065582"
527 fx="259.50607"
528 cy="171"
529 cx="223"
530 gradientUnits="userSpaceOnUse"
531 id="radialGradient4146"
532 xlink:href="#linearGradient4875"
533 inkscape:collect="always" />
203 <linearGradient 534 <linearGradient
204 x1="313.12421" 535 y2="241.30777"
205 y1="234.06723" 536 x2="249.69576"
206 x2="300.74551" 537 y1="263.64444"
207 y2="252.48558" 538 x1="232.35976"
208 id="linearGradient6436" 539 gradientTransform="translate(-4,-2)"
209 xlink:href="#linearGradient6430" 540 gradientUnits="userSpaceOnUse"
210 gradientUnits="userSpaceOnUse" /> 541 id="linearGradient4144"
542 xlink:href="#linearGradient5158"
543 inkscape:collect="always" />
544 <linearGradient
545 y2="89.209633"
546 x2="191.3078"
547 y1="294.8075"
548 x1="233.11443"
549 gradientTransform="matrix(0.1772873,-6.3297445e-2,7.1344677e-2,0.1998265,155.77466,181.18074)"
550 gradientUnits="userSpaceOnUse"
551 id="linearGradient4142"
552 xlink:href="#linearGradient4892"
553 inkscape:collect="always" />
554 <linearGradient
555 y2="226.50774"
556 x2="241.83052"
557 y1="278.37762"
558 x1="241.83052"
559 gradientTransform="translate(20,-4)"
560 gradientUnits="userSpaceOnUse"
561 id="linearGradient4140"
562 xlink:href="#linearGradient4061"
563 inkscape:collect="always" />
564 <radialGradient
565 r="121"
566 fy="171"
567 fx="223"
568 cy="171"
569 cx="223"
570 gradientUnits="userSpaceOnUse"
571 id="radialGradient4138"
572 xlink:href="#linearGradient4061"
573 inkscape:collect="always" />
211 <filter 574 <filter
212 x="-0.049464952" 575 id="filter3546">
213 y="-0.10498104"
214 width="1.0989299"
215 height="1.2099621"
216 color-interpolation-filters="sRGB"
217 id="filter6542">
218 <feGaussianBlur 576 <feGaussianBlur
219 stdDeviation="2.6872547" 577 inkscape:collect="always"
220 id="feGaussianBlur6544" /> 578 stdDeviation="1.3189297"
579 id="feGaussianBlur3548" />
221 </filter> 580 </filter>
222 <filter 581 <filter
223 color-interpolation-filters="sRGB" 582 id="filter3536">
224 id="filter6596">
225 <feGaussianBlur 583 <feGaussianBlur
226 stdDeviation="1.7274814" 584 inkscape:collect="always"
227 id="feGaussianBlur6598" /> 585 stdDeviation="0.93765437"
586 id="feGaussianBlur3538" />
587 </filter>
588 <filter
589 id="filter3408">
590 <feGaussianBlur
591 inkscape:collect="always"
592 stdDeviation="4.2336683"
593 id="feGaussianBlur3410" />
594 </filter>
595 <filter
596 id="filter3759">
597 <feGaussianBlur
598 inkscape:collect="always"
599 stdDeviation="1.6460979"
600 id="feGaussianBlur3761" />
601 </filter>
602 <filter
603 id="filter3698"
604 x="-0.17973556"
605 width="1.3594711"
606 y="-0.32149041"
607 height="1.6429808">
608 <feGaussianBlur
609 inkscape:collect="always"
610 stdDeviation="2.494376"
611 id="feGaussianBlur3700" />
612 </filter>
613 <filter
614 id="filter3549"
615 x="-0.034198053"
616 width="1.0683961"
617 y="-0.12438303"
618 height="1.2487661">
619 <feGaussianBlur
620 inkscape:collect="always"
621 stdDeviation="2.9834772"
622 id="feGaussianBlur3551" />
623 </filter>
624 <filter
625 id="filter3403">
626 <feGaussianBlur
627 inkscape:collect="always"
628 stdDeviation="0.97703684"
629 id="feGaussianBlur3405" />
630 </filter>
631 <filter
632 id="filter5616"
633 x="-0.087686583"
634 width="1.1753732"
635 y="-0.29251608"
636 height="1.5850322">
637 <feGaussianBlur
638 inkscape:collect="always"
639 stdDeviation="7.733109"
640 id="feGaussianBlur5618" />
641 </filter>
642 <filter
643 id="filter5276">
644 <feGaussianBlur
645 inkscape:collect="always"
646 stdDeviation="4.88068"
647 id="feGaussianBlur5278" />
648 </filter>
649 <filter
650 id="filter5030"
651 x="-0.24510914"
652 width="1.4902183"
653 y="-0.21322298"
654 height="1.426446">
655 <feGaussianBlur
656 inkscape:collect="always"
657 stdDeviation="5.3972768"
658 id="feGaussianBlur5032" />
659 </filter>
660 <filter
661 id="filter4928"
662 x="-0.073140927"
663 width="1.1462818"
664 y="-0.12909859"
665 height="1.2581972">
666 <feGaussianBlur
667 inkscape:collect="always"
668 stdDeviation="1.3104416"
669 id="feGaussianBlur4930" />
670 </filter>
671 <filter
672 id="filter4515"
673 x="-0.49860975"
674 width="1.9972194"
675 y="-0.49860975"
676 height="1.9972194">
677 <feGaussianBlur
678 inkscape:collect="always"
679 stdDeviation="50.276483"
680 id="feGaussianBlur4517" />
681 </filter>
682 <filter
683 id="filter4057"
684 x="-0.27202874"
685 width="1.5440575"
686 y="-0.27202874"
687 height="1.5440575">
688 <feGaussianBlur
689 inkscape:collect="always"
690 stdDeviation="27.429564"
691 id="feGaussianBlur4059" />
228 </filter> 692 </filter>
229 <linearGradient
230 x1="180"
231 y1="163.62605"
232 x2="180"
233 y2="66.188019"
234 id="linearGradient6600"
235 xlink:href="#linearGradient3218"
236 gradientUnits="userSpaceOnUse" />
237 <filter 693 <filter
238 color-interpolation-filters="sRGB" 694 id="filter3820">
239 id="filter6626"> 695 <feGaussianBlur
240 <feBlend 696 inkscape:collect="always"
241 in2="BackgroundImage" 697 stdDeviation="4.1830695"
242 mode="multiply" 698 id="feGaussianBlur3822" />
243 id="feBlend6628" />
244 </filter> 699 </filter>
700 <linearGradient
701 id="linearGradient3159">
702 <stop
703 offset="0"
704 style="stop-color:#fffbd9;stop-opacity:1"
705 id="stop3161" />
706 <stop
707 offset="0.33126342"
708 style="stop-color:#ffd615;stop-opacity:1"
709 id="stop3167" />
710 <stop
711 offset="0.55432773"
712 style="stop-color:#eeaf07;stop-opacity:1"
713 id="stop3179" />
714 <stop
715 offset="0.82875061"
716 style="stop-color:#ea7c04;stop-opacity:1"
717 id="stop3543" />
718 <stop
719 offset="1"
720 style="stop-color:#996518;stop-opacity:1"
721 id="stop3163" />
722 </linearGradient>
723 <linearGradient
724 id="linearGradient3187">
725 <stop
726 offset="0"
727 style="stop-color:#2e3436;stop-opacity:0"
728 id="stop3189" />
729 <stop
730 offset="0.69437116"
731 style="stop-color:#272c2e;stop-opacity:0"
732 id="stop3195" />
733 <stop
734 offset="1"
735 style="stop-color:#000000;stop-opacity:1"
736 id="stop3191" />
737 </linearGradient>
738 <linearGradient
739 id="linearGradient3293">
740 <stop
741 offset="0"
742 style="stop-color:#eeeeec;stop-opacity:1"
743 id="stop3295" />
744 <stop
745 offset="1"
746 style="stop-color:#eeeeec;stop-opacity:0"
747 id="stop3297" />
748 </linearGradient>
749 <linearGradient
750 id="linearGradient3315">
751 <stop
752 offset="0"
753 style="stop-color:#eeeeec;stop-opacity:1"
754 id="stop3317" />
755 <stop
756 offset="1"
757 style="stop-color:#eeeeec;stop-opacity:0"
758 id="stop3319" />
759 </linearGradient>
760 <linearGradient
761 id="linearGradient3406">
762 <stop
763 offset="0"
764 style="stop-color:#e2be88;stop-opacity:1"
765 id="stop3408" />
766 <stop
767 offset="1"
768 style="stop-color:#fce94f;stop-opacity:0"
769 id="stop3410" />
770 </linearGradient>
771 <linearGradient
772 id="linearGradient3828">
773 <stop
774 offset="0"
775 style="stop-color:#ffffff;stop-opacity:1"
776 id="stop3830" />
777 <stop
778 offset="1"
779 style="stop-color:#ffffff;stop-opacity:0"
780 id="stop3832" />
781 </linearGradient>
782 <linearGradient
783 id="linearGradient3935">
784 <stop
785 offset="0"
786 style="stop-color:#fce94f;stop-opacity:1"
787 id="stop3937" />
788 <stop
789 offset="1"
790 style="stop-color:#ffffff;stop-opacity:0"
791 id="stop3939" />
792 </linearGradient>
793 <linearGradient
794 id="linearGradient4025">
795 <stop
796 offset="0"
797 style="stop-color:#2e3436;stop-opacity:1"
798 id="stop4027" />
799 <stop
800 offset="1"
801 style="stop-color:#2e3436;stop-opacity:0"
802 id="stop4029" />
803 </linearGradient>
804 <linearGradient
805 id="linearGradient4061">
806 <stop
807 offset="0"
808 style="stop-color:#000000;stop-opacity:1"
809 id="stop4063" />
810 <stop
811 offset="1"
812 style="stop-color:#2e3436;stop-opacity:0"
813 id="stop4065" />
814 </linearGradient>
815 <linearGradient
816 id="linearGradient4213">
817 <stop
818 offset="0"
819 style="stop-color:#1a0d02;stop-opacity:1"
820 id="stop4215" />
821 <stop
822 offset="1"
823 style="stop-color:#984c15;stop-opacity:1"
824 id="stop4217" />
825 </linearGradient>
826 <linearGradient
827 id="linearGradient4566">
828 <stop
829 offset="0"
830 style="stop-color:#ffffff;stop-opacity:1"
831 id="stop4568" />
832 <stop
833 offset="1"
834 style="stop-color:#ffffff;stop-opacity:0"
835 id="stop4570" />
836 </linearGradient>
837 <linearGradient
838 id="linearGradient4672">
839 <stop
840 offset="0"
841 style="stop-color:#e9dd6f;stop-opacity:1"
842 id="stop4674" />
843 <stop
844 offset="1"
845 style="stop-color:#fce94f;stop-opacity:0"
846 id="stop4676" />
847 </linearGradient>
848 <linearGradient
849 id="linearGradient4875">
850 <stop
851 offset="0"
852 style="stop-color:#eeeeec;stop-opacity:1"
853 id="stop4877" />
854 <stop
855 offset="1"
856 style="stop-color:#eeeeec;stop-opacity:0"
857 id="stop4879" />
858 </linearGradient>
859 <linearGradient
860 id="linearGradient4892">
861 <stop
862 offset="0"
863 style="stop-color:#7e0000;stop-opacity:1"
864 id="stop4894" />
865 <stop
866 offset="1"
867 style="stop-color:#cc0000;stop-opacity:1"
868 id="stop4896" />
869 </linearGradient>
870 <linearGradient
871 id="linearGradient5050">
872 <stop
873 offset="0"
874 style="stop-color:#ffffff;stop-opacity:1"
875 id="stop5052" />
876 <stop
877 offset="0.53032744"
878 style="stop-color:#efc652;stop-opacity:1"
879 id="stop5054" />
880 <stop
881 offset="1"
882 style="stop-color:#a85715;stop-opacity:1"
883 id="stop5056" />
884 </linearGradient>
885 <linearGradient
886 id="linearGradient5158">
887 <stop
888 offset="0"
889 style="stop-color:#eb5858;stop-opacity:1"
890 id="stop5160" />
891 <stop
892 offset="1"
893 style="stop-color:#ef2929;stop-opacity:0"
894 id="stop5162" />
895 </linearGradient>
896 <linearGradient
897 id="linearGradient5450">
898 <stop
899 offset="0"
900 style="stop-color:#ffffff;stop-opacity:1"
901 id="stop5452" />
902 <stop
903 offset="1"
904 style="stop-color:#ffffff;stop-opacity:0"
905 id="stop5454" />
906 </linearGradient>
907 <linearGradient
908 id="linearGradient6157">
909 <stop
910 offset="0"
911 style="stop-color:#9bbbdd;stop-opacity:1"
912 id="stop6159" />
913 <stop
914 offset="1"
915 style="stop-color:#3465a4;stop-opacity:1"
916 id="stop6161" />
917 </linearGradient>
918 <linearGradient
919 id="linearGradient3394">
920 <stop
921 offset="0"
922 style="stop-color:#846c00;stop-opacity:1"
923 id="stop3396" />
924 <stop
925 offset="1"
926 style="stop-color:#fce94f;stop-opacity:0"
927 id="stop3398" />
928 </linearGradient>
929 <linearGradient
930 id="linearGradient3588">
931 <stop
932 offset="0"
933 style="stop-color:#a40505;stop-opacity:1"
934 id="stop3590" />
935 <stop
936 offset="1"
937 style="stop-color:#a40505;stop-opacity:0"
938 id="stop3592" />
939 </linearGradient>
940 <inkscape:perspective
941 id="perspective3700"
942 inkscape:persp3d-origin="300 : 400 : 1"
943 inkscape:vp_z="700 : 600 : 1"
944 inkscape:vp_y="0 : 1000 : 0"
945 inkscape:vp_x="-50 : 600 : 1"
946 sodipodi:type="inkscape:persp3d" />
947 <linearGradient
948 inkscape:collect="always"
949 xlink:href="#linearGradient3899"
950 id="linearGradient3905"
951 x1="626.95715"
952 y1="-147.53772"
953 x2="626.95715"
954 y2="-183.33588"
955 gradientUnits="userSpaceOnUse"
956 gradientTransform="translate(0,-2.7497892)" />
957 <radialGradient
958 inkscape:collect="always"
959 xlink:href="#linearGradient3529"
960 id="radialGradient3013"
961 gradientUnits="userSpaceOnUse"
962 cx="1332"
963 cy="-1667.3927"
964 fx="1338.0131"
965 fy="-1829.1115"
966 r="230" />
967 <radialGradient
968 inkscape:collect="always"
969 xlink:href="#linearGradient4025"
970 id="radialGradient3015"
971 gradientUnits="userSpaceOnUse"
972 gradientTransform="matrix(1.1357961,0,0,0.2745524,-108.28254,206.48343)"
973 cx="223"
974 cy="171"
975 fx="223"
976 fy="171"
977 r="121" />
978 <radialGradient
979 inkscape:collect="always"
980 xlink:href="#linearGradient3187"
981 id="radialGradient3017"
982 gradientUnits="userSpaceOnUse"
983 gradientTransform="matrix(0.7942349,-2.0004787e-8,2.0005502e-8,0.7942067,-32.114417,20.018569)"
984 cx="223"
985 cy="171"
986 fx="223.00002"
987 fy="101.13282"
988 r="121" />
989 <radialGradient
990 inkscape:collect="always"
991 xlink:href="#linearGradient4061"
992 id="radialGradient3019"
993 gradientUnits="userSpaceOnUse"
994 cx="223"
995 cy="171"
996 fx="223"
997 fy="171"
998 r="121" />
999 <radialGradient
1000 inkscape:collect="always"
1001 xlink:href="#linearGradient3159"
1002 id="radialGradient3021"
1003 gradientUnits="userSpaceOnUse"
1004 gradientTransform="matrix(0.8395234,0,0,0.7646906,-42.231779,26.198605)"
1005 cx="223.0215"
1006 cy="151.42078"
1007 fx="223.0215"
1008 fy="110.79985"
1009 r="121.5" />
1010 <linearGradient
1011 inkscape:collect="always"
1012 xlink:href="#linearGradient3935"
1013 id="linearGradient3023"
1014 gradientUnits="userSpaceOnUse"
1015 x1="216"
1016 y1="284"
1017 x2="216"
1018 y2="237.61398" />
1019 <radialGradient
1020 inkscape:collect="always"
1021 xlink:href="#linearGradient3293"
1022 id="radialGradient3025"
1023 gradientUnits="userSpaceOnUse"
1024 gradientTransform="matrix(0.5403153,0,0,-0.2136548,24.509668,199.36717)"
1025 cx="223"
1026 cy="171"
1027 fx="222.38663"
1028 fy="80.007324"
1029 r="121" />
1030 <linearGradient
1031 inkscape:collect="always"
1032 xlink:href="#linearGradient4672"
1033 id="linearGradient3027"
1034 gradientUnits="userSpaceOnUse"
1035 x1="230.42981"
1036 y1="293.0614"
1037 x2="230.42981"
1038 y2="47.642467" />
1039 <linearGradient
1040 inkscape:collect="always"
1041 xlink:href="#linearGradient5050"
1042 id="linearGradient3029"
1043 gradientUnits="userSpaceOnUse"
1044 x1="233.27283"
1045 y1="-147.21091"
1046 x2="227.56693"
1047 y2="247.7711" />
1048 <linearGradient
1049 inkscape:collect="always"
1050 xlink:href="#linearGradient4213"
1051 id="linearGradient3031"
1052 gradientUnits="userSpaceOnUse"
1053 gradientTransform="matrix(0.2366865,0,0,-0.2078438,92.218869,258.52353)"
1054 x1="101.99998"
1055 y1="611.09839"
1056 x2="319.78278"
1057 y2="-176.81487" />
1058 <radialGradient
1059 inkscape:collect="always"
1060 xlink:href="#linearGradient3293"
1061 id="radialGradient3033"
1062 gradientUnits="userSpaceOnUse"
1063 cx="223"
1064 cy="292"
1065 fx="223"
1066 fy="292"
1067 r="121" />
1068 <radialGradient
1069 inkscape:collect="always"
1070 xlink:href="#linearGradient3293"
1071 id="radialGradient3035"
1072 gradientUnits="userSpaceOnUse"
1073 gradientTransform="matrix(0.5975643,5.9637031e-8,2.8386204e-8,-0.2844304,36.45947,116.97025)"
1074 cx="223.00407"
1075 cy="299.64993"
1076 fx="223.00407"
1077 fy="336.12305"
1078 r="121" />
1079 <radialGradient
1080 inkscape:collect="always"
1081 xlink:href="#linearGradient3293"
1082 id="radialGradient3037"
1083 gradientUnits="userSpaceOnUse"
1084 cx="223"
1085 cy="171"
1086 fx="223"
1087 fy="171"
1088 r="121" />
1089 <radialGradient
1090 inkscape:collect="always"
1091 xlink:href="#linearGradient4566"
1092 id="radialGradient3039"
1093 gradientUnits="userSpaceOnUse"
1094 cx="223"
1095 cy="171"
1096 fx="223"
1097 fy="171"
1098 r="121" />
1099 <linearGradient
1100 inkscape:collect="always"
1101 xlink:href="#linearGradient3315"
1102 id="linearGradient3041"
1103 gradientUnits="userSpaceOnUse"
1104 x1="240.92592"
1105 y1="-198.00484"
1106 x2="240.92592"
1107 y2="220.56108" />
1108 <linearGradient
1109 inkscape:collect="always"
1110 xlink:href="#linearGradient3406"
1111 id="linearGradient3043"
1112 gradientUnits="userSpaceOnUse"
1113 x1="188.5"
1114 y1="170.88872"
1115 x2="188.5"
1116 y2="152.17625" />
1117 <linearGradient
1118 inkscape:collect="always"
1119 xlink:href="#linearGradient3828"
1120 id="linearGradient3045"
1121 gradientUnits="userSpaceOnUse"
1122 x1="243.98932"
1123 y1="98.219536"
1124 x2="74.505676"
1125 y2="453.04877" />
1126 <radialGradient
1127 inkscape:collect="always"
1128 xlink:href="#linearGradient3293"
1129 id="radialGradient3047"
1130 gradientUnits="userSpaceOnUse"
1131 cx="223"
1132 cy="171"
1133 fx="223"
1134 fy="171"
1135 r="121" />
1136 <radialGradient
1137 inkscape:collect="always"
1138 xlink:href="#linearGradient4566"
1139 id="radialGradient3049"
1140 gradientUnits="userSpaceOnUse"
1141 cx="223"
1142 cy="171"
1143 fx="223"
1144 fy="171"
1145 r="121" />
1146 <linearGradient
1147 inkscape:collect="always"
1148 xlink:href="#linearGradient3315"
1149 id="linearGradient3051"
1150 gradientUnits="userSpaceOnUse"
1151 x1="240.92592"
1152 y1="-198.00484"
1153 x2="240.92592"
1154 y2="220.56108" />
1155 <linearGradient
1156 inkscape:collect="always"
1157 xlink:href="#linearGradient3406"
1158 id="linearGradient3053"
1159 gradientUnits="userSpaceOnUse"
1160 x1="188.5"
1161 y1="170.88872"
1162 x2="188.5"
1163 y2="152.17625" />
1164 <linearGradient
1165 inkscape:collect="always"
1166 xlink:href="#linearGradient3828"
1167 id="linearGradient3055"
1168 gradientUnits="userSpaceOnUse"
1169 x1="243.98932"
1170 y1="98.219536"
1171 x2="74.505676"
1172 y2="453.04877" />
1173 <linearGradient
1174 inkscape:collect="always"
1175 xlink:href="#linearGradient4020"
1176 id="linearGradient3180"
1177 gradientUnits="userSpaceOnUse"
1178 x1="453.96951"
1179 y1="1197.55"
1180 x2="453.96951"
1181 y2="1277.848" />
1182 <linearGradient
1183 inkscape:collect="always"
1184 xlink:href="#linearGradient4057"
1185 id="linearGradient3182"
1186 gradientUnits="userSpaceOnUse"
1187 gradientTransform="translate(-3,0)"
1188 x1="453.50223"
1189 y1="1224.1053"
1190 x2="497.6478"
1191 y2="1272.2051" />
1192 <linearGradient
1193 inkscape:collect="always"
1194 xlink:href="#linearGradient4057"
1195 id="linearGradient3184"
1196 gradientUnits="userSpaceOnUse"
1197 gradientTransform="translate(-3,0)"
1198 x1="432.78024"
1199 y1="1251.7627"
1200 x2="461.86926"
1201 y2="1284.887" />
1202 <linearGradient
1203 inkscape:collect="always"
1204 xlink:href="#linearGradient4020"
1205 id="linearGradient3186"
1206 gradientUnits="userSpaceOnUse"
1207 x1="437.53387"
1208 y1="1205.671"
1209 x2="475.05185"
1210 y2="1230.8967" />
1211 <linearGradient
1212 inkscape:collect="always"
1213 xlink:href="#linearGradient4020"
1214 id="linearGradient3188"
1215 gradientUnits="userSpaceOnUse"
1216 x1="464.98941"
1217 y1="1188.0459"
1218 x2="487.96823"
1219 y2="1199.5918" />
1220 <linearGradient
1221 inkscape:collect="always"
1222 xlink:href="#linearGradient4020"
1223 id="linearGradient3190"
1224 gradientUnits="userSpaceOnUse"
1225 x1="433.03326"
1226 y1="1157.1986"
1227 x2="468.79407"
1228 y2="1185.8439" />
1229 <radialGradient
1230 inkscape:collect="always"
1231 xlink:href="#linearGradient4303"
1232 id="radialGradient3192"
1233 gradientUnits="userSpaceOnUse"
1234 gradientTransform="matrix(-3.6550626e-7,0.4971302,-1.5377072,-8.2697769e-7,2202.0057,921.33517)"
1235 cx="445.62894"
1236 cy="1142.2048"
1237 fx="445.62894"
1238 fy="1142.2048"
1239 r="32.057484" />
1240 <radialGradient
1241 inkscape:collect="always"
1242 xlink:href="#linearGradient4303"
1243 id="radialGradient3194"
1244 gradientUnits="userSpaceOnUse"
1245 gradientTransform="matrix(-3.6550626e-7,0.4971302,-1.5377072,-8.2697769e-7,2202.0057,964.95339)"
1246 cx="445.62894"
1247 cy="1142.2048"
1248 fx="445.62894"
1249 fy="1142.2048"
1250 r="32.057484" />
1251 <radialGradient
1252 inkscape:collect="always"
1253 xlink:href="#linearGradient4303"
1254 id="radialGradient3196"
1255 gradientUnits="userSpaceOnUse"
1256 gradientTransform="matrix(-3.6550626e-7,-0.4971302,-1.5377072,8.2697769e-7,2202.0057,1399.1621)"
1257 cx="445.62894"
1258 cy="1142.2048"
1259 fx="445.62894"
1260 fy="1142.2048"
1261 r="32.057484" />
1262 <radialGradient
1263 inkscape:collect="always"
1264 xlink:href="#linearGradient4303"
1265 id="radialGradient3198"
1266 gradientUnits="userSpaceOnUse"
1267 gradientTransform="matrix(-3.6550626e-7,-0.4971302,-1.5377072,8.2697769e-7,2202.0057,1444.4908)"
1268 cx="445.62894"
1269 cy="1142.2048"
1270 fx="445.62894"
1271 fy="1142.2048"
1272 r="32.057484" />
1273 <linearGradient
1274 inkscape:collect="always"
1275 xlink:href="#linearGradient3902"
1276 id="linearGradient3204"
1277 gradientUnits="userSpaceOnUse"
1278 gradientTransform="translate(0,-1)"
1279 x1="1866"
1280 y1="-1570.3927"
1281 x2="1866"
1282 y2="-1207.4062" />
1283 <radialGradient
1284 inkscape:collect="always"
1285 xlink:href="#linearGradient3475"
1286 id="radialGradient3212"
1287 gradientUnits="userSpaceOnUse"
1288 gradientTransform="matrix(1.337393,-3.0648975e-3,1.4718129e-3,0.6422289,-1613.3898,1457.1036)"
1289 cx="1833.0548"
1290 cy="-1103.9452"
1291 fx="1833.0548"
1292 fy="-1103.9452"
1293 r="114.44783" />
1294 <linearGradient
1295 inkscape:collect="always"
1296 xlink:href="#linearGradient4143"
1297 id="linearGradient3219"
1298 gradientUnits="userSpaceOnUse"
1299 gradientTransform="matrix(0.7656535,0,0,0.4806026,-1291.9114,801.75271)"
1300 x1="1851.387"
1301 y1="-1317.3495"
1302 x2="1891.1913"
1303 y2="-1330.7043" />
1304 <linearGradient
1305 inkscape:collect="always"
1306 xlink:href="#linearGradient4143"
1307 id="linearGradient3223"
1308 gradientUnits="userSpaceOnUse"
1309 gradientTransform="matrix(-0.7656535,0,0,0.4806026,1726.9633,796.75271)"
1310 x1="1930.4543"
1311 y1="-1329.8339"
1312 x2="1899.5142"
1313 y2="-1299.4935" />
1314 <linearGradient
1315 inkscape:collect="always"
1316 xlink:href="#linearGradient3964"
1317 id="linearGradient3227"
1318 gradientUnits="userSpaceOnUse"
1319 gradientTransform="matrix(0.527067,0.1495682,-6.5898436e-2,0.4713434,-858.95067,490.82748)"
1320 x1="2008.0101"
1321 y1="-1586.7006"
1322 x2="2008.0101"
1323 y2="-1552.8285" />
1324 <linearGradient
1325 inkscape:collect="always"
1326 xlink:href="#linearGradient3954"
1327 id="linearGradient3230"
1328 gradientUnits="userSpaceOnUse"
1329 gradientTransform="matrix(0.4589185,-9.4428648e-2,3.580049e-2,0.4769335,-680.26616,980.20136)"
1330 x1="1921.3975"
1331 y1="-1592.9694"
1332 x2="1921.3975"
1333 y2="-1556.5084" />
1334 <linearGradient
1335 inkscape:collect="always"
1336 xlink:href="#linearGradient3426"
1337 id="linearGradient3235"
1338 gradientUnits="userSpaceOnUse"
1339 gradientTransform="matrix(0.680117,0,0,0.4806026,-1115.534,804.51995)"
1340 x1="1855.3298"
1341 y1="-1143.5211"
1342 x2="1780.3766"
1343 y2="-1267.3927" />
1344 <linearGradient
1345 inkscape:collect="always"
1346 xlink:href="#linearGradient3869"
1347 id="linearGradient3241"
1348 gradientUnits="userSpaceOnUse"
1349 gradientTransform="matrix(0.4806026,0,0,0.4806026,-775.48082,804.52009)"
1350 x1="1700.293"
1351 y1="-1464.1487"
1352 x2="1669.9528"
1353 y2="-1464.1487" />
1354 <linearGradient
1355 inkscape:collect="always"
1356 xlink:href="#linearGradient4265"
1357 id="linearGradient3244"
1358 gradientUnits="userSpaceOnUse"
1359 gradientTransform="matrix(0.4806026,0,0,0.4806026,-776.92263,804.52009)"
1360 x1="1694.9799"
1361 y1="-1441.8019"
1362 x2="1576.7756"
1363 y2="-1510.0471" />
1364 <linearGradient
1365 inkscape:collect="always"
1366 xlink:href="#linearGradient4237"
1367 id="linearGradient3260"
1368 gradientUnits="userSpaceOnUse"
1369 gradientTransform="matrix(0.4806026,0,0,0.4806026,-776.92257,804.51995)"
1370 x1="1726.1041"
1371 y1="-1298.4927"
1372 x2="1726.1041"
1373 y2="-1392.9266" />
1374 <linearGradient
1375 inkscape:collect="always"
1376 xlink:href="#linearGradient3833"
1377 id="linearGradient3263"
1378 gradientUnits="userSpaceOnUse"
1379 gradientTransform="matrix(0.4806026,0,0,0.4806026,-776.92263,804.52009)"
1380 x1="1826.2334"
1381 y1="-1339.1434"
1382 x2="1615.4771"
1383 y2="-1394.0178" />
1384 <radialGradient
1385 inkscape:collect="always"
1386 xlink:href="#linearGradient4251"
1387 id="radialGradient3266"
1388 gradientUnits="userSpaceOnUse"
1389 gradientTransform="matrix(0.4413904,9.1095131e-3,-9.7794323e-3,0.4738506,-723.46245,824.58144)"
1390 cx="1724.4362"
1391 cy="-1429.8955"
1392 fx="1688.7296"
1393 fy="-1387.8237"
1394 r="98.288452" />
245 </defs> 1395 </defs>
246 <path 1396 <sodipodi:namedview
247 d="m 192.86534,56.061481 c -0.50361,-0.05952 -15.81743,15.539777 -22.98246,22.59399 6.39469,-2.022962 17.37512,-5.797322 18.87496,-5.619699 1.50061,0.17761 10.05669,6.287721 15.14374,9.668178 -3.44524,-8.295783 -10.53195,-26.582844 -11.03624,-26.642469 z m 63.7003,19.617933 c -0.36861,-0.209237 -30.19021,6.665429 -43.89415,9.694631 7.65259,0.542544 21.08672,1.231768 22.18456,1.854212 1.09971,0.623611 1.92541,8.064764 2.67487,12.283088 5.91959,-7.418443 19.40383,-23.62268 19.03472,-23.831931 z M 125.42293,59.592937 c -0.44655,0.1125 4.65988,18.477033 6.76635,26.856382 2.69189,-3.815347 6.93512,-10.632649 8.26418,-10.967772 1.33082,-0.335537 14.41073,2.134145 21.88974,3.381693 -11.49464,-6.001218 -36.47343,-19.382928 -36.92027,-19.270303 z m 164.80534,51.680193 c -0.0928,-0.27855 -33.04307,-4.73423 -48.04185,-6.88709 5.99277,2.90065 16.78887,7.80145 17.06501,8.63065 0.27649,0.83069 -6.98832,6.74108 -10.86175,10.18944 13.01804,-3.70914 41.93138,-11.65403 41.83859,-11.933 z M 125.48113,90.005528 C 110.30347,88.587271 77.076206,85.20923 76.857612,85.45104 c -0.218602,0.241871 23.348278,14.363657 33.917068,20.87246 -2.03696,-4.14784 -6.10707,-11.394242 -5.45553,-12.114888 0.65021,-0.719302 13.13762,-2.842685 20.16198,-4.203084 z m 121.66254,38.409332 c 2.03703,4.14807 6.10691,11.39426 5.45552,12.11488 -0.65033,0.7193 -13.13757,2.84269 -20.1619,4.20306 15.17775,1.41825 48.40491,4.79631 48.62348,4.5545 0.21866,-0.24186 -23.3483,-14.36365 -33.9171,-20.87244 z M 107.57689,111.87714 c -13.017795,3.70908 -41.931322,11.654 -41.838422,11.93314 0.09271,0.27847 33.043041,4.73405 48.041762,6.88692 -5.9926,-2.90067 -16.788896,-7.80154 -17.064854,-8.63067 -0.276569,-0.83079 6.988304,-6.74109 10.861514,-10.18939 z M 225.72916,148.289 c -2.69194,3.81535 -6.93504,10.63266 -8.26422,10.9678 -1.33087,0.33555 -14.41072,-2.13415 -21.88976,-3.38169 11.49463,6.00121 36.47352,19.38299 36.92049,19.27028 0.44622,-0.11245 -4.66012,-18.477 -6.76651,-26.85639 z M 118.43579,135.57189 c -5.91956,7.41845 -19.403773,23.62269 -19.034599,23.83193 0.36839,0.20917 30.190049,-6.66543 43.894159,-9.69464 -7.65284,-0.54256 -21.08673,-1.23178 -22.1848,-1.85426 -1.09959,-0.62357 -1.92533,-8.06468 -2.67476,-12.28303 z m 67.64804,20.85589 c -6.39469,2.02298 -17.37508,5.79732 -18.87493,5.61969 -1.50044,-0.17764 -10.05685,-6.28769 -15.14375,-9.66826 3.44522,8.29578 10.53209,26.58297 11.03633,26.64251 0.50342,0.0594 15.81741,-15.53967 22.98235,-22.59394 z" 1397 inkscape:window-height="1002"
248 transform="matrix(1,0,0,1.0406634,-58.623593,-54.026411)" 1398 inkscape:window-width="1380"
249 id="path6546" 1399 inkscape:pageshadow="2"
250 style="opacity:0.35096154;fill:url(#linearGradient6600);fill-opacity:1;filter:url(#filter6596)" /> 1400 inkscape:pageopacity="1"
251 <path 1401 guidetolerance="10.0"
252 d="m 134.24175,3.3147155 c -0.50361,-0.05952 -15.81743,15.5397765 -22.98246,22.5939895 6.39469,-2.022962 17.37512,-5.797322 18.87496,-5.619699 1.50061,0.17761 10.05669,6.287721 15.14374,9.668178 C 141.83275,21.661401 134.74604,3.3743405 134.24175,3.3147155 z m 63.7003,19.6179325 c -0.36861,-0.209237 -30.19021,6.665429 -43.89415,9.694631 7.65259,0.542544 21.08672,1.231768 22.18456,1.854212 1.09971,0.623611 1.92541,8.064764 2.67487,12.283088 5.91959,-7.418443 19.40383,-23.62268 19.03472,-23.831931 z M 66.799337,6.8461715 c -0.44655,0.1125 4.65988,18.4770325 6.76635,26.8563815 2.69189,-3.815347 6.93512,-10.632649 8.26418,-10.967772 1.33082,-0.335537 14.41073,2.134145 21.889743,3.381693 C 92.224967,20.115256 67.246177,6.7335465 66.799337,6.8461715 z M 231.60468,58.526364 c -0.0928,-0.27855 -33.04307,-4.73423 -48.04185,-6.88709 5.99277,2.90065 16.78887,7.80145 17.06501,8.63065 0.27649,0.83069 -6.98832,6.74108 -10.86175,10.18944 13.01804,-3.70914 41.93138,-11.65403 41.83859,-11.933 z M 66.857537,37.258762 c -15.17766,-1.418257 -48.404924,-4.796298 -48.623518,-4.554488 -0.218602,0.241871 23.348278,14.363657 33.917068,20.87246 -2.03696,-4.14784 -6.10707,-11.394242 -5.45553,-12.114888 0.65021,-0.719302 13.13762,-2.842685 20.16198,-4.203084 z M 188.52008,75.668094 c 2.03703,4.14807 6.10691,11.39426 5.45552,12.11488 -0.65033,0.7193 -13.13757,2.84269 -20.1619,4.20306 15.17775,1.41825 48.40491,4.79631 48.62348,4.5545 0.21866,-0.24186 -23.3483,-14.36365 -33.9171,-20.87244 z M 48.953297,59.130374 c -13.017795,3.70908 -41.9313217,11.654 -41.8384217,11.93314 0.09271,0.27847 33.0430407,4.73405 48.0417617,6.88692 -5.9926,-2.90067 -16.788896,-7.80154 -17.064854,-8.63067 -0.276569,-0.83079 6.988304,-6.74109 10.861514,-10.18939 z m 118.152273,36.41186 c -2.69194,3.81535 -6.93504,10.632656 -8.26422,10.967796 -1.33087,0.33555 -14.41072,-2.13415 -21.88976,-3.38169 11.49463,6.00121 36.47352,19.38299 36.92049,19.27028 0.44622,-0.11245 -4.66012,-18.477 -6.76651,-26.856386 z M 59.812197,82.825124 c -5.91956,7.41845 -19.403773,23.622686 -19.034599,23.831926 0.36839,0.20917 30.190049,-6.665426 43.894159,-9.694636 -7.65284,-0.54256 -21.08673,-1.23178 -22.1848,-1.85426 -1.09959,-0.62357 -1.92533,-8.06468 -2.67476,-12.28303 z m 67.648043,20.855886 c -6.39469,2.02298 -17.37508,5.79732 -18.87493,5.61969 -1.50044,-0.17764 -10.056853,-6.28769 -15.143753,-9.668256 3.44522,8.295776 10.532093,26.582966 11.036333,26.642506 0.50342,0.0594 15.81741,-15.53967 22.98235,-22.59394 z" 1402 gridtolerance="10.0"
253 id="path3766" 1403 objecttolerance="10.0"
254 style="fill:url(#linearGradient3216);fill-opacity:1" /> 1404 borderopacity="1.0"
1405 bordercolor="#666666"
1406 pagecolor="#ffffff"
1407 id="base"
1408 showgrid="false"
1409 showborder="true"
1410 inkscape:zoom="2"
1411 inkscape:cx="213.57302"
1412 inkscape:cy="182.16641"
1413 inkscape:window-x="1808"
1414 inkscape:window-y="120"
1415 inkscape:current-layer="svg2444"
1416 showguides="true"
1417 inkscape:guide-bbox="true"
1418 height="267.83px"
1419 width="352.20215px" />
255 <g 1420 <g
256 transform="matrix(1.2433595,-0.05648069,-0.00851864,1.1425318,-114.05679,-272.08226)" 1421 id="g2854"
257 id="g3512" 1422 transform="translate(12.056884,42.948975)">
258 style="enable-background:new"> 1423 <path
1424 sodipodi:type="arc"
1425 style="opacity:0.38222219;fill:url(#radialGradient3013);fill-opacity:1"
1426 id="path3623"
1427 sodipodi:cx="1332"
1428 sodipodi:cy="-1667.3927"
1429 sodipodi:rx="230"
1430 sodipodi:ry="230"
1431 d="M 1562 -1667.3927 A 230 230 0 1 1 1102,-1667.3927 A 230 230 0 1 1 1562 -1667.3927 z"
1432 transform="matrix(0.6394105,0,0,0.1316433,-646.55705,438.03263)" />
259 <g 1433 <g
260 transform="matrix(0.7599177,-0.01192692,0,0.7500728,246.58115,378.18196)" 1434 id="g3270">
261 id="g3514">
262 <g 1435 <g
263 transform="matrix(2.8294915,-0.5196682,1.922722,2.7658074,-1390.7458,-622.14861)" 1436 id="g3837"
264 id="g3516"> 1437 transform="matrix(0.8316864,0,0,0.8316864,100.23188,-51.021673)">
1438 <path
1439 style="opacity:0.26086958;fill:url(#radialGradient3015);fill-opacity:1"
1440 id="path4052"
1441 d="M 282.43132,253.43189 C 282.43132,271.77925 220.90121,286.65273 144.99999,286.65273 C 69.098769,286.65273 7.5686622,271.77925 7.5686622,253.43189 C 7.5686622,235.08453 69.098769,220.21105 144.99999,220.21105 C 220.90121,220.21105 282.43132,235.08453 282.43132,253.43189 L 282.43132,253.43189 z " />
1442 <g
1443 style="opacity:0.55111108"
1444 id="g3385"
1445 transform="matrix(0.8234077,0,0,0.4862332,205.02601,136.27201)" />
265 <path 1446 <path
266 d="m 191.25,92.09375 c -0.20592,0.0097 -0.4015,0.01903 -0.59375,0.0625 L 129.21875,107.4375 114.875,97.78125 114.75,111.625 c -0.0268,3.59859 -0.0786,5.26638 1.90625,6.5625 l 50.3125,34.09375 c 0.1414,0.11519 0.2923,0.21282 0.4375,0.3125 0.30609,0.21013 0.63149,0.39638 0.96875,0.53125 0.0608,0.0243 0.12527,0.0408 0.1875,0.0625 0.85167,0.32374 1.78133,0.42664 2.5625,0.25 l 72.53125,-16.5 c 0.76901,-0.17389 1.24307,-0.58588 1.40625,-1.125 0.16316,-0.53911 0.0189,-1.22272 -0.5,-1.875 l -49.25,-40.03125 c -0.51896,-0.652313 -1.31584,-1.187828 -2.15625,-1.5 -0.63032,-0.23411 -1.28848,-0.341522 -1.90625,-0.3125 z" 1447 d=""
267 transform="matrix(0.3165905,0.08474257,-0.2518713,0.3747611,270.47662,187.97058)" 1448 style="opacity:0.24154591;fill:none;fill-opacity:1;stroke:#ef2929;stroke-width:2.48031497;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
268 id="path5539" 1449 id="path5443" />
269 style="opacity:0.5;fill:#000000;fill-opacity:1;filter:url(#filter6542)" /> 1450 <g
1451 style="opacity:0.55111108"
1452 id="g4054"
1453 transform="matrix(0.7685977,0,0,0.4538672,204.09547,147.5825)" />
1454 <path
1455 style="opacity:0.24154591;fill:none;fill-opacity:1;stroke:#ef2929;stroke-width:2.39660215;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1456 id="path4056"
1457 d="" />
1458 <path
1459 style="opacity:0.08212562;fill:url(#radialGradient3017);fill-opacity:1"
1460 id="path4058"
1461 d="M 239.48401,155.82792 C 239.48401,208.00815 197.18207,250.30859 144.99998,250.30859 C 92.817889,250.30859 50.515942,208.00815 50.515942,155.82792 C 50.515942,103.64769 92.817889,61.347249 144.99998,61.347249 C 197.18207,61.347249 239.48401,103.64769 239.48401,155.82792 L 239.48401,155.82792 z " />
1462 <path
1463 style="opacity:0.88888891;fill:url(#radialGradient3019);fill-opacity:1;filter:url(#filter4057)"
1464 id="path4060"
1465 transform="matrix(0.6018159,0,0,0.113949,10.795037,226.91914)"
1466 d="M 344,171 C 344,237.82645 289.82645,292 223,292 C 156.17355,292 102,237.82645 102,171 C 102,104.17355 156.17355,50 223,50 C 289.82645,50 344,104.17355 344,171 L 344,171 z " />
1467 <path
1468 style="fill:url(#radialGradient3021);fill-opacity:1"
1469 id="path4062"
1470 d="M 239.48401,155.82792 C 239.48401,208.00815 197.18207,250.30859 144.99998,250.30859 C 92.817889,250.30859 50.515942,208.00815 50.515942,155.82792 C 50.515942,103.64769 92.817889,61.347249 144.99998,61.347249 C 197.18207,61.347249 239.48401,103.64769 239.48401,155.82792 L 239.48401,155.82792 z " />
1471 <path
1472 style="opacity:0.19111113;fill:url(#linearGradient3023);fill-opacity:1;filter:url(#filter3600)"
1473 id="path4064"
1474 transform="matrix(0.2981666,0,0,0.4777597,78.508836,98.533501)"
1475 d="M 131.75,237.625 C 152.31256,265.73095 185.53282,284 223,284 C 260.46718,284 293.68744,265.73095 314.25,237.625 C 290.54007,257.05433 258.38838,269 223,269 C 187.61163,269 155.45993,257.05433 131.75,237.625 z " />
270 <path 1476 <path
271 d="m 281.53626,237.15326 27.51166,-0.60706 c 0.28726,0 0.54652,0.1161 0.73397,0.3043 0.18744,0.18821 0.30307,0.44853 0.30307,0.73697 l 5.50607,19.18448 c 0,0.28843 -0.11563,0.54874 -0.30307,0.73695 -0.18745,0.18821 -0.44671,0.30432 -0.73397,0.30432 l -27.12774,0.0421 c -0.57451,0 -1.03703,-0.46441 -1.03703,-1.04127 l -5.88999,-18.61951 c 0,-0.57687 0.46252,-1.04127 1.03703,-1.04127 z" 1477 style="opacity:0.73333333;fill:url(#radialGradient3025);fill-opacity:1"
272 id="path3518" 1478 id="path4066"
273 style="fill:#8d0000;fill-opacity:1" /> 1479 d="M 210.37813,162.8322 C 210.37813,148.55441 181.10733,136.97997 144.99998,136.97997 C 108.89263,136.97997 79.621829,148.55441 79.621829,162.8322 C 79.621829,177.10999 108.89263,188.68443 144.99998,188.68443 C 181.10733,188.68443 210.37813,177.10999 210.37813,162.8322 L 210.37813,162.8322 z " />
274 <path 1480 <path
275 d="m 293.04884,250.57475 24.09263,-0.46052 c -2.06778,1.70244 -3.74217,4.07456 -3.72168,6.23725 l -24.60495,0.081 c -2.80034,-0.14106 1.92301,-6.21234 4.234,-5.85776 z" 1481 style="opacity:0.17300002;fill:none;fill-opacity:1;stroke:url(#linearGradient3027);stroke-width:4.5610323;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3604)"
276 id="path3520" 1482 id="path4068"
277 style="fill:url(#linearGradient3605);fill-opacity:1" /> 1483 transform="matrix(0.7506586,0,0,0.7506319,-22.396918,25.602979)"
1484 d="M 344,171 C 344,237.82645 289.82645,292 223,292 C 156.17355,292 102,237.82645 102,171 C 102,104.17355 156.17355,50 223,50 C 289.82645,50 344,104.17355 344,171 L 344,171 z " />
1485 <path
1486 style="fill:url(#linearGradient3029);fill-opacity:1;filter:url(#filter3408)"
1487 id="path4070"
1488 transform="matrix(0.4162113,0,0,-0.2352153,52.683369,225.05522)"
1489 d="M 293.65106,134.09128 C 293.65106,200.88328 292.08059,288.30474 225.28859,288.30474 C 158.49659,288.30474 161.50329,178.7595 161.50329,111.9675 C 161.50329,45.175498 158.49659,-48.976216 225.28859,-48.976216 C 292.08059,-48.976216 293.65106,67.299283 293.65106,134.09128 z "
1490 sodipodi:nodetypes="csssc" />
1491 <path
1492 style="fill:url(#linearGradient3031);fill-opacity:1"
1493 id="path4072"
1494 d="M 173.639,186.51102 C 173.639,172.6287 160.80871,159.77866 144.99995,159.77866 C 129.19118,159.77866 116.36089,172.6287 116.36089,186.51102 C 116.36089,200.39332 123.18963,233.97153 144.99995,233.97153 C 167.854,233.97153 173.639,200.39332 173.639,186.51102 z "
1495 sodipodi:nodetypes="csssc" />
1496 <path
1497 style="opacity:0.84541063;fill:url(#radialGradient3033);fill-opacity:1;filter:url(#filter5276)"
1498 id="path4074"
1499 transform="matrix(0.4983204,0,0,-0.3845536,33.874513,178.25116)"
1500 d="M 344,171 C 344,237.82645 289.82645,292 223,292 C 156.17355,292 102,237.82645 102,171 C 102,104.17355 156.17355,50 223,50 C 289.82645,50 344,104.17355 344,171 L 344,171 z " />
1501 <path
1502 style="fill:url(#radialGradient3035);fill-opacity:1;filter:url(#filter3536)"
1503 id="path4076"
1504 transform="matrix(1.1901771,0,0,1.6982516,-58.310572,15.011734)"
1505 d="M 169.71875,27.84375 C 129.80625,27.843751 97.40625,49.896203 97.40625,77.0625 C 97.40625,78.89038 97.55803,80.692371 97.84375,82.46875 C 113.86438,69.978739 140.08999,61.843751 169.71875,61.84375 C 199.34751,61.84375 225.57312,69.978739 241.59375,82.46875 C 241.87947,80.692371 242.03125,78.89038 242.03125,77.0625 C 242.03124,49.896204 209.63126,27.84375 169.71875,27.84375 z " />
278 <g 1506 <g
279 transform="matrix(0.4446532,0.0482263,-0.1333755,0.1962764,116.26445,175.89592)" 1507 id="g4078"
280 id="g3522"> 1508 transform="matrix(0.4678411,0,0,0.6112225,31.36821,48.061663)">
1509 <path
1510 style="opacity:0.71111115;fill:url(#radialGradient3037);fill-opacity:1"
1511 id="path4080"
1512 transform="matrix(0.3875218,0,0,0.2395341,101.58263,114.67306)"
1513 d="M 344,171 C 344,237.82645 289.82645,292 223,292 C 156.17355,292 102,237.82645 102,171 C 102,104.17355 156.17355,50 223,50 C 289.82645,50 344,104.17355 344,171 L 344,171 z " />
281 <path 1514 <path
282 d="m 473.62579,276.25731 49.99465,-12.3175" 1515 style="opacity:0.57487925;fill:url(#radialGradient3039);fill-opacity:1"
283 id="path3524" 1516 id="path4082"
284 style="fill:none;stroke:url(#linearGradient3607);stroke-width:0.731525;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> 1517 transform="matrix(0.3232091,0,0,0.2061665,111.98387,65.76457)"
1518 d="M 344,171 C 344,237.82645 289.82645,292 223,292 C 156.17355,292 102,237.82645 102,171 C 102,104.17355 156.17355,50 223,50 C 289.82645,50 344,104.17355 344,171 L 344,171 z " />
285 <path 1519 <path
286 d="M 473.62579,279.2625 523.62044,266.945" 1520 style="opacity:1;fill:#000000;fill-opacity:1"
287 id="path3526" 1521 id="path4084"
288 style="fill:none;stroke:url(#linearGradient3609);stroke-width:0.731525;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> 1522 transform="matrix(0.1390849,0,0,0.2479339,156.4231,89.60331)"
1523 d="M 344,171 C 344,237.82645 289.82645,292 223,292 C 156.17355,292 102,237.82645 102,171 C 102,104.17355 156.17355,50 223,50 C 289.82645,50 344,104.17355 344,171 L 344,171 z " />
289 <path 1524 <path
290 d="m 473.62579,282.26769 49.99465,-12.3175" 1525 style="opacity:1;fill:url(#linearGradient3041);fill-opacity:1;filter:url(#filter3820)"
291 id="path3528" 1526 id="path4086"
292 style="fill:none;stroke:url(#linearGradient3611);stroke-width:0.731525;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> 1527 transform="matrix(0.1251764,0,0,0.2231405,159.52469,91.84298)"
1528 d="M 344,171 C 344,237.82645 289.82645,292 223,292 C 156.17355,292 102,237.82645 102,171 C 102,104.17355 156.17355,50 223,50 C 289.82645,50 344,104.17355 344,171 L 344,171 z " />
293 <path 1529 <path
294 d="m 473.62579,285.27287 49.99465,-12.3175" 1530 style="opacity:0.74666592;fill:url(#linearGradient3043);fill-opacity:1;filter:url(#filter4928)"
295 id="path3530" 1531 id="path4088"
296 style="fill:none;stroke:url(#linearGradient3613);stroke-width:0.731525;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> 1532 transform="matrix(0.4824957,0,0,0.6835737,99.585559,42.480464)"
1533 d="M 160.19907,146.52228 C 160.0745,147.45808 160,148.41428 160,149.38397 C 160,161.25197 169.632,170.88397 181.5,170.88397 C 193.368,170.88398 203,161.25197 203,149.38397 C 203,148.41428 202.9255,147.45808 202.80093,146.52228 C 199.31205,154.27609 191.08982,159.73582 181.5,159.73582 C 171.91018,159.73582 163.68795,154.27609 160.19907,146.52228 z " />
1534 <path
1535 style="opacity:1;fill:url(#linearGradient3045);fill-opacity:1;filter:url(#filter4515)"
1536 id="path4090"
1537 transform="matrix(3.1030328e-2,0,0,3.2898174e-2,180.51926,111.44459)"
1538 d="M 344,171 C 344,237.82645 289.82645,292 223,292 C 156.17355,292 102,237.82645 102,171 C 102,104.17355 156.17355,50 223,50 C 289.82645,50 344,104.17355 344,171 L 344,171 z " />
1539 </g>
1540 <g
1541 id="use4092"
1542 transform="matrix(0.4678411,0,0,0.6112225,86.12435,48.061663)">
1543 <path
1544 style="opacity:0.71111115;fill:url(#radialGradient3047);fill-opacity:1"
1545 id="path3634"
1546 transform="matrix(0.3875218,0,0,0.2395341,101.58263,114.67306)"
1547 d="M 344,171 C 344,237.82645 289.82645,292 223,292 C 156.17355,292 102,237.82645 102,171 C 102,104.17355 156.17355,50 223,50 C 289.82645,50 344,104.17355 344,171 L 344,171 z " />
1548 <path
1549 style="opacity:0.57487925;fill:url(#radialGradient3049);fill-opacity:1"
1550 id="path3636"
1551 transform="matrix(0.3232091,0,0,0.2061665,111.98387,65.76457)"
1552 d="M 344,171 C 344,237.82645 289.82645,292 223,292 C 156.17355,292 102,237.82645 102,171 C 102,104.17355 156.17355,50 223,50 C 289.82645,50 344,104.17355 344,171 L 344,171 z " />
1553 <path
1554 style="opacity:1;fill:#000000;fill-opacity:1"
1555 id="path3638"
1556 transform="matrix(0.1390849,0,0,0.2479339,156.4231,89.60331)"
1557 d="M 344,171 C 344,237.82645 289.82645,292 223,292 C 156.17355,292 102,237.82645 102,171 C 102,104.17355 156.17355,50 223,50 C 289.82645,50 344,104.17355 344,171 L 344,171 z " />
1558 <path
1559 style="opacity:1;fill:url(#linearGradient3051);fill-opacity:1;filter:url(#filter3820)"
1560 id="path3640"
1561 transform="matrix(0.1251764,0,0,0.2231405,159.52469,91.84298)"
1562 d="M 344,171 C 344,237.82645 289.82645,292 223,292 C 156.17355,292 102,237.82645 102,171 C 102,104.17355 156.17355,50 223,50 C 289.82645,50 344,104.17355 344,171 L 344,171 z " />
1563 <path
1564 style="opacity:0.71111115;fill:url(#linearGradient3053);fill-opacity:1;filter:url(#filter4928)"
1565 id="path3642"
1566 transform="matrix(0.4824957,0,0,0.6835737,99.585559,42.480464)"
1567 d="M 160.19907,146.52228 C 160.0745,147.45808 160,148.41428 160,149.38397 C 160,161.25197 169.632,170.88397 181.5,170.88397 C 193.368,170.88398 203,161.25197 203,149.38397 C 203,148.41428 202.9255,147.45808 202.80093,146.52228 C 199.31205,154.27609 191.08982,159.73582 181.5,159.73582 C 171.91018,159.73582 163.68795,154.27609 160.19907,146.52228 z " />
1568 <path
1569 style="opacity:1;fill:url(#linearGradient3055);fill-opacity:1;filter:url(#filter4515)"
1570 id="path3644"
1571 transform="matrix(3.1030328e-2,0,0,3.2898174e-2,180.51926,111.44459)"
1572 d="M 344,171 C 344,237.82645 289.82645,292 223,292 C 156.17355,292 102,237.82645 102,171 C 102,104.17355 156.17355,50 223,50 C 289.82645,50 344,104.17355 344,171 L 344,171 z " />
297 </g> 1573 </g>
298 <path 1574 <path
299 d="m 297.97117,252.53831 c 3.55435,7.23743 1.84248,10.21442 1.84248,10.21442 2.34309,-1.31419 3.98813,-2.90075 4.59366,-4.89297 1.69632,2.05733 3.28001,4.14745 6.61694,5.72721 0,0 -2.85323,-6.91061 -4.0263,-10.8615 l -9.02678,-0.18716 z" 1575 style="fill-opacity:1"
300 id="path3532" 1576 id="path4108"
301 style="fill:#0093d9;fill-opacity:1;stroke-width:2" /> 1577 d="M 120.41155,88.215572 C 110.20003,85.789917 99.94371,92.108588 97.517964,102.31976 C 97.339743,103.06999 97.216539,103.81678 97.130793,104.56437 C 100.40502,95.65765 109.89945,90.391681 119.36072,92.639117 C 128.82199,94.886551 130.62308,90.641216 120.41155,88.215572 z " />
302 <path 1578 <path
303 d="m 284.57789,231.78049 26.77592,0.20008 c 0.68561,0 1.23756,0.55195 1.23756,1.23755 l 7.06718,15.78748 c 0,0.6856 -0.55195,1.23755 -1.23756,1.23755 l -27.04539,-0.34183 -8.03527,-16.88328 c 0,-0.6856 0.55195,-1.23755 1.23756,-1.23755 z" 1579 style="fill-opacity:1"
304 id="path3534" 1580 id="use4110"
305 style="fill:url(#linearGradient6436);fill-opacity:1" /> 1581 d="M 167.73219,88.215572 C 177.94371,85.789917 188.20003,92.108588 190.62578,102.31976 C 190.804,103.06999 190.9272,103.81678 191.01295,104.56437 C 187.73872,95.65765 178.24429,90.391681 168.78302,92.639117 C 159.32175,94.886551 157.52066,90.641216 167.73219,88.215572 z " />
306 <path 1582 <path
307 d="m 280.11847,237.40712 3.52338,-5.17553 7.74436,17.75537 c -3.36741,1.31622 -7.06065,7.43359 -3.57281,7.85099 -0.90727,0.0228 -1.25561,-0.2564 -1.40216,-0.76942 l -7.33593,-17.04682 c -0.30195,-0.65394 0.12828,-1.26825 1.04316,-2.61459 z" 1583 style="opacity:0.60888887;fill:#ffffff;fill-opacity:1;filter:url(#filter3698)"
308 id="path3536" 1584 id="path4112"
309 style="fill:#bc0000;fill-opacity:1" /> 1585 transform="matrix(0.9058441,0,0,0.9058118,-11.454076,36.89739)"
1586 d="M 145.57211,52.654353 C 134.29918,49.976473 122.97678,56.952173 120.2989,68.225121 C 120.10215,69.053362 119.96614,69.877805 119.87148,70.703131 C 123.48605,60.870273 133.96735,55.056739 144.41205,57.537868 C 154.85675,60.018994 156.84506,55.33222 145.57211,52.654353 z " />
310 <path 1587 <path
311 d="m 284.81403,231.70142 25.95424,-0.0282 c 0.46998,0 0.84832,0.37836 0.84832,0.84833 0.22453,6.59441 -14.1341,15.47802 -20.88485,16.08864 l -6.76604,-16.0604 c 0,-0.46997 0.37835,-0.84833 0.84833,-0.84833 z" 1588 style="opacity:0.37074567;fill:#ffffff;fill-opacity:1;filter:url(#filter3698)"
312 id="path3538" 1589 id="use4114"
313 style="fill:url(#radialGradient3615);fill-opacity:1" /> 1590 transform="matrix(-0.9058441,0,0,0.9058118,298.3901,36.89739)"
1591 d="M 145.57211,52.654353 C 134.29918,49.976473 122.97678,56.952173 120.2989,68.225121 C 120.10215,69.053362 119.96614,69.877805 119.87148,70.703131 C 123.48605,60.870273 133.96735,55.056739 144.41205,57.537868 C 154.85675,60.018994 156.84506,55.33222 145.57211,52.654353 z " />
1592 </g>
1593 <path
1594 sodipodi:nodetypes="cssssssssssssssssssssss"
1595 style="fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1596 d="M 139.53711,49.943854 C 125.36592,52.978234 115.26259,59.735904 109.96373,68.191714 C 99.36602,85.103404 105.36345,108.60343 123.48226,132.00676 C 142.27185,156.27652 155.53443,175.12133 169.23007,188.41749 C 176.07793,195.06557 183.08618,200.3733 191.31443,204.14219 C 199.54269,207.91113 209.12453,209.98454 219.59576,209.98454 C 230.92299,209.98454 241.27387,206.90176 250.15017,202.02456 C 259.02638,197.14735 266.77718,190.47024 274.14858,182.53011 C 288.89133,166.64985 302.03951,145.5537 315.94846,123.04049 C 326.29979,106.28582 335.50486,85.336354 328.84497,68.927674 C 325.51506,60.723344 317.13191,53.464084 303.24342,50.274274 C 289.35492,47.084464 288.86377,57.206914 297.97957,59.300574 C 307.09535,61.394274 311.54939,65.237174 314.01043,71.300644 C 318.93243,83.427644 311.4968,103.69484 301.68815,119.57116 C 287.79521,142.05842 274.66579,162.88457 260.91709,177.69405 C 254.04283,185.09879 247.00332,190.96657 240.05304,194.78548 C 233.10282,198.6044 226.6148,200.37249 219.59576,200.37249 C 212.13867,200.37249 206.30915,199.12902 200.33476,196.39247 C 194.36044,193.65597 188.34462,189.27403 182.07875,183.19094 C 169.54697,171.02473 156.14375,152.23354 137.24015,127.81653 C 120.36438,106.0188 116.23329,84.419464 124.20014,71.706174 C 128.18355,65.349484 134.54273,61.170064 144.46601,59.045274 C 154.38924,56.920484 144.85127,48.805984 139.53711,49.943854 z "
1597 id="path3625" />
1598 <path
1599 style="fill:none;fill-rule:evenodd;stroke:#c8c5ac;stroke-width:10.5732584;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1600 d="M 221.57612,203.09741 C 225.14273,276.78293 64.42522,279.38313 56.53871,208.84863"
1601 id="path3627"
1602 sodipodi:nodetypes="cc" />
1603 <path
1604 sodipodi:nodetypes="csssc"
1605 style="fill:url(#radialGradient3266);fill-opacity:1"
1606 d="M 48.30652,211.55418 C 22.23129,211.55424 1.06881,173.61003 1.06881,160.92414 C 1.06881,148.23834 22.23129,137.94254 48.30652,137.94254 C 74.38172,137.94254 95.54419,148.23834 95.54419,160.92414 C 95.54424,173.61003 74.38172,211.55424 48.30652,211.55418 z "
1607 id="path3629" />
1608 <path
1609 style="fill:url(#linearGradient3263);fill-opacity:1"
1610 d="M 48.30648,184.4258 C 21.6413,184.4258 1.4210855e-14,173.89705 1.4210855e-14,160.92414 C -4e-05,147.95128 21.6413,137.42252 48.30652,137.42252 C 74.97171,137.42252 96.613,147.95128 96.613,160.92414 C 96.61305,173.89705 74.97171,184.4258 48.30648,184.4258 z "
1611 id="path3631" />
1612 <path
1613 id="path3633"
1614 d="M 48.30648,180.45776 C 26.14349,180.45776 8.15611,171.7067 8.15611,160.92414 C 8.15607,150.14163 26.14349,141.39057 48.30652,141.39057 C 70.46952,141.39057 88.45689,150.14163 88.45689,160.92414 C 88.45693,171.7067 70.46952,180.45776 48.30648,180.45776 z "
1615 style="fill:url(#linearGradient3260);fill-opacity:1;stroke:#888a85;stroke-width:0.48060265" />
1616 <path
1617 transform="matrix(0.4806026,0,0,0.4806026,-741.83863,804.52009)"
1618 sodipodi:type="arc"
1619 style="fill:#555753;fill-opacity:1;stroke:#2e3436"
1620 id="path3635"
1621 sodipodi:cx="1681"
1622 sodipodi:cy="-1350.3927"
1623 sodipodi:rx="20"
1624 sodipodi:ry="10"
1625 d="M 1701 -1350.3927 A 20 10 0 1 1 1661,-1350.3927 A 20 10 0 1 1 1701 -1350.3927 z" />
1626 <path
1627 transform="matrix(0.4806026,0,0,0.4806026,-776.92263,804.52009)"
1628 d="M 1701 -1350.3927 A 20 10 0 1 1 1661,-1350.3927 A 20 10 0 1 1 1701 -1350.3927 z"
1629 sodipodi:ry="10"
1630 sodipodi:rx="20"
1631 sodipodi:cy="-1350.3927"
1632 sodipodi:cx="1681"
1633 id="path3637"
1634 style="fill:#555753;fill-opacity:1;stroke:#2e3436"
1635 sodipodi:type="arc" />
1636 <g
1637 style="fill:#555753"
1638 transform="matrix(0.4806026,0,0,0.561938,-152.3744,-581.29715)"
1639 id="g3639">
314 <path 1640 <path
315 d="m 300.57764,261.77315 c 2.52506,-1.48438 3.39499,-3.74367 3.94533,-5.4168 0.129,2.75802 6.15463,7.38876 5.50424,5.77641 -2.09513,-5.19394 -2.45794,-8.70017 -3.21244,-8.8903 -1.09621,-0.27623 -6.29411,-0.14168 -7.77351,-0.22359 1.0853,2.18428 1.8036,4.4636 1.53638,8.75428 z" 1641 sodipodi:nodetypes="ccssssssssc"
316 id="path3540" 1642 style="fill:url(#linearGradient3180);fill-opacity:1;fill-rule:evenodd"
317 style="opacity:0.79901961;fill:url(#radialGradient3617);fill-opacity:1;stroke-width:2" /> 1643 d="M 432.03039,1204.294 L 422.52395,1208.2166 C 422.52395,1208.2166 419.26917,1209.2858 419.2413,1207.5258 C 419.02597,1193.9282 435.50507,1185.8236 453.20673,1188.1117 C 470.90841,1190.3999 486.9554,1197.3104 488.41349,1209.1972 C 491.78762,1236.7044 464.22881,1239.0746 464.22881,1267.8406 C 464.22881,1278.0588 466.78984,1287.534 466.78984,1307.6869 C 466.78984,1316.7278 438.87445,1321.5643 438.87445,1307.6869 C 438.87445,1288.4974 441.43549,1279.8769 441.43549,1268.0157 C 441.43549,1243.8702 474.9898,1234.3218 474.9898,1211.1391 C 474.9898,1198.4244 432.03039,1190.9874 432.03039,1204.294 z "
1644 id="path3641" />
318 <path 1645 <path
319 d="m 319.47279,249.25686 c 0,0.6856 -0.36012,0.98755 -1.04573,0.98755 l -26.46288,0.44824 -0.60592,-0.84306 c 7.14032,-0.21334 18.76088,-0.20836 28.11453,-0.59273 z" 1646 style="fill:url(#linearGradient3182);fill-opacity:1;fill-rule:evenodd;filter:url(#filter4285)"
320 id="path3542" 1647 d="M 449.93781,1194.0208 C 467.22548,1200.7774 454.39379,1192.2102 469.38606,1205.7239 C 472.88551,1210.4453 475.55771,1219.1089 467.97353,1228.1112 C 459.70688,1237.9235 444.26572,1249.2765 441.79692,1262.1656 C 440.28664,1270.9708 440.87142,1280.0718 440.02719,1288.9868 C 439.87636,1295.8787 439.70187,1302.6849 440.6806,1309.31 C 443.60122,1317.101 447.14685,1315.4346 449.07243,1306.8529 C 450.19009,1300.7615 449.70873,1294.6225 449.55908,1288.7576 C 448.56954,1274.3677 446.39715,1263.5479 452.10198,1250.2849 C 459.62756,1239.9018 478.69953,1230.176 478.3952,1217.553 C 478.48654,1209.6905 473.98925,1202.1978 467.92509,1199.1077 C 462.37066,1195.6254 456.14074,1194.0641 449.93781,1194.0208 z "
321 style="fill:#a70000;fill-opacity:1" /> 1648 id="path3643"
1649 sodipodi:nodetypes="ccsccccccccc"
1650 transform="matrix(0.8189647,0,0,1.0058423,97.213684,-7.6844444)" />
1651 <path
1652 transform="matrix(1,0,0,0.9858952,0,18.551891)"
1653 sodipodi:nodetypes="ccscccccccc"
1654 id="path3645"
1655 d="M 449.93781,1194.0208 C 467.22548,1200.7774 454.39379,1192.2102 469.38606,1205.7239 C 472.88551,1210.4453 475.55771,1219.1089 467.97353,1228.1112 C 459.70688,1237.9235 444.26572,1249.2765 441.79692,1262.1656 C 440.28664,1270.9708 440.87142,1280.0718 440.02719,1288.9868 C 439.72056,1295.9601 439.10143,1302.9985 439.43638,1309.9598 C 441.48014,1318.2088 445.4437,1316.3241 446.53554,1308.1778 C 445.79466,1288.4279 444.3606,1273.0672 451.39487,1253.9654 C 458.92045,1243.5823 476.57821,1230.7894 476.27388,1218.1664 C 476.36522,1210.3039 473.98925,1202.1978 467.92509,1199.1077 C 462.37066,1195.6254 456.14074,1194.0641 449.93781,1194.0208 z "
1656 style="fill:url(#linearGradient3184);fill-opacity:1;fill-rule:evenodd;filter:url(#filter4285)" />
1657 <path
1658 sodipodi:nodetypes="ccccc"
1659 id="path3647"
1660 d="M 470.83429,1199.6173 C 459.08429,1219.8712 432.00259,1217.8842 432.00259,1203.6997 C 431.67479,1198.1427 419.24586,1206.8136 419.24586,1206.8136 C 419.73751,1235.5476 476.67061,1232.9179 482.01293,1200.0167 C 480.37389,1197.0748 473.17868,1197.8123 470.83429,1199.6173 z "
1661 style="fill:url(#linearGradient3186);fill-opacity:1;fill-rule:evenodd" />
1662 <path
1663 sodipodi:nodetypes="cccsscsc"
1664 id="path3649"
1665 d="M 433.12873,1161.7536 L 423.91471,1169.4535 C 423.91471,1169.4535 420.94786,1166.5722 420.94786,1161.6666 C 420.94786,1136.3017 479.8199,1136.8287 487.30427,1173.9341 C 489.29546,1183.8058 486.81056,1195.7667 479.81615,1204.6203 C 478.33708,1206.4925 470.02478,1200.2374 470.02478,1200.2374 C 487.5358,1172.8845 468.0812,1168.4011 462.6446,1160.0831 C 458.16341,1153.2269 433.12873,1152.7535 433.12873,1161.7536 z "
1666 style="fill:url(#linearGradient3188);fill-opacity:1;fill-rule:evenodd" />
1667 <path
1668 sodipodi:nodetypes="cscccs"
1669 id="path3651"
1670 d="M 433.28831,1162.2798 C 430.01894,1173.0954 475.64641,1173.0105 475.64641,1147.3586 C 475.64641,1124.6896 456.25844,1119.3461 442.58978,1116.3078 C 468.11783,1110.7024 497.40433,1134.3041 488.36009,1157.1676 C 477.70216,1186.5643 418.25062,1191.5414 420.8676,1161.4608 C 426.40432,1152.6352 434.48031,1158.3365 433.28831,1162.2798 z "
1671 style="fill:url(#linearGradient3190);fill-rule:evenodd" />
1672 <path
1673 id="path3653"
1674 d="M 445.375,1144.4572 C 436.88582,1144.3066 426.07544,1147.7479 423.96875,1157.1135 C 423.66968,1158.9108 423.68578,1161.1351 424.59375,1162.6759 C 428.35441,1160.36 430.80495,1156.6062 433.40625,1153.3635 C 441.04257,1147.6618 451.8324,1149.0171 460.21875,1152.1759 C 466.27233,1156.1642 470.88168,1161.9966 476.09375,1166.9572 C 482.02394,1174.7632 480.58339,1185.6531 475.625,1193.5509 C 474.17695,1195.493 473.37365,1197.6463 476.25,1198.5197 C 477.90918,1199.9744 479.59932,1198.74 480.03125,1196.8947 C 489.79777,1181.6963 485.12592,1158.435 468.46875,1150.1447 C 461.47803,1146.1038 453.3524,1144.1743 445.375,1144.4572 z "
1675 style="fill:url(#radialGradient3192);fill-opacity:1;fill-rule:evenodd" />
1676 <path
1677 style="fill:url(#radialGradient3194);fill-opacity:1;fill-rule:evenodd"
1678 d="M 445.375,1188.0754 C 436.88582,1187.9248 426.07544,1191.3661 423.96875,1200.7317 C 423.66968,1202.529 423.68578,1204.7533 424.59375,1206.2941 C 428.35441,1203.9782 430.80495,1200.2244 433.40625,1196.9817 C 441.04257,1191.28 451.8324,1192.6353 460.21875,1195.7941 C 466.27233,1199.7824 470.88168,1205.6148 476.09375,1210.5754 C 482.02394,1218.3814 480.58339,1229.2713 475.625,1237.1691 C 474.17695,1239.1112 473.37365,1241.2645 476.25,1242.1379 C 477.90918,1243.5926 479.59932,1242.3582 480.03125,1240.5129 C 489.79777,1225.3145 485.12592,1202.0532 468.46875,1193.7629 C 461.47803,1189.722 453.3524,1187.7925 445.375,1188.0754 z "
1679 id="path3655" />
1680 <path
1681 style="fill:url(#radialGradient3196);fill-opacity:1;fill-rule:evenodd"
1682 d="M 445.375,1176.0401 C 436.88582,1176.1907 426.07544,1172.7494 423.96875,1163.3838 C 423.66968,1161.5865 423.68578,1159.3622 424.59375,1157.8214 C 428.35441,1160.1373 430.80495,1163.8911 433.40625,1167.1338 C 441.04257,1172.8355 451.8324,1171.4802 460.21875,1168.3214 C 466.27233,1164.3331 470.88168,1158.5007 476.09375,1153.5401 C 482.02394,1145.7341 480.58339,1134.8442 475.625,1126.9464 C 474.17695,1125.0043 473.37365,1122.851 476.25,1121.9776 C 477.90918,1120.5229 479.59932,1121.7573 480.03125,1123.6026 C 489.79777,1138.801 485.12592,1162.0623 468.46875,1170.3526 C 461.47803,1174.3935 453.3524,1176.323 445.375,1176.0401 z "
1683 id="path3657" />
1684 <path
1685 id="path3659"
1686 d="M 445.375,1221.3688 C 436.88582,1221.5194 426.07544,1218.0781 423.96875,1208.7125 C 423.66968,1206.9152 423.68578,1204.6909 424.59375,1203.1501 C 428.35441,1205.466 430.80495,1209.2198 433.40625,1212.4625 C 441.04257,1218.1642 451.8324,1216.8089 460.21875,1213.6501 C 466.27233,1209.6618 470.88168,1203.8294 476.09375,1198.8688 C 482.02394,1191.0628 480.58339,1180.1729 475.625,1172.2751 C 474.17695,1170.333 473.37365,1168.1797 476.25,1167.3063 C 477.90918,1165.8516 479.59932,1167.086 480.03125,1168.9313 C 489.79777,1184.1297 485.12592,1207.391 468.46875,1215.6813 C 461.47803,1219.7222 453.3524,1221.6517 445.375,1221.3688 z "
1687 style="fill:url(#radialGradient3198);fill-opacity:1;fill-rule:evenodd" />
322 </g> 1688 </g>
1689 <path
1690 id="path3663"
1691 d="M 35.137,138.52786 C 35.137,142.70176 36.01708,146.60098 36.01708,154.86244 C 36.01708,158.56866 24.57345,160.55134 24.57345,154.86244 C 24.57345,146.99594 25.62333,143.46202 25.62333,138.59966 C 25.62333,125.56698 25.47141,117.67764 18.26314,105.19255 C 6.35717,84.570804 27.51215,45.832734 35.406,41.323054 C 37.19922,45.929244 35.137,80.754574 35.137,138.52786 z "
1692 style="fill:url(#linearGradient3244);fill-opacity:1;fill-rule:evenodd"
1693 sodipodi:nodetypes="csscscs" />
1694 <path
1695 sodipodi:nodetypes="ccccccccc"
1696 id="path3665"
1697 d="M 35.19068,45.453264 C 30.75881,46.363994 33.99716,82.317164 23.23426,107.56086 C 30.07558,120.51459 29.69966,135.83399 28.05676,150.02936 C 28.30961,151.94428 27.09287,154.95563 28.98793,156.15704 C 31.0959,156.97926 34.33151,156.49596 35.59622,154.51996 C 35.13815,145.34594 34.34502,136.07002 34.6403,126.82529 C 34.76674,103.71344 35.38312,80.608524 35.61122,57.498314 C 35.59992,53.382814 35.57781,49.266454 35.44603,45.152884 L 35.19068,45.453264 z "
1698 style="fill:url(#linearGradient3241);fill-opacity:1;fill-rule:evenodd" />
1699 <path
1700 sodipodi:nodetypes="ccccccccccccccccc"
1701 transform="matrix(0.7656537,0,0,0.4585475,-1283.2388,769.80396)"
1702 id="path3667"
1703 d="M 1820.8438,-1523.625 C 1811.5309,-1483.3797 1825.1068,-1442.2453 1842.1478,-1405.9936 C 1859.0621,-1370.2057 1876.114,-1312.5918 1895.0312,-1277.817 C 1907.1538,-1257.6302 1921.6928,-1236.3011 1944.6299,-1228.1076 C 1963.3075,-1221.8933 1985.5757,-1226.399 1999.4375,-1240.8795 C 2026.3142,-1264.7972 2040.1136,-1321.4438 2055.1197,-1353.475 C 2072.2542,-1393.5584 2089.4288,-1434.0694 2099.75,-1476.5312 C 2104.8451,-1501.571 2106.5804,-1530.0808 2092.5938,-1552.5938 C 2080.1586,-1570.204 2054.9935,-1568.1485 2075.4688,-1556.0625 C 2093.4403,-1543.0102 2094.8041,-1518.012 2092.2933,-1497.6357 C 2086.2374,-1444.3382 2061.2331,-1395.8836 2041.25,-1346.875 C 2027.5391,-1316.3168 2012.1446,-1262.6631 1985,-1241.942 C 1967.8646,-1230.7853 1943.5918,-1234.1808 1929.625,-1248.8482 C 1909.0455,-1267.3974 1898.4508,-1315.7376 1885.2833,-1339.5859 C 1868.5956,-1373.3101 1851.4488,-1407.027 1838.0938,-1442.1875 C 1827.9978,-1472.4656 1822.8624,-1507.1254 1835.875,-1537.3438 C 1845.5453,-1556.5373 1825.1246,-1551.2516 1820.8438,-1523.625 z "
1704 style="fill:url(#linearGradient3204);fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter4133)" />
1705 <path
1706 sodipodi:nodetypes="cccccc"
1707 id="path3670"
1708 d="M 135.38295,46.479584 C 127.98743,45.450354 130.94798,69.582134 135.83194,67.633634 C 137.12631,67.347294 143.64771,65.372024 144.94573,65.462594 C 150.38631,65.042294 155.42337,59.373574 155.31739,53.648964 C 155.42829,48.570054 151.67446,44.228204 146.86043,44.129954 C 144.79848,44.023104 137.46447,46.112744 135.38295,46.479584 z "
1709 style="fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:44;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
1710 <path
1711 style="fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:44;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1712 d="M 309.55009,47.443764 C 318.17438,47.309914 313.50819,71.020144 307.94727,68.487344 C 306.46171,68.045534 299.00431,65.288394 297.49525,65.222054 C 291.21092,64.146194 285.66289,57.884594 286.07871,52.188024 C 286.21004,47.109234 290.78299,43.232014 296.36763,43.715074 C 298.76295,43.857374 307.15634,46.826664 309.55009,47.443764 z "
1713 id="path3672"
1714 sodipodi:nodetypes="cccccc" />
1715 <path
1716 sodipodi:nodetypes="cc"
1717 id="path3678"
1718 d="M 220.21588,203.09741 C 223.68035,276.85982 61.9309,279.41888 53.98324,208.84863"
1719 style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:url(#linearGradient3235);stroke-width:15.37928391;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
1720 <path
1721 sodipodi:nodetypes="css"
1722 id="path3680"
1723 d="M 149.62812,157.05108 C 172.95436,187.10274 188.63708,203.18135 216.52442,203.18135 C 246.19258,203.18135 268.04349,183.39335 290.0189,152.02932"
1724 style="fill:none;fill-rule:evenodd;stroke:#2e3436;stroke-width:15.37928391;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
1725 <path
1726 style="fill:#2e3436;fill-opacity:0.99894637;fill-rule:evenodd;stroke:none;stroke-width:32;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1727 d="M 246.80044,186.40497 C 236.23915,194.26288 227.0282,197.48887 216.53315,197.48887 C 206.34023,197.48887 199.72636,195.19601 190.78805,188.46253 C 181.84973,181.72909 173.69077,203.4047 190.05431,208.52947 C 200.62738,211.84077 206.51749,216.29927 203.80125,222.66231 C 201.53521,227.97066 229.24844,224.62999 230.45678,220.55299 C 232.36113,214.12787 238.37227,210.81243 244.83837,207.86686 C 259.16099,201.34234 257.36162,178.54707 246.80044,186.40497 z "
1728 id="path3682"
1729 sodipodi:nodetypes="csssssss" />
1730 <path
1731 style="opacity:0.55111108;fill:url(#linearGradient3230);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:44;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1732 d="M 137.62681,46.434724 C 134.98797,46.067454 134.27557,50.380564 134.67175,54.404994 C 133.83782,61.798224 151.22775,54.049994 151.27085,51.341734 C 151.34678,47.865494 148.77751,44.893744 145.48255,44.826524 C 144.07125,44.753364 139.05151,46.183604 137.62681,46.434724 z "
1733 id="path3688"
1734 sodipodi:nodetypes="ccccc" />
1735 <path
1736 sodipodi:nodetypes="ccccc"
1737 id="path3691"
1738 d="M 308.25561,47.512814 C 311.86448,47.456804 312.37889,52.952454 311.40477,57.510984 C 307.44844,62.401554 291.14933,53.384164 290.60364,51.080814 C 290.70239,47.261214 294.14158,44.345344 298.34157,44.708614 C 300.14299,44.815634 306.45534,47.048734 308.25561,47.512814 z "
1739 style="opacity:0.55111108;fill:url(#linearGradient3227);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:44;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
1740 <path
1741 style="opacity:0.61777775;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#radialGradient3212);stroke-width:10.08747578;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3523)"
1742 d="M 956.7079,666.49988 C 961.2266,779.89428 750.2503,783.82828 739.8838,675.34128"
1743 id="path3693"
1744 sodipodi:nodetypes="cc"
1745 transform="matrix(0.6801171,0,0,0.4806026,-439.83774,-106.65094)" />
1746 <path
1747 sodipodi:nodetypes="cs"
1748 id="path3695"
1749 d="M 288.68277,149.92452 C 274.92635,167.64718 263.38711,181.74935 250.51448,190.33758"
1750 style="opacity:0.56888888;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3223);stroke-width:7.68964195;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
1751 <path
1752 id="path3697"
1753 d="M 53.63591,220.20504 C 41.5503,220.20504 31.74163,206.52511 31.74163,201.95156 C 31.74163,197.3779 41.5503,206.8749 53.63591,206.8749 C 65.72145,206.8749 75.53011,197.3779 75.53011,201.95156 C 75.53011,206.52511 65.72145,220.20504 53.63591,220.20504 z "
1754 style="fill:#2e3436;fill-opacity:1"
1755 sodipodi:nodetypes="csssc" />
1756 <path
1757 style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3219);stroke-width:7.68964195;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
1758 d="M 146.36912,154.92452 C 160.12554,172.64718 171.66478,186.74935 184.53741,195.33758"
1759 id="path3398"
1760 sodipodi:nodetypes="cs" />
323 </g> 1761 </g>
324 </g> 1762 </g>
325 <path
326 d="m 14.400303,150.8796 3.34996,0 c 2.70348,0 5.3482,-0.23509 7.52274,-0.76403 4.52538,-1.17543 9.69726,-4.34909 9.69726,-11.69549 0,-4.46662 -1.93945,-7.52274 -4.58416,-9.16833 -2.82102,-1.76314 -6.58239,-2.35086 -10.69638,-2.35086 l -16.3971997,0 0,1.70437 c 5.17187,0.35263 5.28942,0.47018 5.28942,3.76137 l 0,30.4454 c 0,3.29119 -0.11755,3.40874 -5.28942,3.76137 l 0,1.70437 17.3375397,0 0,-1.70437 c -6.05344,-0.35263 -6.22976,-0.47018 -6.22976,-3.76137 l 0,-11.93243 m 0,-19.74717 c 0,-1.6456 0.64649,-2.17454 4.46662,-2.17454 6.05344,0 9.75604,3.46752 9.75604,9.87358 0,7.34641 -4.81925,9.99113 -9.87358,9.99113 -3.46751,0 -4.34908,-0.11754 -4.34908,-2.29208 l 0,-15.39809 m 58.765624,36.43823 0,-1.70437 c -4.05522,-0.29386 -4.40785,-0.41141 -4.40785,-3.40874 l 0,-24.03747 -0.4114,-0.35263 -9.2271,1.46928 0,1.46928 2.23331,0.29386 c 1.52805,0.23509 1.88068,0.52894 1.88068,2.64471 l 0,13.22355 c 0,1.6456 -0.17631,2.93857 -0.47017,3.52628 -1.35174,2.70348 -4.17276,4.40785 -7.22887,4.40785 -3.40874,0 -5.93591,-2.11577 -5.93591,-6.69993 l 0,-19.98225 -0.4114,-0.35263 -9.227094,1.46928 0,1.46928 2.233314,0.29386 c 1.52805,0.23509 1.88068,0.52894 1.88068,2.64471 l 0,15.51563 c 0,6.7587 3.99645,8.8157 8.34553,8.8157 4.99556,0 9.05079,-3.40874 10.75515,-4.23153 l 0.58772,3.52628 9.40341,0 m 9.15435,0.70525 2.35085,-2.29208 c 2.05699,1.17543 4.5254,2.29208 8.93324,2.29208 7.816583,0 14.634063,-3.76138 14.634063,-15.75072 0,-3.64381 -0.76403,-14.45774 -11.342863,-14.45774 -4.46662,0 -7.93414,2.87979 -10.10867,4.17276 l 0,-17.92525 -0.4114,-0.35263 -9.2271,1.46928 0,1.46928 2.23331,0.23509 c 1.52805,0.17631 1.88068,0.47017 1.88068,2.70348 l 0,37.96628 1.05789,0.47017 m 4.46662,-19.57085 c 0,-1.46928 0.11754,-2.40963 0.58771,-3.34997 1.41051,-2.82102 3.87891,-4.11399 7.1701,-4.11399 2.40962,0 7.581513,1.41052 7.581513,11.63672 0,8.63938 -2.644723,13.3411 -8.463083,13.3411 -3.11487,0 -5.40696,-1.58683 -6.46484,-4.5254 -0.35263,-1.05788 -0.4114,-2.29208 -0.4114,-3.70259 l 0,-9.28587 m 37.375603,-24.3901 -0.4114,-0.35263 -9.22709,1.46928 0,1.46928 2.2333,0.23509 c 1.52806,0.17631 1.88069,0.47017 1.88069,2.70348 l 0,32.61809 c 0,2.99733 -0.17632,3.11488 -4.40785,3.40874 l 0,1.70437 14.3402,0 0,-1.70437 c -4.17276,-0.29386 -4.40785,-0.41141 -4.40785,-3.40874 l 0,-38.14259 m 9.43811,15.22177 0,1.46928 2.23331,0.29386 c 1.52805,0.23509 1.88068,0.52894 1.88068,2.64471 l 0,18.51297 c 0,2.99733 -0.17632,3.11488 -4.40785,3.40874 l 0,1.70437 14.34021,0 0,-1.70437 c -4.17277,-0.29386 -4.40785,-0.41141 -4.40785,-3.40874 l 0,-24.03747 -0.41141,-0.35263 -9.22709,1.46928 m 6.81747,-13.98758 c -2.11576,0 -3.58505,1.52806 -3.58505,3.64383 0,2.05699 1.46929,3.52628 3.58505,3.52628 2.17454,0 3.52628,-1.46929 3.58505,-3.52628 0,-2.11577 -1.41051,-3.64383 -3.58505,-3.64383 m 27.69946,39.67065 c -6.99378,0 -8.63939,-7.28765 -8.63939,-12.81215 0,-8.75692 3.46752,-12.28321 7.52274,-12.28321 2.70347,0 4.40785,1.93946 5.58327,5.11311 0.35263,0.94034 0.70526,1.52805 1.82191,1.52805 1.17543,0 3.46751,-0.76403 3.46751,-2.99733 0,-2.70348 -3.87891,-5.70082 -10.22621,-5.70082 -10.69637,0 -14.28143,7.58151 -14.28143,15.39809 0,9.8148 4.81925,14.81037 13.63495,14.81037 4.11398,0 9.6385,-2.17454 11.28409,-8.46307 l -1.70437,-0.8228 c -1.82191,4.11399 -4.17277,6.22976 -8.46307,6.22976 m 33.63996,-6.05344 c 0,4.76047 -3.64382,5.99467 -5.9359,5.99467 -3.64382,0 -5.40697,-2.58594 -5.40697,-6.05345 0,-2.76225 1.29298,-4.17276 4.58417,-5.40696 2.35085,-0.88157 5.46573,-1.99822 6.7587,-2.82102 l 0,8.28676 m 5.28942,-13.28233 c 0,-3.40873 -0.76404,-7.81658 -9.6385,-7.81658 -6.64115,0 -11.87181,3.46751 -11.87181,6.69993 0,1.88068 2.17454,2.76225 3.2912,2.76225 1.23419,0 1.58682,-0.64648 1.88068,-1.6456 1.29297,-4.34907 3.7026,-5.75959 6.05345,-5.75959 2.29208,0 4.99556,1.17544 4.99556,5.87714 l 0,2.46839 c -1.46928,1.52806 -7.17011,2.99734 -11.81304,4.46662 -4.23153,1.29297 -5.46573,4.23154 -5.46573,6.99379 0,4.40785 2.93857,8.34553 8.46307,8.34553 3.64382,-0.11754 6.87625,-2.29208 8.75693,-3.52628 0.8228,2.17454 1.76314,3.52628 3.82014,3.52628 2.17453,0 4.7017,-0.64648 6.93501,-1.76314 l -0.35262,-1.41051 c -0.8228,0.17631 -2.11577,0.29386 -2.99734,0.0588 -1.05789,-0.23508 -2.057,-1.35174 -2.057,-5.05433 l 0,-14.22267 m 38.36187,1.52806 c 0,-5.9359 -3.23243,-9.34464 -8.63939,-9.34464 -4.34907,0 -7.05256,2.11577 -10.69638,4.46662 l -0.8228,-4.46662 -8.75693,1.46928 0,1.46928 2.23331,0.29386 c 1.52805,0.23509 1.88068,0.52894 1.88068,2.64471 l 0,18.51297 c 0,2.99733 -0.17631,3.11488 -4.40785,3.40874 l 0,1.70437 14.34021,0 0,-1.70437 c -4.17276,-0.29386 -4.40785,-0.41141 -4.40785,-3.40874 l 0,-13.75249 c 0,-1.46928 0.11754,-2.29208 0.58771,-3.23243 1.2342,-2.29207 3.87891,-4.23153 6.99379,-4.23153 3.99645,0 6.17099,2.23331 6.17099,7.34642 l 0,13.87003 c 0,2.99733 -0.17632,3.11488 -4.40785,3.40874 l 0,1.70437 14.34021,0 0,-1.70437 c -4.17276,-0.29386 -4.40785,-0.41141 -4.40785,-3.40874 l 0,-15.04546"
327 id="text2427"
328 style="font-size:58.77133179px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:url(#linearGradient3224);fill-opacity:1;stroke:none;font-family:Utopia;-inkscape-font-specification:Utopia" />
329 <text 1763 <text
330 x="213.01947"
331 y="195.03021"
332 id="text2432"
333 xml:space="preserve" 1764 xml:space="preserve"
334 style="font-size:13.46161938px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;writing-mode:lr-tb;text-anchor:end;fill:#888a85;fill-opacity:1;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"><tspan 1765 style="font-size:48px;font-family:Eras Bd BT"
335 x="213.01947" 1766 x="58.48999"
336 y="195.03021" 1767 y="30.28125"
337 id="tspan2434" 1768 id="text2846"><tspan
338 style="font-size:13.46161938px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:end;line-height:125%;letter-spacing:0.44818318;writing-mode:lr-tb;text-anchor:end;fill:#888a85;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans">BOOK PUBLISHING TOOL</tspan></text> 1769 sodipodi:role="line"
339 <path 1770 id="tspan2848"
340 d="m 14.400303,154.07795 3.34996,0 c 2.70348,0 5.3482,-0.23509 7.52274,-0.76403 4.52538,-1.17543 9.69726,-4.34909 9.69726,-11.69549 0,-4.46662 -1.93945,-7.52274 -4.58416,-9.16833 -2.82102,-1.76314 -6.58239,-2.35086 -10.69638,-2.35086 l -16.3971997,0 0,1.70437 c 5.17187,0.35263 5.28942,0.47018 5.28942,3.76137 l 0,30.4454 c 0,3.29119 -0.11755,3.40874 -5.28942,3.76137 l 0,1.70437 17.3375397,0 0,-1.70437 c -6.05344,-0.35263 -6.22976,-0.47018 -6.22976,-3.76137 l 0,-11.93243 m 0,-19.74717 c 0,-1.6456 0.64649,-2.17454 4.46662,-2.17454 6.05344,0 9.75604,3.46752 9.75604,9.87358 0,7.34641 -4.81925,9.99113 -9.87358,9.99113 -3.46751,0 -4.34908,-0.11754 -4.34908,-2.29208 l 0,-15.39809 m 58.765624,36.43823 0,-1.70437 c -4.05522,-0.29386 -4.40785,-0.41141 -4.40785,-3.40874 l 0,-24.03747 -0.4114,-0.35263 -9.2271,1.46928 0,1.46928 2.23331,0.29386 c 1.52805,0.23509 1.88068,0.52894 1.88068,2.64471 l 0,13.22355 c 0,1.6456 -0.17631,2.93857 -0.47017,3.52628 -1.35174,2.70348 -4.17276,4.40785 -7.22887,4.40785 -3.40874,0 -5.93591,-2.11577 -5.93591,-6.69993 l 0,-19.98225 -0.4114,-0.35263 -9.227094,1.46928 0,1.46928 2.233314,0.29386 c 1.52805,0.23509 1.88068,0.52894 1.88068,2.64471 l 0,15.51563 c 0,6.7587 3.99645,8.8157 8.34553,8.8157 4.99556,0 9.05079,-3.40874 10.75515,-4.23153 l 0.58772,3.52628 9.40341,0 m 9.15435,0.70525 2.35085,-2.29208 c 2.05699,1.17543 4.5254,2.29208 8.93324,2.29208 7.816583,0 14.634063,-3.76138 14.634063,-15.75072 0,-3.64381 -0.76403,-14.45774 -11.342863,-14.45774 -4.46662,0 -7.93414,2.87979 -10.10867,4.17276 l 0,-17.92525 -0.4114,-0.35263 -9.2271,1.46928 0,1.46928 2.23331,0.23509 c 1.52805,0.17631 1.88068,0.47017 1.88068,2.70348 l 0,37.96628 1.05789,0.47017 m 4.46662,-19.57085 c 0,-1.46928 0.11754,-2.40963 0.58771,-3.34997 1.41051,-2.82102 3.87891,-4.11399 7.1701,-4.11399 2.40962,0 7.581513,1.41052 7.581513,11.63672 0,8.63938 -2.644723,13.3411 -8.463083,13.3411 -3.11487,0 -5.40696,-1.58683 -6.46484,-4.5254 -0.35263,-1.05788 -0.4114,-2.29208 -0.4114,-3.70259 l 0,-9.28587 m 37.375603,-24.3901 -0.4114,-0.35263 -9.22709,1.46928 0,1.46928 2.2333,0.23509 c 1.52806,0.17631 1.88069,0.47017 1.88069,2.70348 l 0,32.61809 c 0,2.99733 -0.17632,3.11488 -4.40785,3.40874 l 0,1.70437 14.3402,0 0,-1.70437 c -4.17276,-0.29386 -4.40785,-0.41141 -4.40785,-3.40874 l 0,-38.14259 m 9.43811,15.22177 0,1.46928 2.23331,0.29386 c 1.52805,0.23509 1.88068,0.52894 1.88068,2.64471 l 0,18.51297 c 0,2.99733 -0.17632,3.11488 -4.40785,3.40874 l 0,1.70437 14.34021,0 0,-1.70437 c -4.17277,-0.29386 -4.40785,-0.41141 -4.40785,-3.40874 l 0,-24.03747 -0.41141,-0.35263 -9.22709,1.46928 m 6.81747,-13.98758 c -2.11576,0 -3.58505,1.52806 -3.58505,3.64383 0,2.05699 1.46929,3.52628 3.58505,3.52628 2.17454,0 3.52628,-1.46929 3.58505,-3.52628 0,-2.11577 -1.41051,-3.64383 -3.58505,-3.64383 m 27.69946,39.67065 c -6.99378,0 -8.63939,-7.28765 -8.63939,-12.81215 0,-8.75692 3.46752,-12.28321 7.52274,-12.28321 2.70347,0 4.40785,1.93946 5.58327,5.11311 0.35263,0.94034 0.70526,1.52805 1.82191,1.52805 1.17543,0 3.46751,-0.76403 3.46751,-2.99733 0,-2.70348 -3.87891,-5.70082 -10.22621,-5.70082 -10.69637,0 -14.28143,7.58151 -14.28143,15.39809 0,9.8148 4.81925,14.81037 13.63495,14.81037 4.11398,0 9.6385,-2.17454 11.28409,-8.46307 l -1.70437,-0.8228 c -1.82191,4.11399 -4.17277,6.22976 -8.46307,6.22976 m 33.63996,-6.05344 c 0,4.76047 -3.64382,5.99467 -5.9359,5.99467 -3.64382,0 -5.40697,-2.58594 -5.40697,-6.05345 0,-2.76225 1.29298,-4.17276 4.58417,-5.40696 2.35085,-0.88157 5.46573,-1.99822 6.7587,-2.82102 l 0,8.28676 m 5.28942,-13.28233 c 0,-3.40873 -0.76404,-7.81658 -9.6385,-7.81658 -6.64115,0 -11.87181,3.46751 -11.87181,6.69993 0,1.88068 2.17454,2.76225 3.2912,2.76225 1.23419,0 1.58682,-0.64648 1.88068,-1.6456 1.29297,-4.34907 3.7026,-5.75959 6.05345,-5.75959 2.29208,0 4.99556,1.17544 4.99556,5.87714 l 0,2.46839 c -1.46928,1.52806 -7.17011,2.99734 -11.81304,4.46662 -4.23153,1.29297 -5.46573,4.23154 -5.46573,6.99379 0,4.40785 2.93857,8.34553 8.46307,8.34553 3.64382,-0.11754 6.87625,-2.29208 8.75693,-3.52628 0.8228,2.17454 1.76314,3.52628 3.82014,3.52628 2.17453,0 4.7017,-0.64648 6.93501,-1.76314 l -0.35262,-1.41051 c -0.8228,0.17631 -2.11577,0.29386 -2.99734,0.0588 -1.05789,-0.23508 -2.057,-1.35174 -2.057,-5.05433 l 0,-14.22267 m 38.36187,1.52806 c 0,-5.9359 -3.23243,-9.34464 -8.63939,-9.34464 -4.34907,0 -7.05256,2.11577 -10.69638,4.46662 l -0.8228,-4.46662 -8.75693,1.46928 0,1.46928 2.23331,0.29386 c 1.52805,0.23509 1.88068,0.52894 1.88068,2.64471 l 0,18.51297 c 0,2.99733 -0.17631,3.11488 -4.40785,3.40874 l 0,1.70437 14.34021,0 0,-1.70437 c -4.17276,-0.29386 -4.40785,-0.41141 -4.40785,-3.40874 l 0,-13.75249 c 0,-1.46928 0.11754,-2.29208 0.58771,-3.23243 1.2342,-2.29207 3.87891,-4.23153 6.99379,-4.23153 3.99645,0 6.17099,2.23331 6.17099,7.34642 l 0,13.87003 c 0,2.99733 -0.17632,3.11488 -4.40785,3.40874 l 0,1.70437 14.34021,0 0,-1.70437 c -4.17276,-0.29386 -4.40785,-0.41141 -4.40785,-3.40874 l 0,-15.04546" 1771 x="58.48999"
341 id="path6354" 1772 y="30.28125"
342 style="font-size:58.77133179px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;opacity:0.49038463;fill:url(#linearGradient6356);fill-opacity:1;stroke:none;filter:url(#filter6426);font-family:Utopia;-inkscape-font-specification:Utopia" /> 1773 style="font-size:48px;font-family:Eras Bd BT">systemtap</tspan></text>
343 <g
344 transform="translate(-58.623593,-52.746766)"
345 id="layer1" />
346 <g
347 transform="translate(-58.623593,-52.746766)"
348 id="layer2"
349 style="filter:url(#filter6626)" />
350</svg> 1774</svg>
diff --git a/SystemTap_Beginners_Guide/SystemTap_Beginners_Guide-Preface.html b/SystemTap_Beginners_Guide/SystemTap_Beginners_Guide-Preface.html
index b5de6a6a..164b0150 100644
--- a/SystemTap_Beginners_Guide/SystemTap_Beginners_Guide-Preface.html
+++ b/SystemTap_Beginners_Guide/SystemTap_Beginners_Guide-Preface.html
@@ -1,13 +1,12 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Preface</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="index.html" title="SystemTap Beginners Guide" /><link rel="next" href="pr01s02.html" title="2. We Need Feedback!" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="index.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="pr01s02.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="preface" lang="en-US"><div class="titlepage"><div><div><h1 class="title"><a id="SystemTap_Beginners_Guide-Preface"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Preface</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="index.html" title="SystemTap Beginners Guide" /><link rel="next" href="pr01s02.html" title="2. We Need Feedback!" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="index.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="pr01s02.html"><strong>Next</strong></a></li></ul><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a id="SystemTap_Beginners_Guide-Preface">
3 ⁠</a>Preface</h1></div></div></div><div class="para"> 3 ⁠</a>Preface</h1></div></div></div><div class="para">
4 4 </div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="idm140174742229536">
5 </div><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="idm47748212775600">
6 ⁠</a>1. Document Conventions</h2></div></div></div><div class="para"> 5 ⁠</a>1. Document Conventions</h2></div></div></div><div class="para">
7 This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information. 6 This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information.
8 </div><div class="para"> 7 </div><div class="para">
9 In PDF and paper editions, this manual uses typefaces drawn from the <a href="https://fedorahosted.org/liberation-fonts/">Liberation Fonts</a> set. The Liberation Fonts set is also used in HTML editions if the set is installed on your system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat Enterprise Linux 5 and later include the Liberation Fonts set by default. 8 In PDF and paper editions, this manual uses typefaces drawn from the <a href="https://fedorahosted.org/liberation-fonts/">Liberation Fonts</a> set. The Liberation Fonts set is also used in HTML editions if the set is installed on your system. If not, alternative but equivalent typefaces are displayed. Note: Red Hat Enterprise Linux 5 and later include the Liberation Fonts set by default.
10 </div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm47748181700496"> 9 </div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm140174738534592">
11 ⁠</a>1.1. Typographic Conventions</h3></div></div></div><div class="para"> 10 ⁠</a>1.1. Typographic Conventions</h3></div></div></div><div class="para">
12 Four typographic conventions are used to call attention to specific words and phrases. These conventions, and the circumstances they apply to, are as follows. 11 Four typographic conventions are used to call attention to specific words and phrases. These conventions, and the circumstances they apply to, are as follows.
13 </div><div class="para"> 12 </div><div class="para">
@@ -56,7 +55,7 @@
56 Aside from standard usage for presenting the title of a work, italics denotes the first use of a new and important term. For example: 55 Aside from standard usage for presenting the title of a work, italics denotes the first use of a new and important term. For example:
57 </div><div class="blockquote"><blockquote class="blockquote"><div class="para"> 56 </div><div class="blockquote"><blockquote class="blockquote"><div class="para">
58 Publican is a <em class="firstterm">DocBook</em> publishing system. 57 Publican is a <em class="firstterm">DocBook</em> publishing system.
59 </div></blockquote></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm47748188125824"> 58 </div></blockquote></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm140174736074304">
60 ⁠</a>1.2. Pull-quote Conventions</h3></div></div></div><div class="para"> 59 ⁠</a>1.2. Pull-quote Conventions</h3></div></div></div><div class="para">
61 Terminal output and source code listings are set off visually from the surrounding text. 60 Terminal output and source code listings are set off visually from the surrounding text.
62 </div><div class="para"> 61 </div><div class="para">
@@ -64,25 +63,25 @@
64 </div><pre class="screen">books Desktop documentation drafts mss photos stuff svn 63 </div><pre class="screen">books Desktop documentation drafts mss photos stuff svn
65books_tests Desktop1 downloads images notes scripts svgs</pre><div class="para"> 64books_tests Desktop1 downloads images notes scripts svgs</pre><div class="para">
66 Source-code listings are also set in <code class="computeroutput">mono-spaced roman</code> but add syntax highlighting as follows: 65 Source-code listings are also set in <code class="computeroutput">mono-spaced roman</code> but add syntax highlighting as follows:
67 </div><pre xml:lang="en-US" class="programlisting" lang="en-US">package org.<span class="perl_Function">jboss</span>.<span class="perl_Function">book</span>.<span class="perl_Function">jca</span>.<span class="perl_Function">ex1</span>; 66 </div><pre class="programlisting">package org.jboss.book.jca.ex1;
68 67
69<span class="perl_Keyword">import</span> javax.naming.InitialContext; 68import javax.naming.InitialContext;
70 69
71<span class="perl_Keyword">public</span> <span class="perl_Keyword">class</span> ExClient 70public class ExClient
72{ 71{
73 <span class="perl_Keyword">public</span> <span class="perl_DataType">static</span> <span class="perl_DataType">void</span> <span class="perl_Function">main</span>(String args[]) 72 public static void main(String args[])
74 <span class="perl_Keyword">throws</span> Exception 73 throws Exception
75 { 74 {
76 InitialContext iniCtx = <span class="perl_Keyword">new</span> InitialContext(); 75 InitialContext iniCtx = new InitialContext();
77 Object ref = iniCtx.<span class="perl_Function">lookup</span>(<span class="perl_String">"EchoBean"</span>); 76 Object ref = iniCtx.lookup("EchoBean");
78 EchoHome home = (EchoHome) ref; 77 EchoHome home = (EchoHome) ref;
79 Echo echo = home.<span class="perl_Function">create</span>(); 78 Echo echo = home.create();
80 79
81 System.<span class="perl_Function">out</span>.<span class="perl_Function">println</span>(<span class="perl_String">"Created Echo"</span>); 80 System.out.println("Created Echo");
82 81
83 System.<span class="perl_Function">out</span>.<span class="perl_Function">println</span>(<span class="perl_String">"Echo.echo('Hello') = "</span> + echo.<span class="perl_Function">echo</span>(<span class="perl_String">"Hello"</span>)); 82 System.out.println("Echo.echo('Hello') = " + echo.echo("Hello"));
84 } 83 }
85}</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm47748222516720"> 84}</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm140174733641280">
86 ⁠</a>1.3. Notes and Warnings</h3></div></div></div><div class="para"> 85 ⁠</a>1.3. Notes and Warnings</h3></div></div></div><div class="para">
87 Finally, we use three visual styles to draw attention to information that might otherwise be overlooked. 86 Finally, we use three visual styles to draw attention to information that might otherwise be overlooked.
88 </div><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><div class="para"> 87 </div><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><div class="para">
diff --git a/SystemTap_Beginners_Guide/appe-Publican-Revision_History.html b/SystemTap_Beginners_Guide/appe-Publican-Revision_History.html
index 13d79f6e..dd41ea0b 100644
--- a/SystemTap_Beginners_Guide/appe-Publican-Revision_History.html
+++ b/SystemTap_Beginners_Guide/appe-Publican-Revision_History.html
@@ -1,12 +1,9 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Appendix A. Revision History</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="references.html" title="Chapter 7. References" /><link rel="next" href="ix01.html" title="Index" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="references.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="ix01.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="appendix" lang="en-US"><div class="titlepage"><div><div><h1 class="title"><a id="appe-Publican-Revision_History"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Appendix A. Revision History</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="references.html" title="Chapter 7. References" /><link rel="next" href="ix01.html" title="Index" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="references.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="ix01.html"><strong>Next</strong></a></li></ul><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a id="appe-Publican-Revision_History">
3 ⁠</a>Appendix A. Revision History</h1></div></div></div><div xmlns:d="http://docbook.org/ns/docbook" class="para"><p></p> 3 ⁠</a>Appendix A. Revision History</h1></div></div></div><div xmlns:d="http://docbook.org/ns/docbook" class="para"><p></p>
4 <div class="revhistory"><table summary="Revision History"><tr><th align="left" valign="top" colspan="3"><strong>Revision History</strong></th></tr><tr><td align="left">Revision 2.0-1</td><td align="left">Mon Jul 20 2009</td><td align="left"><span class="author"><span class="firstname">Don</span> <span class="surname">Domingo</span></span></td></tr><tr><td align="left" colspan="3"> 4 <div class="revhistory"><table summary="Revision History"><tr><th align="left" valign="top" colspan="3"><strong>Revision History</strong></th></tr><tr><td align="left">Revision 2.0-1</td><td align="left">Mon Jul 20 2009</td><td align="left"><span class="author"><span class="firstname">Don</span> <span class="surname">Domingo</span></span></td></tr><tr><td align="left" colspan="3">
5 <table border="0" summary="Simple list" class="simplelist"><tr><td>includes 5.4 minor updates and additional script "dropwatch.stp"</td></tr></table> 5 <table border="0" summary="Simple list" class="simplelist"><tr><td>includes 5.4 minor updates and additional script "dropwatch.stp"</td></tr></table>
6
7 </td></tr><tr><td align="left">Revision 1.0-1</td><td align="left">Wed Jun 17 2009</td><td align="left"><span class="author"><span class="firstname">Don</span> <span class="surname">Domingo</span></span></td></tr><tr><td align="left" colspan="3"> 6 </td></tr><tr><td align="left">Revision 1.0-1</td><td align="left">Wed Jun 17 2009</td><td align="left"><span class="author"><span class="firstname">Don</span> <span class="surname">Domingo</span></span></td></tr><tr><td align="left" colspan="3">
8 <table border="0" summary="Simple list" class="simplelist"><tr><td>Building+pushing to RHEL</td></tr></table> 7 <table border="0" summary="Simple list" class="simplelist"><tr><td>Building+pushing to RHEL</td></tr></table>
9
10 </td></tr></table></div> 8 </td></tr></table></div>
11
12 </div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="references.html"><strong>Prev</strong>Chapter 7. References</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="ix01.html"><strong>Next</strong>Index</a></li></ul></body></html> \ No newline at end of file 9 </div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="references.html"><strong>Prev</strong>Chapter 7. References</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="ix01.html"><strong>Next</strong>Index</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/arrayoperators.html b/SystemTap_Beginners_Guide/arrayoperators.html
index 470137cd..c4df741e 100644
--- a/SystemTap_Beginners_Guide/arrayoperators.html
+++ b/SystemTap_Beginners_Guide/arrayoperators.html
@@ -1,15 +1,5 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.5. Array Operations in SystemTap</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="understanding-how-systemtap-works.html" title="Chapter 3. Understanding How SystemTap Works" /><link rel="prev" href="associativearrays.html" title="3.4. Associative Arrays" /><link rel="next" href="arrayops-readvalues.html" title="3.5.2. Reading Values From Arrays" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="associativearrays.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="arrayops-readvalues.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="arrayoperators"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.5. Array Operations in SystemTap</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="understanding-how-systemtap-works.html" title="Chapter 3. Understanding How SystemTap Works" /><link rel="prev" href="associativearrays.html" title="3.4. Associative Arrays" /><link rel="next" href="arrayops-readvalues.html" title="3.5.2. Reading Values From Arrays" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="associativearrays.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="arrayops-readvalues.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="arrayoperators">
3 ⁠</a>3.5. Array Operations in SystemTap</h2></div></div></div><a id="idm47748227103552" class="indexterm"></a><a id="idm47748223271568" class="indexterm"></a><div class="para"> 3 ⁠</a>3.5. Array Operations in SystemTap</h2></div></div></div><a id="idm140174734306448" class="indexterm"></a><a id="idm140174736490784" class="indexterm"></a><div class="para">This section enumerates some of the most commonly used array operations in SystemTap.</div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="arrayops-assignvalue">
4 This section enumerates some of the most commonly used array operations in SystemTap. 4 ⁠</a>3.5.1. Assigning an Associated Value</h3></div></div></div><a id="idm140174732622048" class="indexterm"></a><a id="idm140174738772016" class="indexterm"></a><a id="idm140174731179936" class="indexterm"></a><div class="para">Use <code class="command">=</code> to set an associated value to indexed unique pairs, as in:</div><pre class="screen"><em class="replaceable">array_name</em>[<em class="replaceable">index_expression</em>] = <em class="replaceable">value</em></pre><div class="para"><a class="xref" href="associativearrays.html#arraysimplestexample">Example 3.13, “Basic Array Statements”</a> shows a very basic example of how to set an explicit associated value to a unique key. You can also use a handler function as both your <code class="command"><em class="replaceable">index_expression</em></code> and <code class="command"><em class="replaceable">value</em></code>. For example, you can use arrays to set a timestamp as the associated value to a process name (which you wish to use as your unique key), as in:</div><a id="idm140174731552672" class="indexterm"></a><a id="idm140174733617632" class="indexterm"></a><a id="idm140174739583632" class="indexterm"></a><a id="idm140174735774752" class="indexterm"></a><a id="idm140174741337168" class="indexterm"></a><a id="idm140174731830336" class="indexterm"></a><div class="example"><a id="arrays-timestampprocessname">
5 </div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="arrayops-assignvalue"> 5 ⁠</a><p class="title"><strong>Example 3.14. Associating Timestamps to Process Names</strong></p><div class="example-contents"><pre class="programlisting">foo[tid()] = gettimeofday_s()</pre></div></div><div class="para">Whenever an event invokes the statement in <a class="xref" href="arrayoperators.html#arrays-timestampprocessname">Example 3.14, “Associating Timestamps to Process Names”</a>, SystemTap returns the appropriate <code class="command">tid()</code> value (that is, the ID of a thread, which is then used as the unique key). At the same time, SystemTap also uses the function <code class="command">gettimeofday_s()</code> to set the corresponding timestamp as the associated value to the unique key defined by the function <code class="command">tid()</code>. This creates an array composed of key pairs containing thread IDs and timestamps.</div><div class="para">In this same example, if <code class="command">tid()</code> returns a value that is already defined in the array <code class="command">foo</code>, the operator will discard the original associated value to it, and replace it with the current timestamp from <code class="command">gettimeofday_s()</code>.</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="associativearrays.html"><strong>Prev</strong>3.4. Associative Arrays</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="arrayops-readvalues.html"><strong>Next</strong>3.5.2. Reading Values From Arrays</a></li></ul></body></html> \ No newline at end of file
6 ⁠</a>3.5.1. Assigning an Associated Value</h3></div></div></div><a id="idm47748176399104" class="indexterm"></a><a id="idm47748178191664" class="indexterm"></a><a id="idm47748233436736" class="indexterm"></a><div class="para">
7 Use <code class="command">=</code> to set an associated value to indexed unique pairs, as in:
8 </div><pre class="screen"><em class="replaceable">array_name</em>[<em class="replaceable">index_expression</em>] = <em class="replaceable">value</em></pre><div class="para">
9 <a class="xref" href="associativearrays.html#arraysimplestexample">Example 3.13, “Basic Array Statements”</a> shows a very basic example of how to set an explicit associated value to a unique key. You can also use a handler function as both your <code class="command"><em class="replaceable">index_expression</em></code> and <code class="command"><em class="replaceable">value</em></code>. For example, you can use arrays to set a timestamp as the associated value to a process name (which you wish to use as your unique key), as in:
10 </div><a id="idm47748177359728" class="indexterm"></a><a id="idm47748213547440" class="indexterm"></a><a id="idm47748174971968" class="indexterm"></a><a id="idm47748182972944" class="indexterm"></a><a id="idm47748224592160" class="indexterm"></a><a id="idm47748222359600" class="indexterm"></a><div class="example"><a id="arrays-timestampprocessname">
11 ⁠</a><p class="title"><strong>Example 3.14. Associating Timestamps to Process Names</strong></p><div class="example-contents"><pre class="programlisting">foo[tid()] = gettimeofday_s()</pre></div></div><div class="para">
12 Whenever an event invokes the statement in <a class="xref" href="arrayoperators.html#arrays-timestampprocessname">Example 3.14, “Associating Timestamps to Process Names”</a>, SystemTap returns the appropriate <code class="command">tid()</code> value (that is, the ID of a thread, which is then used as the unique key). At the same time, SystemTap also uses the function <code class="command">gettimeofday_s()</code> to set the corresponding timestamp as the associated value to the unique key defined by the function <code class="command">tid()</code>. This creates an array composed of key pairs containing thread IDs and timestamps.
13 </div><div class="para">
14 In this same example, if <code class="command">tid()</code> returns a value that is already defined in the array <code class="command">foo</code>, the operator will discard the original associated value to it, and replace it with the current timestamp from <code class="command">gettimeofday_s()</code>.
15 </div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="associativearrays.html"><strong>Prev</strong>3.4. Associative Arrays</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="arrayops-readvalues.html"><strong>Next</strong>3.5.2. Reading Values From Arrays</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/arrayops-aggregates.html b/SystemTap_Beginners_Guide/arrayops-aggregates.html
index 499fc97d..2b6c6f1f 100644
--- a/SystemTap_Beginners_Guide/arrayops-aggregates.html
+++ b/SystemTap_Beginners_Guide/arrayops-aggregates.html
@@ -1,33 +1,25 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.5.7. Computing for Statistical Aggregates</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="arrayoperators.html" title="3.5. Array Operations in SystemTap" /><link rel="prev" href="arrayops-conditionals.html" title="3.5.6. Using Arrays in Conditional Statements" /><link rel="next" href="understanding-tapsets.html" title="3.6. Tapsets" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="arrayops-conditionals.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="understanding-tapsets.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="arrayops-aggregates"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.5.7. Computing for Statistical Aggregates</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="arrayoperators.html" title="3.5. Array Operations in SystemTap" /><link rel="prev" href="arrayops-conditionals.html" title="3.5.6. Using Arrays in Conditional Statements" /><link rel="next" href="understanding-tapsets.html" title="3.6. Tapsets" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="arrayops-conditionals.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="understanding-tapsets.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="arrayops-aggregates">
3 ⁠</a>3.5.7. Computing for Statistical Aggregates</h3></div></div></div><a id="idm47748224333808" class="indexterm"></a><a id="idm47748216634048" class="indexterm"></a><a id="idm47748216632640" class="indexterm"></a><a id="idm47748222305648" class="indexterm"></a><a id="idm47748222304240" class="indexterm"></a><div class="para"> 3 ⁠</a>3.5.7. Computing for Statistical Aggregates</h3></div></div></div><a id="idm140174740887648" class="indexterm"></a><a id="idm140174740886032" class="indexterm"></a><a id="idm140174736123872" class="indexterm"></a><a id="idm140174736122240" class="indexterm"></a><a id="idm140174732876992" class="indexterm"></a><div class="para">Statistical aggregates are used to collect statistics on numerical values where it is important to accumulate new data quickly and in large volume (that is, storing only aggregated stream statistics). Statistical aggregates can be used in global variables or as elements in an array.</div><a id="idm140174732874352" class="indexterm"></a><a id="idm140174732271968" class="indexterm"></a><a id="idm140174735751712" class="indexterm"></a><a id="idm140174735749648" class="indexterm"></a><div class="para">To add value to a statistical aggregate, use the operator <code class="command">&lt;&lt;&lt; <em class="replaceable">value</em></code>.</div><div class="example"><a id="simpleaggregates">
4 Statistical aggregates are used to collect statistics on numerical values where it is important to accumulate new data quickly and in large volume (that is, storing only aggregated stream statistics). Statistical aggregates can be used in global variables or as elements in an array.
5 </div><a id="idm47748222382448" class="indexterm"></a><a id="idm47748214923312" class="indexterm"></a><a id="idm47748220217888" class="indexterm"></a><a id="idm47748233421632" class="indexterm"></a><div class="para">
6 To add value to a statistical aggregate, use the operator <code class="command">&lt;&lt;&lt; <em class="replaceable">value</em></code>.
7 </div><div class="example"><a id="simpleaggregates">
8 ⁠</a><p class="title"><strong>Example 3.21. stat-aggregates.stp</strong></p><div class="example-contents"><pre class="programlisting">global reads 4 ⁠</a><p class="title"><strong>Example 3.21. stat-aggregates.stp</strong></p><div class="example-contents"><pre class="programlisting">global reads
9probe vfs.read 5probe vfs.read
10{ 6{
11 reads[execname()] &lt;&lt;&lt; $count 7 reads[execname()] &lt;&lt;&lt; $count
12}</pre></div></div><a id="idm47748175026688" class="indexterm"></a><a id="idm47748175024800" class="indexterm"></a><a id="idm47748217049744" class="indexterm"></a><a id="idm47748188192048" class="indexterm"></a><div class="para"> 8}</pre></div></div><a id="idm140174733065440" class="indexterm"></a><a id="idm140174733169392" class="indexterm"></a><a id="idm140174733167312" class="indexterm"></a><a id="idm140174733758848" class="indexterm"></a><div class="para">In <a class="xref" href="arrayops-aggregates.html#simpleaggregates">Example 3.21, “stat-aggregates.stp”</a>, the operator <code class="command">&lt;&lt;&lt; $count</code> <span class="emphasis"><em>stores</em></span> the amount returned by <code class="literal">$count</code> to the associated value of the corresponding <code class="command">execname()</code> in the <code class="literal">reads</code> array. Remember, these values are <span class="emphasis"><em>stored</em></span>; they are not added to the associated values of each unique key, nor are they used to replace the current associated values. In a manner of speaking, think of it as having each unique key (<code class="command">execname()</code>) having multiple associated values, accumulating with each probe handler run.</div><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><div class="para">In the context of <a class="xref" href="arrayops-aggregates.html#simpleaggregates">Example 3.21, “stat-aggregates.stp”</a>, <code class="literal">count</code> returns the amount of data read by the returned <code class="command">execname()</code> to the virtual file system.</div></div></div><a id="idm140174738367792" class="indexterm"></a><a id="idm140174732645504" class="indexterm"></a><a id="idm140174732643504" class="indexterm"></a><a id="idm140174732895056" class="indexterm"></a><a id="idm140174732893120" class="indexterm"></a><div class="para">To extract data collected by statistical aggregates, use the syntax format <code class="command">@<em class="replaceable">extractor</em>(<em class="replaceable">variable/array index expression</em>)</code>. <code class="command"><em class="replaceable">extractor</em></code> can be any of the following integer extractors:</div><div class="variablelist"><dl class="variablelist"><dt><span class="term">count</span></dt><dd><a id="idm140174731793968" class="indexterm"></a><a id="idm140174734036000" class="indexterm"></a><a id="idm140174734033904" class="indexterm"></a><a id="idm140174734091216" class="indexterm"></a><div class="para">
13 In <a class="xref" href="arrayops-aggregates.html#simpleaggregates">Example 3.21, “stat-aggregates.stp”</a>, the operator <code class="command">&lt;&lt;&lt; $count</code> <span class="emphasis"><em>stores</em></span> the amount returned by <code class="literal">$count</code> to the associated value of the corresponding <code class="command">execname()</code> in the <code class="literal">reads</code> array. Remember, these values are <span class="emphasis"><em>stored</em></span>; they are not added to the associated values of each unique key, nor are they used to replace the current associated values. In a manner of speaking, think of it as having each unique key (<code class="command">execname()</code>) having multiple associated values, accumulating with each probe handler run. 9 Returns the number of all values stored into the variable/array index expression. Given the sample probe in <a class="xref" href="arrayops-aggregates.html#simpleaggregates">Example 3.21, “stat-aggregates.stp”</a>, the expression <code class="command">@count(reads[execname()])</code> will return <span class="emphasis"><em>how many values are stored</em></span> in each unique key in array <code class="literal">reads</code>.
14 </div><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><div class="para"> 10</div></dd><dt><span class="term">sum</span></dt><dd><a id="idm140174734715200" class="indexterm"></a><a id="idm140174734713104" class="indexterm"></a><a id="idm140174732912080" class="indexterm"></a><a id="idm140174732909984" class="indexterm"></a><div class="para">
15 In the context of <a class="xref" href="arrayops-aggregates.html#simpleaggregates">Example 3.21, “stat-aggregates.stp”</a>, <code class="literal">count</code> returns the amount of data read by the returned <code class="command">execname()</code> to the virtual file system. 11 Returns the sum of all values stored into the variable/array index expression. Again, given sample probe in <a class="xref" href="arrayops-aggregates.html#simpleaggregates">Example 3.21, “stat-aggregates.stp”</a>, the expression <code class="command">@sum(reads[execname()])</code> will return <span class="emphasis"><em>the total of all values stored</em></span> in each unique key in array <code class="literal">reads</code>.
16 </div></div></div><a id="idm47748180459376" class="indexterm"></a><a id="idm47748180827056" class="indexterm"></a><a id="idm47748174893712" class="indexterm"></a><a id="idm47748174891856" class="indexterm"></a><a id="idm47748175028752" class="indexterm"></a><div class="para"> 12</div></dd><dt><span class="term">min</span></dt><dd><a id="idm140174733052288" class="indexterm"></a><a id="idm140174737215616" class="indexterm"></a><a id="idm140174737213520" class="indexterm"></a><a id="idm140174742994928" class="indexterm"></a><div class="para">
17 To extract data collected by statistical aggregates, use the syntax format <code class="command">@<em class="replaceable">extractor</em>(<em class="replaceable">variable/array index expression</em>)</code>. <code class="command"><em class="replaceable">extractor</em></code> can be any of the following integer extractors: 13 Returns the smallest among all the values stored in the variable/array index expression.
18 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">count</span></dt><dd><a id="idm47748188209312" class="indexterm"></a><a id="idm47748188208096" class="indexterm"></a><a id="idm47748224301072" class="indexterm"></a><a id="idm47748224299856" class="indexterm"></a><div class="para"> 14</div></dd><dt><span class="term">max</span></dt><dd><a id="idm140174743558432" class="indexterm"></a><a id="idm140174733114064" class="indexterm"></a><a id="idm140174733111968" class="indexterm"></a><a id="idm140174733864640" class="indexterm"></a><div class="para">
19 Returns the number of all values stored into the variable/array index expression. Given the sample probe in <a class="xref" href="arrayops-aggregates.html#simpleaggregates">Example 3.21, “stat-aggregates.stp”</a>, the expression <code class="command">@count(reads[execname()])</code> will return <span class="emphasis"><em>how many values are stored</em></span> in each unique key in array <code class="literal">reads</code>. 15 Returns the largest among all the values stored in the variable/array index expression.
20 </div></dd><dt><span class="term">sum</span></dt><dd><a id="idm47748186276832" class="indexterm"></a><a id="idm47748179987760" class="indexterm"></a><a id="idm47748179986544" class="indexterm"></a><a id="idm47748183101984" class="indexterm"></a><div class="para"> 16</div></dd><dt><span class="term">avg</span></dt><dd><a id="idm140174743555216" class="indexterm"></a><a id="idm140174743553120" class="indexterm"></a><a id="idm140174731735824" class="indexterm"></a><a id="idm140174731733840" class="indexterm"></a><div class="para">
21 Returns the sum of all values stored into the variable/array index expression. Again, given sample probe in <a class="xref" href="arrayops-aggregates.html#simpleaggregates">Example 3.21, “stat-aggregates.stp”</a>, the expression <code class="command">@sum(reads[execname()])</code> will return <span class="emphasis"><em>the total of all values stored</em></span> in each unique key in array <code class="literal">reads</code>. 17 Returns the average of all values stored in the variable/array index expression.
22 </div></dd><dt><span class="term">min</span></dt><dd><a id="idm47748188198592" class="indexterm"></a><a id="idm47748188197376" class="indexterm"></a><a id="idm47748188196160" class="indexterm"></a><a id="idm47748178846832" class="indexterm"></a><div class="para"> 18</div></dd></dl></div><div class="para">
23 Returns the smallest among all the values stored in the variable/array index expression. 19 When using statistical aggregates, you can also build array constructs that use multiple index
24 </div></dd><dt><span class="term">max</span></dt><dd><a id="idm47748224865760" class="indexterm"></a><a id="idm47748188111504" class="indexterm"></a><a id="idm47748188110288" class="indexterm"></a><a id="idm47748188109072" class="indexterm"></a><div class="para"> 20 expressions (to a maximum of 5). This is helpful in capturing additional contextual information
25 Returns the largest among all the values stored in the variable/array index expression. 21 during a probe. For example:
26 </div></dd><dt><span class="term">avg</span></dt><dd><a id="idm47748229579024" class="indexterm"></a><a id="idm47748229577808" class="indexterm"></a><a id="idm47748180464128" class="indexterm"></a><a id="idm47748180462912" class="indexterm"></a><div class="para"> 22</div><div class="example"><a id="multiplearrayindices">
27 Returns the average of all values stored in the variable/array index expression.
28 </div></dd></dl></div><div class="para">
29 When using statistical aggregates, you can also build array constructs that use multiple index expressions (to a maximum of 5). This is helpful in capturing additional contextual information during a probe. For example:
30 </div><div class="example"><a id="multiplearrayindices">
31 ⁠</a><p class="title"><strong>Example 3.22. Multiple Array Indexes</strong></p><div class="example-contents"><pre class="programlisting">global reads 23 ⁠</a><p class="title"><strong>Example 3.22. Multiple Array Indexes</strong></p><div class="example-contents"><pre class="programlisting">global reads
32probe vfs.read 24probe vfs.read
33{ 25{
@@ -38,7 +30,13 @@ probe timer.s(3)
38 foreach([var1,var2] in reads) 30 foreach([var1,var2] in reads)
39 printf("%s (%d) : %d \n", var1, var2, @count(reads[var1,var2])) 31 printf("%s (%d) : %d \n", var1, var2, @count(reads[var1,var2]))
40}</pre></div></div><div class="para"> 32}</pre></div></div><div class="para">
41 In <a class="xref" href="arrayops-aggregates.html#multiplearrayindices">Example 3.22, “Multiple Array Indexes”</a>, the first probe tracks how many times each process performs a VFS read. What makes this different from earlier examples is that this array associates a performed read to both a process name <span class="emphasis"><em>and</em></span> its corresponding process ID. 33 In <a class="xref" href="arrayops-aggregates.html#multiplearrayindices">Example 3.22, “Multiple Array Indexes”</a>, the first probe tracks how many times each process
42 </div><div class="para"> 34 performs a VFS read. What makes this different from earlier examples is that this array associates
43 The second probe in <a class="xref" href="arrayops-aggregates.html#multiplearrayindices">Example 3.22, “Multiple Array Indexes”</a> demonstrates how to process and print the information collected by the array <code class="literal">reads</code>. Note how the <code class="command">foreach</code> statement uses the same number of variables (that is, <code class="literal">var1</code> and <code class="literal">var2</code>) contained in the first instance of the array <code class="literal">reads</code> from the first probe. 35 a performed read to both a process name <span class="emphasis"><em>and</em></span> its corresponding process ID.
44 </div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayops-conditionals.html"><strong>Prev</strong>3.5.6. Using Arrays in Conditional Statements</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="understanding-tapsets.html"><strong>Next</strong>3.6. Tapsets</a></li></ul></body></html> \ No newline at end of file 36</div><div class="para">
37 The second probe in <a class="xref" href="arrayops-aggregates.html#multiplearrayindices">Example 3.22, “Multiple Array Indexes”</a> demonstrates how to process and print
38 the information collected by the array <code class="literal">reads</code>. Note how the
39 <code class="command">foreach</code> statement uses the same number of variables (that is,
40 <code class="literal">var1</code> and <code class="literal">var2</code>) contained in the first instance of the array
41 <code class="literal">reads</code> from the first probe.
42</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayops-conditionals.html"><strong>Prev</strong>3.5.6. Using Arrays in Conditional Statements</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="understanding-tapsets.html"><strong>Next</strong>3.6. Tapsets</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/arrayops-conditionals.html b/SystemTap_Beginners_Guide/arrayops-conditionals.html
index 380f2bad..f7dba460 100644
--- a/SystemTap_Beginners_Guide/arrayops-conditionals.html
+++ b/SystemTap_Beginners_Guide/arrayops-conditionals.html
@@ -1,8 +1,6 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.5.6. Using Arrays in Conditional Statements</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="arrayoperators.html" title="3.5. Array Operations in SystemTap" /><link rel="prev" href="arrayops-deleting.html" title="3.5.5. Clearing/Deleting Arrays and Array Elements" /><link rel="next" href="arrayops-aggregates.html" title="3.5.7. Computing for Statistical Aggregates" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="arrayops-deleting.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="arrayops-aggregates.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="arrayops-conditionals"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.5.6. Using Arrays in Conditional Statements</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="arrayoperators.html" title="3.5. Array Operations in SystemTap" /><link rel="prev" href="arrayops-deleting.html" title="3.5.5. Clearing/Deleting Arrays and Array Elements" /><link rel="next" href="arrayops-aggregates.html" title="3.5.7. Computing for Statistical Aggregates" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="arrayops-deleting.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="arrayops-aggregates.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="arrayops-conditionals">
3 ⁠</a>3.5.6. Using Arrays in Conditional Statements</h3></div></div></div><a id="idm47748183004544" class="indexterm"></a><a id="idm47748183003136" class="indexterm"></a><a id="idm47748218468496" class="indexterm"></a><a id="idm47748218467088" class="indexterm"></a><div class="para"> 3 ⁠</a>3.5.6. Using Arrays in Conditional Statements</h3></div></div></div><a id="idm140174735917520" class="indexterm"></a><a id="idm140174735915888" class="indexterm"></a><a id="idm140174737343136" class="indexterm"></a><a id="idm140174737341504" class="indexterm"></a><div class="para">You can also use associative arrays in <code class="command">if</code> statements. This is useful if you want to execute a subroutine once a value in the array matches a certain condition. Consider the following example:</div><div class="example"><a id="simplevfsreadprintif">
4 You can also use associative arrays in <code class="command">if</code> statements. This is useful if you want to execute a subroutine once a value in the array matches a certain condition. Consider the following example:
5 </div><div class="example"><a id="simplevfsreadprintif">
6 ⁠</a><p class="title"><strong>Example 3.19. vfsreads-print-if-1kb.stp</strong></p><div class="example-contents"><pre class="programlisting">global reads 4 ⁠</a><p class="title"><strong>Example 3.19. vfsreads-print-if-1kb.stp</strong></p><div class="example-contents"><pre class="programlisting">global reads
7probe vfs.read 5probe vfs.read
8{ 6{
@@ -17,13 +15,7 @@ probe timer.s(3)
17 printf("%s : %dkB \n", count, reads[count]/1024) 15 printf("%s : %dkB \n", count, reads[count]/1024)
18 else 16 else
19 printf("%s : %dB \n", count, reads[count]) 17 printf("%s : %dB \n", count, reads[count])
20}</pre></div></div><div class="para"> 18}</pre></div></div><div class="para">Every three seconds, <a class="xref" href="arrayops-conditionals.html#simplevfsreadprintif">Example 3.19, “vfsreads-print-if-1kb.stp”</a> prints out a list of all processes, along with how many times each process performed a VFS read. If the associated value of a process name is equal or greater than 1024, the <code class="command">if</code> statement in the script converts and prints it out in <code class="command">kB</code>.</div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">Testing for Membership</div><a id="idm140174733425296" class="indexterm"></a><a id="idm140174740246704" class="indexterm"></a><a id="idm140174742991696" class="indexterm"></a><a id="idm140174742989600" class="indexterm"></a><a id="idm140174735885744" class="indexterm"></a>You can also test whether a specific unique key is a member of an array. Further, membership in an array can be used in <code class="command">if</code> statements, as in:</div><pre class="screen">if([<em class="replaceable">index_expression</em>] in <em class="replaceable">array_name</em>) <em class="replaceable">statement</em></pre><div class="para">To illustrate this, consider the following example:</div><div class="example"><a id="simplesimplevfsreadprintifmember">
21 Every three seconds, <a class="xref" href="arrayops-conditionals.html#simplevfsreadprintif">Example 3.19, “vfsreads-print-if-1kb.stp”</a> prints out a list of all processes, along with how many times each process performed a VFS read. If the associated value of a process name is equal or greater than 1024, the <code class="command">if</code> statement in the script converts and prints it out in <code class="command">kB</code>.
22 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">Testing for Membership</div><a id="idm47748216719568" class="indexterm"></a><a id="idm47748216718352" class="indexterm"></a><a id="idm47748180329728" class="indexterm"></a><a id="idm47748180328512" class="indexterm"></a><a id="idm47748222288704" class="indexterm"></a>
23 You can also test whether a specific unique key is a member of an array. Further, membership in an array can be used in <code class="command">if</code> statements, as in:
24 </div><pre class="screen">if([<em class="replaceable">index_expression</em>] in <em class="replaceable">array_name</em>) <em class="replaceable">statement</em></pre><div class="para">
25 To illustrate this, consider the following example:
26 </div><div class="example"><a id="simplesimplevfsreadprintifmember">
27 ⁠</a><p class="title"><strong>Example 3.20. vfsreads-stop-on-stapio2.stp</strong></p><div class="example-contents"><pre class="programlisting">global reads 19 ⁠</a><p class="title"><strong>Example 3.20. vfsreads-stop-on-stapio2.stp</strong></p><div class="example-contents"><pre class="programlisting">global reads
28 20
29probe vfs.read 21probe vfs.read
@@ -40,6 +32,4 @@ probe timer.s(3)
40 printf("stapio read detected, exiting\n") 32 printf("stapio read detected, exiting\n")
41 exit() 33 exit()
42 } 34 }
43}</pre></div></div><div class="para"> 35}</pre></div></div><div class="para">The <code class="command">if(["stapio"] in reads)</code> statement instructs the script to print <code class="computeroutput">stapio read detected, exiting</code> once the unique key <code class="command">stapio</code> is added to the array <code class="command">reads</code>.</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayops-deleting.html"><strong>Prev</strong>3.5.5. Clearing/Deleting Arrays and Array Elements</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="arrayops-aggregates.html"><strong>Next</strong>3.5.7. Computing for Statistical Aggregates</a></li></ul></body></html> \ No newline at end of file
44 The <code class="command">if(["stapio"] in reads)</code> statement instructs the script to print <code class="computeroutput">stapio read detected, exiting</code> once the unique key <code class="command">stapio</code> is added to the array <code class="command">reads</code>.
45 </div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayops-deleting.html"><strong>Prev</strong>3.5.5. Clearing/Deleting Arrays and Array Elements</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="arrayops-aggregates.html"><strong>Next</strong>3.5.7. Computing for Statistical Aggregates</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/arrayops-deleting.html b/SystemTap_Beginners_Guide/arrayops-deleting.html
index 6706fffa..9c276258 100644
--- a/SystemTap_Beginners_Guide/arrayops-deleting.html
+++ b/SystemTap_Beginners_Guide/arrayops-deleting.html
@@ -1,10 +1,6 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.5.5. Clearing/Deleting Arrays and Array Elements</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="arrayoperators.html" title="3.5. Array Operations in SystemTap" /><link rel="prev" href="arrayops-foreach.html" title="3.5.4. Processing Multiple Elements in an Array" /><link rel="next" href="arrayops-conditionals.html" title="3.5.6. Using Arrays in Conditional Statements" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="arrayops-foreach.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="arrayops-conditionals.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="arrayops-deleting"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.5.5. Clearing/Deleting Arrays and Array Elements</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="arrayoperators.html" title="3.5. Array Operations in SystemTap" /><link rel="prev" href="arrayops-foreach.html" title="3.5.4. Processing Multiple Elements in an Array" /><link rel="next" href="arrayops-conditionals.html" title="3.5.6. Using Arrays in Conditional Statements" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="arrayops-foreach.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="arrayops-conditionals.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="arrayops-deleting">
3 ⁠</a>3.5.5. Clearing/Deleting Arrays and Array Elements</h3></div></div></div><a id="idm47748186386160" class="indexterm"></a><a id="idm47748220465792" class="indexterm"></a><a id="idm47748186600304" class="indexterm"></a><a id="idm47748186598896" class="indexterm"></a><a id="idm47748222526912" class="indexterm"></a><div class="para"> 3 ⁠</a>3.5.5. Clearing/Deleting Arrays and Array Elements</h3></div></div></div><a id="idm140174733383616" class="indexterm"></a><a id="idm140174733381984" class="indexterm"></a><a id="idm140174733849024" class="indexterm"></a><a id="idm140174733847392" class="indexterm"></a><a id="idm140174731035824" class="indexterm"></a><div class="para">Sometimes, you may need to clear the associated values in array elements, or reset an entire array for re-use in another probe. <a class="xref" href="arrayops-foreach.html#simplevfsreadprint">Example 3.17, “cumulative-vfsreads.stp”</a> in <a class="xref" href="arrayops-foreach.html">Section 3.5.4, “Processing Multiple Elements in an Array”</a> allows you to track how the number of VFS reads per process grows over time, but it does not show you the number of VFS reads each process makes per 3-second period.</div><a id="idm140174735790144" class="indexterm"></a><a id="idm140174734686976" class="indexterm"></a><a id="idm140174738632688" class="indexterm"></a><a id="idm140174738630608" class="indexterm"></a><div class="para">To do that, you will need to clear the values accumulated by the array. You can accomplish this using the <code class="command">delete</code> operator to delete elements in an array, or an entire array. Consider the following example:</div><a id="idm140174734925952" class="indexterm"></a><a id="idm140174731821936" class="indexterm"></a><a id="idm140174736489152" class="indexterm"></a><a id="idm140174736487104" class="indexterm"></a><div class="example"><a id="simplevfsreadprintnotcumulative">
4 Sometimes, you may need to clear the associated values in array elements, or reset an entire array for re-use in another probe. <a class="xref" href="arrayops-foreach.html#simplevfsreadprint">Example 3.17, “cumulative-vfsreads.stp”</a> in <a class="xref" href="arrayops-foreach.html">Section 3.5.4, “Processing Multiple Elements in an Array”</a> allows you to track how the number of VFS reads per process grows over time, but it does not show you the number of VFS reads each process makes per 3-second period.
5 </div><a id="idm47748180509808" class="indexterm"></a><a id="idm47748182975616" class="indexterm"></a><a id="idm47748224822464" class="indexterm"></a><a id="idm47748216638816" class="indexterm"></a><div class="para">
6 To do that, you will need to clear the values accumulated by the array. You can accomplish this using the <code class="command">delete</code> operator to delete elements in an array, or an entire array. Consider the following example:
7 </div><a id="idm47748214281936" class="indexterm"></a><a id="idm47748180830192" class="indexterm"></a><a id="idm47748180828336" class="indexterm"></a><a id="idm47748230824784" class="indexterm"></a><div class="example"><a id="simplevfsreadprintnotcumulative">
8 ⁠</a><p class="title"><strong>Example 3.18. noncumulative-vfsreads.stp</strong></p><div class="example-contents"><pre class="programlisting">global reads 4 ⁠</a><p class="title"><strong>Example 3.18. noncumulative-vfsreads.stp</strong></p><div class="example-contents"><pre class="programlisting">global reads
9probe vfs.read 5probe vfs.read
10{ 6{
@@ -15,11 +11,7 @@ probe timer.s(3)
15 foreach (count in reads) 11 foreach (count in reads)
16 printf("%s : %d \n", count, reads[count]) 12 printf("%s : %d \n", count, reads[count])
17 delete reads 13 delete reads
18}</pre></div></div><div class="para"> 14}</pre></div></div><div class="para">In <a class="xref" href="arrayops-deleting.html#simplevfsreadprintnotcumulative">Example 3.18, “noncumulative-vfsreads.stp”</a>, the second probe prints the number of VFS reads each process made <span class="emphasis"><em>within the probed 3-second period only</em></span>. The <code class="command">delete reads</code> statement clears the <code class="command">reads</code> array within the probe.</div><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><a id="idm140174733488112" class="indexterm"></a><a id="idm140174732969456" class="indexterm"></a><a id="idm140174732967408" class="indexterm"></a><a id="idm140174741684736" class="indexterm"></a><div class="para">You can have multiple array operations within the same probe. Using the examples from <a class="xref" href="arrayops-foreach.html">Section 3.5.4, “Processing Multiple Elements in an Array”</a> and <a class="xref" href="arrayops-deleting.html">Section 3.5.5, “Clearing/Deleting Arrays and Array Elements”</a> , you can track the number of VFS reads each process makes per 3-second period <span class="emphasis"><em>and</em></span> tally the cumulative VFS reads of those same processes. Consider the following example:</div><pre class="screen">global reads, totalreads
19 In <a class="xref" href="arrayops-deleting.html#simplevfsreadprintnotcumulative">Example 3.18, “noncumulative-vfsreads.stp”</a>, the second probe prints the number of VFS reads each process made <span class="emphasis"><em>within the probed 3-second period only</em></span>. The <code class="command">delete reads</code> statement clears the <code class="command">reads</code> array within the probe.
20 </div><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><a id="idm47748216640112" class="indexterm"></a><a id="idm47748181105104" class="indexterm"></a><a id="idm47748226178816" class="indexterm"></a><a id="idm47748226176960" class="indexterm"></a><div class="para">
21 You can have multiple array operations within the same probe. Using the examples from <a class="xref" href="arrayops-foreach.html">Section 3.5.4, “Processing Multiple Elements in an Array”</a> and <a class="xref" href="arrayops-deleting.html">Section 3.5.5, “Clearing/Deleting Arrays and Array Elements”</a> , you can track the number of VFS reads each process makes per 3-second period <span class="emphasis"><em>and</em></span> tally the cumulative VFS reads of those same processes. Consider the following example:
22 </div><pre class="screen">global reads, totalreads
23 15
24probe vfs.read 16probe vfs.read
25{ 17{
@@ -40,6 +32,4 @@ probe end
40 printf("TOTALS\n") 32 printf("TOTALS\n")
41 foreach (total in totalreads-) 33 foreach (total in totalreads-)
42 printf("%s : %d \n", total, totalreads[total]) 34 printf("%s : %d \n", total, totalreads[total])
43}</pre><div class="para"> 35}</pre><div class="para">In this example, the arrays <code class="command">reads</code> and <code class="command">totalreads</code> track the same information, and are printed out in a similar fashion. The only difference here is that <code class="command">reads</code> is cleared every 3-second period, whereas <code class="command">totalreads</code> keeps growing.</div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayops-foreach.html"><strong>Prev</strong>3.5.4. Processing Multiple Elements in an Array</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="arrayops-conditionals.html"><strong>Next</strong>3.5.6. Using Arrays in Conditional Statements</a></li></ul></body></html> \ No newline at end of file
44 In this example, the arrays <code class="command">reads</code> and <code class="command">totalreads</code> track the same information, and are printed out in a similar fashion. The only difference here is that <code class="command">reads</code> is cleared every 3-second period, whereas <code class="command">totalreads</code> keeps growing.
45 </div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayops-foreach.html"><strong>Prev</strong>3.5.4. Processing Multiple Elements in an Array</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="arrayops-conditionals.html"><strong>Next</strong>3.5.6. Using Arrays in Conditional Statements</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/arrayops-foreach.html b/SystemTap_Beginners_Guide/arrayops-foreach.html
index cab5f4e0..f95f17f6 100644
--- a/SystemTap_Beginners_Guide/arrayops-foreach.html
+++ b/SystemTap_Beginners_Guide/arrayops-foreach.html
@@ -1,10 +1,6 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.5.4. Processing Multiple Elements in an Array</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="arrayoperators.html" title="3.5. Array Operations in SystemTap" /><link rel="prev" href="arrayops-increment.html" title="3.5.3. Incrementing Associated Values" /><link rel="next" href="arrayops-deleting.html" title="3.5.5. Clearing/Deleting Arrays and Array Elements" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="arrayops-increment.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="arrayops-deleting.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="arrayops-foreach"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.5.4. Processing Multiple Elements in an Array</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="arrayoperators.html" title="3.5. Array Operations in SystemTap" /><link rel="prev" href="arrayops-increment.html" title="3.5.3. Incrementing Associated Values" /><link rel="next" href="arrayops-deleting.html" title="3.5.5. Clearing/Deleting Arrays and Array Elements" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="arrayops-increment.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="arrayops-deleting.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="arrayops-foreach">
3 ⁠</a>3.5.4. Processing Multiple Elements in an Array</h3></div></div></div><a id="idm47748215036128" class="indexterm"></a><a id="idm47748215034720" class="indexterm"></a><a id="idm47748230781952" class="indexterm"></a><a id="idm47748212855904" class="indexterm"></a><a id="idm47748212854496" class="indexterm"></a><a id="idm47748220335568" class="indexterm"></a><div class="para"> 3 ⁠</a>3.5.4. Processing Multiple Elements in an Array</h3></div></div></div><a id="idm140174735788144" class="indexterm"></a><a id="idm140174735786560" class="indexterm"></a><a id="idm140174734048800" class="indexterm"></a><a id="idm140174734933840" class="indexterm"></a><a id="idm140174734932256" class="indexterm"></a><a id="idm140174736379584" class="indexterm"></a><div class="para">Once you've collected enough information in an array, you will need to retrieve and process all elements in that array to make it useful. Consider <a class="xref" href="arrayops-increment.html#simplesimplevfsread">Example 3.16, “vfsreads.stp”</a>: the script collects information about how many VFS reads each process performs, but does not specify what to do with it. The obvious means for making <a class="xref" href="arrayops-increment.html#simplesimplevfsread">Example 3.16, “vfsreads.stp”</a> useful is to print the key pairs in the array <code class="command">reads</code>, but how?</div><a id="idm140174734931296" class="indexterm"></a><a id="idm140174734929296" class="indexterm"></a><a id="idm140174737537360" class="indexterm"></a><a id="idm140174733776960" class="indexterm"></a><a id="idm140174736396400" class="indexterm"></a><a id="idm140174736394400" class="indexterm"></a><a id="idm140174733151040" class="indexterm"></a><div class="para">The best way to process all key pairs in an array (as an iteration) is to use the <code class="command">foreach</code> statement. Consider the following example:</div><a id="idm140174733750464" class="indexterm"></a><a id="idm140174743255888" class="indexterm"></a><a id="idm140174736598128" class="indexterm"></a><a id="idm140174736596128" class="indexterm"></a><a id="idm140174733406528" class="indexterm"></a><div class="example"><a id="simplevfsreadprint">
4 Once you've collected enough information in an array, you will need to retrieve and process all elements in that array to make it useful. Consider <a class="xref" href="arrayops-increment.html#simplesimplevfsread">Example 3.16, “vfsreads.stp”</a>: the script collects information about how many VFS reads each process performs, but does not specify what to do with it. The obvious means for making <a class="xref" href="arrayops-increment.html#simplesimplevfsread">Example 3.16, “vfsreads.stp”</a> useful is to print the key pairs in the array <code class="command">reads</code>, but how?
5 </div><a id="idm47748217188016" class="indexterm"></a><a id="idm47748186570560" class="indexterm"></a><a id="idm47748217144112" class="indexterm"></a><a id="idm47748217142224" class="indexterm"></a><a id="idm47748188065152" class="indexterm"></a><a id="idm47748213524928" class="indexterm"></a><a id="idm47748217137008" class="indexterm"></a><div class="para">
6 The best way to process all key pairs in an array (as an iteration) is to use the <code class="command">foreach</code> statement. Consider the following example:
7 </div><a id="idm47748229641712" class="indexterm"></a><a id="idm47748229639856" class="indexterm"></a><a id="idm47748214933888" class="indexterm"></a><a id="idm47748212783488" class="indexterm"></a><a id="idm47748226140128" class="indexterm"></a><div class="example"><a id="simplevfsreadprint">
8 ⁠</a><p class="title"><strong>Example 3.17. cumulative-vfsreads.stp</strong></p><div class="example-contents"><pre class="programlisting">global reads 4 ⁠</a><p class="title"><strong>Example 3.17. cumulative-vfsreads.stp</strong></p><div class="example-contents"><pre class="programlisting">global reads
9probe vfs.read 5probe vfs.read
10{ 6{
@@ -14,18 +10,8 @@ probe timer.s(3)
14{ 10{
15 foreach (count in reads) 11 foreach (count in reads)
16 printf("%s : %d \n", count, reads[count]) 12 printf("%s : %d \n", count, reads[count])
17}</pre></div></div><div class="para"> 13}</pre></div></div><div class="para">In the second probe of <a class="xref" href="arrayops-foreach.html#simplevfsreadprint">Example 3.17, “cumulative-vfsreads.stp”</a>, the <code class="command">foreach</code> statement uses the variable <code class="command">count</code> to reference each iteration of a unique key in the array <code class="command">reads</code>. The <code class="command">reads[count]</code> array statement in the same probe retrieves the associated value of each unique key.</div><div class="para">Given what we know about the first probe in <a class="xref" href="arrayops-foreach.html#simplevfsreadprint">Example 3.17, “cumulative-vfsreads.stp”</a>, the script prints VFS-read statistics every 3 seconds, displaying names of processes that performed a VFS-read along with a corresponding VFS-read count.</div><a id="idm140174739914192" class="indexterm"></a><a id="idm140174734689472" class="indexterm"></a><a id="idm140174742685952" class="indexterm"></a><a id="idm140174742683904" class="indexterm"></a><a id="idm140174737186720" class="indexterm"></a><a id="idm140174737137936" class="indexterm"></a><a id="idm140174738901536" class="indexterm"></a><a id="idm140174738899600" class="indexterm"></a><div class="para">Now, remember that the <code class="command">foreach</code> statement in <a class="xref" href="arrayops-foreach.html#simplevfsreadprint">Example 3.17, “cumulative-vfsreads.stp”</a> prints <span class="emphasis"><em>all</em></span> iterations of process names in the array, and in no particular order. You can instruct the script to process the iterations in a particular order by using <code class="command">+</code> (ascending) or <code class="command">-</code> (descending). In addition, you can also limit the number of iterations the script needs to process with the <code class="command">limit <em class="replaceable">value</em></code> option.</div><div class="para">For example, consider the following replacement probe:</div><pre class="screen">probe timer.s(3)
18 In the second probe of <a class="xref" href="arrayops-foreach.html#simplevfsreadprint">Example 3.17, “cumulative-vfsreads.stp”</a>, the <code class="command">foreach</code> statement uses the variable <code class="command">count</code> to reference each iteration of a unique key in the array <code class="command">reads</code>. The <code class="command">reads[count]</code> array statement in the same probe retrieves the associated value of each unique key.
19 </div><div class="para">
20 Given what we know about the first probe in <a class="xref" href="arrayops-foreach.html#simplevfsreadprint">Example 3.17, “cumulative-vfsreads.stp”</a>, the script prints VFS-read statistics every 3 seconds, displaying names of processes that performed a VFS-read along with a corresponding VFS-read count.
21 </div><a id="idm47748216656528" class="indexterm"></a><a id="idm47748175587088" class="indexterm"></a><a id="idm47748220170064" class="indexterm"></a><a id="idm47748188395664" class="indexterm"></a><a id="idm47748216559760" class="indexterm"></a><a id="idm47748216557904" class="indexterm"></a><a id="idm47748216650368" class="indexterm"></a><a id="idm47748213536160" class="indexterm"></a><div class="para">
22 Now, remember that the <code class="command">foreach</code> statement in <a class="xref" href="arrayops-foreach.html#simplevfsreadprint">Example 3.17, “cumulative-vfsreads.stp”</a> prints <span class="emphasis"><em>all</em></span> iterations of process names in the array, and in no particular order. You can instruct the script to process the iterations in a particular order by using <code class="command">+</code> (ascending) or <code class="command">-</code> (descending). In addition, you can also limit the number of iterations the script needs to process with the <code class="command">limit <em class="replaceable">value</em></code> option.
23 </div><div class="para">
24 For example, consider the following replacement probe:
25 </div><pre class="screen">probe timer.s(3)
26{ 14{
27 foreach (count in reads- limit 10) 15 foreach (count in reads- limit 10)
28 printf("%s : %d \n", count, reads[count]) 16 printf("%s : %d \n", count, reads[count])
29}</pre><div class="para"> 17}</pre><div class="para">This <code class="command">foreach</code> statement instructs the script to process the elements in the array <code class="command">reads</code> in descending order (of associated value). The <code class="command">limit 10</code> option instructs the <code class="command">foreach</code> to only process the first ten iterations (that is, print the first 10, starting with the highest value).</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayops-increment.html"><strong>Prev</strong>3.5.3. Incrementing Associated Values</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="arrayops-deleting.html"><strong>Next</strong>3.5.5. Clearing/Deleting Arrays and Array Elements</a></li></ul></body></html> \ No newline at end of file
30 This <code class="command">foreach</code> statement instructs the script to process the elements in the array <code class="command">reads</code> in descending order (of associated value). The <code class="command">limit 10</code> option instructs the <code class="command">foreach</code> to only process the first ten iterations (that is, print the first 10, starting with the highest value).
31 </div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayops-increment.html"><strong>Prev</strong>3.5.3. Incrementing Associated Values</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="arrayops-deleting.html"><strong>Next</strong>3.5.5. Clearing/Deleting Arrays and Array Elements</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/arrayops-increment.html b/SystemTap_Beginners_Guide/arrayops-increment.html
index b6005e10..303f1fdf 100644
--- a/SystemTap_Beginners_Guide/arrayops-increment.html
+++ b/SystemTap_Beginners_Guide/arrayops-increment.html
@@ -1,13 +1,7 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.5.3. Incrementing Associated Values</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="arrayoperators.html" title="3.5. Array Operations in SystemTap" /><link rel="prev" href="arrayops-readvalues.html" title="3.5.2. Reading Values From Arrays" /><link rel="next" href="arrayops-foreach.html" title="3.5.4. Processing Multiple Elements in an Array" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="arrayops-readvalues.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="arrayops-foreach.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="arrayops-increment"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.5.3. Incrementing Associated Values</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="arrayoperators.html" title="3.5. Array Operations in SystemTap" /><link rel="prev" href="arrayops-readvalues.html" title="3.5.2. Reading Values From Arrays" /><link rel="next" href="arrayops-foreach.html" title="3.5.4. Processing Multiple Elements in an Array" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="arrayops-readvalues.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="arrayops-foreach.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="arrayops-increment">
3 ⁠</a>3.5.3. Incrementing Associated Values</h3></div></div></div><a id="idm47748226908288" class="indexterm"></a><a id="idm47748175611792" class="indexterm"></a><a id="idm47748175610384" class="indexterm"></a><div class="para"> 3 ⁠</a>3.5.3. Incrementing Associated Values</h3></div></div></div><a id="idm140174734137968" class="indexterm"></a><a id="idm140174731850384" class="indexterm"></a><a id="idm140174731848752" class="indexterm"></a><div class="para">Use <code class="command">++</code> to increment the associated value of a unique key in an array, as in:</div><pre class="screen"><em class="replaceable">array_name</em>[<em class="replaceable">index_expression</em>] ++</pre><div class="para">Again, you can also use a handler function for your <code class="command"><em class="replaceable">index_expression</em></code>. For example, if you wanted to tally how many times a specific process performed a read to the virtual file system (using the event <code class="command">vfs.read</code>), you can use the following probe:</div><a id="idm140174732611632" class="indexterm"></a><a id="idm140174736762112" class="indexterm"></a><a id="idm140174732891312" class="indexterm"></a><a id="idm140174732889264" class="indexterm"></a><a id="idm140174733731952" class="indexterm"></a><div class="example"><a id="simplesimplevfsread">
4 Use <code class="command">++</code> to increment the associated value of a unique key in an array, as in:
5 </div><pre class="screen"><em class="replaceable">array_name</em>[<em class="replaceable">index_expression</em>] ++</pre><div class="para">
6 Again, you can also use a handler function for your <code class="command"><em class="replaceable">index_expression</em></code>. For example, if you wanted to tally how many times a specific process performed a read to the virtual file system (using the event <code class="command">vfs.read</code>), you can use the following probe:
7 </div><a id="idm47748180528080" class="indexterm"></a><a id="idm47748179982384" class="indexterm"></a><a id="idm47748218762096" class="indexterm"></a><a id="idm47748186519504" class="indexterm"></a><a id="idm47748220277184" class="indexterm"></a><div class="example"><a id="simplesimplevfsread">
8 ⁠</a><p class="title"><strong>Example 3.16. vfsreads.stp</strong></p><div class="example-contents"><pre class="programlisting">probe vfs.read 4 ⁠</a><p class="title"><strong>Example 3.16. vfsreads.stp</strong></p><div class="example-contents"><pre class="programlisting">probe vfs.read
9{ 5{
10 reads[execname()] ++ 6 reads[execname()] ++
11}</pre></div></div><div class="para"> 7}</pre></div></div><div class="para">In <a class="xref" href="arrayops-increment.html#simplesimplevfsread">Example 3.16, “vfsreads.stp”</a>, the first time that the probe returns the process name <code class="command">gnome-terminal</code> (that is, the first time <code class="command">gnome-terminal</code> performs a VFS read), that process name is set as the unique key <code class="literal">gnome-terminal</code> with an associated value of 1. The next time that the probe returns the process name <code class="command">gnome-terminal</code>, SystemTap increments the associated value of <code class="literal">gnome-terminal</code> by 1. SystemTap performs this operation for <span class="emphasis"><em>all</em></span> process names as the probe returns them.</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayops-readvalues.html"><strong>Prev</strong>3.5.2. Reading Values From Arrays</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="arrayops-foreach.html"><strong>Next</strong>3.5.4. Processing Multiple Elements in an Array</a></li></ul></body></html> \ No newline at end of file
12 In <a class="xref" href="arrayops-increment.html#simplesimplevfsread">Example 3.16, “vfsreads.stp”</a>, the first time that the probe returns the process name <code class="command">gnome-terminal</code> (that is, the first time <code class="command">gnome-terminal</code> performs a VFS read), that process name is set as the unique key <code class="literal">gnome-terminal</code> with an associated value of 1. The next time that the probe returns the process name <code class="command">gnome-terminal</code>, SystemTap increments the associated value of <code class="literal">gnome-terminal</code> by 1. SystemTap performs this operation for <span class="emphasis"><em>all</em></span> process names as the probe returns them.
13 </div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayops-readvalues.html"><strong>Prev</strong>3.5.2. Reading Values From Arrays</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="arrayops-foreach.html"><strong>Next</strong>3.5.4. Processing Multiple Elements in an Array</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/arrayops-readvalues.html b/SystemTap_Beginners_Guide/arrayops-readvalues.html
index 21dfd64a..f8fcfc27 100644
--- a/SystemTap_Beginners_Guide/arrayops-readvalues.html
+++ b/SystemTap_Beginners_Guide/arrayops-readvalues.html
@@ -1,12 +1,24 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.5.2. Reading Values From Arrays</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="arrayoperators.html" title="3.5. Array Operations in SystemTap" /><link rel="prev" href="arrayoperators.html" title="3.5. Array Operations in SystemTap" /><link rel="next" href="arrayops-increment.html" title="3.5.3. Incrementing Associated Values" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="arrayoperators.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="arrayops-increment.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="arrayops-readvalues"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.5.2. Reading Values From Arrays</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="arrayoperators.html" title="3.5. Array Operations in SystemTap" /><link rel="prev" href="arrayoperators.html" title="3.5. Array Operations in SystemTap" /><link rel="next" href="arrayops-increment.html" title="3.5.3. Incrementing Associated Values" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="arrayoperators.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="arrayops-increment.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="arrayops-readvalues">
3 ⁠</a>3.5.2. Reading Values From Arrays</h3></div></div></div><a id="idm47748212781344" class="indexterm"></a><a id="idm47748176374544" class="indexterm"></a><a id="idm47748223319168" class="indexterm"></a><div class="para"> 3 ⁠</a>3.5.2. Reading Values From Arrays</h3></div></div></div><a id="idm140174732534640" class="indexterm"></a><a id="idm140174734094848" class="indexterm"></a><a id="idm140174731401744" class="indexterm"></a><div class="para">You can also read values from an array the same way you would read the value of a variable.
4 You can also read values from an array the same way you would read the value of a variable. To do so, include the <code class="command"><em class="replaceable">array_name</em>[<em class="replaceable">index_expression</em>]</code> statement as an element in a mathematical expression. For example: 4 To do so, include the
5 </div><a id="idm47748180541168" class="indexterm"></a><a id="idm47748217141376" class="indexterm"></a><a id="idm47748212793056" class="indexterm"></a><a id="idm47748224272576" class="indexterm"></a><a id="idm47748224275680" class="indexterm"></a><a id="idm47748229519488" class="indexterm"></a><a id="idm47748229527136" class="indexterm"></a><a id="idm47748216631760" class="indexterm"></a><a id="idm47748183059888" class="indexterm"></a><a id="idm47748226946704" class="indexterm"></a><div class="example"><a id="arrayreadingvaluesfrom"> 5 <code class="command"><em class="replaceable">array_name</em>[<em class="replaceable">index_expression</em>]</code>
6 statement as an element in a mathematical expression. For example:</div><a id="idm140174732624320" class="indexterm"></a><a id="idm140174736646832" class="indexterm"></a><a id="idm140174738377584" class="indexterm"></a><a id="idm140174743345632" class="indexterm"></a><a id="idm140174733298384" class="indexterm"></a><a id="idm140174734693296" class="indexterm"></a><a id="idm140174734691296" class="indexterm"></a><a id="idm140174743618560" class="indexterm"></a><a id="idm140174731859296" class="indexterm"></a><a id="idm140174733081952" class="indexterm"></a><div class="example"><a id="arrayreadingvaluesfrom">
6 ⁠</a><p class="title"><strong>Example 3.15. Using Array Values in Simple Computations</strong></p><div class="example-contents"><pre class="screen">delta = gettimeofday_s() - foo[tid()]</pre></div></div><div class="para"> 7 ⁠</a><p class="title"><strong>Example 3.15. Using Array Values in Simple Computations</strong></p><div class="example-contents"><pre class="screen">delta = gettimeofday_s() - foo[tid()]</pre></div></div><div class="para">
7 This example assumes that the array <code class="command">foo</code> was built using the construct in <a class="xref" href="arrayoperators.html#arrays-timestampprocessname">Example 3.14, “Associating Timestamps to Process Names”</a> (from <a class="xref" href="arrayoperators.html#arrayops-assignvalue">Section 3.5.1, “Assigning an Associated Value”</a>). This sets a timestamp that will serve as a <span class="emphasis"><em>reference point</em></span>, to be used in computing for <code class="literal">delta</code>. 8 This example assumes that the array <code class="command">foo</code> was built using the construct in
8 </div><div class="para"> 9 <a class="xref" href="arrayoperators.html#arrays-timestampprocessname">Example 3.14, “Associating Timestamps to Process Names”</a> (from <a class="xref" href="arrayoperators.html#arrayops-assignvalue">Section 3.5.1, “Assigning an Associated Value”</a>). This
9 The construct in <a class="xref" href="arrayops-readvalues.html#arrayreadingvaluesfrom">Example 3.15, “Using Array Values in Simple Computations”</a> computes a value for the variable <code class="literal">delta</code> by subtracting the associated value of the key <code class="literal">tid()</code> from the current <code class="command">gettimeofday_s()</code>. The construct does this by <span class="emphasis"><em>reading</em></span> the value of <code class="literal">tid()</code> from the array. This particular construct is useful for determining the time between two events, such as the start and completion of a read operation. 10 sets a timestamp that will serve as a <span class="emphasis"><em>reference point</em></span>, to be used in
10 </div><a id="idm47748218614336" class="indexterm"></a><a id="idm47748186558080" class="indexterm"></a><a id="idm47748218592048" class="indexterm"></a><a id="idm47748179984400" class="indexterm"></a><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><div class="para"> 11 computing for <code class="literal">delta</code>.
11 If the <code class="command"><em class="replaceable">index_expression</em></code> cannot find the unique key, it returns a value of 0 (for numerical operations, such as <a class="xref" href="arrayops-readvalues.html#arrayreadingvaluesfrom">Example 3.15, “Using Array Values in Simple Computations”</a>) or a null/empty string value (for string operations) by default. 12</div><div class="para">
12 </div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayoperators.html"><strong>Prev</strong>3.5. Array Operations in SystemTap</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="arrayops-increment.html"><strong>Next</strong>3.5.3. Incrementing Associated Values</a></li></ul></body></html> \ No newline at end of file 13 The construct in <a class="xref" href="arrayops-readvalues.html#arrayreadingvaluesfrom">Example 3.15, “Using Array Values in Simple Computations”</a> computes a value for the variable
14 <code class="literal">delta</code> by subtracting the associated value of the key <code class="literal">tid()</code>
15 from the current <code class="command">gettimeofday_s()</code>. The construct does this by
16 <span class="emphasis"><em>reading</em></span> the value of <code class="literal">tid()</code> from the array. This particular
17 construct is useful for determining the time between two events, such as the start and completion
18 of a read operation.
19</div><a id="idm140174739784768" class="indexterm"></a><a id="idm140174738866688" class="indexterm"></a><a id="idm140174733164896" class="indexterm"></a><a id="idm140174737264112" class="indexterm"></a><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><div class="para">
20 If the <code class="command"><em class="replaceable">index_expression</em></code> cannot
21 find the unique key, it returns a value of 0 (for numerical operations, such as
22 <a class="xref" href="arrayops-readvalues.html#arrayreadingvaluesfrom">Example 3.15, “Using Array Values in Simple Computations”</a>) or a null/empty string value (for string operations) by
23 default.
24</div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayoperators.html"><strong>Prev</strong>3.5. Array Operations in SystemTap</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="arrayops-increment.html"><strong>Next</strong>3.5.3. Incrementing Associated Values</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/associativearrays.html b/SystemTap_Beginners_Guide/associativearrays.html
index 692d5c70..756adc43 100644
--- a/SystemTap_Beginners_Guide/associativearrays.html
+++ b/SystemTap_Beginners_Guide/associativearrays.html
@@ -1,16 +1,6 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.4. Associative Arrays</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="understanding-how-systemtap-works.html" title="Chapter 3. Understanding How SystemTap Works" /><link rel="prev" href="commandlineargssect.html" title="3.3.4. Command-Line Arguments" /><link rel="next" href="arrayoperators.html" title="3.5. Array Operations in SystemTap" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="commandlineargssect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="arrayoperators.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="associativearrays"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.4. Associative Arrays</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="understanding-how-systemtap-works.html" title="Chapter 3. Understanding How SystemTap Works" /><link rel="prev" href="commandlineargssect.html" title="3.3.4. Command-Line Arguments" /><link rel="next" href="arrayoperators.html" title="3.5. Array Operations in SystemTap" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="commandlineargssect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="arrayoperators.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="associativearrays">
3 ⁠</a>3.4. Associative Arrays</h2></div></div></div><a id="idm47748224310208" class="indexterm"></a><a id="idm47748218401344" class="indexterm"></a><div class="para"> 3 ⁠</a>3.4. Associative Arrays</h2></div></div></div><a id="idm140174731328880" class="indexterm"></a><a id="idm140174731469392" class="indexterm"></a><div class="para">SystemTap also supports the use of associative arrays. While an ordinary variable represents a single value, associative arrays can represent a collection of values. Simply put, an associative array is a collection of unique keys; each key in the array has a value associated with it.</div><a id="idm140174740794352" class="indexterm"></a><a id="idm140174731269616" class="indexterm"></a><a id="idm140174742803344" class="indexterm"></a><a id="idm140174732333712" class="indexterm"></a><a id="idm140174732292608" class="indexterm"></a><a id="idm140174735781904" class="indexterm"></a><a id="idm140174735975968" class="indexterm"></a><a id="idm140174735940560" class="indexterm"></a><div class="para">Since associative arrays are normally processed in multiple probes (as we will demonstrate later), they should be declared as <code class="command">global</code> variables in the SystemTap script. The syntax for accessing an element in an associative array is similar to that of <code class="command">awk</code>, and is as follows:</div><a id="idm140174737429024" class="indexterm"></a><a id="idm140174733385520" class="indexterm"></a><a id="idm140174732845456" class="indexterm"></a><pre class="screen"><em class="replaceable">array_name</em>[<em class="replaceable">index_expression</em>]</pre><div class="para">Here, the <code class="command"><em class="replaceable">array_name</em></code> is any arbitrary name the array uses. The <code class="command"><em class="replaceable">index_expression</em></code> is used to refer to a specific unique key in the array. To illustrate, let us try to build an array named <code class="command">foo</code> that specifies the ages of three people <code class="command">tom</code>, <code class="command">dick</code>, and <code class="command">harry</code> (which are unique keys). To assign them the ages (associated values) of 23, 24, and 25 respectively, we'd use the following array statements:</div><a id="idm140174736654304" class="indexterm"></a><a id="idm140174735771488" class="indexterm"></a><div class="example"><a id="arraysimplestexample">
4 SystemTap also supports the use of associative arrays. While an ordinary variable represents a single value, associative arrays can represent a collection of values. Simply put, an associative array is a collection of unique keys; each key in the array has a value associated with it.
5 </div><a id="idm47748175089376" class="indexterm"></a><a id="idm47748187884112" class="indexterm"></a><a id="idm47748214124160" class="indexterm"></a><a id="idm47748186544032" class="indexterm"></a><a id="idm47748230788368" class="indexterm"></a><a id="idm47748217373744" class="indexterm"></a><a id="idm47748216764720" class="indexterm"></a><a id="idm47748218602288" class="indexterm"></a><div class="para">
6 Since associative arrays are normally processed in multiple probes (as we will demonstrate later), they should be declared as <code class="command">global</code> variables in the SystemTap script. The syntax for accessing an element in an associative array is similar to that of <code class="command">awk</code>, and is as follows:
7 </div><a id="idm47748214100128" class="indexterm"></a><a id="idm47748174990608" class="indexterm"></a><a id="idm47748229639664" class="indexterm"></a><pre class="screen"><em class="replaceable">array_name</em>[<em class="replaceable">index_expression</em>]</pre><div class="para">
8 Here, the <code class="command"><em class="replaceable">array_name</em></code> is any arbitrary name the array uses. The <code class="command"><em class="replaceable">index_expression</em></code> is used to refer to a specific unique key in the array. To illustrate, let us try to build an array named <code class="command">foo</code> that specifies the ages of three people <code class="command">tom</code>, <code class="command">dick</code>, and <code class="command">harry</code> (which are unique keys). To assign them the ages (associated values) of 23, 24, and 25 respectively, we'd use the following array statements:
9 </div><a id="idm47748230484640" class="indexterm"></a><a id="idm47748227155104" class="indexterm"></a><div class="example"><a id="arraysimplestexample">
10 ⁠</a><p class="title"><strong>Example 3.13. Basic Array Statements</strong></p><div class="example-contents"><pre class="screen">foo["tom"] = 23 4 ⁠</a><p class="title"><strong>Example 3.13. Basic Array Statements</strong></p><div class="example-contents"><pre class="screen">foo["tom"] = 23
11foo["dick"] = 24 5foo["dick"] = 24
12foo["harry"] = 25</pre></div></div><div class="para"> 6foo["harry"] = 25</pre></div></div><div class="para">You can specify up to nine index expressions in an array statement, each one delimited by a comma (<code class="command">,</code>). This is useful if you wish to have a key that contains multiple pieces of information. The following line from <a class="xref" href="mainsect-disk.html#scriptdisktop">disktop.stp</a> uses 5 elements for the key: process ID, executable name, user ID, parent process ID, and string "W". It associates the value of <code class="command">devname</code> with that key.</div><pre class="screen">device[pid(),execname(),uid(),ppid(),"W"] = devname</pre><div xmlns:d="http://docbook.org/ns/docbook" class="important"><div class="admonition_header"><p><strong>Important</strong></p></div><div class="admonition"><div class="para">All associate arrays must be declared as <code class="command">global</code>, regardless of whether the associate array is used in one or multiple probes. </div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="commandlineargssect.html"><strong>Prev</strong>3.3.4. Command-Line Arguments</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="arrayoperators.html"><strong>Next</strong>3.5. Array Operations in SystemTap</a></li></ul></body></html> \ No newline at end of file
13 You can specify up to nine index expressions in an array statement, each one delimited by a comma (<code class="command">,</code>). This is useful if you wish to have a key that contains multiple pieces of information. The following line from <a class="xref" href="mainsect-disk.html#scriptdisktop">disktop.stp</a> uses 5 elements for the key: process ID, executable name, user ID, parent process ID, and string "W". It associates the value of <code class="command">devname</code> with that key.
14 </div><pre class="screen">device[pid(),execname(),uid(),ppid(),"W"] = devname</pre><div xmlns:d="http://docbook.org/ns/docbook" class="important"><div class="admonition_header"><p><strong>Important</strong></p></div><div class="admonition"><div class="para">
15 All associate arrays must be declared as <code class="command">global</code>, regardless of whether the associate array is used in one or multiple probes.
16 </div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="commandlineargssect.html"><strong>Prev</strong>3.3.4. Command-Line Arguments</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="arrayoperators.html"><strong>Next</strong>3.5. Array Operations in SystemTap</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/commandlineargssect.html b/SystemTap_Beginners_Guide/commandlineargssect.html
index c3d7122a..b7a71ee5 100644
--- a/SystemTap_Beginners_Guide/commandlineargssect.html
+++ b/SystemTap_Beginners_Guide/commandlineargssect.html
@@ -1,9 +1,7 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.3.4. Command-Line Arguments</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="scriptconstructions.html" title="3.3. Basic SystemTap Handler Constructs" /><link rel="prev" href="handlerconditionalstatements.html" title="3.3.3. Conditional Statements" /><link rel="next" href="associativearrays.html" title="3.4. Associative Arrays" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="handlerconditionalstatements.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="associativearrays.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="commandlineargssect"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.3.4. Command-Line Arguments</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="scriptconstructions.html" title="3.3. Basic SystemTap Handler Constructs" /><link rel="prev" href="handlerconditionalstatements.html" title="3.3.3. Conditional Statements" /><link rel="next" href="associativearrays.html" title="3.4. Associative Arrays" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="handlerconditionalstatements.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="associativearrays.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="commandlineargssect">
3 ⁠</a>3.3.4. Command-Line Arguments</h3></div></div></div><a id="idm47748222640640" class="indexterm"></a><a id="idm47748188391648" class="indexterm"></a><a id="idm47748224280944" class="indexterm"></a><div class="para"> 3 ⁠</a>3.3.4. Command-Line Arguments</h3></div></div></div><a id="idm140174741569296" class="indexterm"></a><a id="idm140174736406400" class="indexterm"></a><a id="idm140174731145136" class="indexterm"></a><div class="para">A SystemTap script can also accept simple command-line arguments using a <code class="command">$</code> or <code class="command">@</code> immediately
4 A SystemTap script can also accept simple command-line arguments using a <code class="command">$</code> or <code class="command">@</code> immediately followed by the number of the argument on the command line. Use <code class="command">$</code> if you are expecting the user to enter an integer as a command-line argument, and <code class="command">@</code> if you are expecting a string. 4followed by the number of the argument on the command line. Use <code class="command">$</code> if you are expecting the user to enter an integer as a command-line argument, and <code class="command">@</code> if you are expecting a string.
5 </div><div class="example"><a id="commandlineargs"> 5</div><div class="example"><a id="commandlineargs">
6 ⁠</a><p class="title"><strong>Example 3.12. commandlineargs.stp</strong></p><div class="example-contents"><pre class="programlisting">probe kernel.function(@1) { } 6 ⁠</a><p class="title"><strong>Example 3.12. commandlineargs.stp</strong></p><div class="example-contents"><pre class="programlisting">probe kernel.function(@1) { }
7probe kernel.function(@1).return { }</pre></div></div><div class="para"> 7probe kernel.function(@1).return { }</pre></div></div><div class="para"><a class="xref" href="commandlineargssect.html#commandlineargs">Example 3.12, “commandlineargs.stp”</a> is similar to <a class="xref" href="scripts.html#wildcards">Example 3.1, “wildcards.stp”</a>, except that it allows you to pass the kernel function to be probed as a command-line argument (as in <code class="command">stap commandlineargs.stp <em class="replaceable">kernel function</em></code>). You can also specify the script to accept multiple command-line arguments, noting them as <code class="command">@1</code>, <code class="command">@2</code>, and so on, in the order they are entered by the user.</div><a id="idm140174731763408" class="indexterm"></a><a id="idm140174734637856" class="indexterm"></a><a id="idm140174735926784" class="indexterm"></a></div><ul class="docnav"><li class="previous"><a accesskey="p" href="handlerconditionalstatements.html"><strong>Prev</strong>3.3.3. Conditional Statements</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="associativearrays.html"><strong>Next</strong>3.4. Associative Arrays</a></li></ul></body></html> \ No newline at end of file
8 <a class="xref" href="commandlineargssect.html#commandlineargs">Example 3.12, “commandlineargs.stp”</a> is similar to <a class="xref" href="scripts.html#wildcards">Example 3.1, “wildcards.stp”</a>, except that it allows you to pass the kernel function to be probed as a command-line argument (as in <code class="command">stap commandlineargs.stp <em class="replaceable">kernel function</em></code>). You can also specify the script to accept multiple command-line arguments, noting them as <code class="command">@1</code>, <code class="command">@2</code>, and so on, in the order they are entered by the user.
9 </div><a id="idm47748213546192" class="indexterm"></a><a id="idm47748220251616" class="indexterm"></a><a id="idm47748187884320" class="indexterm"></a></div><ul class="docnav"><li class="previous"><a accesskey="p" href="handlerconditionalstatements.html"><strong>Prev</strong>3.3.3. Conditional Statements</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="associativearrays.html"><strong>Next</strong>3.4. Associative Arrays</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/cross-compiling.html b/SystemTap_Beginners_Guide/cross-compiling.html
index d3f19b09..4e5030a9 100644
--- a/SystemTap_Beginners_Guide/cross-compiling.html
+++ b/SystemTap_Beginners_Guide/cross-compiling.html
@@ -1,50 +1,114 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">2.2. Generating Instrumentation for Other Computers</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="using-systemtap.html" title="Chapter 2. Using SystemTap" /><link rel="prev" href="using-systemtap.html" title="Chapter 2. Using SystemTap" /><link rel="next" href="using-usage.html" title="2.3. Running SystemTap Scripts" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="using-systemtap.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="using-usage.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="cross-compiling"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">2.2. Generating Instrumentation for Other Computers</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="using-systemtap.html" title="Chapter 2. Using SystemTap" /><link rel="prev" href="using-systemtap.html" title="Chapter 2. Using SystemTap" /><link rel="next" href="using-usage.html" title="2.3. Running SystemTap Scripts" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="using-systemtap.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="using-usage.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="cross-compiling">
3 ⁠</a>2.2. Generating Instrumentation for Other Computers</h2></div></div></div><a id="idm47748175115200" class="indexterm"></a><a id="idm47748180372416" class="indexterm"></a><a id="idm47748219169648" class="indexterm"></a><a id="idm47748182745792" class="indexterm"></a><a id="idm47748185385072" class="indexterm"></a><a id="idm47748182734992" class="indexterm"></a><a id="idm47748187991056" class="indexterm"></a><a id="idm47748177242016" class="indexterm"></a><div class="para"> 3 ⁠</a>2.2. Generating Instrumentation for Other Computers</h2></div></div></div><a id="idm140174742893696" class="indexterm"></a><a id="idm140174743190784" class="indexterm"></a><a id="idm140174732341472" class="indexterm"></a><a id="idm140174732077056" class="indexterm"></a><a id="idm140174742875920" class="indexterm"></a><a id="idm140174737281360" class="indexterm"></a><a id="idm140174732990576" class="indexterm"></a><a id="idm140174737399184" class="indexterm"></a><div class="para">
4 When users run a SystemTap script, SystemTap builds a kernel module out of that script. SystemTap then loads the module into the kernel, allowing it to extract the specified data directly from the kernel (refer to <a class="xref" href="understanding-how-systemtap-works.html#systemtapsession">Procedure 3.1, “SystemTap Session”</a> in <a class="xref" href="understanding-how-systemtap-works.html#understanding-architecture-tools">Section 3.1, “Architecture”</a> for more information). 4 When users run a SystemTap script, SystemTap builds a kernel module out of
5 </div><div class="para"> 5 that script. SystemTap then loads the module into the kernel, allowing it to
6 Normally, however, SystemTap scripts can only be run on systems where SystemTap is deployed (as in <a class="xref" href="using-systemtap.html#using-setup">Section 2.1, “Installation and Setup”</a>). This could mean that if you want to run SystemTap on ten systems, you would need to deploy SystemTap on <span class="emphasis"><em>all</em></span> those systems. In some cases, this may be neither feasible nor desired. For instance, corporate policy may prohibit an administrator from installing RPM packages that provide compilers or debug information on specific machines, and thus prevent the deployment of SystemTap. To work around this problem, SystemTap allows you to use <em class="firstterm">cross-instrumentation</em>. 6 extract the specified data directly from the kernel (refer to
7 </div><div class="para"> 7 <a class="xref" href="understanding-how-systemtap-works.html#systemtapsession">Procedure 3.1, “SystemTap Session”</a> in
8 Cross-instrumentation is the process of generating SystemTap instrumentation module from a SystemTap script on one computer to be used on another computer. This process offers the following benefits: 8 <a class="xref" href="understanding-how-systemtap-works.html#understanding-architecture-tools">Section 3.1, “Architecture”</a> for more information).
9 </div><a id="idm47748181131648" class="indexterm"></a><a id="idm47748180548320" class="indexterm"></a><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"> 9 </div><div class="para">
10 The kernel information packages for various machines can be installed on a single <span class="emphasis"><em>host machine</em></span>. 10 Normally, however, SystemTap scripts can only be run on systems where SystemTap is deployed (as in <a class="xref" href="using-systemtap.html#using-setup">Section 2.1, “Installation and Setup”</a>). This could mean that if you want to run SystemTap on ten systems, you would need to deploy SystemTap on <span class="emphasis"><em>all</em></span> those systems. In some cases, this may be neither feasible nor desired. For instance, corporate policy may prohibit an administrator from installing RPM packages that provide compilers or debug information on specific machines, and thus prevent the deployment of SystemTap. To work around this problem, SystemTap allows you to use <em class="firstterm">cross-instrumentation</em>.
11 </div></li><li class="listitem"><div class="para"> 11 </div><div class="para">
12 Each <span class="emphasis"><em>target machine</em></span> only needs one RPM package to be installed in order to use the generated SystemTap instrumentation module: the <span class="package">systemtap-runtime</span> package. 12 Cross-instrumentation is the process of generating SystemTap instrumentation module from a SystemTap script on one computer to be used on another computer. This process offers the following benefits:
13 </div></li></ul></div><div class="para"> 13 </div><a id="idm140174739152928" class="indexterm"></a><a id="idm140174738746416" class="indexterm"></a><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
14 For the sake of simplicity, the following terms are used throughout this section: 14 The kernel information packages for various machines can be installed on a single <span class="emphasis"><em>host machine</em></span>.
15 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"> 15 </div></li><li class="listitem"><div class="para">
16 <a id="idm47748218643152" class="indexterm"></a> <a id="idm47748218643824" class="indexterm"></a> <span class="emphasis"><em>Instrumentation module</em></span> — the kernel module built from a SystemTap script. The <span class="emphasis"><em>SystemTap module</em></span> is built on the <span class="emphasis"><em>host system</em></span>, and will be loaded on the <span class="emphasis"><em>target kernel</em></span> of <span class="emphasis"><em>target system</em></span>. 16 Each <span class="emphasis"><em>target machine</em></span> only needs one RPM package to be installed in order to use the generated SystemTap instrumentation module: the <span class="package">systemtap-runtime</span> package.
17 </div></li><li class="listitem"><div class="para"> 17 </div></li></ul></div><div class="para">
18 <a id="idm47748187854288" class="indexterm"></a> <a id="idm47748233549152" class="indexterm"></a> <span class="emphasis"><em>Host system</em></span> — the system on which you compile the <span class="emphasis"><em>instrumentation modules</em></span> from SystemTap scripts in order to load them on <span class="emphasis"><em>target systems</em></span>. 18 For the sake of simplicity, the following terms are used
19 </div></li><li class="listitem"><div class="para"> 19 throughout this section:
20 <a id="idm47748228595392" class="indexterm"></a> <a id="idm47748175201792" class="indexterm"></a> <span class="emphasis"><em>Target system</em></span> — the system for which you are building the <span class="emphasis"><em>instrumentation modules</em></span> from SystemTap scripts. 20 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
21 </div></li><li class="listitem"><div class="para"> 21<a id="idm140174732470624" class="indexterm"></a>
22 <a id="idm47748174943552" class="indexterm"></a> <a id="idm47748217162736" class="indexterm"></a> <span class="emphasis"><em>Target kernel</em></span> — the kernel of the <span class="emphasis"><em>target system</em></span>. This is the kernel on which you intend to load or run the <span class="emphasis"><em>instrumentation module</em></span>. 22
23 </div></li></ul></div><div class="para"> 23<a id="idm140174732056944" class="indexterm"></a>
24 To configure a host system and target systems, complete the following steps: 24 <span class="emphasis"><em>Instrumentation module</em></span> — the
25 </div><div xmlns:d="http://docbook.org/ns/docbook" class="procedure"><a id="preppingxcompile"> 25 kernel module built from a SystemTap script. The
26 ⁠</a><a id="idm47748180549776" class="indexterm"></a><a id="idm47748176283168" class="indexterm"></a><a id="idm47748175189280" class="indexterm"></a><ol class="1"><li class="step"><div class="para"> 26 <span class="emphasis"><em>SystemTap module</em></span> is built on the <span class="emphasis"><em>host
27 Install the <span class="package">systemtap-runtime</span> package on each <span class="emphasis"><em>target system</em></span>. 27 system</em></span>, and will be loaded on the <span class="emphasis"><em>target
28 </div></li><li class="step"><div class="para"> 28 kernel</em></span> of <span class="emphasis"><em>target
29 Determine the kernel running on each <span class="emphasis"><em>target system</em></span> by running the <code class="command">uname -r</code> command on each of these systems. 29 system</em></span>.
30 </div></li><li class="step"><div class="para"> 30 </div></li><li class="listitem"><div class="para">
31 Install SystemTap on the <span class="emphasis"><em>host system</em></span>. You will be building the <span class="emphasis"><em>instrumentation module</em></span> for the <span class="emphasis"><em>target systems</em></span> on the <span class="emphasis"><em>host system</em></span>. For instructions on how to install SystemTap, refer to <a class="xref" href="using-systemtap.html#installproper">Section 2.1.1, “Installing SystemTap”</a>. 31<a id="idm140174742513568" class="indexterm"></a>
32 </div></li><li class="step"><div class="para"> 32
33 Using the <span class="emphasis"><em>target kernel</em></span> version determined earlier, install the <span class="emphasis"><em>target kernel</em></span> and related RPM packages on the <span class="emphasis"><em>host system</em></span> as described in <a class="xref" href="using-systemtap.html#install-kinfo">Section 2.1.2, “Installing Required Kernel Information Packages Manually”</a>. If multiple <span class="emphasis"><em>target systems</em></span> use different <span class="emphasis"><em>target kernels</em></span>, repeat this step for each different kernel used on the <span class="emphasis"><em>target systems</em></span>. 33<a id="idm140174733313088" class="indexterm"></a>
34 </div></li></ol></div><div class="para"> 34 <span class="emphasis"><em>Host system</em></span> — the system on
35 After completing these steps, you can now build the <span class="emphasis"><em>instrumentation module</em></span> (for any <span class="emphasis"><em>target system</em></span>) on the <span class="emphasis"><em>host system</em></span>. 35 which you compile the <span class="emphasis"><em>instrumentation modules</em></span> from SystemTap
36 </div><div class="para"> 36 scripts in order to load them on <span class="emphasis"><em>target
37 To build the <span class="emphasis"><em>instrumentation module</em></span>, run the following command on the <span class="emphasis"><em>host system</em></span> (be sure to specify the appropriate values): 37 systems</em></span>.
38 </div><pre class="screen"><code class="command">stap -r <em class="replaceable">kernel_version</em> <em class="replaceable">script</em> -m <em class="replaceable">module_name</em></code></pre><div class="para"> 38 </div></li><li class="listitem"><div class="para">
39 Here, <em class="replaceable">kernel_version</em> refers to the version of the <span class="emphasis"><em>target kernel</em></span> (the output of the <code class="command">uname -r</code> command on the target machine), <em class="replaceable">script</em> refers to the script to be converted into the <span class="emphasis"><em>instrumentation module</em></span>, and <em class="replaceable">module_name</em> is the desired name of the <span class="emphasis"><em>instrumentation module</em></span>. 39<a id="idm140174731873472" class="indexterm"></a>
40 </div><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><a id="idm47748218143712" class="indexterm"></a><a id="idm47748220425232" class="indexterm"></a><a id="idm47748220424304" class="indexterm"></a><div class="para"> 40
41 To determine the architecture notation of a running kernel, you can run the following command: 41<a id="idm140174732518128" class="indexterm"></a>
42 </div><pre class="screen"><code class="command">uname -m</code></pre></div></div><div class="para"> 42
43 Once the <span class="emphasis"><em>instrumentation module</em></span> is compiled, copy it to the <span class="emphasis"><em>target system</em></span> and then load it using: 43 <span class="emphasis"><em>Target system</em></span> — the system for which you
44 </div><pre class="screen"><code class="command">staprun <em class="replaceable">module_name</em>.ko</code></pre><div class="para"> 44 are building the <span class="emphasis"><em>instrumentation modules</em></span> from
45 For example, to create the <span class="emphasis"><em>instrumentation module</em></span> <code class="filename">simple.ko</code> from a SystemTap script named <code class="filename">simple.stp</code> for the <span class="emphasis"><em>target kernel</em></span> 2.6.18-92.1.10.el5 (on x86_64 architecture), use the following command: 45 SystemTap scripts.
46 </div><pre class="screen"><code class="command">stap -r 2.6.18-92.1.10.el5 -e 'probe vfs.read {exit()}' -m simple</code></pre><div class="para"> 46 </div></li><li class="listitem"><div class="para">
47 This creates a module named <code class="filename">simple.ko</code>. To use this <span class="emphasis"><em>instrumentation module</em></span>, copy it to the <span class="emphasis"><em>target system</em></span> and run the following command (on the <span class="emphasis"><em>target system</em></span>): 47<a id="idm140174737032464" class="indexterm"></a>
48 </div><pre class="screen"><code class="command">staprun simple.ko</code></pre><div xmlns:d="http://docbook.org/ns/docbook" class="important"><div class="admonition_header"><p><strong>Important</strong></p></div><div class="admonition"><div class="para"> 48
49 The <span class="emphasis"><em>host system</em></span> must be the same architecture and running the same distribution of Linux as the <span class="emphasis"><em>target system</em></span> in order for the built <span class="emphasis"><em>instrumentation module</em></span> to work. 49<a id="idm140174742536096" class="indexterm"></a>
50 </div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="using-systemtap.html"><strong>Prev</strong>Chapter 2. Using SystemTap</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="using-usage.html"><strong>Next</strong>2.3. Running SystemTap Scripts</a></li></ul></body></html> \ No newline at end of file 50 <span class="emphasis"><em>Target kernel</em></span> — the kernel of
51 the <span class="emphasis"><em>target system</em></span>. This is the kernel on which
52 you intend to load or run the <span class="emphasis"><em>instrumentation
53 module</em></span>.
54 </div></li></ul></div><div class="para">
55 To configure a host system and target systems, complete the following steps:
56 </div><div xmlns:d="http://docbook.org/ns/docbook" class="procedure"><a id="preppingxcompile">
57 ⁠</a><a id="idm140174733008624" class="indexterm"></a><a id="idm140174731655520" class="indexterm"></a><a id="idm140174732993072" class="indexterm"></a><ol class="1"><li class="step"><div class="para">
58 Install the <span class="package">systemtap-runtime</span> package on each
59 <span class="emphasis"><em>target system</em></span>.
60 </div></li><li class="step"><div class="para">
61 Determine the kernel running on each <span class="emphasis"><em>target system</em></span>
62 by running the <code class="command">uname -r</code> command on each of these systems.
63 </div></li><li class="step"><div class="para">
64 Install SystemTap on the <span class="emphasis"><em>host system</em></span>.
65 You will be building the <span class="emphasis"><em>instrumentation
66 module</em></span> for the <span class="emphasis"><em>target
67 systems</em></span> on the <span class="emphasis"><em>host system</em></span>.
68 For instructions on how to install SystemTap, refer
69 to <a class="xref" href="using-systemtap.html#installproper">Section 2.1.1, “Installing SystemTap”</a>.
70 </div></li><li class="step"><div class="para">
71 Using the <span class="emphasis"><em>target kernel</em></span> version determined earlier,
72 install the <span class="emphasis"><em>target kernel</em></span> and related RPM packages on the
73 <span class="emphasis"><em>host system</em></span> as described in <a class="xref" href="using-systemtap.html#install-kinfo">Section 2.1.2, “Installing Required Kernel Information Packages Manually”</a>. If multiple <span class="emphasis"><em>target
74 systems</em></span> use different <span class="emphasis"><em>target kernels</em></span>,
75 repeat this step for each different kernel used on the
76 <span class="emphasis"><em>target systems</em></span>.
77 </div></li></ol></div><div class="para">
78 After completing these steps, you can now build the
79 <span class="emphasis"><em>instrumentation module</em></span> (for any <span class="emphasis"><em>target
80 system</em></span>) on the <span class="emphasis"><em>host system</em></span>.
81 </div><div class="para">
82 To build the <span class="emphasis"><em>instrumentation module</em></span>, run the following
83 command on the <span class="emphasis"><em>host system</em></span> (be sure to specify the
84 appropriate values):
85 </div><pre class="screen"><code class="command">stap -r <em class="replaceable">kernel_version</em> <em class="replaceable">script</em> -m <em class="replaceable">module_name</em></code></pre><div class="para">
86 Here, <em class="replaceable">kernel_version</em> refers to
87 the version of the <span class="emphasis"><em>target kernel</em></span> (the output of
88 the <code class="command">uname -r</code> command on the target machine),
89 <em class="replaceable">script</em> refers to the script to
90 be converted into the <span class="emphasis"><em>instrumentation module</em></span>, and
91 <em class="replaceable">module_name</em> is the desired
92 name of the <span class="emphasis"><em>instrumentation module</em></span>.
93 </div><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><a id="idm140174734784816" class="indexterm"></a><a id="idm140174742497936" class="indexterm"></a><a id="idm140174742496752" class="indexterm"></a><div class="para">
94 To determine the architecture notation of a running kernel, you can run the following command:
95 </div><pre class="screen"><code class="command">uname -m</code></pre></div></div><div class="para">
96 Once the <span class="emphasis"><em>instrumentation module</em></span> is compiled, copy
97 it to the <span class="emphasis"><em>target system</em></span> and then load it using:
98 </div><pre class="screen"><code class="command">staprun <em class="replaceable">module_name</em>.ko</code></pre><div class="para">
99 For example, to create the
100 <span class="emphasis"><em>instrumentation module</em></span> <code class="filename">simple.ko</code>
101 from a SystemTap script named
102 <code class="filename">simple.stp</code> for the <span class="emphasis"><em>target kernel</em></span>
103 2.6.18-92.1.10.el5 (on x86_64 architecture), use the following command:
104 </div><pre class="screen"><code class="command">stap -r 2.6.18-92.1.10.el5 -e 'probe vfs.read {exit()}' -m simple</code></pre><div class="para">
105 This creates a module named <code class="filename">simple.ko</code>. To use this
106 <span class="emphasis"><em>instrumentation module</em></span>,
107 copy it to the <span class="emphasis"><em>target system</em></span> and run the following
108 command (on the <span class="emphasis"><em>target system</em></span>):
109 </div><pre class="screen"><code class="command">staprun simple.ko</code></pre><div xmlns:d="http://docbook.org/ns/docbook" class="important"><div class="admonition_header"><p><strong>Important</strong></p></div><div class="admonition"><div class="para">
110 The <span class="emphasis"><em>host system</em></span> must be the same architecture and
111 running the same distribution of Linux as the <span class="emphasis"><em>target
112 system</em></span> in order for the built <span class="emphasis"><em>instrumentation
113 module</em></span> to work.
114 </div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="using-systemtap.html"><strong>Prev</strong>Chapter 2. Using SystemTap</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="using-usage.html"><strong>Next</strong>2.3. Running SystemTap Scripts</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/errors.html b/SystemTap_Beginners_Guide/errors.html
index 24cc7d49..39893530 100644
--- a/SystemTap_Beginners_Guide/errors.html
+++ b/SystemTap_Beginners_Guide/errors.html
@@ -1,67 +1,87 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Chapter 6. Understanding SystemTap Errors</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="futexcontentionsect.html" title="5.4. Identifying Contended User-Space Locks" /><link rel="next" href="runtimeerror.html" title="6.2. Runtime Errors and Warnings" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="futexcontentionsect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="runtimeerror.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" lang="en-US"><div class="titlepage"><div><div><h1 class="title"><a id="errors"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Chapter 6. Understanding SystemTap Errors</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="futexcontentionsect.html" title="5.4. Identifying Contended User-Space Locks" /><link rel="next" href="runtimeerror.html" title="6.2. Runtime Errors and Warnings" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="futexcontentionsect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="runtimeerror.html"><strong>Next</strong></a></li></ul><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="errors">
3 ⁠</a>Chapter 6. Understanding SystemTap Errors</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="errors.html#parsetype">6.1. Parse and Semantic Errors</a></span></dt><dt><span class="section"><a href="runtimeerror.html">6.2. Runtime Errors and Warnings</a></span></dt></dl></div><div class="para"> 3 ⁠</a>Chapter 6. Understanding SystemTap Errors</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="errors.html#parsetype">6.1. Parse and Semantic Errors</a></span></dt><dt><span class="section"><a href="runtimeerror.html">6.2. Runtime Errors and Warnings</a></span></dt></dl></div><div class="para">This chapter explains the most common errors you may encounter while using SystemTap.</div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="parsetype">
4 This chapter explains the most common errors you may encounter while using SystemTap. 4 ⁠</a>6.1. Parse and Semantic Errors</h2></div></div></div><a id="idm140174734958512" class="indexterm"></a><a id="idm140174741655536" class="indexterm"></a><a id="idm140174732151296" class="indexterm"></a><div class="para">Parse and semantic errors occur while SystemTap attempts to parse and
5 </div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="parsetype"> 5 translate the script into C, before converting it into a kernel
6 ⁠</a>6.1. Parse and Semantic Errors</h2></div></div></div><a id="idm47748183399792" class="indexterm"></a><a id="idm47748176856144" class="indexterm"></a><a id="idm47748226800256" class="indexterm"></a><div class="para"> 6 module. For example, type errors result from operations that assign invalid
7 Parse and semantic errors occur while SystemTap attempts to parse and translate the script into C, before converting it into a kernel module. For example, type errors result from operations that assign invalid values to variables or arrays. 7 values to variables or arrays.
8 </div><h3><a id="idm47748185502320"> 8</div><h3><a id="idm140174736042304">
9 ⁠</a>parse error: expected <em class="replaceable">foo</em>, saw <em class="replaceable">bar</em></h3><a id="idm47748186253968" class="indexterm"></a><a id="idm47748219296512" class="indexterm"></a><a id="idm47748226197776" class="indexterm"></a><a id="idm47748182247056" class="indexterm"></a><a id="idm47748228926304" class="indexterm"></a><a id="idm47748229723232" class="indexterm"></a><a id="idm47748229721344" class="indexterm"></a><a id="idm47748234460416" class="indexterm"></a><a id="idm47748234458272" class="indexterm"></a><div class="para"> 9 ⁠</a>parse error: expected <em class="replaceable">foo</em>, saw <em class="replaceable">bar</em></h3><a id="idm140174742720048" class="indexterm"></a><a id="idm140174741054656" class="indexterm"></a><a id="idm140174731845856" class="indexterm"></a><a id="idm140174734099968" class="indexterm"></a><a id="idm140174736151968" class="indexterm"></a><a id="idm140174742915296" class="indexterm"></a><a id="idm140174742913216" class="indexterm"></a><a id="idm140174743448784" class="indexterm"></a><a id="idm140174743446400" class="indexterm"></a><div class="para">The script contains a grammatical or typographical error. SystemTap detected the type of the construct that is incorrect, given the context of the probe.
10 The script contains a grammatical or typographical error. SystemTap detected the type of the construct that is incorrect, given the context of the probe. 10</div><div class="para">
11 </div><div class="para"> 11 For example, the following invalid SystemTap script is missing its probe
12 For example, the following invalid SystemTap script is missing its probe handlers: 12 handlers:
13 </div><div class="para"> 13</div><div class="para">
14
15<pre class="programlisting">probe vfs.read 14<pre class="programlisting">probe vfs.read
16probe vfs.write 15probe vfs.write
17</pre> 16</pre>
18 </div><div class="para"> 17</div><div class="para">
19 An attempt to run this SystemTap script fails with the following error message showing that the parser expects something other than the <code class="command">probe</code> keyword in column 1 of line 2: 18 An attempt to run this SystemTap script fails with the following error
20 </div><div class="para"> 19 message showing that the parser expects
21 20 something other than the <code class="command">probe</code> keyword in
21 column 1 of line 2:
22</div><div class="para">
22<pre class="programlisting">parse error: expected one of '. , ( ? ! { = +=' 23<pre class="programlisting">parse error: expected one of '. , ( ? ! { = +='
23 saw: keyword at perror.stp:2:1 24 saw: keyword at perror.stp:2:1
241 parse error(s).</pre> 251 parse error(s).</pre>
25 </div><h3><a id="idm47748182252448"> 26</div><h3><a id="idm140174739581968">
26 ⁠</a>parse error: embedded code in unprivileged script</h3><a id="idm47748182251680" class="indexterm"></a><a id="idm47748182249824" class="indexterm"></a><a id="idm47748228545888" class="indexterm"></a><a id="idm47748228544032" class="indexterm"></a><a id="idm47748228542176" class="indexterm"></a><a id="idm47748228540320" class="indexterm"></a><div class="para"> 27 ⁠</a>parse error: embedded code in unprivileged script</h3><a id="idm140174739580992" class="indexterm"></a><a id="idm140174739578896" class="indexterm"></a><a id="idm140174739576816" class="indexterm"></a><a id="idm140174740034672" class="indexterm"></a><a id="idm140174740032576" class="indexterm"></a><a id="idm140174733393680" class="indexterm"></a><div class="para">
27 The script contains unsafe embedded C code, that is, blocks of code surrounded by <code class="command">%{</code> and <code class="command">%}</code>. SystemTap allows you to embed C code in a script, which is useful if there are no tapsets to suit your purposes. However, embedded C constructs are not safe and SystemTap reports this error to warn you if such constructs appear in the script. 28 The script contains unsafe embedded C code, that is, blocks of code
28 </div><a id="idm47748224695376" class="indexterm"></a><a id="idm47748224693488" class="indexterm"></a><a id="idm47748224691568" class="indexterm"></a><a id="idm47748180987888" class="indexterm"></a><div class="para"> 29 surrounded by <code class="command">%{</code> and <code class="command">%}</code>. SystemTap
29 If you are sure that any similar constructs in the script are safe <span class="emphasis"><em>and</em></span> you are a member of the <code class="systemitem">stapdev</code> group (or have root privileges), run the script in "guru" mode by using the <code class="option">-g</code> option: 30 allows you to embed C code in a script, which is useful if there are no
30 </div><pre class="screen"><code class="command">stap -g <em class="replaceable">script</em></code></pre><h3><a id="idm47748180983024"> 31 tapsets to suit your purposes. However, embedded C constructs are not
31 ⁠</a>semantic error: type mismatch for identifier '<em class="replaceable">foo</em>' ... string vs. long</h3><a id="idm47748180981776" class="indexterm"></a><a id="idm47748176173088" class="indexterm"></a><a id="idm47748176171200" class="indexterm"></a><a id="idm47748176169344" class="indexterm"></a><a id="idm47748176167488" class="indexterm"></a><div class="para"> 32 safe and SystemTap reports this error to warn you if such constructs
32 The function <em class="replaceable">foo</em> in the script used the wrong type (such as <code class="literal">%s</code> or <code class="literal">%d</code>). In the following example, the format specifier should be <code class="literal">%s</code> and not <code class="literal">%d</code>, because the <code class="function">execname()</code> function returns a string: 33 appear in the script.
33 </div><pre class="programlisting">probe syscall.open 34</div><a id="idm140174733389312" class="indexterm"></a><a id="idm140174736849920" class="indexterm"></a><a id="idm140174736847856" class="indexterm"></a><a id="idm140174736845776" class="indexterm"></a><div class="para">
35 If you are sure that any similar constructs in the script are safe
36 <span class="emphasis"><em>and</em></span> you
37 are a member of the <code class="systemitem">stapdev</code>
38 group (or have root privileges),
39 run the script in "guru" mode by using the <code class="option">-g</code> option:
40</div><pre class="screen"><code class="command">stap -g <em class="replaceable">script</em></code></pre><h3><a id="idm140174743207952">
41 ⁠</a>semantic error: type mismatch for identifier '<em class="replaceable">foo</em>' ... string vs. long</h3><a id="idm140174737178880" class="indexterm"></a><a id="idm140174737176784" class="indexterm"></a><a id="idm140174737174704" class="indexterm"></a><a id="idm140174737391616" class="indexterm"></a><a id="idm140174737389632" class="indexterm"></a><div class="para">
42 The function <em class="replaceable">foo</em> in the
43 script used the wrong type
44 (such as <code class="literal">%s</code> or <code class="literal">%d</code>).
45 In the following example, the format specifier should be
46 <code class="literal">%s</code> and not <code class="literal">%d</code>, because the
47 <code class="function">execname()</code> function returns a string:
48</div><pre class="programlisting">probe syscall.open
34{ 49{
35 printf ("%d(%d) open\n", execname(), pid()) 50 printf ("%d(%d) open\n", execname(), pid())
36}</pre><h3><a id="idm47748230994512"> 51}</pre><h3><a id="idm140174734201408">
37 ⁠</a>semantic error: unresolved type for identifier '<em class="replaceable">foo</em>'</h3><a id="idm47748230993264" class="indexterm"></a><a id="idm47748219087808" class="indexterm"></a><a id="idm47748219085920" class="indexterm"></a><a id="idm47748219084064" class="indexterm"></a><div class="para"> 52 ⁠</a>semantic error: unresolved type for identifier '<em class="replaceable">foo</em>'</h3><a id="idm140174741391296" class="indexterm"></a><a id="idm140174741389200" class="indexterm"></a><a id="idm140174741387120" class="indexterm"></a><a id="idm140174732941664" class="indexterm"></a><div class="para">The identifier (variable) was used, but no type (integer or
38 The identifier (variable) was used, but no type (integer or string) could be determined. This occurs, for instance, if you use a variable in a <code class="command">printf</code> statement while the script never assigns a value to the variable. 53 string) could be determined. This occurs, for instance, if you use a
39 </div><h3><a id="idm47748219081152"> 54 variable in a <code class="command">printf</code> statement while
40 ⁠</a>semantic error: Expecting symbol or array index expression</h3><a id="idm47748186608240" class="indexterm"></a><a id="idm47748186606384" class="indexterm"></a><a id="idm47748186604496" class="indexterm"></a><a id="idm47748186602640" class="indexterm"></a><div class="para"> 55 the script never assigns a value to the variable.</div><h3><a id="idm140174732938416">
41 SystemTap could not assign a value to a variable or to a location in an array. The destination for the assignment is not a valid destination. The following example code would generate this error: 56 ⁠</a>semantic error: Expecting symbol or array index expression</h3><a id="idm140174742653872" class="indexterm"></a><a id="idm140174742651776" class="indexterm"></a><a id="idm140174742649696" class="indexterm"></a><a id="idm140174739324368" class="indexterm"></a><div class="para">
42 </div><pre class="programlisting">probe begin { printf("x") = 1 } 57 SystemTap could not assign a value to a variable or to a location in an
43</pre><h3><a id="idm47748230797120"> 58 array. The destination for the assignment is not a valid destination.
44 ⁠</a>while searching for arity <em class="replaceable">N</em> function, semantic error: unresolved function call</h3><a id="idm47748230795904" class="indexterm"></a><a id="idm47748230794048" class="indexterm"></a><a id="idm47748230792160" class="indexterm"></a><a id="idm47748177323552" class="indexterm"></a><a id="idm47748177321696" class="indexterm"></a><div class="para"> 59 The following example code would generate this error:
45 A function call or array index expression in the script used an invalid number of arguments or parameters. In SystemTap, <em class="firstterm">arity</em> can either refer to the number of indices for an array, or the number of parameters to a function. 60</div><pre class="programlisting">probe begin { printf("x") = 1 }
46 </div><h3><a id="idm47748177318800"> 61</pre><h3><a id="idm140174739320560">
47 ⁠</a>semantic error: array locals not supported, missing global declaration?</h3><a id="idm47748177317872" class="indexterm"></a><a id="idm47748176341872" class="indexterm"></a><a id="idm47748176339984" class="indexterm"></a><a id="idm47748176338064" class="indexterm"></a><a id="idm47748176336176" class="indexterm"></a><div class="para"> 62 ⁠</a>while searching for arity <em class="replaceable">N</em> function, semantic error: unresolved function call</h3><a id="idm140174738877360" class="indexterm"></a><a id="idm140174738875264" class="indexterm"></a><a id="idm140174738873184" class="indexterm"></a><a id="idm140174741591504" class="indexterm"></a><a id="idm140174741589408" class="indexterm"></a><div class="para">A function call or array index expression in the script used an invalid
48 The script used an array operation without declaring the array as a global variable (global variables can be declared after their use in SystemTap scripts). Similar messages appear if an array is used, but with inconsistent arities. 63 number of arguments or parameters. In SystemTap,
49 </div><h3><a id="idm47748181845664"> 64 <em class="firstterm">arity</em> can either refer to the number of indices
50 ⁠</a>semantic error: variable '<em class="replaceable">foo</em>' modified during 'foreach' iteration</h3><a id="idm47748181844448" class="indexterm"></a><a id="idm47748181842592" class="indexterm"></a><a id="idm47748181840704" class="indexterm"></a><a id="idm47748226093920" class="indexterm"></a><div class="para"> 65 for an array, or the number of parameters to a function.</div><h3><a id="idm140174736017200">
51 The array <em class="replaceable">foo</em> is being modified (being assigned to or deleted from) within an active <code class="command">foreach</code> loop. This error also displays if an operation within the script performs a function call within the <code class="command">foreach</code> loop. 66 ⁠</a>semantic error: array locals not supported, missing global declaration?</h3><a id="idm140174736016224" class="indexterm"></a><a id="idm140174736014128" class="indexterm"></a><a id="idm140174736012048" class="indexterm"></a><a id="idm140174736484032" class="indexterm"></a><a id="idm140174736481952" class="indexterm"></a><div class="para">The script used an array operation without declaring the array as
52 </div><h3><a id="idm47748226090208"> 67 a global variable (global variables can be declared after their use in
53 ⁠</a>semantic error: probe point mismatch at position <em class="replaceable">N</em>, while resolving probe point <em class="replaceable">foo</em></h3><a id="idm47748226088512" class="indexterm"></a><a id="idm47748226086624" class="indexterm"></a><a id="idm47748175427136" class="indexterm"></a><a id="idm47748175425248" class="indexterm"></a><div class="para"> 68 SystemTap scripts). Similar messages appear if an array is used, but with inconsistent arities.</div><h3><a id="idm140174739493600">
54 SystemTap did not understand what the event or SystemTap function <em class="replaceable">foo</em> refers to. This usually means that SystemTap could not find a match for <em class="replaceable">foo</em> in the tapset library. <em class="replaceable">N</em> refers to the line and column of the error. 69 ⁠</a>semantic error: variable '<em class="replaceable">foo</em>' modified during 'foreach' iteration</h3><a id="idm140174739492112" class="indexterm"></a><a id="idm140174739490016" class="indexterm"></a><a id="idm140174730711440" class="indexterm"></a><a id="idm140174730709456" class="indexterm"></a><div class="para">The array <em class="replaceable">foo</em> is being modified (being assigned to or deleted from) within an active <code class="command">foreach</code> loop. This error also displays if an operation within the script performs a function call within the <code class="command">foreach</code> loop.</div><h3><a id="idm140174732190576">
55 </div><h3><a id="idm47748218590576"> 70 ⁠</a>semantic error: probe point mismatch at position <em class="replaceable">N</em>, while resolving probe point <em class="replaceable">foo</em></h3><a id="idm140174732188800" class="indexterm"></a><a id="idm140174732186720" class="indexterm"></a><a id="idm140174739004240" class="indexterm"></a><a id="idm140174739002160" class="indexterm"></a><div class="para">SystemTap did not understand what the event or SystemTap function
56 ⁠</a>semantic error: no match for probe point, while resolving probe point <em class="replaceable">foo</em></h3><a id="idm47748218589248" class="indexterm"></a><a id="idm47748218587392" class="indexterm"></a><a id="idm47748218585504" class="indexterm"></a><a id="idm47748218583648" class="indexterm"></a><a id="idm47748228618848" class="indexterm"></a><div class="para"> 71 <em class="replaceable">foo</em> refers
57 SystemTap could not resolve the events or handler function <em class="replaceable">foo</em> for a variety of reasons. This error occurs when the script contains the event <code class="command">kernel.function("<em class="replaceable">something</em>")</code>, and <em class="replaceable">something</em> does not exist. In some cases, the error could also mean the script contains an invalid kernel file name or source line number. 72 to. This usually means that SystemTap could not find a match for
58 </div><h3><a id="idm47748228614464"> 73 <em class="replaceable">foo</em> in the
59 ⁠</a>semantic error: unresolved target-symbol expression</h3><a id="idm47748228613616" class="indexterm"></a><a id="idm47748228525088" class="indexterm"></a><a id="idm47748228523200" class="indexterm"></a><a id="idm47748228521344" class="indexterm"></a><a id="idm47748228519488" class="indexterm"></a><div class="para"> 74 tapset library. <em class="replaceable">N</em> refers to the
60 A handler in the script references a target variable, but the value of the variable could not be resolved. This error could also mean that a handler is referencing a target variable that is not valid in the context when it was referenced. This may be a result of compiler optimization of the generated code. 75 line and column of
61 </div><h3><a id="idm47748224959040"> 76 the error.</div><h3><a id="idm140174743246560">
62 ⁠</a>semantic error: libdwfl failure </h3><a id="idm47748224958112" class="indexterm"></a><a id="idm47748224956224" class="indexterm"></a><a id="idm47748224954304" class="indexterm"></a><a id="idm47748224952416" class="indexterm"></a><div class="para"> 77 ⁠</a>semantic error: no match for probe point, while resolving probe point <em class="replaceable">foo</em></h3><a id="idm140174743245296" class="indexterm"></a><a id="idm140174731526176" class="indexterm"></a><a id="idm140174731524096" class="indexterm"></a><a id="idm140174731522000" class="indexterm"></a><a id="idm140174742124960" class="indexterm"></a><div class="para">SystemTap could not resolve the events or handler function <em class="replaceable">foo</em> for a variety of reasons. This error occurs when the script contains the event <code class="command">kernel.function("<em class="replaceable">something</em>")</code>, and <em class="replaceable">something</em> does not exist. In some cases, the error could also mean the script contains an invalid kernel file name or source line number.</div><h3><a id="idm140174742120304">
63 There was a problem processing the debugging information. In most cases, this error results from the installation of a <span class="package">kernel-debuginfo</span> package whose version does not match the probed kernel exactly. The installed <span class="package">kernel-debuginfo</span> package itself may have some consistency or correctness problems. 78 ⁠</a>semantic error: unresolved target-symbol expression</h3><a id="idm140174730806224" class="indexterm"></a><a id="idm140174730804128" class="indexterm"></a><a id="idm140174730802048" class="indexterm"></a><a id="idm140174733019424" class="indexterm"></a><a id="idm140174733017328" class="indexterm"></a><div class="para">A handler in the script references a target variable, but the
64 </div><h3><a id="idm47748233343072"> 79 value of the variable could not be resolved. This error could also mean
65 ⁠</a>semantic error: cannot find <em class="replaceable">foo</em> debuginfo</h3><div class="para"> 80 that a handler is referencing a target variable that is not valid
66 SystemTap could not find a suitable <span class="package">kernel-debuginfo</span> package. 81 in the context when it was referenced. This may be a result of compiler
67 </div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="futexcontentionsect.html"><strong>Prev</strong>5.4. Identifying Contended User-Space Locks</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="runtimeerror.html"><strong>Next</strong>6.2. Runtime Errors and Warnings</a></li></ul></body></html> \ No newline at end of file 82 optimization of the generated code.</div><h3><a id="idm140174743680816">
83 ⁠</a>semantic error: libdwfl failure </h3><a id="idm140174743679744" class="indexterm"></a><a id="idm140174743677664" class="indexterm"></a><a id="idm140174743675600" class="indexterm"></a><a id="idm140174733602976" class="indexterm"></a><div class="para">There was a problem processing the debugging information. In most
84 cases, this error results from the installation of a
85 <span class="package">kernel-debuginfo</span> package whose version does not match
86 the probed kernel exactly. The installed <span class="package">kernel-debuginfo</span> package itself may have some consistency or correctness problems.</div><h3><a id="idm140174733599504">
87 ⁠</a>semantic error: cannot find <em class="replaceable">foo</em> debuginfo</h3><div class="para">SystemTap could not find a suitable <span class="package">kernel-debuginfo</span> package.</div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="futexcontentionsect.html"><strong>Prev</strong>5.4. Identifying Contended User-Space Locks</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="runtimeerror.html"><strong>Next</strong>6.2. Runtime Errors and Warnings</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/futexcontentionsect.html b/SystemTap_Beginners_Guide/futexcontentionsect.html
index b7af5eea..3a0f43dd 100644
--- a/SystemTap_Beginners_Guide/futexcontentionsect.html
+++ b/SystemTap_Beginners_Guide/futexcontentionsect.html
@@ -1,13 +1,15 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.4. Identifying Contended User-Space Locks</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="useful-systemtap-scripts.html" title="Chapter 5. Useful SystemTap Scripts" /><link rel="prev" href="syscallsbyprocpidsect.html" title="5.3.6. Tracking System Call Volume Per Process" /><link rel="next" href="errors.html" title="Chapter 6. Understanding SystemTap Errors" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="syscallsbyprocpidsect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="errors.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="futexcontentionsect"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.4. Identifying Contended User-Space Locks</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="useful-systemtap-scripts.html" title="Chapter 5. Useful SystemTap Scripts" /><link rel="prev" href="syscallsbyprocpidsect.html" title="5.3.6. Tracking System Call Volume Per Process" /><link rel="next" href="errors.html" title="Chapter 6. Understanding SystemTap Errors" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="syscallsbyprocpidsect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="errors.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="futexcontentionsect">
3 ⁠</a>5.4. Identifying Contended User-Space Locks</h2></div></div></div><a id="idm47748224431248" class="indexterm"></a><a id="idm47748219947904" class="indexterm"></a><a id="idm47748219946528" class="indexterm"></a><a id="idm47748220346032" class="indexterm"></a><div class="para"> 3 ⁠</a>5.4. Identifying Contended User-Space Locks</h2></div></div></div><a id="idm140174734604448" class="indexterm"></a><a id="idm140174733328096" class="indexterm"></a><a id="idm140174742940144" class="indexterm"></a><a id="idm140174740013840" class="indexterm"></a><div class="para">This section describes how to identify contended
4 This section describes how to identify contended user-space locks throughout the system within a specific time period. The ability to identify contended user-space locks can help you investigate poor program performance that you suspect may be caused by <code class="command">futex</code> contentions. 4user-space locks throughout the system within a specific time
5 </div><a id="idm47748231006800" class="indexterm"></a><a id="idm47748218192640" class="indexterm"></a><a id="idm47748226934416" class="indexterm"></a><a id="idm47748182282176" class="indexterm"></a><a id="idm47748186362800" class="indexterm"></a><div class="para"> 5period. The ability to identify contended user-space locks can help
6 Simply put, <code class="command">futex</code> contention occurs when multiple processes are trying to access the same lock variable at the same time. This can result in a poor performance because the lock serializes execution; one process obtains the lock while the other processes must wait for the lock variable to become available again. 6you investigate poor program performance that you suspect may be
7 </div><a id="idm47748222332240" class="indexterm"></a><a id="idm47748224632912" class="indexterm"></a><a id="idm47748183237648" class="indexterm"></a><div class="para"> 7caused by <code class="command">futex</code> contentions.</div><a id="idm140174731491552" class="indexterm"></a><a id="idm140174730498240" class="indexterm"></a><a id="idm140174733109712" class="indexterm"></a><a id="idm140174736452288" class="indexterm"></a><a id="idm140174739126240" class="indexterm"></a><div class="para">Simply put, <code class="command">futex</code> contention occurs
8 The <a class="xref" href="futexcontentionsect.html#futexcontention">futexes.stp</a> script probes the <code class="command">futex</code> system call to show lock contention. 8 when multiple processes are trying to access the same lock
9 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">futexes.stp</div> 9 variable at the same time. This can result in a poor
10 10 performance because the lock serializes execution; one process obtains
11 the lock while the other processes must wait for the lock
12 variable to become available again.</div><a id="idm140174743368592" class="indexterm"></a><a id="idm140174733587520" class="indexterm"></a><a id="idm140174737441024" class="indexterm"></a><div class="para">The <a class="xref" href="futexcontentionsect.html#futexcontention">futexes.stp</a> script probes the <code class="command">futex</code> system call to show lock contention.</div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">futexes.stp</div>
11<pre class="programlisting">#! /usr/bin/env stap 13<pre class="programlisting">#! /usr/bin/env stap
12 14
13# This script tries to identify contended user-space locks by hooking 15# This script tries to identify contended user-space locks by hooking
@@ -34,19 +36,7 @@ probe end {
34 @avg(lock_waits[pid,lock])) 36 @avg(lock_waits[pid,lock]))
35} 37}
36</pre> 38</pre>
37 </div><div class="para"> 39</div><div class="para"><a class="xref" href="futexcontentionsect.html#futexcontention">futexes.stp</a> needs to be manually stopped; upon exit, it prints the following information:</div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">Name and ID of the process responsible for a contention</div></li><li class="listitem"><div class="para">The location of the contested lock variable</div></li><li class="listitem"><div class="para">How many times the lock variable was contended</div></li><li class="listitem"><div class="para">Average time of contention throughout the probe</div></li></ul></div><div class="para"><a class="xref" href="futexcontentionsect.html#futexcontentionoutput">Example 5.19, “futexes.stp Sample Output”</a> contains an excerpt from the output of <a class="xref" href="futexcontentionsect.html#futexcontention">futexes.stp</a> upon exiting the script (after approximately 20 seconds).</div><div class="example"><a id="futexcontentionoutput">
38 <a class="xref" href="futexcontentionsect.html#futexcontention">futexes.stp</a> needs to be manually stopped; upon exit, it prints the following information:
39 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
40 Name and ID of the process responsible for a contention
41 </div></li><li class="listitem"><div class="para">
42 The location of the contested lock variable
43 </div></li><li class="listitem"><div class="para">
44 How many times the lock variable was contended
45 </div></li><li class="listitem"><div class="para">
46 Average time of contention throughout the probe
47 </div></li></ul></div><div class="para">
48 <a class="xref" href="futexcontentionsect.html#futexcontentionoutput">Example 5.19, “futexes.stp Sample Output”</a> contains an excerpt from the output of <a class="xref" href="futexcontentionsect.html#futexcontention">futexes.stp</a> upon exiting the script (after approximately 20 seconds).
49 </div><div class="example"><a id="futexcontentionoutput">
50 ⁠</a><p class="title"><strong>Example 5.19. <a class="xref" href="futexcontentionsect.html#futexcontention">futexes.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">[...] 40 ⁠</a><p class="title"><strong>Example 5.19. <a class="xref" href="futexcontentionsect.html#futexcontention">futexes.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">[...]
51automount[2825] lock 0x00bc7784 contended 18 times, 999931 avg us 41automount[2825] lock 0x00bc7784 contended 18 times, 999931 avg us
52synergyc[3686] lock 0x0861e96c contended 192 times, 101991 avg us 42synergyc[3686] lock 0x0861e96c contended 192 times, 101991 avg us
diff --git a/SystemTap_Beginners_Guide/handlerconditionalstatements.html b/SystemTap_Beginners_Guide/handlerconditionalstatements.html
index f5226a8e..54b25f92 100644
--- a/SystemTap_Beginners_Guide/handlerconditionalstatements.html
+++ b/SystemTap_Beginners_Guide/handlerconditionalstatements.html
@@ -1,17 +1,23 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.3.3. Conditional Statements</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="scriptconstructions.html" title="3.3. Basic SystemTap Handler Constructs" /><link rel="prev" href="targetavailable.html" title="3.3.2.3. Checking Target Variable Availability" /><link rel="next" href="commandlineargssect.html" title="3.3.4. Command-Line Arguments" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="targetavailable.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="commandlineargssect.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="handlerconditionalstatements"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.3.3. Conditional Statements</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="scriptconstructions.html" title="3.3. Basic SystemTap Handler Constructs" /><link rel="prev" href="targetavailable.html" title="3.3.2.3. Checking Target Variable Availability" /><link rel="next" href="commandlineargssect.html" title="3.3.4. Command-Line Arguments" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="targetavailable.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="commandlineargssect.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="handlerconditionalstatements">
3 ⁠</a>3.3.3. Conditional Statements</h3></div></div></div><a id="idm47748222551840" class="indexterm"></a><a id="idm47748217415168" class="indexterm"></a><div class="para"> 3 ⁠</a>3.3.3. Conditional Statements</h3></div></div></div><a id="idm140174732627488" class="indexterm"></a><a id="idm140174737451408" class="indexterm"></a><div class="para">
4 In some cases, the output of a SystemTap script may be too large. To address this, you need to further refine the script's logic in order to delimit the output into something more relevant or useful to your probe. 4In some cases, the output of a SystemTap script may be too large. To address this, you need to further refine the script's logic in order to delimit the output into something more relevant or useful to your probe.
5 </div><div class="para"> 5</div><div class="para">
6 Do this by using <span class="emphasis"><em>conditionals</em></span> in handlers. SystemTap accepts the following types of conditional statements: 6Do this by using <span class="emphasis"><em>conditionals</em></span> in handlers. SystemTap accepts the following types of conditional statements:
7 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">If/Else Statements</span></dt><dd><a id="idm47748187886336" class="indexterm"></a><a id="idm47748212798288" class="indexterm"></a><a id="idm47748214863152" class="indexterm"></a><div class="para"> 7</div><div class="variablelist"><dl class="variablelist"><dt><span class="term">If/Else Statements</span></dt><dd><a id="idm140174742987360" class="indexterm"></a><a id="idm140174735813216" class="indexterm"></a><a id="idm140174733454672" class="indexterm"></a><div class="para">Format:</div><pre class="programlisting">if (<em class="replaceable">condition</em>)
8 Format:
9 </div><pre class="programlisting">if (<em class="replaceable">condition</em>)
10 <em class="replaceable">statement1</em> 8 <em class="replaceable">statement1</em>
11else 9else
12 <em class="replaceable">statement2</em></pre><div class="para"> 10 <em class="replaceable">statement2</em></pre><div class="para">
13 The <code class="command"><em class="replaceable">statement1</em></code> is executed if the <code class="command"><em class="replaceable">condition</em></code> expression is non-zero. The <code class="command"><em class="replaceable">statement2</em></code> is executed if the <code class="command"><em class="replaceable">condition</em></code> expression is zero. The <code class="command">else</code> clause (<code class="command">else</code> <em class="replaceable">statement2</em>) is optional. Both <code class="command"><em class="replaceable">statement1</em></code> and <code class="command"><em class="replaceable">statement2</em></code> can be statement blocks. 11The <code class="command"><em class="replaceable">statement1</em></code> is executed if the
14 </div><div class="example"><a id="simpleifelseexample"> 12<code class="command"><em class="replaceable">condition</em></code> expression is
13non-zero. The <code class="command"><em class="replaceable">statement2</em></code> is
14executed if the <code class="command"><em class="replaceable">condition</em></code>
15expression is zero. The <code class="command">else</code> clause
16(<code class="command">else</code> <em class="replaceable">statement2</em>) is optional. Both
17<code class="command"><em class="replaceable">statement1</em></code> and
18<code class="command"><em class="replaceable">statement2</em></code> can be statement
19blocks.
20</div><div class="example"><a id="simpleifelseexample">
15 ⁠</a><p class="title"><strong>Example 3.11. ifelse.stp</strong></p><div class="example-contents"><pre class="programlisting">global countread, countnonread 21 ⁠</a><p class="title"><strong>Example 3.11. ifelse.stp</strong></p><div class="example-contents"><pre class="programlisting">global countread, countnonread
16probe kernel.function("vfs_read"),kernel.function("vfs_write") 22probe kernel.function("vfs_read"),kernel.function("vfs_write")
17{ 23{
@@ -24,27 +30,19 @@ probe timer.s(5) { exit() }
24probe end 30probe end
25{ 31{
26 printf("VFS reads total %d\n VFS writes total %d\n", countread, countnonread) 32 printf("VFS reads total %d\n VFS writes total %d\n", countread, countnonread)
27}</pre></div></div><div class="para"> 33}</pre></div></div><div class="para"><a class="xref" href="handlerconditionalstatements.html#simpleifelseexample">Example 3.11, “ifelse.stp”</a> is a script that counts how many virtual file system reads (<code class="command">vfs_read</code>) and writes (<code class="command">vfs_write</code>) the system performs within a 5-second span. When run, the script increments the value of the variable <code class="command">countread</code> by 1 if the name of the function it probed matches <code class="command">vfs_read</code> (as noted by the condition <code class="command">if (probefunc()=="vfs_read")</code>); otherwise, it increments <code class="command">countnonread</code> (<code class="command">else {countnonread ++}</code>).</div></dd><dt><span class="term">While Loops</span></dt><dd><a id="idm140174735784976" class="indexterm"></a><a id="idm140174732339968" class="indexterm"></a><a id="idm140174734657984" class="indexterm"></a><div class="para">Format:</div><pre class="programlisting">while (<em class="replaceable">condition</em>)
28 <a class="xref" href="handlerconditionalstatements.html#simpleifelseexample">Example 3.11, “ifelse.stp”</a> is a script that counts how many virtual file system reads (<code class="command">vfs_read</code>) and writes (<code class="command">vfs_write</code>) the system performs within a 5-second span. When run, the script increments the value of the variable <code class="command">countread</code> by 1 if the name of the function it probed matches <code class="command">vfs_read</code> (as noted by the condition <code class="command">if (probefunc()=="vfs_read")</code>); otherwise, it increments <code class="command">countnonread</code> (<code class="command">else {countnonread ++}</code>).
29 </div></dd><dt><span class="term">While Loops</span></dt><dd><a id="idm47748183238576" class="indexterm"></a><a id="idm47748218390784" class="indexterm"></a><a id="idm47748188020592" class="indexterm"></a><div class="para">
30 Format:
31 </div><pre class="programlisting">while (<em class="replaceable">condition</em>)
32 <em class="replaceable">statement</em></pre><div class="para"> 34 <em class="replaceable">statement</em></pre><div class="para">
33 So long as <code class="command"><em class="replaceable">condition</em></code> is non-zero the block of statements in <code class="command"><em class="replaceable">statement</em></code> are executed. The <code class="command"><em class="replaceable">statement</em></code> is often a statement block and it must change a value so <code class="command"><em class="replaceable">condition</em></code> will eventually be zero. 35So long as <code class="command"><em class="replaceable">condition</em></code> is non-zero
34 </div></dd><dt><span class="term">For Loops</span></dt><dd><a id="idm47748181892176" class="indexterm"></a><a id="idm47748224270720" class="indexterm"></a><a id="idm47748216614720" class="indexterm"></a><div class="para"> 36the block of statements in
35 Format: 37<code class="command"><em class="replaceable">statement</em></code> are executed. The
36 </div><pre class="programlisting">for (<em class="replaceable">initialization</em>; <em class="replaceable">conditional</em>; <em class="replaceable">increment</em>) <em class="replaceable">statement</em></pre><div class="para"> 38<code class="command"><em class="replaceable">statement</em></code> is often a statement
37 The <code class="command">for</code> loop is shorthand for a while loop. The following is the equivalent <code class="command">while</code> loop: 39block and it must change a value so
38 </div><pre class="programlisting"><em class="replaceable">initialization</em> 40<code class="command"><em class="replaceable">condition</em></code> will eventually be zero.
41</div></dd><dt><span class="term">For Loops</span></dt><dd><a id="idm140174739168448" class="indexterm"></a><a id="idm140174741309104" class="indexterm"></a><a id="idm140174734316368" class="indexterm"></a><div class="para">Format:</div><pre class="programlisting">for (<em class="replaceable">initialization</em>; <em class="replaceable">conditional</em>; <em class="replaceable">increment</em>) <em class="replaceable">statement</em></pre><div class="para">
42The <code class="command">for</code> loop is shorthand for a while loop. The
43following is the equivalent <code class="command">while</code> loop:
44</div><pre class="programlisting"><em class="replaceable">initialization</em>
39while (<em class="replaceable">conditional</em>) { 45while (<em class="replaceable">conditional</em>) {
40 <em class="replaceable">statement</em> 46 <em class="replaceable">statement</em>
41 <em class="replaceable">increment</em> 47 <em class="replaceable">increment</em>
42}</pre></dd></dl></div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">Conditional Operators</div><a id="idm47748215166624" class="indexterm"></a><a id="idm47748175566672" class="indexterm"></a><a id="idm47748175585632" class="indexterm"></a> 48}</pre></dd></dl></div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">Conditional Operators</div><a id="idm140174734120848" class="indexterm"></a><a id="idm140174731842944" class="indexterm"></a><a id="idm140174741502640" class="indexterm"></a>Aside from <code class="command">==</code> ("is equal to"), following operators can also be used in conditional statements:</div><div class="variablelist"><dl class="variablelist"><dt><span class="term">&gt;=</span></dt><dd><div class="para">Greater than or equal to</div></dd><dt><span class="term">&lt;=</span></dt><dd><div class="para">Less than or equal to</div></dd><dt><span class="term">!=</span></dt><dd><div class="para">Is not equal to</div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="targetavailable.html"><strong>Prev</strong>3.3.2.3. Checking Target Variable Availability</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="commandlineargssect.html"><strong>Next</strong>3.3.4. Command-Line Arguments</a></li></ul></body></html> \ No newline at end of file
43 Aside from <code class="command">==</code> ("is equal to"), following operators can also be used in conditional statements:
44 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">&gt;=</span></dt><dd><div class="para">
45 Greater than or equal to
46 </div></dd><dt><span class="term">&lt;=</span></dt><dd><div class="para">
47 Less than or equal to
48 </div></dd><dt><span class="term">!=</span></dt><dd><div class="para">
49 Is not equal to
50 </div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="targetavailable.html"><strong>Prev</strong>3.3.2.3. Checking Target Variable Availability</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="commandlineargssect.html"><strong>Next</strong>3.3.4. Command-Line Arguments</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/index.html b/SystemTap_Beginners_Guide/index.html
index 05da96a6..8b1c8ac1 100644
--- a/SystemTap_Beginners_Guide/index.html
+++ b/SystemTap_Beginners_Guide/index.html
@@ -1,17 +1,21 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">SystemTap Beginners Guide</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><meta name="description" content="This guide provides basic instructions on how to use SystemTap to monitor different subsystems of a Linux system in finer detail." /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="next" href="SystemTap_Beginners_Guide-Preface.html" title="Preface" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="SystemTap_Beginners_Guide-Preface.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="book" lang="en-US"><div class="titlepage"><div><div class="producttitle"><span xmlns:d="http://docbook.org/ns/docbook" class="productname">SystemTap</span> <span xmlns:d="http://docbook.org/ns/docbook" class="productnumber">2.7</span></div><div><h1 class="title"><a id="idm47748178536992"></a>SystemTap Beginners Guide</h1></div><div><h2 class="subtitle">Introduction to SystemTap</h2></div><p xmlns:d="http://docbook.org/ns/docbook" class="edition">Edition 2.7</p><div><h3 class="corpauthor"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">SystemTap Beginners Guide</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><meta name="description" content="This guide provides basic instructions on how to use SystemTap to monitor different subsystems of a Linux system in finer detail." /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="next" href="SystemTap_Beginners_Guide-Preface.html" title="Preface" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="SystemTap_Beginners_Guide-Preface.html"><strong>Next</strong></a></li></ul><div class="book"><div class="titlepage"><div><div class="producttitle"><span xmlns:d="http://docbook.org/ns/docbook" class="productname">SystemTap</span> <span xmlns:d="http://docbook.org/ns/docbook" class="productnumber">2.8</span></div><div><h1 class="title"><a id="idm140174758930944"></a>SystemTap Beginners Guide</h1></div><div><h2 class="subtitle">Introduction to SystemTap</h2></div><p xmlns:d="http://docbook.org/ns/docbook" class="edition">Edition 2.8</p><div><h3 class="corpauthor">
3 <span class="inlinemediaobject"><object data="Common_Content/images/title_logo.svg" type="image/svg+xml"><img src="Common_Content/images/title_logo.png" alt="Logo" /></object></span> 3 <span class="inlinemediaobject"><object data="Common_Content/images/title_logo.svg" type="image/svg+xml"><img src="Common_Content/images/title_logo.png" alt="Logo" /></object></span>
4 4 </h3></div><div><div class="authorgroup"><h3 class="corpauthor">Red Hat, Inc.</h3><div class="author"><h3 class="author"><span class="firstname">Don</span> <span class="surname">Domingo </span></h3><div class="affiliation"><span xmlns:d="http://docbook.org/ns/docbook" class="orgname">Engineering Services and Operations</span> <span xmlns:d="http://docbook.org/ns/docbook" class="orgdiv">Content Services</span></div><code class="email"><a class="email" href="mailto:ddomingo@redhat.com">ddomingo@redhat.com</a></code></div><div class="author"><h3 class="author"><span class="firstname">William</span> <span class="surname">Cohen</span></h3><div class="affiliation"><span xmlns:d="http://docbook.org/ns/docbook" class="orgname">Engineering Services and Operations</span> <span xmlns:d="http://docbook.org/ns/docbook" class="orgdiv">Performance Tools</span></div><code class="email"><a class="email" href="mailto:wcohen@redhat.com">wcohen@redhat.com</a></code></div></div></div><div><p class="copyright">Copyright © 2013 Red Hat, Inc</p></div><div><div class="legalnotice"><a id="idm140174739813360"></a><h1 class="legalnotice">Legal Notice</h1><div class="para">
5 </h3></div><div><div xml:lang="en-US" class="authorgroup" lang="en-US"><h3 class="corpauthor"> 5 This documentation is free software; you can redistribute
6 Red Hat, Inc. 6 it and/or modify it under the terms of the GNU General Public
7 </h3><div class="author"><h3 class="author"><span class="firstname">Don</span> <span class="surname">Domingo </span></h3><div class="affiliation"><span xmlns:d="http://docbook.org/ns/docbook" class="orgname">Engineering Services and Operations</span> <span xmlns:d="http://docbook.org/ns/docbook" class="orgdiv">Content Services</span></div><code class="email"><a class="email" href="mailto:ddomingo@redhat.com">ddomingo@redhat.com</a></code></div><div class="author"><h3 class="author"><span class="firstname">William</span> <span class="surname">Cohen</span></h3><div class="affiliation"><span xmlns:d="http://docbook.org/ns/docbook" class="orgname">Engineering Services and Operations</span> <span xmlns:d="http://docbook.org/ns/docbook" class="orgdiv">Performance Tools</span></div><code class="email"><a class="email" href="mailto:wcohen@redhat.com">wcohen@redhat.com</a></code></div></div></div><div><p class="copyright">Copyright © 2013 Red Hat, Inc</p></div><div><div class="legalnotice"><a id="idm47748217703392"></a><h1 class="legalnotice">Legal Notice</h1><div class="para"> 7 License version 2 as published by the Free Software Foundation.
8 This documentation is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.
9 </div><div class="para"> 8 </div><div class="para">
10 This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 9 This program is distributed in the hope that it will be
10 useful, but WITHOUT ANY WARRANTY; without even the implied
11 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 See the GNU General Public License for more details.
11 </div><div class="para"> 13 </div><div class="para">
12 You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 14 You should have received a copy of the GNU General Public
15 License along with this program; if not, write to the Free
16 Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 Boston, MA 02110-1301 USA.
13 </div><div class="para"> 18 </div><div class="para">
14 For more details see the file COPYING in the source distribution of Linux. 19 For more details see the file COPYING in the source
15 </div></div></div><div><div class="abstract"><p class="title"><strong>Abstract</strong></p><div class="para"> 20 distribution of Linux.
16 This guide provides basic instructions on how to use SystemTap to monitor different subsystems of a Linux system in finer detail. 21 </div></div></div><div><div class="abstract"><p class="title"><strong>Abstract</strong></p><div class="para">This guide provides basic instructions on how to use SystemTap to monitor different subsystems of a Linux system in finer detail.</div></div></div></div></div><div class="toc"><dl class="toc"><dt><span class="preface"><a href="SystemTap_Beginners_Guide-Preface.html">Preface</a></span></dt><dd><dl><dt><span class="section"><a href="SystemTap_Beginners_Guide-Preface.html#idm140174742229536">1. Document Conventions</a></span></dt><dd><dl><dt><span class="section"><a href="SystemTap_Beginners_Guide-Preface.html#idm140174738534592">1.1. Typographic Conventions</a></span></dt><dt><span class="section"><a href="SystemTap_Beginners_Guide-Preface.html#idm140174736074304">1.2. Pull-quote Conventions</a></span></dt><dt><span class="section"><a href="SystemTap_Beginners_Guide-Preface.html#idm140174733641280">1.3. Notes and Warnings</a></span></dt></dl></dd><dt><span class="section"><a href="pr01s02.html">2. We Need Feedback!</a></span></dt></dl></dd><dt><span class="chapter"><a href="introduction.html">1. Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="introduction.html#goals">1.1. Documentation Goals</a></span></dt><dt><span class="section"><a href="intro-systemtap-vs-others.html">1.2. SystemTap Capabilities</a></span></dt><dt><span class="section"><a href="intro-systemtap-limitations.html">1.3. Limitations of SystemTap</a></span></dt></dl></dd><dt><span class="chapter"><a href="using-systemtap.html">2. Using SystemTap</a></span></dt><dd><dl><dt><span class="section"><a href="using-systemtap.html#using-setup">2.1. Installation and Setup</a></span></dt><dd><dl><dt><span class="section"><a href="using-systemtap.html#installproper">2.1.1. Installing SystemTap</a></span></dt><dt><span class="section"><a href="using-systemtap.html#install-kinfo">2.1.2. Installing Required Kernel Information Packages Manually</a></span></dt><dt><span class="section"><a href="using-systemtap.html#testing">2.1.3. Initial Testing</a></span></dt></dl></dd><dt><span class="section"><a href="cross-compiling.html">2.2. Generating Instrumentation for Other Computers</a></span></dt><dt><span class="section"><a href="using-usage.html">2.3. Running SystemTap Scripts</a></span></dt><dd><dl><dt><span class="section"><a href="using-usage.html#flight-recorder">2.3.1. SystemTap Flight Recorder Mode</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="understanding-how-systemtap-works.html">3. Understanding How SystemTap Works</a></span></dt><dd><dl><dt><span class="section"><a href="understanding-how-systemtap-works.html#understanding-architecture-tools">3.1. Architecture</a></span></dt><dt><span class="section"><a href="scripts.html">3.2. SystemTap Scripts</a></span></dt><dd><dl><dt><span class="section"><a href="scripts.html#systemtapscript-events">3.2.1. Event</a></span></dt><dt><span class="section"><a href="systemtapscript-handler.html">3.2.2. SystemTap Handler/Body</a></span></dt></dl></dd><dt><span class="section"><a href="scriptconstructions.html">3.3. Basic SystemTap Handler Constructs</a></span></dt><dd><dl><dt><span class="section"><a href="scriptconstructions.html#variablesconstructs">3.3.1. Variables</a></span></dt><dt><span class="section"><a href="targetvariables.html">3.3.2. Target Variables</a></span></dt><dt><span class="section"><a href="handlerconditionalstatements.html">3.3.3. Conditional Statements</a></span></dt><dt><span class="section"><a href="commandlineargssect.html">3.3.4. Command-Line Arguments</a></span></dt></dl></dd><dt><span class="section"><a href="associativearrays.html">3.4. Associative Arrays</a></span></dt><dt><span class="section"><a href="arrayoperators.html">3.5. Array Operations in SystemTap</a></span></dt><dd><dl><dt><span class="section"><a href="arrayoperators.html#arrayops-assignvalue">3.5.1. Assigning an Associated Value</a></span></dt><dt><span class="section"><a href="arrayops-readvalues.html">3.5.2. Reading Values From Arrays</a></span></dt><dt><span class="section"><a href="arrayops-increment.html">3.5.3. Incrementing Associated Values</a></span></dt><dt><span class="section"><a href="arrayops-foreach.html">3.5.4. Processing Multiple Elements in an Array</a></span></dt><dt><span class="section"><a href="arrayops-deleting.html">3.5.5. Clearing/Deleting Arrays and Array Elements</a></span></dt><dt><span class="section"><a href="arrayops-conditionals.html">3.5.6. Using Arrays in Conditional Statements</a></span></dt><dt><span class="section"><a href="arrayops-aggregates.html">3.5.7. Computing for Statistical Aggregates</a></span></dt></dl></dd><dt><span class="section"><a href="understanding-tapsets.html">3.6. Tapsets</a></span></dt></dl></dd><dt><span class="chapter"><a href="userspace-probing.html">4. User-space Probing</a></span></dt><dd><dl><dt><span class="section"><a href="userspace-probing.html#uevents">4.1. User-Space Events</a></span></dt><dt><span class="section"><a href="utargetvariable.html">4.2. Accessing User-Space Target Variables</a></span></dt><dt><span class="section"><a href="ustack.html">4.3. User-Space Stack Backtraces</a></span></dt></dl></dd><dt><span class="chapter"><a href="useful-systemtap-scripts.html">5. Useful SystemTap Scripts</a></span></dt><dd><dl><dt><span class="section"><a href="useful-systemtap-scripts.html#mainsect-network">5.1. Network</a></span></dt><dd><dl><dt><span class="section"><a href="useful-systemtap-scripts.html#nettopsect">5.1.1. Network Profiling</a></span></dt><dt><span class="section"><a href="useful-systemtap-scripts.html#sockettracesect">5.1.2. Tracing Functions Called in Network Socket Code</a></span></dt><dt><span class="section"><a href="useful-systemtap-scripts.html#tcpconnectionssect">5.1.3. Monitoring Incoming TCP Connections</a></span></dt><dt><span class="section"><a href="useful-systemtap-scripts.html#tcpdumplikesect">5.1.4. Monitoring TCP Packets</a></span></dt><dt><span class="section"><a href="useful-systemtap-scripts.html#dropwatchsect">5.1.5. Monitoring Network Packets Drops in Kernel</a></span></dt></dl></dd><dt><span class="section"><a href="mainsect-disk.html">5.2. Disk</a></span></dt><dd><dl><dt><span class="section"><a href="mainsect-disk.html#disktop">5.2.1. Summarizing Disk Read/Write Traffic</a></span></dt><dt><span class="section"><a href="iotimesect.html">5.2.2. Tracking I/O Time For Each File Read or Write</a></span></dt><dt><span class="section"><a href="traceiosect.html">5.2.3. Track Cumulative IO</a></span></dt><dt><span class="section"><a href="traceio2sect.html">5.2.4. I/O Monitoring (By Device)</a></span></dt><dt><span class="section"><a href="inodewatchsect.html">5.2.5. Monitoring Reads and Writes to a File</a></span></dt><dt><span class="section"><a href="inodewatch2sect.html">5.2.6. Monitoring Changes to File Attributes</a></span></dt><dt><span class="section"><a href="ioblktimesect.html">5.2.7. Periodically Print I/O Block Time</a></span></dt></dl></dd><dt><span class="section"><a href="mainsect-profiling.html">5.3. Profiling</a></span></dt><dd><dl><dt><span class="section"><a href="mainsect-profiling.html#countcallssect">5.3.1. Counting Function Calls Made</a></span></dt><dt><span class="section"><a href="paracallgraph.html">5.3.2. Call Graph Tracing</a></span></dt><dt><span class="section"><a href="threadtimessect.html">5.3.3. Determining Time Spent in Kernel and User Space</a></span></dt><dt><span class="section"><a href="timeoutssect.html">5.3.4. Monitoring Polling Applications</a></span></dt><dt><span class="section"><a href="topsyssect.html">5.3.5. Tracking Most Frequently Used System Calls</a></span></dt><dt><span class="section"><a href="syscallsbyprocpidsect.html">5.3.6. Tracking System Call Volume Per Process</a></span></dt></dl></dd><dt><span class="section"><a href="futexcontentionsect.html">5.4. Identifying Contended User-Space Locks</a></span></dt></dl></dd><dt><span class="chapter"><a href="errors.html">6. Understanding SystemTap Errors</a></span></dt><dd><dl><dt><span class="section"><a href="errors.html#parsetype">6.1. Parse and Semantic Errors</a></span></dt><dt><span class="section"><a href="runtimeerror.html">6.2. Runtime Errors and Warnings</a></span></dt></dl></dd><dt><span class="chapter"><a href="references.html">7. References</a></span></dt><dt><span class="appendix"><a href="appe-Publican-Revision_History.html">A. Revision History</a></span></dt><dt><span class="index"><a href="ix01.html">Index</a></span></dt></dl></div></div><ul class="docnav"><li class="previous"></li><li class="next"><a accesskey="n" href="SystemTap_Beginners_Guide-Preface.html"><strong>Next</strong>Preface</a></li></ul></body></html> \ No newline at end of file
17 </div></div></div></div></div><div class="toc"><dl class="toc"><dt><span class="preface"><a href="SystemTap_Beginners_Guide-Preface.html">Preface</a></span></dt><dd><dl><dt><span class="section"><a href="SystemTap_Beginners_Guide-Preface.html#idm47748212775600">1. Document Conventions</a></span></dt><dd><dl><dt><span class="section"><a href="SystemTap_Beginners_Guide-Preface.html#idm47748181700496">1.1. Typographic Conventions</a></span></dt><dt><span class="section"><a href="SystemTap_Beginners_Guide-Preface.html#idm47748188125824">1.2. Pull-quote Conventions</a></span></dt><dt><span class="section"><a href="SystemTap_Beginners_Guide-Preface.html#idm47748222516720">1.3. Notes and Warnings</a></span></dt></dl></dd><dt><span class="section"><a href="pr01s02.html">2. We Need Feedback!</a></span></dt></dl></dd><dt><span class="chapter"><a href="introduction.html">1. Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="introduction.html#goals">1.1. Documentation Goals</a></span></dt><dt><span class="section"><a href="intro-systemtap-vs-others.html">1.2. SystemTap Capabilities</a></span></dt><dt><span class="section"><a href="intro-systemtap-limitations.html">1.3. Limitations of SystemTap</a></span></dt></dl></dd><dt><span class="chapter"><a href="using-systemtap.html">2. Using SystemTap</a></span></dt><dd><dl><dt><span class="section"><a href="using-systemtap.html#using-setup">2.1. Installation and Setup</a></span></dt><dd><dl><dt><span class="section"><a href="using-systemtap.html#installproper">2.1.1. Installing SystemTap</a></span></dt><dt><span class="section"><a href="using-systemtap.html#install-kinfo">2.1.2. Installing Required Kernel Information Packages Manually</a></span></dt><dt><span class="section"><a href="using-systemtap.html#testing">2.1.3. Initial Testing</a></span></dt></dl></dd><dt><span class="section"><a href="cross-compiling.html">2.2. Generating Instrumentation for Other Computers</a></span></dt><dt><span class="section"><a href="using-usage.html">2.3. Running SystemTap Scripts</a></span></dt><dd><dl><dt><span class="section"><a href="using-usage.html#flight-recorder">2.3.1. SystemTap Flight Recorder Mode</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="understanding-how-systemtap-works.html">3. Understanding How SystemTap Works</a></span></dt><dd><dl><dt><span class="section"><a href="understanding-how-systemtap-works.html#understanding-architecture-tools">3.1. Architecture</a></span></dt><dt><span class="section"><a href="scripts.html">3.2. SystemTap Scripts</a></span></dt><dd><dl><dt><span class="section"><a href="scripts.html#systemtapscript-events">3.2.1. Event</a></span></dt><dt><span class="section"><a href="systemtapscript-handler.html">3.2.2. SystemTap Handler/Body</a></span></dt></dl></dd><dt><span class="section"><a href="scriptconstructions.html">3.3. Basic SystemTap Handler Constructs</a></span></dt><dd><dl><dt><span class="section"><a href="scriptconstructions.html#variablesconstructs">3.3.1. Variables</a></span></dt><dt><span class="section"><a href="targetvariables.html">3.3.2. Target Variables</a></span></dt><dt><span class="section"><a href="handlerconditionalstatements.html">3.3.3. Conditional Statements</a></span></dt><dt><span class="section"><a href="commandlineargssect.html">3.3.4. Command-Line Arguments</a></span></dt></dl></dd><dt><span class="section"><a href="associativearrays.html">3.4. Associative Arrays</a></span></dt><dt><span class="section"><a href="arrayoperators.html">3.5. Array Operations in SystemTap</a></span></dt><dd><dl><dt><span class="section"><a href="arrayoperators.html#arrayops-assignvalue">3.5.1. Assigning an Associated Value</a></span></dt><dt><span class="section"><a href="arrayops-readvalues.html">3.5.2. Reading Values From Arrays</a></span></dt><dt><span class="section"><a href="arrayops-increment.html">3.5.3. Incrementing Associated Values</a></span></dt><dt><span class="section"><a href="arrayops-foreach.html">3.5.4. Processing Multiple Elements in an Array</a></span></dt><dt><span class="section"><a href="arrayops-deleting.html">3.5.5. Clearing/Deleting Arrays and Array Elements</a></span></dt><dt><span class="section"><a href="arrayops-conditionals.html">3.5.6. Using Arrays in Conditional Statements</a></span></dt><dt><span class="section"><a href="arrayops-aggregates.html">3.5.7. Computing for Statistical Aggregates</a></span></dt></dl></dd><dt><span class="section"><a href="understanding-tapsets.html">3.6. Tapsets</a></span></dt></dl></dd><dt><span class="chapter"><a href="userspace-probing.html">4. User-space Probing</a></span></dt><dd><dl><dt><span class="section"><a href="userspace-probing.html#uevents">4.1. User-Space Events</a></span></dt><dt><span class="section"><a href="utargetvariable.html">4.2. Accessing User-Space Target Variables</a></span></dt><dt><span class="section"><a href="ustack.html">4.3. User-Space Stack Backtraces</a></span></dt></dl></dd><dt><span class="chapter"><a href="useful-systemtap-scripts.html">5. Useful SystemTap Scripts</a></span></dt><dd><dl><dt><span class="section"><a href="useful-systemtap-scripts.html#mainsect-network">5.1. Network</a></span></dt><dd><dl><dt><span class="section"><a href="useful-systemtap-scripts.html#nettopsect">5.1.1. Network Profiling</a></span></dt><dt><span class="section"><a href="useful-systemtap-scripts.html#sockettracesect">5.1.2. Tracing Functions Called in Network Socket Code</a></span></dt><dt><span class="section"><a href="useful-systemtap-scripts.html#tcpconnectionssect">5.1.3. Monitoring Incoming TCP Connections</a></span></dt><dt><span class="section"><a href="useful-systemtap-scripts.html#tcpdumplikesect">5.1.4. Monitoring TCP Packets</a></span></dt><dt><span class="section"><a href="useful-systemtap-scripts.html#dropwatchsect">5.1.5. Monitoring Network Packets Drops in Kernel</a></span></dt></dl></dd><dt><span class="section"><a href="mainsect-disk.html">5.2. Disk</a></span></dt><dd><dl><dt><span class="section"><a href="mainsect-disk.html#disktop">5.2.1. Summarizing Disk Read/Write Traffic</a></span></dt><dt><span class="section"><a href="iotimesect.html">5.2.2. Tracking I/O Time For Each File Read or Write</a></span></dt><dt><span class="section"><a href="traceiosect.html">5.2.3. Track Cumulative IO</a></span></dt><dt><span class="section"><a href="traceio2sect.html">5.2.4. I/O Monitoring (By Device)</a></span></dt><dt><span class="section"><a href="inodewatchsect.html">5.2.5. Monitoring Reads and Writes to a File</a></span></dt><dt><span class="section"><a href="inodewatch2sect.html">5.2.6. Monitoring Changes to File Attributes</a></span></dt><dt><span class="section"><a href="ioblktimesect.html">5.2.7. Periodically Print I/O Block Time</a></span></dt></dl></dd><dt><span class="section"><a href="mainsect-profiling.html">5.3. Profiling</a></span></dt><dd><dl><dt><span class="section"><a href="mainsect-profiling.html#countcallssect">5.3.1. Counting Function Calls Made</a></span></dt><dt><span class="section"><a href="paracallgraph.html">5.3.2. Call Graph Tracing</a></span></dt><dt><span class="section"><a href="threadtimessect.html">5.3.3. Determining Time Spent in Kernel and User Space</a></span></dt><dt><span class="section"><a href="timeoutssect.html">5.3.4. Monitoring Polling Applications</a></span></dt><dt><span class="section"><a href="topsyssect.html">5.3.5. Tracking Most Frequently Used System Calls</a></span></dt><dt><span class="section"><a href="syscallsbyprocpidsect.html">5.3.6. Tracking System Call Volume Per Process</a></span></dt></dl></dd><dt><span class="section"><a href="futexcontentionsect.html">5.4. Identifying Contended User-Space Locks</a></span></dt></dl></dd><dt><span class="chapter"><a href="errors.html">6. Understanding SystemTap Errors</a></span></dt><dd><dl><dt><span class="section"><a href="errors.html#parsetype">6.1. Parse and Semantic Errors</a></span></dt><dt><span class="section"><a href="runtimeerror.html">6.2. Runtime Errors and Warnings</a></span></dt></dl></dd><dt><span class="chapter"><a href="references.html">7. References</a></span></dt><dt><span class="appendix"><a href="appe-Publican-Revision_History.html">A. Revision History</a></span></dt><dt><span class="index"><a href="ix01.html">Index</a></span></dt></dl></div></div><ul class="docnav"><li class="previous"></li><li class="next"><a accesskey="n" href="SystemTap_Beginners_Guide-Preface.html"><strong>Next</strong>Preface</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/inodewatch2sect.html b/SystemTap_Beginners_Guide/inodewatch2sect.html
index aae657be..0d99b1fe 100644
--- a/SystemTap_Beginners_Guide/inodewatch2sect.html
+++ b/SystemTap_Beginners_Guide/inodewatch2sect.html
@@ -1,9 +1,6 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.2.6. Monitoring Changes to File Attributes</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-disk.html" title="5.2. Disk" /><link rel="prev" href="inodewatchsect.html" title="5.2.5. Monitoring Reads and Writes to a File" /><link rel="next" href="ioblktimesect.html" title="5.2.7. Periodically Print I/O Block Time" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="inodewatchsect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="ioblktimesect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="inodewatch2sect"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.2.6. Monitoring Changes to File Attributes</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-disk.html" title="5.2. Disk" /><link rel="prev" href="inodewatchsect.html" title="5.2.5. Monitoring Reads and Writes to a File" /><link rel="next" href="ioblktimesect.html" title="5.2.7. Periodically Print I/O Block Time" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="inodewatchsect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="ioblktimesect.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="inodewatch2sect">
3 ⁠</a>5.2.6. Monitoring Changes to File Attributes</h3></div></div></div><a id="idm47748186481328" class="indexterm"></a><a id="idm47748216872208" class="indexterm"></a><a id="idm47748217633568" class="indexterm"></a><a id="idm47748230806944" class="indexterm"></a><a id="idm47748200949296" class="indexterm"></a><div class="para"> 3 ⁠</a>5.2.6. Monitoring Changes to File Attributes</h3></div></div></div><a id="idm140174735294400" class="indexterm"></a><a id="idm140174732227584" class="indexterm"></a><a id="idm140174741939312" class="indexterm"></a><a id="idm140174730955616" class="indexterm"></a><a id="idm140174736637296" class="indexterm"></a><div class="para">This section describes how to monitor if any processes are changing the attributes of a targeted file, in real time. </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">inodewatch2.stp</div>
4 This section describes how to monitor if any processes are changing the attributes of a targeted file, in real time.
5 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">inodewatch2.stp</div>
6
7<pre class="programlisting">#! /usr/bin/env stap 4<pre class="programlisting">#! /usr/bin/env stap
8 5
9global ATTR_MODE = 1 6global ATTR_MODE = 1
@@ -21,10 +18,6 @@ probe kernel.function("setattr_copy")!,
21 execname(), pid(), ppfunc(), dev_nr, inode_nr, $attr-&gt;ia_mode, uid()) 18 execname(), pid(), ppfunc(), dev_nr, inode_nr, $attr-&gt;ia_mode, uid())
22} 19}
23</pre> 20</pre>
24 </div><div class="para"> 21</div><div class="para">Like <a class="xref" href="inodewatchsect.html#inodewatch">inodewatch.stp</a> from <a class="xref" href="inodewatchsect.html">Section 5.2.5, “Monitoring Reads and Writes to a File”</a>, <a class="xref" href="inodewatch2sect.html#inodewatch2">inodewatch2.stp</a> takes the targeted file's device number (in integer format) and <code class="command">inode</code> number as arguments. For more information on how to retrieve this information, refer to <a class="xref" href="inodewatchsect.html">Section 5.2.5, “Monitoring Reads and Writes to a File”</a>.</div><div class="para">The output for <a class="xref" href="inodewatch2sect.html#inodewatch2">inodewatch2.stp</a> is similar to that of <a class="xref" href="inodewatchsect.html#inodewatch">inodewatch.stp</a>, except that <a class="xref" href="inodewatch2sect.html#inodewatch2">inodewatch2.stp</a> also contains the attribute changes to the monitored file, as well as the ID of the user responsible (<code class="command">uid()</code>). <a class="xref" href="inodewatch2sect.html#inodewatch2output">Example 5.11, “inodewatch2.stp Sample Output”</a> shows the output of <a class="xref" href="inodewatch2sect.html#inodewatch2">inodewatch2.stp</a> while monitoring <code class="filename">/home/joe/bigfile</code> when user <code class="computeroutput">joe</code> executes <code class="command">chmod 777 /home/joe/bigfile</code> and <code class="command">chmod 666 /home/joe/bigfile</code>.</div><div class="example"><a id="inodewatch2output">
25 Like <a class="xref" href="inodewatchsect.html#inodewatch">inodewatch.stp</a> from <a class="xref" href="inodewatchsect.html">Section 5.2.5, “Monitoring Reads and Writes to a File”</a>, <a class="xref" href="inodewatch2sect.html#inodewatch2">inodewatch2.stp</a> takes the targeted file's device number (in integer format) and <code class="command">inode</code> number as arguments. For more information on how to retrieve this information, refer to <a class="xref" href="inodewatchsect.html">Section 5.2.5, “Monitoring Reads and Writes to a File”</a>.
26 </div><div class="para">
27 The output for <a class="xref" href="inodewatch2sect.html#inodewatch2">inodewatch2.stp</a> is similar to that of <a class="xref" href="inodewatchsect.html#inodewatch">inodewatch.stp</a>, except that <a class="xref" href="inodewatch2sect.html#inodewatch2">inodewatch2.stp</a> also contains the attribute changes to the monitored file, as well as the ID of the user responsible (<code class="command">uid()</code>). <a class="xref" href="inodewatch2sect.html#inodewatch2output">Example 5.11, “inodewatch2.stp Sample Output”</a> shows the output of <a class="xref" href="inodewatch2sect.html#inodewatch2">inodewatch2.stp</a> while monitoring <code class="filename">/home/joe/bigfile</code> when user <code class="computeroutput">joe</code> executes <code class="command">chmod 777 /home/joe/bigfile</code> and <code class="command">chmod 666 /home/joe/bigfile</code>.
28 </div><div class="example"><a id="inodewatch2output">
29 ⁠</a><p class="title"><strong>Example 5.11. <a class="xref" href="inodewatch2sect.html#inodewatch2">inodewatch2.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">chmod(17448) inode_setattr 0x800005/6011835 100777 500 22 ⁠</a><p class="title"><strong>Example 5.11. <a class="xref" href="inodewatch2sect.html#inodewatch2">inodewatch2.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">chmod(17448) inode_setattr 0x800005/6011835 100777 500
30chmod(17449) inode_setattr 0x800005/6011835 100666 500</pre></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="inodewatchsect.html"><strong>Prev</strong>5.2.5. Monitoring Reads and Writes to a File</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="ioblktimesect.html"><strong>Next</strong>5.2.7. Periodically Print I/O Block Time</a></li></ul></body></html> \ No newline at end of file 23chmod(17449) inode_setattr 0x800005/6011835 100666 500</pre></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="inodewatchsect.html"><strong>Prev</strong>5.2.5. Monitoring Reads and Writes to a File</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="ioblktimesect.html"><strong>Next</strong>5.2.7. Periodically Print I/O Block Time</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/inodewatchsect.html b/SystemTap_Beginners_Guide/inodewatchsect.html
index 4d79a73d..ff0dd0b8 100644
--- a/SystemTap_Beginners_Guide/inodewatchsect.html
+++ b/SystemTap_Beginners_Guide/inodewatchsect.html
@@ -1,9 +1,6 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.2.5. Monitoring Reads and Writes to a File</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-disk.html" title="5.2. Disk" /><link rel="prev" href="traceio2sect.html" title="5.2.4. I/O Monitoring (By Device)" /><link rel="next" href="inodewatch2sect.html" title="5.2.6. Monitoring Changes to File Attributes" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="traceio2sect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="inodewatch2sect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="inodewatchsect"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.2.5. Monitoring Reads and Writes to a File</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-disk.html" title="5.2. Disk" /><link rel="prev" href="traceio2sect.html" title="5.2.4. I/O Monitoring (By Device)" /><link rel="next" href="inodewatch2sect.html" title="5.2.6. Monitoring Changes to File Attributes" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="traceio2sect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="inodewatch2sect.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="inodewatchsect">
3 ⁠</a>5.2.5. Monitoring Reads and Writes to a File</h3></div></div></div><a id="idm47748174926352" class="indexterm"></a><a id="idm47748218310512" class="indexterm"></a><a id="idm47748220557136" class="indexterm"></a><a id="idm47748218709328" class="indexterm"></a><a id="idm47748185781840" class="indexterm"></a><a id="idm47748230445360" class="indexterm"></a><div class="para"> 3 ⁠</a>5.2.5. Monitoring Reads and Writes to a File</h3></div></div></div><a id="idm140174736433200" class="indexterm"></a><a id="idm140174734267088" class="indexterm"></a><a id="idm140174730540736" class="indexterm"></a><a id="idm140174736455216" class="indexterm"></a><a id="idm140174743333408" class="indexterm"></a><a id="idm140174733987456" class="indexterm"></a><div class="para">This section describes how to monitor reads from and writes to a file in real time. </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">inodewatch.stp</div>
4 This section describes how to monitor reads from and writes to a file in real time.
5 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">inodewatch.stp</div>
6
7<pre class="programlisting">#! /usr/bin/env stap 4<pre class="programlisting">#! /usr/bin/env stap
8 5
9probe vfs.write, vfs.read 6probe vfs.write, vfs.read
@@ -15,22 +12,7 @@ probe vfs.write, vfs.read
15 execname(), pid(), ppfunc(), dev, ino) 12 execname(), pid(), ppfunc(), dev, ino)
16} 13}
17</pre> 14</pre>
18 </div><div class="para"> 15</div><div class="para"><a class="xref" href="inodewatchsect.html#inodewatch">inodewatch.stp</a> takes the following information about the
19 <a class="xref" href="inodewatchsect.html#inodewatch">inodewatch.stp</a> takes the following information about the file as arguments on the command line: 16file as arguments on the command line:</div><a id="idm140174733947984" class="indexterm"></a><a id="idm140174738986352" class="indexterm"></a><a id="idm140174742063584" class="indexterm"></a><a id="idm140174730967552" class="indexterm"></a><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">The file's major device number.</div></li><li class="listitem"><div class="para">The file's minor device number.</div></li><li class="listitem"><div class="para">The file's <code class="command">inode</code> number.</div></li></ul></div><a id="idm140174740788704" class="indexterm"></a><a id="idm140174731496896" class="indexterm"></a><a id="idm140174731378880" class="indexterm"></a><div class="para">To get this information, use <code class="command">stat -c '%D %i' <em class="replaceable">filename</em></code>, where <code class="command"><em class="replaceable">filename</em></code> is an absolute path.</div><div class="para">For instance: to monitor <code class="filename">/etc/crontab</code>, run <code class="command">stat -c '%D %i' /etc/crontab</code> first. This gives the following output:</div><pre class="screen">805 1078319</pre><a id="idm140174738380352" class="indexterm"></a><a id="idm140174733120368" class="indexterm"></a><a id="idm140174737442336" class="indexterm"></a><div class="para"><code class="computeroutput">805</code> is the base-16 (hexadecimal) device number. The lower two digits are the minor device number and the upper digits are the major number. <code class="computeroutput">1078319</code> is the <code class="command">inode</code> number. To start monitoring <code class="filename">/etc/crontab</code>, run <code class="command">stap inodewatch.stp 0x8 0x05 1078319</code> (The <code class="command">0x</code> prefixes indicate base-16 values.</div><div class="para">The output of this command contains the name and ID of any process performing a read/write, the function it is performing (that is, <code class="command">vfs_read</code> or <code class="command">vfs_write</code>), the device number (in hex format), and the <code class="command">inode</code> number. <a class="xref" href="inodewatchsect.html#inodewatchoutput">Example 5.10, “inodewatch.stp Sample Output”</a> contains the output of <code class="command">stap inodewatch.stp 0x8 0x05 1078319</code> (when <code class="command">cat /etc/crontab</code> is executed while the script is running) :</div><div class="example"><a id="inodewatchoutput">
20 </div><a id="idm47748222547008" class="indexterm"></a><a id="idm47748180989584" class="indexterm"></a><a id="idm47748176162560" class="indexterm"></a><a id="idm47748219949152" class="indexterm"></a><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
21 The file's major device number.
22 </div></li><li class="listitem"><div class="para">
23 The file's minor device number.
24 </div></li><li class="listitem"><div class="para">
25 The file's <code class="command">inode</code> number.
26 </div></li></ul></div><a id="idm47748187907056" class="indexterm"></a><a id="idm47748219058768" class="indexterm"></a><a id="idm47748188315856" class="indexterm"></a><div class="para">
27 To get this information, use <code class="command">stat -c '%D %i' <em class="replaceable">filename</em></code>, where <code class="command"><em class="replaceable">filename</em></code> is an absolute path.
28 </div><div class="para">
29 For instance: to monitor <code class="filename">/etc/crontab</code>, run <code class="command">stat -c '%D %i' /etc/crontab</code> first. This gives the following output:
30 </div><pre class="screen">805 1078319</pre><a id="idm47748181041456" class="indexterm"></a><a id="idm47748229008368" class="indexterm"></a><a id="idm47748214946048" class="indexterm"></a><div class="para">
31 <code class="computeroutput">805</code> is the base-16 (hexadecimal) device number. The lower two digits are the minor device number and the upper digits are the major number. <code class="computeroutput">1078319</code> is the <code class="command">inode</code> number. To start monitoring <code class="filename">/etc/crontab</code>, run <code class="command">stap inodewatch.stp 0x8 0x05 1078319</code> (The <code class="command">0x</code> prefixes indicate base-16 values.
32 </div><div class="para">
33 The output of this command contains the name and ID of any process performing a read/write, the function it is performing (that is, <code class="command">vfs_read</code> or <code class="command">vfs_write</code>), the device number (in hex format), and the <code class="command">inode</code> number. <a class="xref" href="inodewatchsect.html#inodewatchoutput">Example 5.10, “inodewatch.stp Sample Output”</a> contains the output of <code class="command">stap inodewatch.stp 0x8 0x05 1078319</code> (when <code class="command">cat /etc/crontab</code> is executed while the script is running) :
34 </div><div class="example"><a id="inodewatchoutput">
35 ⁠</a><p class="title"><strong>Example 5.10. <a class="xref" href="inodewatchsect.html#inodewatch">inodewatch.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">cat(16437) vfs_read 0x800005/1078319 17 ⁠</a><p class="title"><strong>Example 5.10. <a class="xref" href="inodewatchsect.html#inodewatch">inodewatch.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">cat(16437) vfs_read 0x800005/1078319
36cat(16437) vfs_read 0x800005/1078319</pre></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="traceio2sect.html"><strong>Prev</strong>5.2.4. I/O Monitoring (By Device)</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="inodewatch2sect.html"><strong>Next</strong>5.2.6. Monitoring Changes to File Attributes</a></li></ul></body></html> \ No newline at end of file 18cat(16437) vfs_read 0x800005/1078319</pre></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="traceio2sect.html"><strong>Prev</strong>5.2.4. I/O Monitoring (By Device)</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="inodewatch2sect.html"><strong>Next</strong>5.2.6. Monitoring Changes to File Attributes</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/intro-systemtap-limitations.html b/SystemTap_Beginners_Guide/intro-systemtap-limitations.html
index 36fc35a1..b7b2fdc4 100644
--- a/SystemTap_Beginners_Guide/intro-systemtap-limitations.html
+++ b/SystemTap_Beginners_Guide/intro-systemtap-limitations.html
@@ -1,7 +1,9 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">1.3. Limitations of SystemTap</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="introduction.html" title="Chapter 1. Introduction" /><link rel="prev" href="intro-systemtap-vs-others.html" title="1.2. SystemTap Capabilities" /><link rel="next" href="using-systemtap.html" title="Chapter 2. Using SystemTap" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="intro-systemtap-vs-others.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="using-systemtap.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="intro-systemtap-limitations"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">1.3. Limitations of SystemTap</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="introduction.html" title="Chapter 1. Introduction" /><link rel="prev" href="intro-systemtap-vs-others.html" title="1.2. SystemTap Capabilities" /><link rel="next" href="using-systemtap.html" title="Chapter 2. Using SystemTap" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="intro-systemtap-vs-others.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="using-systemtap.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="intro-systemtap-limitations">
3 ⁠</a>1.3. Limitations of SystemTap</h2></div></div></div><a id="idm47748175488128" class="indexterm"></a><a id="idm47748175486720" class="indexterm"></a><div class="para"> 3 ⁠</a>1.3. Limitations of SystemTap</h2></div></div></div><a id="idm140174740663040" class="indexterm"></a><a id="idm140174740661408" class="indexterm"></a><div class="para">The current iteration of SystemTap allows for a multitude of
4 The current iteration of SystemTap allows for a multitude of options when probing kernel-space events for a wide range of kernels. However, SystemTap's ability to probe user-space events depends on kernel support (the Utrace mechanism) that is not available in many kernels. As a consequence, only some kernel versions support user-space probing. 4options when probing kernel-space events for a wide range of kernels.
5 </div><div class="para"> 5However, SystemTap's ability to probe user-space events depends
6 At present, the developmental efforts of the SystemTap community are geared towards improving SystemTap's user-space probing capabilities. 6on kernel support (the Utrace mechanism) that is not available in many kernels.
7 </div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="intro-systemtap-vs-others.html"><strong>Prev</strong>1.2. SystemTap Capabilities</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="using-systemtap.html"><strong>Next</strong>Chapter 2. Using SystemTap</a></li></ul></body></html> \ No newline at end of file 7As a consequence, only some kernel versions support user-space probing.</div><div class="para">At present, the developmental efforts of the SystemTap community
8are geared towards improving SystemTap's user-space probing
9capabilities.</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="intro-systemtap-vs-others.html"><strong>Prev</strong>1.2. SystemTap Capabilities</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="using-systemtap.html"><strong>Next</strong>Chapter 2. Using SystemTap</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/intro-systemtap-vs-others.html b/SystemTap_Beginners_Guide/intro-systemtap-vs-others.html
index 2c728c76..7e13c533 100644
--- a/SystemTap_Beginners_Guide/intro-systemtap-vs-others.html
+++ b/SystemTap_Beginners_Guide/intro-systemtap-vs-others.html
@@ -1,9 +1,3 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">1.2. SystemTap Capabilities</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="introduction.html" title="Chapter 1. Introduction" /><link rel="prev" href="introduction.html" title="Chapter 1. Introduction" /><link rel="next" href="intro-systemtap-limitations.html" title="1.3. Limitations of SystemTap" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="introduction.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="intro-systemtap-limitations.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="intro-systemtap-vs-others"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">1.2. SystemTap Capabilities</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="introduction.html" title="Chapter 1. Introduction" /><link rel="prev" href="introduction.html" title="Chapter 1. Introduction" /><link rel="next" href="intro-systemtap-limitations.html" title="1.3. Limitations of SystemTap" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="introduction.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="intro-systemtap-limitations.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="intro-systemtap-vs-others">
3 ⁠</a>1.2. SystemTap Capabilities</h2></div></div></div><a id="idm47748235564016" class="indexterm"></a><a id="idm47748235562608" class="indexterm"></a><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"> 3 ⁠</a>1.2. SystemTap Capabilities</h2></div></div></div><a id="idm140174738490336" class="indexterm"></a><a id="idm140174741828640" class="indexterm"></a><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"><span class="strong strong"><strong>Flexibility:</strong></span> SystemTap's framework allows users to develop simple scripts for investigating and monitoring a wide variety of kernel functions, system calls, and other events that occur in kernel space. As a result, SystemTap is not so much a <span class="emphasis"><em>tool</em></span> as it is a system that allows you to develop your own kernel-specific forensic and monitoring tools.</div></li><li class="listitem"><div class="para"><span class="strong strong"><strong>Ease of use</strong></span>: as mentioned earlier, SystemTap allows users to probe kernel-space events without having to resort to instrument, recompile, install, and reboot the kernel.</div></li></ul></div><div class="para">Most of the SystemTap scripts enumerated in <a class="xref" href="useful-systemtap-scripts.html">Chapter 5, <em>Useful SystemTap Scripts</em></a> demonstrate system forensics and monitoring capabilities not natively available with other similar tools (such as <code class="command">top</code>, <code class="command">oprofile</code>, or <code class="command">ps</code>). These scripts are provided to give readers extensive examples of the application of SystemTap and to educate them further on the capabilities they can employ when writing their own SystemTap scripts.</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="introduction.html"><strong>Prev</strong>Chapter 1. Introduction</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="intro-systemtap-limitations.html"><strong>Next</strong>1.3. Limitations of SystemTap</a></li></ul></body></html> \ No newline at end of file
4 <span class="strong strong"><strong>Flexibility:</strong></span> SystemTap's framework allows users to develop simple scripts for investigating and monitoring a wide variety of kernel functions, system calls, and other events that occur in kernel space. As a result, SystemTap is not so much a <span class="emphasis"><em>tool</em></span> as it is a system that allows you to develop your own kernel-specific forensic and monitoring tools.
5 </div></li><li class="listitem"><div class="para">
6 <span class="strong strong"><strong>Ease of use</strong></span>: as mentioned earlier, SystemTap allows users to probe kernel-space events without having to resort to instrument, recompile, install, and reboot the kernel.
7 </div></li></ul></div><div class="para">
8 Most of the SystemTap scripts enumerated in <a class="xref" href="useful-systemtap-scripts.html">Chapter 5, <em>Useful SystemTap Scripts</em></a> demonstrate system forensics and monitoring capabilities not natively available with other similar tools (such as <code class="command">top</code>, <code class="command">oprofile</code>, or <code class="command">ps</code>). These scripts are provided to give readers extensive examples of the application of SystemTap and to educate them further on the capabilities they can employ when writing their own SystemTap scripts.
9 </div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="introduction.html"><strong>Prev</strong>Chapter 1. Introduction</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="intro-systemtap-limitations.html"><strong>Next</strong>1.3. Limitations of SystemTap</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/introduction.html b/SystemTap_Beginners_Guide/introduction.html
index 9bd1ad9a..7a911280 100644
--- a/SystemTap_Beginners_Guide/introduction.html
+++ b/SystemTap_Beginners_Guide/introduction.html
@@ -1,18 +1,16 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Chapter 1. Introduction</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="pr01s02.html" title="2. We Need Feedback!" /><link rel="next" href="intro-systemtap-vs-others.html" title="1.2. SystemTap Capabilities" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="pr01s02.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="intro-systemtap-vs-others.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" lang="en-US"><div class="titlepage"><div><div><h1 class="title"><a id="introduction"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Chapter 1. Introduction</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="pr01s02.html" title="2. We Need Feedback!" /><link rel="next" href="intro-systemtap-vs-others.html" title="1.2. SystemTap Capabilities" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="pr01s02.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="intro-systemtap-vs-others.html"><strong>Next</strong></a></li></ul><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="introduction">
3 ⁠</a>Chapter 1. Introduction</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="introduction.html#goals">1.1. Documentation Goals</a></span></dt><dt><span class="section"><a href="intro-systemtap-vs-others.html">1.2. SystemTap Capabilities</a></span></dt><dt><span class="section"><a href="intro-systemtap-limitations.html">1.3. Limitations of SystemTap</a></span></dt></dl></div><a id="idm47748181717024" class="indexterm"></a><a id="idm47748229660336" class="indexterm"></a><div class="para"> 3 ⁠</a>Chapter 1. Introduction</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="introduction.html#goals">1.1. Documentation Goals</a></span></dt><dt><span class="section"><a href="intro-systemtap-vs-others.html">1.2. SystemTap Capabilities</a></span></dt><dt><span class="section"><a href="intro-systemtap-limitations.html">1.3. Limitations of SystemTap</a></span></dt></dl></div><a id="idm140174741141600" class="indexterm"></a><a id="idm140174743503120" class="indexterm"></a><div class="para">
4 SystemTap is a tracing and probing tool that allows users to study and monitor the activities of the computer system (particularly, the kernel) in fine detail. It provides information similar to the output of tools like <code class="command">netstat</code>, <code class="command">ps</code>, <code class="command">top</code>, and <code class="command">iostat</code>, but is designed to provide more filtering and analysis options for collected information. 4 SystemTap is a tracing and probing tool that allows
5 users to study and monitor the activities of the
6 computer system (particularly, the kernel) in fine
7 detail. It provides information similar to the output
8 of tools like <code class="command">netstat</code>,
9 <code class="command">ps</code>, <code class="command">top</code>, and
10 <code class="command">iostat</code>, but is
11 designed to provide more filtering and analysis
12 options for collected information.
5 </div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="goals"> 13 </div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="goals">
6 ⁠</a>1.1. Documentation Goals</h2></div></div></div><a id="idm47748222726592" class="indexterm"></a><a id="idm47748222714624" class="indexterm"></a><a id="idm47748181604288" class="indexterm"></a><a id="idm47748178227904" class="indexterm"></a><div class="para"> 14 ⁠</a>1.1. Documentation Goals</h2></div></div></div><a id="idm140174741116352" class="indexterm"></a><a id="idm140174739459264" class="indexterm"></a><a id="idm140174742104896" class="indexterm"></a><a id="idm140174737030720" class="indexterm"></a><div class="para">SystemTap provides the infrastructure to monitor the running Linux kernel for detailed analysis. This can assist administrators and developers in identifying the underlying cause of a bug or performance problem.</div><div class="para">Without SystemTap, monitoring the activity of a running kernel would require a tedious instrument, recompile, install, and reboot sequence. SystemTap is designed to eliminate this and allows users to gather the same information by running user-written SystemTap scripts.</div><div class="para">SystemTap was initially designed for users with intermediate to advanced knowledge of the kernel. As a consequence, it is less useful to administrators or developers with limited knowledge of and experience with the Linux kernel. Moreover, much of the existing SystemTap documentation is aimed at knowledgeable and experienced users, which makes learning the tool similarly difficult.</div><div class="para">To lower these barriers, the SystemTap Beginners Guide was written with the following goals:</div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">to introduce users to SystemTap, familiarize
7 SystemTap provides the infrastructure to monitor the running Linux kernel for detailed analysis. This can assist administrators and developers in identifying the underlying cause of a bug or performance problem. 15 them with its architecture, and provide setup
8 </div><div class="para"> 16 instructions;</div></li><li class="listitem"><div class="para">to provide pre-written SystemTap scripts for monitoring detailed activity in different components of the system, along with instructions on how to run them and analyze their output.</div></li></ul></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="pr01s02.html"><strong>Prev</strong>2. We Need Feedback!</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="intro-systemtap-vs-others.html"><strong>Next</strong>1.2. SystemTap Capabilities</a></li></ul></body></html> \ No newline at end of file
9 Without SystemTap, monitoring the activity of a running kernel would require a tedious instrument, recompile, install, and reboot sequence. SystemTap is designed to eliminate this and allows users to gather the same information by running user-written SystemTap scripts.
10 </div><div class="para">
11 SystemTap was initially designed for users with intermediate to advanced knowledge of the kernel. As a consequence, it is less useful to administrators or developers with limited knowledge of and experience with the Linux kernel. Moreover, much of the existing SystemTap documentation is aimed at knowledgeable and experienced users, which makes learning the tool similarly difficult.
12 </div><div class="para">
13 To lower these barriers, the SystemTap Beginners Guide was written with the following goals:
14 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
15 to introduce users to SystemTap, familiarize them with its architecture, and provide setup instructions;
16 </div></li><li class="listitem"><div class="para">
17 to provide pre-written SystemTap scripts for monitoring detailed activity in different components of the system, along with instructions on how to run them and analyze their output.
18 </div></li></ul></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="pr01s02.html"><strong>Prev</strong>2. We Need Feedback!</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="intro-systemtap-vs-others.html"><strong>Next</strong>1.2. SystemTap Capabilities</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/ioblktimesect.html b/SystemTap_Beginners_Guide/ioblktimesect.html
index a256ec7b..bccf8d02 100644
--- a/SystemTap_Beginners_Guide/ioblktimesect.html
+++ b/SystemTap_Beginners_Guide/ioblktimesect.html
@@ -1,9 +1,10 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.2.7. Periodically Print I/O Block Time</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-disk.html" title="5.2. Disk" /><link rel="prev" href="inodewatch2sect.html" title="5.2.6. Monitoring Changes to File Attributes" /><link rel="next" href="mainsect-profiling.html" title="5.3. Profiling" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="inodewatch2sect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="mainsect-profiling.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="ioblktimesect"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.2.7. Periodically Print I/O Block Time</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-disk.html" title="5.2. Disk" /><link rel="prev" href="inodewatch2sect.html" title="5.2.6. Monitoring Changes to File Attributes" /><link rel="next" href="mainsect-profiling.html" title="5.3. Profiling" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="inodewatch2sect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="mainsect-profiling.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="ioblktimesect">
3 ⁠</a>5.2.7. Periodically Print I/O Block Time</h3></div></div></div><a id="idm47748179979632" class="indexterm"></a><a id="idm47748224768576" class="indexterm"></a><a id="idm47748214957408" class="indexterm"></a><a id="idm47748186248848" class="indexterm"></a><a id="idm47748177155200" class="indexterm"></a><div class="para"> 3 ⁠</a>5.2.7. Periodically Print I/O Block Time</h3></div></div></div><a id="idm140174736423920" class="indexterm"></a><a id="idm140174731244224" class="indexterm"></a><a id="idm140174742563808" class="indexterm"></a><a id="idm140174737044496" class="indexterm"></a><a id="idm140174733619520" class="indexterm"></a><div class="para">
4 This section describes how to track the amount of time each block I/O requests spends waiting for completion. This is useful in determining whether there are too many outstanding block I/O operations at any given time. 4 This section describes how to track the amount of time each block I/O requests spends
5 waiting for completion. This is useful in determining whether there are too many
6 outstanding block I/O operations at any given time.
5 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">ioblktime.stp</div> 7 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">ioblktime.stp</div>
6
7<pre class="programlisting">#! /usr/bin/env stap 8<pre class="programlisting">#! /usr/bin/env stap
8 9
9global req_time%[25000], etimes 10global req_time%[25000], etimes
@@ -41,15 +42,26 @@ probe timer.s(10), end {
41 delete etimes 42 delete etimes
42} 43}
43</pre> 44</pre>
44 </div><div class="para"> 45</div><div class="para">
45 <a class="xref" href="ioblktimesect.html#ioblktime">ioblktime.stp</a> computes the average waiting time for block I/O per device, and prints a list every 10 seconds. As always, you can revise this refresh rate by editing the specified value in <code class="command">probe timer.s(10), end {</code>. 46 <a class="xref" href="ioblktimesect.html#ioblktime">ioblktime.stp</a> computes the average waiting time for block I/O per device,
46 </div><div class="para"> 47 and prints a list every 10 seconds. As always, you can revise this refresh rate by
47 In some cases, there can be too many outstanding block I/O operations, at which point the script can exceed the default number of <code class="command">MAXMAPENTRIES</code>. <code class="command">MAXMAPENTRIES</code> is the maximum number of rows in an array if the array size is not specified explicitly when declared. If the script exceeds the default <code class="command">MAXMAPENTRIES</code> value of 2048, run the script again with the <code class="command">stap</code> option <code class="command">-DMAXMAPENTRIES=10000</code>. 48 editing the specified value in <code class="command">probe timer.s(10), end {</code>.
48 </div><div class="example"><a id="ioblktimeoutput"> 49</div><div class="para">
50 In some cases, there can be too many outstanding block
51 I/O operations, at which point the script can exceed the default number of
52 <code class="command">MAXMAPENTRIES</code>. <code class="command">MAXMAPENTRIES</code> is the maximum number of
53 rows in an array if the array size is not specified explicitly when declared. If the script
54 exceeds the default <code class="command">MAXMAPENTRIES</code> value of 2048, run the script again with
55 the <code class="command">stap</code> option <code class="command">-DMAXMAPENTRIES=10000</code>.
56</div><div class="example"><a id="ioblktimeoutput">
49 ⁠</a><p class="title"><strong>Example 5.12. <a class="xref" href="ioblktimesect.html#ioblktime">ioblktime.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen"> device rw total (us) count avg (us) 57 ⁠</a><p class="title"><strong>Example 5.12. <a class="xref" href="ioblktimesect.html#ioblktime">ioblktime.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen"> device rw total (us) count avg (us)
50 sda W 9659 6 1609 58 sda W 9659 6 1609
51 dm-0 W 20278 6 3379 59 dm-0 W 20278 6 3379
52 dm-0 R 20524 5 4104 60 dm-0 R 20524 5 4104
53 sda R 19277 5 3855</pre></div></div><div class="para"> 61 sda R 19277 5 3855</pre></div></div><div class="para">
54 <a class="xref" href="ioblktimesect.html#ioblktimeoutput">Example 5.12, “ioblktime.stp Sample Output”</a> displays the device name, operations performed (<code class="command">rw</code>), total wait time of all operations (<code class="command">total(us)</code>), number of operations (<code class="command">count</code>), and average wait time for all those operations (<code class="command">avg (us)</code>). The times tallied by the script are in microseconds. 62 <a class="xref" href="ioblktimesect.html#ioblktimeoutput">Example 5.12, “ioblktime.stp Sample Output”</a> displays the device name, operations performed
55 </div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="inodewatch2sect.html"><strong>Prev</strong>5.2.6. Monitoring Changes to File Attributes</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="mainsect-profiling.html"><strong>Next</strong>5.3. Profiling</a></li></ul></body></html> \ No newline at end of file 63 (<code class="command">rw</code>), total wait time of all operations (<code class="command">total(us)</code>),
64 number of operations (<code class="command">count</code>), and average
65 wait time for all those operations (<code class="command">avg (us)</code>). The times tallied by the
66 script are in microseconds.
67</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="inodewatch2sect.html"><strong>Prev</strong>5.2.6. Monitoring Changes to File Attributes</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="mainsect-profiling.html"><strong>Next</strong>5.3. Profiling</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/iotimesect.html b/SystemTap_Beginners_Guide/iotimesect.html
index 14603d29..d8a54004 100644
--- a/SystemTap_Beginners_Guide/iotimesect.html
+++ b/SystemTap_Beginners_Guide/iotimesect.html
@@ -1,9 +1,10 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.2.2. Tracking I/O Time For Each File Read or Write</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-disk.html" title="5.2. Disk" /><link rel="prev" href="mainsect-disk.html" title="5.2. Disk" /><link rel="next" href="traceiosect.html" title="5.2.3. Track Cumulative IO" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="mainsect-disk.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="traceiosect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="iotimesect"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.2.2. Tracking I/O Time For Each File Read or Write</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-disk.html" title="5.2. Disk" /><link rel="prev" href="mainsect-disk.html" title="5.2. Disk" /><link rel="next" href="traceiosect.html" title="5.2.3. Track Cumulative IO" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="mainsect-disk.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="traceiosect.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="iotimesect">
3 ⁠</a>5.2.2. Tracking I/O Time For Each File Read or Write</h3></div></div></div><a id="idm47748219099856" class="indexterm"></a><a id="idm47748179298688" class="indexterm"></a><a id="idm47748224604240" class="indexterm"></a><a id="idm47748225803616" class="indexterm"></a><a id="idm47748215055488" class="indexterm"></a><div class="para"> 3 ⁠</a>5.2.2. Tracking I/O Time For Each File Read or Write</h3></div></div></div><a id="idm140174742399728" class="indexterm"></a><a id="idm140174732523888" class="indexterm"></a><a id="idm140174734912320" class="indexterm"></a><a id="idm140174733178448" class="indexterm"></a><a id="idm140174732192912" class="indexterm"></a><div class="para">
4 This section describes how to monitor the amount of time it takes for each process to read from or write to any file. This is useful to determine what files are slow to load on a given system. 4 This section describes how to monitor the amount of time it takes for each process to read
5 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">iotime.stp</div> 5 from or write to any file. This is useful to determine what files are slow to
6 6 load on a given system.
7</div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">iotime.stp</div>
7<pre class="programlisting">#! /usr/bin/env stap 8<pre class="programlisting">#! /usr/bin/env stap
8 9
9/* 10/*
@@ -89,11 +90,19 @@ probe syscall.close {
89 delete time_io[pid(),$fd] 90 delete time_io[pid(),$fd]
90} 91}
91</pre> 92</pre>
92 </div><div class="para"> 93</div><div class="para">
93 <a class="xref" href="iotimesect.html#iotime">iotime.stp</a> tracks each time a system call opens, closes, reads from, and writes to a file. For each file any system call accesses, <a class="xref" href="iotimesect.html#iotime">iotime.stp</a> counts the number of microseconds it takes for any reads or writes to finish and tracks the amount of data (in bytes) read from or written to the file. 94 <a class="xref" href="iotimesect.html#iotime">iotime.stp</a> tracks each time a system call opens, closes, reads from, and writes
94 </div><a id="idm47748218751504" class="indexterm"></a><a id="idm47748224426144" class="indexterm"></a><a id="idm47748174913040" class="indexterm"></a><div class="para"> 95 to a file. For each file any system call accesses, <a class="xref" href="iotimesect.html#iotime">iotime.stp</a> counts the number
95 <a class="xref" href="iotimesect.html#iotime">iotime.stp</a> also uses the local variable <code class="command">$count</code> to track the amount of data (in bytes) that any system call <span class="emphasis"><em>attempts</em></span> to read or write. Note that <code class="command">$return</code> (as used in <a class="xref" href="mainsect-disk.html#scriptdisktop">disktop.stp</a> from <a class="xref" href="mainsect-disk.html#disktop">Section 5.2.1, “Summarizing Disk Read/Write Traffic”</a>) stores the <span class="emphasis"><em>actual</em></span> amount of data read/written. <code class="command">$count</code> can only be used on probes that track data reads or writes (that is, <code class="command">syscall.read</code> and <code class="command">syscall.write</code>). 96 of microseconds it takes for any reads or writes to finish and tracks the amount of data (in
96 </div><div class="example"><a id="iotimeoutput"> 97 bytes) read from or written to the file.
98</div><a id="idm140174742503376" class="indexterm"></a><a id="idm140174732282944" class="indexterm"></a><a id="idm140174743000576" class="indexterm"></a><div class="para">
99 <a class="xref" href="iotimesect.html#iotime">iotime.stp</a> also uses the local variable <code class="command">$count</code> to track the
100 amount of data (in bytes) that any system call <span class="emphasis"><em>attempts</em></span> to read or
101 write. Note that <code class="command">$return</code> (as used in <a class="xref" href="mainsect-disk.html#scriptdisktop">disktop.stp</a> from
102 <a class="xref" href="mainsect-disk.html#disktop">Section 5.2.1, “Summarizing Disk Read/Write Traffic”</a>) stores the <span class="emphasis"><em>actual</em></span> amount of data
103 read/written. <code class="command">$count</code> can only be used on probes that track data reads or
104 writes (that is, <code class="command">syscall.read</code> and <code class="command">syscall.write</code>).
105</div><div class="example"><a id="iotimeoutput">
97 ⁠</a><p class="title"><strong>Example 5.7. <a class="xref" href="iotimesect.html#iotime">iotime.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">[...] 106 ⁠</a><p class="title"><strong>Example 5.7. <a class="xref" href="iotimesect.html#iotime">iotime.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">[...]
98825946 3364 (NetworkManager) access /sys/class/net/eth0/carrier read: 8190 write: 0 107825946 3364 (NetworkManager) access /sys/class/net/eth0/carrier read: 8190 write: 0
99825955 3364 (NetworkManager) iotime /sys/class/net/eth0/carrier time: 9 108825955 3364 (NetworkManager) iotime /sys/class/net/eth0/carrier time: 9
@@ -104,17 +113,18 @@ probe syscall.close {
1043973737 2886 (sendmail) access /proc/loadavg read: 4096 write: 0 1133973737 2886 (sendmail) access /proc/loadavg read: 4096 write: 0
1053973744 2886 (sendmail) iotime /proc/loadavg time: 11 1143973744 2886 (sendmail) iotime /proc/loadavg time: 11
106[...]</pre></div></div><div class="para"> 115[...]</pre></div></div><div class="para">
107 <a class="xref" href="iotimesect.html#iotimeoutput">Example 5.7, “iotime.stp Sample Output”</a> prints out the following data: 116 <a class="xref" href="iotimesect.html#iotimeoutput">Example 5.7, “iotime.stp Sample Output”</a> prints out the following data:
108 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"> 117</div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">A timestamp, in microseconds.</div></li><li class="listitem"><div class="para">Process ID and process name.</div></li><li class="listitem"><div class="para">An <code class="computeroutput">access</code> or
109 A timestamp, in microseconds. 118 <code class="computeroutput">iotime</code> flag.</div></li><li class="listitem"><div class="para">The file accessed.</div></li></ul></div><div class="para">
110 </div></li><li class="listitem"><div class="para"> 119 If a process was able to read or write any data, a pair of
111 Process ID and process name. 120 <code class="computeroutput">access</code> and <code class="computeroutput">iotime</code> lines
112 </div></li><li class="listitem"><div class="para"> 121 should appear together. The <code class="computeroutput">access</code> line's timestamp refers to
113 An <code class="computeroutput">access</code> or <code class="computeroutput">iotime</code> flag. 122 the time that a given process started accessing a file; at the end of the line, it will show
114 </div></li><li class="listitem"><div class="para"> 123 the amount of data read/written (in bytes). The <code class="computeroutput">iotime</code> line
115 The file accessed. 124 will show the amount of time (in microseconds) that the process took in order to perform the
116 </div></li></ul></div><div class="para"> 125 read or write.
117 If a process was able to read or write any data, a pair of <code class="computeroutput">access</code> and <code class="computeroutput">iotime</code> lines should appear together. The <code class="computeroutput">access</code> line's timestamp refers to the time that a given process started accessing a file; at the end of the line, it will show the amount of data read/written (in bytes). The <code class="computeroutput">iotime</code> line will show the amount of time (in microseconds) that the process took in order to perform the read or write. 126</div><div class="para">
118 </div><div class="para"> 127 If an <code class="computeroutput">access</code> line is not followed by an
119 If an <code class="computeroutput">access</code> line is not followed by an <code class="computeroutput">iotime</code> line, it means that the process did not read or write any data. 128 <code class="computeroutput">iotime</code> line, it means that the process did not read
120 </div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="mainsect-disk.html"><strong>Prev</strong>5.2. Disk</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="traceiosect.html"><strong>Next</strong>5.2.3. Track Cumulative IO</a></li></ul></body></html> \ No newline at end of file 129 or write any data.
130</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="mainsect-disk.html"><strong>Prev</strong>5.2. Disk</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="traceiosect.html"><strong>Next</strong>5.2.3. Track Cumulative IO</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/ix01.html b/SystemTap_Beginners_Guide/ix01.html
index 66068db8..88d81722 100644
--- a/SystemTap_Beginners_Guide/ix01.html
+++ b/SystemTap_Beginners_Guide/ix01.html
@@ -1,3 +1,3 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Index</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="appe-Publican-Revision_History.html" title="Appendix A. Revision History" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="appe-Publican-Revision_History.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"></li></ul><div class="index"><div class="titlepage"><div><div><h1 class="title"><a id="idm47748213623552"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Index</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="appe-Publican-Revision_History.html" title="Appendix A. Revision History" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="appe-Publican-Revision_History.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"></li></ul><div class="index"><div class="titlepage"><div><div><h1 class="title"><a id="idm140174748345840">
3 ⁠</a>Index</h1></div></div></div><div class="index"><div class="indexdiv"><h3>Symbols</h3><dl><dt>$count</dt><dd><dl><dt>sample usage</dt><dd><dl><dt>local variables, <a class="indexterm" href="iotimesect.html">Tracking I/O Time For Each File Read or Write</a></dt></dl></dd></dl></dd><dt>$return</dt><dd><dl><dt>sample usage</dt><dd><dl><dt>local variables, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a>, <a class="indexterm" href="traceiosect.html">Track Cumulative IO</a></dt></dl></dd></dl></dd><dt>@avg (integer extractor)</dt><dd><dl><dt>computing for statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd><dt>@count (integer extractor)</dt><dd><dl><dt>computing for statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd><dt>@max (integer extractor)</dt><dd><dl><dt>computing for statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd><dt>@min (integer extractor)</dt><dd><dl><dt>computing for statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd><dt>@sum (integer extractor)</dt><dd><dl><dt>computing for statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>A</h3><dl><dt>adding values to statistical aggregates</dt><dd><dl><dt>computing for statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd><dt>advantages of cross-instrumentation, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>aggregate element not found</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>aggregates (statistical)</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd><dt>aggregation overflow</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>algebraic formulas using arrays</dt><dd><dl><dt>reading values from arrays</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt></dl></dd></dl></dd><dt>architecture notation, determining, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>architecture of SystemTap, <a class="indexterm" href="understanding-how-systemtap-works.html#understanding-architecture-tools">Architecture</a></dt><dt>array locals not supported</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>array operations</dt><dd><dl><dt>assigning associated values, <a class="indexterm" href="arrayoperators.html#arrayops-assignvalue">Assigning an Associated Value</a></dt><dd><dl><dt>associating timestamps to process names, <a class="indexterm" href="arrayoperators.html#arrayops-assignvalue">Assigning an Associated Value</a></dt></dl></dd><dt>associative arrays, <a class="indexterm" href="arrayoperators.html">Array Operations in SystemTap</a></dt><dt>clearing arrays/array elements, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dd><dl><dt>delete operator, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dt>multiple array operations within the same probe, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dt>virtual file system reads (non-cumulative), tallying, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt></dl></dd><dt>computing for statistical aggregates, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dd><dl><dt>@avg (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@count (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@max (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@min (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@sum (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>adding values to statistical aggregates, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>count (operator), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>extracting data collected by statistical aggregates, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd><dt>conditional statements, using arrays in, <a class="indexterm" href="arrayops-conditionals.html">Using Arrays in Conditional Statements</a></dt><dd><dl><dt>testing for array membership, <a class="indexterm" href="arrayops-conditionals.html">Using Arrays in Conditional Statements</a></dt></dl></dd><dt>deleting arrays and array elements, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dt>incrementing associated values, <a class="indexterm" href="arrayops-increment.html">Incrementing Associated Values</a></dt><dd><dl><dt>tallying virtual file system reads (VFS reads), <a class="indexterm" href="arrayops-increment.html">Incrementing Associated Values</a></dt></dl></dd><dt>multiple elements in an array, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>processing multiple elements in an array, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dd><dl><dt>cumulative virtual file system reads, tallying, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>foreach, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>iterations, processing elements in an array as, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>limiting the output of foreach, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>ordering the output of foreach, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd><dt>reading values from arrays, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt><dd><dl><dt>computing for timestamp deltas, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt><dt>empty unique keys, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt><dt>using arrays in simple computations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt></dl></dd></dl></dd><dt>arrays, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt><dd><dl><dt>(see also associative arrays)</dt></dl></dd><dt>assigning associated values</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayoperators.html#arrayops-assignvalue">Assigning an Associated Value</a></dt><dd><dl><dt>associating timestamps to process names, <a class="indexterm" href="arrayoperators.html#arrayops-assignvalue">Assigning an Associated Value</a></dt></dl></dd><dt>associating timestamps to process names</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayoperators.html#arrayops-assignvalue">Assigning an Associated Value</a></dt></dl></dd></dl></dd><dt>associated values</dt><dd><dl><dt>introduction</dt><dd><dl><dt>arrays, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt></dl></dd></dl></dd><dt>associating timestamps to process names</dt><dd><dl><dt>assigning associated values</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayoperators.html#arrayops-assignvalue">Assigning an Associated Value</a></dt></dl></dd></dl></dd><dt>associative arrays</dt><dd><dl><dt>introduction, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt><dd><dl><dt>associated values, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt><dt>example, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt><dt>index expression, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt><dt>key pairs, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt><dt>syntax, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt><dt>unique keys, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt></dl></dd></dl></dd><dt>asynchronous events</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>B</h3><dl><dt>begin</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>building instrumentation modules from SystemTap scripts, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>building kernel modules from SystemTap scripts, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt></dl></div><div class="indexdiv"><h3>C</h3><dl><dt>call graph tracing</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt></dl></dd><dt>capabilities of SystemTap</dt><dd><dl><dt>Introduction, <a class="indexterm" href="intro-systemtap-vs-others.html">SystemTap Capabilities</a></dt></dl></dd><dt>changes to file attributes, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatch2sect.html">Monitoring Changes to File Attributes</a></dt></dl></dd><dt>clearing arrays/array elements</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dd><dl><dt>delete operator, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dt>multiple array operations within the same probe, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dt>virtual file system reads (non-cumulative), tallying, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt></dl></dd></dl></dd><dt>command-line arguments</dt><dd><dl><dt>SystemTap handler constructs</dt><dd><dl><dt>handlers, <a class="indexterm" href="commandlineargssect.html">Command-Line Arguments</a></dt></dl></dd></dl></dd><dt>compiling instrumentation/kernel modules from SystemTap scripts, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>components</dt><dd><dl><dt>SystemTap scripts</dt><dd><dl><dt>introduction, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt></dl></dd></dl></dd><dt>computing for statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dd><dl><dt>@avg (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@count (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@max (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@min (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@sum (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>adding values to statistical aggregates, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>count (operator), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>extracting data collected by statistical aggregates, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd><dt>computing for timestamp deltas</dt><dd><dl><dt>reading values from arrays</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt></dl></dd></dl></dd><dt>conditional operators</dt><dd><dl><dt>conditional statements</dt><dd><dl><dt>handlers, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt></dl></dd></dl></dd><dt>conditional statements, using arrays in</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-conditionals.html">Using Arrays in Conditional Statements</a></dt><dd><dl><dt>testing for array membership, <a class="indexterm" href="arrayops-conditionals.html">Using Arrays in Conditional Statements</a></dt></dl></dd></dl></dd><dt>CONFIG_HZ, computing for, <a class="indexterm" href="scriptconstructions.html#variablesconstructs">Variables</a></dt><dt>contended user-space locks (futex contentions), identifying</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt></dl></dd><dt>copy fault</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>count operator</dt><dd><dl><dt>computing for statistical aggregates</dt><dd><dl><dt>array (operator), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd><dt>counting function calls</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="mainsect-profiling.html#countcallssect">Counting Function Calls Made</a></dt></dl></dd><dt>CPU ticks</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="threadtimessect.html">Determining Time Spent in Kernel and User Space</a></dt></dl></dd><dt>cpu()</dt><dd><dl><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>cross-compiling, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>cross-instrumentation</dt><dd><dl><dt>advantages of, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>building kernel modules from SystemTap scripts, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>configuration</dt><dd><dl><dt>host system and target system, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt></dl></dd><dt>generating instrumentation from SystemTap scripts, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>host system, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>instrumentation module, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>target kernel, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>target system, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt></dl></dd><dt>ctime()</dt><dd><dl><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>ctime(), example of usage</dt><dd><dl><dt>script examples, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt></dl></dd><dt>cumulative I/O, tracking</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceiosect.html">Track Cumulative IO</a></dt></dl></dd><dt>cumulative virtual file system reads, tallying</dt><dd><dl><dt>processing multiple elements in an array</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>D</h3><dl><dt>delete operator</dt><dd><dl><dt>clearing arrays/array elements</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt></dl></dd></dl></dd><dt>determining architecture notation, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>determining the kernel version, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>determining time spent in kernel and user space</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="threadtimessect.html">Determining Time Spent in Kernel and User Space</a></dt></dl></dd><dt>device I/O, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt></dl></dd><dt>device number of a file (integer format)</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt></dl></dd><dt>disk I/O traffic, summarizing</dt><dd><dl><dt>script examples, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt></dl></dd><dt>division by 0</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>documentation goals</dt><dd><dl><dt>Introduction, <a class="indexterm" href="introduction.html#goals">Documentation Goals</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>E</h3><dl><dt>embedded code in unprivileged script</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>empty unique keys</dt><dd><dl><dt>reading values from arrays</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt></dl></dd></dl></dd><dt>end</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>errors</dt><dd><dl><dt>parse/semantics error, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dd><dl><dt>embedded code in unprivileged script, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>expected symbol/array index expression, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>grammatical/typographical script error, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>guru mode, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>invalid values to variables/arrays, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>libdwfl failure, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>no match for probe point, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>non-global arrays, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>probe mismatch, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>type mismatch for identifier, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>unresolved function call, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>unresolved target-symbol expression, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>unresolved type for identifier, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>variable modified during 'foreach', <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd><dt>runtime errors/warnings, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dd><dl><dt>aggregate element not found, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>aggregation overflow, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>copy fault, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>division by 0, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>MAXACTION exceeded, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>MAXNESTING exceeded, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>number of errors: N, skipped probes: M, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>pointer dereference fault, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>event types</dt><dd><dl><dt>Understanding How SystemTap Works, <a class="indexterm" href="understanding-how-systemtap-works.html">Understanding How SystemTap Works</a></dt></dl></dd><dt>Events</dt><dd><dl><dt>asynchronous events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>begin, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>end, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>examples of synchronous and asynchronous events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>introduction, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>kernel.function("function"), <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>kernel.trace("tracepoint"), <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>module("module"), <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>synchronous events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>syscall.system_call, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>timer events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>user-space, <a class="indexterm" href="userspace-probing.html#uevents">User-Space Events</a></dt><dt>vfs.file_operation, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>wildcards, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>events and handlers, <a class="indexterm" href="understanding-how-systemtap-works.html">Understanding How SystemTap Works</a></dt><dt>events wildcards, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>example</dt><dd><dl><dt>introduction</dt><dd><dl><dt>arrays, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt></dl></dd></dl></dd><dt>example of multiple command-line arguments</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt></dl></dd><dt>examples of synchronous and asynchronous events</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html">Useful SystemTap Scripts</a></dt><dd><dl><dt>call graph tracing, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt><dt>CPU ticks, <a class="indexterm" href="threadtimessect.html">Determining Time Spent in Kernel and User Space</a></dt><dt>ctime(), example of usage, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt><dt>determining time spent in kernel and user space, <a class="indexterm" href="threadtimessect.html">Determining Time Spent in Kernel and User Space</a></dt><dt>file device number (integer format), <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt><dt>futex (lock) contentions, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt><dt>futex system call, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt><dt>identifying contended user-space locks (futex contentions), <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt><dt>if/else conditionals, alternative syntax, <a class="indexterm" href="useful-systemtap-scripts.html#nettopsect">Network Profiling</a></dt><dt>inode number, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt><dt>monitoring changes to file attributes, <a class="indexterm" href="inodewatch2sect.html">Monitoring Changes to File Attributes</a></dt><dt>monitoring device I/O, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt><dt>monitoring I/O block time, <a class="indexterm" href="ioblktimesect.html">Periodically Print I/O Block Time</a></dt><dt>monitoring I/O time, <a class="indexterm" href="iotimesect.html">Tracking I/O Time For Each File Read or Write</a></dt><dt>monitoring incoming TCP connections, <a class="indexterm" href="useful-systemtap-scripts.html#tcpconnectionssect">Monitoring Incoming TCP Connections</a></dt><dt>monitoring polling applications, <a class="indexterm" href="timeoutssect.html">Monitoring Polling Applications</a></dt><dt>monitoring reads and writes to a file, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt><dt>monitoring system calls, <a class="indexterm" href="topsyssect.html">Tracking Most Frequently Used System Calls</a></dt><dt>monitoring system calls (volume per process), <a class="indexterm" href="syscallsbyprocpidsect.html">Tracking System Call Volume Per Process</a></dt><dt>monitoring TCP packets, <a class="indexterm" href="useful-systemtap-scripts.html#tcpdumplikesect">Monitoring TCP Packets</a></dt><dt>multiple command-line arguments, example of, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt><dt>net/socket.c, tracing functions from, <a class="indexterm" href="useful-systemtap-scripts.html#sockettracesect">Tracing Functions Called in Network Socket Code</a></dt><dt>network profiling, <a class="indexterm" href="useful-systemtap-scripts.html#nettopsect">Network Profiling</a>, <a class="indexterm" href="useful-systemtap-scripts.html#dropwatchsect">Monitoring Network Packets Drops in Kernel</a></dt><dt>stat -c, determining file device number (integer format), <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt><dt>stat -c, determining whole device number, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt><dt>summarizing disk I/O traffic, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt><dt>tallying function calls, <a class="indexterm" href="mainsect-profiling.html#countcallssect">Counting Function Calls Made</a></dt><dt>thread_indent(), sample usage, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt><dt>timer.ms(), sample usage, <a class="indexterm" href="mainsect-profiling.html#countcallssect">Counting Function Calls Made</a></dt><dt>timer.s(), sample usage, <a class="indexterm" href="timeoutssect.html">Monitoring Polling Applications</a>, <a class="indexterm" href="topsyssect.html">Tracking Most Frequently Used System Calls</a></dt><dt>tracing functions called in network socket code, <a class="indexterm" href="useful-systemtap-scripts.html#sockettracesect">Tracing Functions Called in Network Socket Code</a></dt><dt>tracking cumulative I/O, <a class="indexterm" href="traceiosect.html">Track Cumulative IO</a></dt><dt>trigger function, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt><dt>usrdev2kerndev(), <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt><dt>whole device number (usage as a command-line argument), <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt></dl></dd><dt>exceeded MAXACTION</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>exceeded MAXNESTING</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>exit()</dt><dd><dl><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>expected symbol/array index expression</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>extracting data collected by statistical aggregates</dt><dd><dl><dt>computing for statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>F</h3><dl><dt>feedback</dt><dd><dl><dt>contact information for this manual, <a class="indexterm" href="pr01s02.html">We Need Feedback!</a></dt></dl></dd><dt>file attributes, monitoring changes to</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatch2sect.html">Monitoring Changes to File Attributes</a></dt></dl></dd><dt>file device number (integer format)</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt></dl></dd><dt>file reads/writes, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt></dl></dd><dt>flight recorder mode, <a class="indexterm" href="using-usage.html#flight-recorder">SystemTap Flight Recorder Mode</a></dt><dd><dl><dt>file mode, <a class="indexterm" href="using-usage.html#file-flight-recorder">File Flight Recorder</a></dt><dt>in-memory mode, <a class="indexterm" href="using-usage.html#memory-flight-recorder">In-memory Flight Recorder</a></dt></dl></dd><dt>for loops</dt><dd><dl><dt>conditional statements</dt><dd><dl><dt>handlers, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt></dl></dd></dl></dd><dt>foreach</dt><dd><dl><dt>processing multiple elements in an array</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd></dl></dd><dt>format</dt><dd><dl><dt>introduction</dt><dd><dl><dt>arrays, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt></dl></dd></dl></dd><dt>format and syntax</dt><dd><dl><dt>printf(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>SystemTap handler constructs</dt><dd><dl><dt>handlers, <a class="indexterm" href="scriptconstructions.html#variablesconstructs">Variables</a></dt></dl></dd><dt>SystemTap scripts</dt><dd><dl><dt>introduction, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt></dl></dd></dl></dd><dt>format specifiers</dt><dd><dl><dt>printf(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>format strings</dt><dd><dl><dt>printf(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>function call (unresolved)</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>function calls (incoming/outgoing), tracing</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt></dl></dd><dt>function calls, tallying</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="mainsect-profiling.html#countcallssect">Counting Function Calls Made</a></dt></dl></dd><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dd><dl><dt>cpu(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>ctime(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>gettimeofday_s(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>pp(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>SystemTap scripts</dt><dd><dl><dt>introduction, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt></dl></dd><dt>target(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>thread_indent(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>tid(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>uid(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>functions (used in handlers)</dt><dd><dl><dt>exit(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>functions called in network socket code, tracing</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#sockettracesect">Tracing Functions Called in Network Socket Code</a></dt></dl></dd><dt>futex (lock) contentions</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt></dl></dd><dt>futex contention, definition</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt></dl></dd><dt>futex contentions, identifying</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt></dl></dd><dt>futex system call</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>G</h3><dl><dt>gettimeofday_s()</dt><dd><dl><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>global</dt><dd><dl><dt>SystemTap handler constructs</dt><dd><dl><dt>handlers, <a class="indexterm" href="scriptconstructions.html#variablesconstructs">Variables</a></dt></dl></dd></dl></dd><dt>goals, documentation</dt><dd><dl><dt>Introduction, <a class="indexterm" href="introduction.html#goals">Documentation Goals</a></dt></dl></dd><dt>grammatical/typographical script error</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>guru mode</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>H</h3><dl><dt>handler functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>handlers</dt><dd><dl><dt>conditional statements, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt><dd><dl><dt>conditional operators, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt><dt>for loops, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt><dt>if/else, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt><dt>while loops, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt></dl></dd><dt>introduction, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>SystemTap handler constructs, <a class="indexterm" href="scriptconstructions.html">Basic SystemTap Handler Constructs</a></dt><dd><dl><dt>command-line arguments, <a class="indexterm" href="commandlineargssect.html">Command-Line Arguments</a></dt><dt>global, <a class="indexterm" href="scriptconstructions.html#variablesconstructs">Variables</a></dt><dt>syntax and format, <a class="indexterm" href="scriptconstructions.html">Basic SystemTap Handler Constructs</a></dt><dt>variable notations, <a class="indexterm" href="commandlineargssect.html">Command-Line Arguments</a></dt><dt>variables, <a class="indexterm" href="scriptconstructions.html#variablesconstructs">Variables</a></dt></dl></dd><dt>target variables, <a class="indexterm" href="targetvariables.html">Target Variables</a></dt></dl></dd><dt>handlers and events, <a class="indexterm" href="understanding-how-systemtap-works.html">Understanding How SystemTap Works</a></dt><dd><dl><dt>SystemTap scripts</dt><dd><dl><dt>introduction, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt></dl></dd></dl></dd><dt>heaviest disk reads/writes, identifying</dt><dd><dl><dt>script examples, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt></dl></dd><dt>host system</dt><dd><dl><dt>cross-instrumentation, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt></dl></dd><dt>host system and target system</dt><dd><dl><dt>cross-instrumentation</dt><dd><dl><dt>configuration, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>I</h3><dl><dt>I/O block time, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="ioblktimesect.html">Periodically Print I/O Block Time</a></dt></dl></dd><dt>I/O monitoring (by device)</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt></dl></dd><dt>I/O time, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="iotimesect.html">Tracking I/O Time For Each File Read or Write</a></dt></dl></dd><dt>I/O traffic, summarizing</dt><dd><dl><dt>script examples, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt></dl></dd><dt>identifier type mismatch</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>identifying contended user-space locks (futex contentions)</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt></dl></dd><dt>identifying heaviest disk reads/writes</dt><dd><dl><dt>script examples, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt></dl></dd><dt>if/else</dt><dd><dl><dt>conditional statements</dt><dd><dl><dt>handlers, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt></dl></dd></dl></dd><dt>if/else conditionals, alternative syntax</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#nettopsect">Network Profiling</a></dt></dl></dd><dt>if/else statements, using arrays in</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-conditionals.html">Using Arrays in Conditional Statements</a></dt></dl></dd><dt>incoming TCP connections, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#tcpconnectionssect">Monitoring Incoming TCP Connections</a></dt></dl></dd><dt>incoming/outgoing function calls, tracing</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt></dl></dd><dt>incrementing associated values</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-increment.html">Incrementing Associated Values</a></dt><dd><dl><dt>tallying virtual file system reads (VFS reads), <a class="indexterm" href="arrayops-increment.html">Incrementing Associated Values</a></dt></dl></dd></dl></dd><dt>index expression</dt><dd><dl><dt>introduction</dt><dd><dl><dt>arrays, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt></dl></dd></dl></dd><dt>initial testing, <a class="indexterm" href="using-systemtap.html#testing">Initial Testing</a></dt><dt>inode number</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt></dl></dd><dt>Installation</dt><dd><dl><dt>initial testing, <a class="indexterm" href="using-systemtap.html#testing">Initial Testing</a></dt><dt>kernel information packages, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>kernel version, determining the, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>required packages, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>Setup and Installation, <a class="indexterm" href="using-systemtap.html#using-setup">Installation and Setup</a></dt><dt>systemtap package, <a class="indexterm" href="using-systemtap.html#installproper">Installing SystemTap</a></dt><dt>systemtap-runtime package, <a class="indexterm" href="using-systemtap.html#installproper">Installing SystemTap</a></dt></dl></dd><dt>instrumentation module</dt><dd><dl><dt>cross-instrumentation, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt></dl></dd><dt>instrumentation modules from SystemTap scripts, building, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>integer extractors</dt><dd><dl><dt>computing for statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd><dt>Introduction</dt><dd><dl><dt>capabilities of SystemTap, <a class="indexterm" href="intro-systemtap-vs-others.html">SystemTap Capabilities</a></dt><dt>documentation goals, <a class="indexterm" href="introduction.html#goals">Documentation Goals</a></dt><dt>goals, documentation, <a class="indexterm" href="introduction.html#goals">Documentation Goals</a></dt><dt>limitations of SystemTap, <a class="indexterm" href="intro-systemtap-limitations.html">Limitations of SystemTap</a></dt><dt>performance monitoring, <a class="indexterm" href="introduction.html">Introduction</a></dt></dl></dd><dt>invalid division</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>invalid values to variables/arrays</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>iterations, processing elements in an array as</dt><dd><dl><dt>processing multiple elements in an array</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>K</h3><dl><dt>kernel and user space, determining time spent in</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="threadtimessect.html">Determining Time Spent in Kernel and User Space</a></dt></dl></dd><dt>kernel information packages, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>kernel modules from SystemTap scripts, building, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>kernel version, determining the, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>kernel.function("function")</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>kernel.trace("tracepoint")</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>key pairs</dt><dd><dl><dt>introduction</dt><dd><dl><dt>arrays, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>L</h3><dl><dt>libdwfl failure</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>limitations of SystemTap</dt><dd><dl><dt>Introduction, <a class="indexterm" href="intro-systemtap-limitations.html">Limitations of SystemTap</a></dt></dl></dd><dt>limiting the output of foreach</dt><dd><dl><dt>processing multiple elements in an array</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd></dl></dd><dt>local variables</dt><dd><dl><dt>name, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>sample usage</dt><dd><dl><dt>$count, <a class="indexterm" href="iotimesect.html">Tracking I/O Time For Each File Read or Write</a></dt><dt>$return, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a>, <a class="indexterm" href="traceiosect.html">Track Cumulative IO</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>M</h3><dl><dt>MAXACTION exceeded</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>MAXNESTING exceeded</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>membership (in array), testing for</dt><dd><dl><dt>conditional statements, using arrays in</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-conditionals.html">Using Arrays in Conditional Statements</a></dt></dl></dd></dl></dd><dt>module("module")</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>monitoring changes to file attributes</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatch2sect.html">Monitoring Changes to File Attributes</a></dt></dl></dd><dt>monitoring cumulative I/O</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceiosect.html">Track Cumulative IO</a></dt></dl></dd><dt>monitoring device I/O</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt></dl></dd><dt>monitoring I/O block time</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="ioblktimesect.html">Periodically Print I/O Block Time</a></dt></dl></dd><dt>monitoring I/O time</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="iotimesect.html">Tracking I/O Time For Each File Read or Write</a></dt></dl></dd><dt>monitoring incoming TCP connections</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#tcpconnectionssect">Monitoring Incoming TCP Connections</a></dt></dl></dd><dt>monitoring polling applications</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="timeoutssect.html">Monitoring Polling Applications</a></dt></dl></dd><dt>monitoring reads and writes to a file</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt></dl></dd><dt>monitoring system calls</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="topsyssect.html">Tracking Most Frequently Used System Calls</a></dt></dl></dd><dt>monitoring system calls (volume per process)</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="syscallsbyprocpidsect.html">Tracking System Call Volume Per Process</a></dt></dl></dd><dt>monitoring TCP packets</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#tcpdumplikesect">Monitoring TCP Packets</a></dt></dl></dd><dt>multiple array operations within the same probe</dt><dd><dl><dt>clearing arrays/array elements</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt></dl></dd></dl></dd><dt>multiple command-line arguments, example of</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt></dl></dd><dt>multiple elements in an array</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>N</h3><dl><dt>name</dt><dd><dl><dt>local variables, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>net/socket.c, tracing functions from</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#sockettracesect">Tracing Functions Called in Network Socket Code</a></dt></dl></dd><dt>network profiling</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#nettopsect">Network Profiling</a>, <a class="indexterm" href="useful-systemtap-scripts.html#dropwatchsect">Monitoring Network Packets Drops in Kernel</a></dt></dl></dd><dt>network socket code, tracing functions called in</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#sockettracesect">Tracing Functions Called in Network Socket Code</a></dt></dl></dd><dt>network traffic, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#nettopsect">Network Profiling</a>, <a class="indexterm" href="useful-systemtap-scripts.html#dropwatchsect">Monitoring Network Packets Drops in Kernel</a></dt></dl></dd><dt>no match for probe point</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>non-global arrays</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>number of errors: N, skipped probes: M</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>O</h3><dl><dt>operations</dt><dd><dl><dt>assigning associated values</dt><dd><dl><dt>associating timestamps to process names, <a class="indexterm" href="arrayoperators.html#arrayops-assignvalue">Assigning an Associated Value</a></dt></dl></dd><dt>associative arrays, <a class="indexterm" href="arrayoperators.html">Array Operations in SystemTap</a></dt><dt>clearing arrays/array elements, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dd><dl><dt>delete operator, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dt>multiple array operations within the same probe, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dt>virtual file system reads (non-cumulative), tallying, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt></dl></dd><dt>computing for statistical aggregates, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dd><dl><dt>@avg (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@count (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@max (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@min (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@sum (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>adding values to statistical aggregates, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>count (operator), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>extracting data collected by statistical aggregates, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd><dt>conditional statements, using arrays in, <a class="indexterm" href="arrayops-conditionals.html">Using Arrays in Conditional Statements</a></dt><dd><dl><dt>testing for array membership, <a class="indexterm" href="arrayops-conditionals.html">Using Arrays in Conditional Statements</a></dt></dl></dd><dt>deleting arrays and array elements, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dt>incrementing associated values, <a class="indexterm" href="arrayops-increment.html">Incrementing Associated Values</a></dt><dd><dl><dt>tallying virtual file system reads (VFS reads), <a class="indexterm" href="arrayops-increment.html">Incrementing Associated Values</a></dt></dl></dd><dt>multiple elements in an array, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>processing multiple elements in an array, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dd><dl><dt>cumulative virtual file system reads, tallying, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>foreach, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>iterations, processing elements in an array as, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>limiting the output of foreach, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>ordering the output of foreach, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd><dt>reading values from arrays, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt><dd><dl><dt>computing for timestamp deltas, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt><dt>empty unique keys, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt><dt>using arrays in simple computations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt></dl></dd></dl></dd><dt>options, stap</dt><dd><dl><dt>Usage, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt></dl></dd><dt>ordering the output of foreach</dt><dd><dl><dt>processing multiple elements in an array</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd></dl></dd><dt>overflow of aggregation</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>P</h3><dl><dt>packages required to run SystemTap, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dd><dl><dt>embedded code in unprivileged script, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>expected symbol/array index expression, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>grammatical/typographical script error, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>guru mode, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>invalid values to variables/arrays, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>libdwfl failure, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>no match for probe point, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>non-global arrays, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>probe mismatch, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>type mismatch for identifier, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>unresolved function call, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>unresolved target-symbol expression, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>unresolved type for identifier, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>variable modified during 'foreach', <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>performance monitoring</dt><dd><dl><dt>Introduction, <a class="indexterm" href="introduction.html">Introduction</a></dt></dl></dd><dt>pointer dereference fault</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>polling applications, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="timeoutssect.html">Monitoring Polling Applications</a></dt></dl></dd><dt>pp()</dt><dd><dl><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>printf()</dt><dd><dl><dt>format specifiers, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>format strings, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>syntax and format, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>printing I/O activity (cumulative)</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceiosect.html">Track Cumulative IO</a></dt></dl></dd><dt>printing I/O block time (periodically)</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="ioblktimesect.html">Periodically Print I/O Block Time</a></dt></dl></dd><dt>probe mismatch</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>probe point (no match for)</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>probes</dt><dd><dl><dt>SystemTap scripts</dt><dd><dl><dt>introduction, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt></dl></dd></dl></dd><dt>processing multiple elements in an array</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>cumulative virtual file system reads, tallying</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd><dt>foreach</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd><dt>limiting the output of foreach</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd><dt>ordering the output of foreach</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd></dl></dd><dt>profiling the network</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#nettopsect">Network Profiling</a>, <a class="indexterm" href="useful-systemtap-scripts.html#dropwatchsect">Monitoring Network Packets Drops in Kernel</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>R</h3><dl><dt>reading values from arrays</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt><dd><dl><dt>empty unique keys, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt><dt>using arrays in simple computations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt></dl></dd><dt>computing for timestamp deltas</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt></dl></dd></dl></dd><dt>reads/writes to a file, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt></dl></dd><dt>required packages, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>RPMs required to run SystemTap, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>running scripts from standard input, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt><dt>running SystemTap scripts</dt><dd><dl><dt>Usage, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt></dl></dd><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dd><dl><dt>aggregate element not found, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>aggregation overflow, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>copy fault, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>division by 0, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>MAXACTION exceeded, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>MAXNESTING exceeded, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>number of errors: N, skipped probes: M, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>pointer dereference fault, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>S</h3><dl><dt>script examples</dt><dd><dl><dt>call graph tracing, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt><dt>CPU ticks, <a class="indexterm" href="threadtimessect.html">Determining Time Spent in Kernel and User Space</a></dt><dt>ctime(), example of usage, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt><dt>determining time spent in kernel and user space, <a class="indexterm" href="threadtimessect.html">Determining Time Spent in Kernel and User Space</a></dt><dt>file device number (integer format), <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt><dt>futex (lock) contentions, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt><dt>futex system call, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt><dt>identifying contended user-space locks (futex contentions), <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt><dt>if/else conditionals, alternative syntax, <a class="indexterm" href="useful-systemtap-scripts.html#nettopsect">Network Profiling</a></dt><dt>inode number, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt><dt>monitoring changes to file attributes, <a class="indexterm" href="inodewatch2sect.html">Monitoring Changes to File Attributes</a></dt><dt>monitoring device I/O, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt><dt>monitoring I/O block time, <a class="indexterm" href="ioblktimesect.html">Periodically Print I/O Block Time</a></dt><dt>monitoring I/O time, <a class="indexterm" href="iotimesect.html">Tracking I/O Time For Each File Read or Write</a></dt><dt>monitoring incoming TCP connections, <a class="indexterm" href="useful-systemtap-scripts.html#tcpconnectionssect">Monitoring Incoming TCP Connections</a></dt><dt>monitoring polling applications, <a class="indexterm" href="timeoutssect.html">Monitoring Polling Applications</a></dt><dt>monitoring reads and writes to a file, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt><dt>monitoring system calls, <a class="indexterm" href="topsyssect.html">Tracking Most Frequently Used System Calls</a></dt><dt>monitoring system calls (volume per process), <a class="indexterm" href="syscallsbyprocpidsect.html">Tracking System Call Volume Per Process</a></dt><dt>monitoring TCP packets, <a class="indexterm" href="useful-systemtap-scripts.html#tcpdumplikesect">Monitoring TCP Packets</a></dt><dt>multiple command-line arguments, example of, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt><dt>net/socket.c, tracing functions from, <a class="indexterm" href="useful-systemtap-scripts.html#sockettracesect">Tracing Functions Called in Network Socket Code</a></dt><dt>network profiling, <a class="indexterm" href="useful-systemtap-scripts.html#nettopsect">Network Profiling</a>, <a class="indexterm" href="useful-systemtap-scripts.html#dropwatchsect">Monitoring Network Packets Drops in Kernel</a></dt><dt>stat -c, determining file device number (integer format), <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt><dt>stat -c, determining whole device number, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt><dt>summarizing disk I/O traffic, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt><dt>tallying function calls, <a class="indexterm" href="mainsect-profiling.html#countcallssect">Counting Function Calls Made</a></dt><dt>thread_indent(), sample usage, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt><dt>timer.ms(), sample usage, <a class="indexterm" href="mainsect-profiling.html#countcallssect">Counting Function Calls Made</a></dt><dt>timer.s(), sample usage, <a class="indexterm" href="timeoutssect.html">Monitoring Polling Applications</a>, <a class="indexterm" href="topsyssect.html">Tracking Most Frequently Used System Calls</a></dt><dt>tracing functions called in network socket code, <a class="indexterm" href="useful-systemtap-scripts.html#sockettracesect">Tracing Functions Called in Network Socket Code</a></dt><dt>tracking cumulative I/O, <a class="indexterm" href="traceiosect.html">Track Cumulative IO</a></dt><dt>trigger function, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt><dt>usrdev2kerndev(), <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt><dt>whole device number (usage as a command-line argument), <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt></dl></dd><dt>scripts</dt><dd><dl><dt>introduction, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dd><dl><dt>components, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>events and handlers, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>format and syntax, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>functions, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>probes, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>statement blocks, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt></dl></dd></dl></dd><dt>sessions, SystemTap, <a class="indexterm" href="understanding-how-systemtap-works.html#understanding-architecture-tools">Architecture</a></dt><dt>Setup and Installation, <a class="indexterm" href="using-systemtap.html#using-setup">Installation and Setup</a></dt><dt>Stack backtrace</dt><dd><dl><dt>user-space, <a class="indexterm" href="ustack.html">User-Space Stack Backtraces</a></dt></dl></dd><dt>standard input, running scripts from</dt><dd><dl><dt>Usage, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt></dl></dd><dt>stap</dt><dd><dl><dt>Usage, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt></dl></dd><dt>stap options, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt><dt>stapdev</dt><dd><dl><dt>Usage, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt></dl></dd><dt>staprun</dt><dd><dl><dt>Usage, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt></dl></dd><dt>stapusr</dt><dd><dl><dt>Usage, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt></dl></dd><dt>stat -c, determining file device number (integer format)</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt></dl></dd><dt>stat -c, determining whole device number</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt></dl></dd><dt>statement blocks</dt><dd><dl><dt>SystemTap scripts</dt><dd><dl><dt>introduction, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt></dl></dd></dl></dd><dt>statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd><dt>summarizing disk I/O traffic</dt><dd><dl><dt>script examples, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt></dl></dd><dt>synchronous events</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>syntax</dt><dd><dl><dt>introduction</dt><dd><dl><dt>arrays, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt></dl></dd></dl></dd><dt>syntax and format</dt><dd><dl><dt>printf(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>SystemTap handler constructs</dt><dd><dl><dt>handlers, <a class="indexterm" href="scriptconstructions.html">Basic SystemTap Handler Constructs</a></dt></dl></dd><dt>SystemTap scripts</dt><dd><dl><dt>introduction, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt></dl></dd></dl></dd><dt>syscall.system_call</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>system calls volume (per process), monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="syscallsbyprocpidsect.html">Tracking System Call Volume Per Process</a></dt></dl></dd><dt>system calls, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="topsyssect.html">Tracking Most Frequently Used System Calls</a></dt></dl></dd><dt>SystemTap architecture, <a class="indexterm" href="understanding-how-systemtap-works.html#understanding-architecture-tools">Architecture</a></dt><dt>SystemTap handlers</dt><dd><dl><dt>SystemTap handler constructs, <a class="indexterm" href="scriptconstructions.html">Basic SystemTap Handler Constructs</a></dt><dd><dl><dt>syntax and format, <a class="indexterm" href="scriptconstructions.html">Basic SystemTap Handler Constructs</a></dt></dl></dd></dl></dd><dt>systemtap package, <a class="indexterm" href="using-systemtap.html#installproper">Installing SystemTap</a></dt><dt>SystemTap script functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>SystemTap scripts</dt><dd><dl><dt>introduction, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dd><dl><dt>components, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>events and handlers, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>format and syntax, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>functions, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>probes, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>statement blocks, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt></dl></dd><dt>useful examples, <a class="indexterm" href="useful-systemtap-scripts.html">Useful SystemTap Scripts</a></dt></dl></dd><dt>SystemTap scripts, how to run, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt><dt>SystemTap sessions, <a class="indexterm" href="understanding-how-systemtap-works.html#understanding-architecture-tools">Architecture</a></dt><dt>SystemTap statements</dt><dd><dl><dt>conditional statements, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt><dd><dl><dt>conditional operators, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt><dt>for loops, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt><dt>if/else, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt><dt>while loops, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt></dl></dd><dt>SystemTap handler constructs</dt><dd><dl><dt>command-line arguments, <a class="indexterm" href="commandlineargssect.html">Command-Line Arguments</a></dt><dt>global, <a class="indexterm" href="scriptconstructions.html#variablesconstructs">Variables</a></dt><dt>variable notations, <a class="indexterm" href="commandlineargssect.html">Command-Line Arguments</a></dt><dt>variables, <a class="indexterm" href="scriptconstructions.html#variablesconstructs">Variables</a></dt></dl></dd></dl></dd><dt>systemtap-runtime package, <a class="indexterm" href="using-systemtap.html#installproper">Installing SystemTap</a></dt><dt>systemtap-testsuite package</dt><dd><dl><dt>sample scripts, <a class="indexterm" href="useful-systemtap-scripts.html">Useful SystemTap Scripts</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>T</h3><dl><dt>tallying function calls</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="mainsect-profiling.html#countcallssect">Counting Function Calls Made</a></dt></dl></dd><dt>tallying virtual file system reads (VFS reads)</dt><dd><dl><dt>incrementing associated values</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-increment.html">Incrementing Associated Values</a></dt></dl></dd></dl></dd><dt>Tapsets</dt><dd><dl><dt>definition of, <a class="indexterm" href="understanding-tapsets.html">Tapsets</a></dt></dl></dd><dt>target kernel</dt><dd><dl><dt>cross-instrumentation, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt></dl></dd><dt>target system</dt><dd><dl><dt>cross-instrumentation, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt></dl></dd><dt>target system and host system</dt><dd><dl><dt>configuration, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt></dl></dd><dt>target variables, <a class="indexterm" href="targetvariables.html">Target Variables</a></dt><dd><dl><dt>pretty printing, <a class="indexterm" href="targetvariables.html#targetprettyprinting">Pretty Printing Target Variables</a></dt><dt>typecasting, <a class="indexterm" href="typecasting.html">Typecasting</a></dt><dt>user-space, <a class="indexterm" href="utargetvariable.html">Accessing User-Space Target Variables</a></dt><dt>variable availability, <a class="indexterm" href="targetavailable.html">Checking Target Variable Availability</a></dt></dl></dd><dt>target()</dt><dd><dl><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>target-symbol expression, unresolved</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>TCP connections (incoming), monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#tcpconnectionssect">Monitoring Incoming TCP Connections</a></dt></dl></dd><dt>TCP packets, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#tcpdumplikesect">Monitoring TCP Packets</a></dt></dl></dd><dt>testing for array membership</dt><dd><dl><dt>conditional statements, using arrays in</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-conditionals.html">Using Arrays in Conditional Statements</a></dt></dl></dd></dl></dd><dt>testing, initial, <a class="indexterm" href="using-systemtap.html#testing">Initial Testing</a></dt><dt>thread_indent()</dt><dd><dl><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>thread_indent(), sample usage</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt></dl></dd><dt>tid()</dt><dd><dl><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>time of I/O </dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="iotimesect.html">Tracking I/O Time For Each File Read or Write</a></dt></dl></dd><dt>time spent in kernel/user space, determining</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="threadtimessect.html">Determining Time Spent in Kernel and User Space</a></dt></dl></dd><dt>timer events</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>timer.ms(), sample usage</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="mainsect-profiling.html#countcallssect">Counting Function Calls Made</a></dt></dl></dd><dt>timer.s(), sample usage</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="timeoutssect.html">Monitoring Polling Applications</a>, <a class="indexterm" href="topsyssect.html">Tracking Most Frequently Used System Calls</a></dt></dl></dd><dt>timestamp deltas, computing for</dt><dd><dl><dt>reading values from arrays</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt></dl></dd></dl></dd><dt>timestamps, association thereof to process names</dt><dd><dl><dt>assigning associated values</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayoperators.html#arrayops-assignvalue">Assigning an Associated Value</a></dt></dl></dd></dl></dd><dt>tracepoint, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a>, <a class="indexterm" href="useful-systemtap-scripts.html#dropwatchsect">Monitoring Network Packets Drops in Kernel</a></dt><dt>tracing call graph</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt></dl></dd><dt>tracing functions called in network socket code</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#sockettracesect">Tracing Functions Called in Network Socket Code</a></dt></dl></dd><dt>tracing incoming/outgoing function calls</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt></dl></dd><dt>tracking cumulative I/O</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceiosect.html">Track Cumulative IO</a></dt></dl></dd><dt>trigger function</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt></dl></dd><dt>type mismatch for identifier</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>typographical script error</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>U</h3><dl><dt>uid()</dt><dd><dl><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>uname -m, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>uname -r, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>understainding SystemTap errors</dt><dd><dl><dt>runtime errors/warnings, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dd><dl><dt>aggregate element not found, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>aggregation overflow, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>copy fault, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>division by 0, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>MAXACTION exceeded, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>MAXNESTING exceeded, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>number of errors: N, skipped probes: M, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>pointer dereference fault, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>Understanding How SystemTap Works, <a class="indexterm" href="understanding-how-systemtap-works.html">Understanding How SystemTap Works</a></dt><dd><dl><dt>architecture, <a class="indexterm" href="understanding-how-systemtap-works.html#understanding-architecture-tools">Architecture</a></dt><dt>event types, <a class="indexterm" href="understanding-how-systemtap-works.html">Understanding How SystemTap Works</a></dt><dt>events and handlers, <a class="indexterm" href="understanding-how-systemtap-works.html">Understanding How SystemTap Works</a></dt><dt>SystemTap sessions, <a class="indexterm" href="understanding-how-systemtap-works.html#understanding-architecture-tools">Architecture</a></dt></dl></dd><dt>understanding SystemTap errors</dt><dd><dl><dt>parse/semantics error, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dd><dl><dt>embedded code in unprivileged script, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>expected symbol/array index expression, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>grammatical/typographical script error, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>guru mode, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>invalid values to variables/arrays, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>libdwfl failure, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>no match for probe point, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>non-global arrays, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>probe mismatch, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>type mismatch for identifier, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>unresolved function call, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>unresolved target-symbol expression, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>unresolved type for identifier, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>variable modified during 'foreach', <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>unique keys</dt><dd><dl><dt>introduction</dt><dd><dl><dt>arrays, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt></dl></dd></dl></dd><dt>unprivileged script, embedded code in</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>unresolved function call</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>unresolved target-symbol expression</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>unresolved type for identifier</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>unsafe embedded code in unprivileged script</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>Usage</dt><dd><dl><dt>options, stap, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt><dt>running SystemTap scripts, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt><dt>standard input, running scripts from, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt><dt>stap, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt><dt>stapdev, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt><dt>staprun, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt><dt>stapusr, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt></dl></dd><dt>useful examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html">Useful SystemTap Scripts</a></dt><dt>user and kernel space, determining time spent in</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="threadtimessect.html">Determining Time Spent in Kernel and User Space</a></dt></dl></dd><dt>using arrays in simple computations</dt><dd><dl><dt>reading values from arrays</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt></dl></dd></dl></dd><dt>Using SystemTap, <a class="indexterm" href="using-systemtap.html">Using SystemTap</a></dt><dt>usrdev2kerndev()</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>V</h3><dl><dt>values, assignment of</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayoperators.html#arrayops-assignvalue">Assigning an Associated Value</a></dt></dl></dd><dt>variable modified during 'foreach'</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>variable notations</dt><dd><dl><dt>SystemTap handler constructs</dt><dd><dl><dt>handlers, <a class="indexterm" href="commandlineargssect.html">Command-Line Arguments</a></dt></dl></dd></dl></dd><dt>variables</dt><dd><dl><dt>SystemTap handler constructs</dt><dd><dl><dt>handlers, <a class="indexterm" href="scriptconstructions.html#variablesconstructs">Variables</a></dt></dl></dd></dl></dd><dt>variables (local)</dt><dd><dl><dt>name, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>sample usage</dt><dd><dl><dt>$count, <a class="indexterm" href="iotimesect.html">Tracking I/O Time For Each File Read or Write</a></dt><dt>$return, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a>, <a class="indexterm" href="traceiosect.html">Track Cumulative IO</a></dt></dl></dd></dl></dd><dt>VFS reads, tallying of</dt><dd><dl><dt>incrementing associated values</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-increment.html">Incrementing Associated Values</a></dt></dl></dd></dl></dd><dt>vfs.file_operation</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>virtual file system reads (cumulative), tallying</dt><dd><dl><dt>processing multiple elements in an array</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd></dl></dd><dt>virtual file system reads (non-cumulative), tallying</dt><dd><dl><dt>clearing arrays/array elements</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>W</h3><dl><dt>while loops</dt><dd><dl><dt>conditional statements</dt><dd><dl><dt>handlers, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt></dl></dd></dl></dd><dt>whole device number (usage as a command-line argument)</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt></dl></dd><dt>wildcards in events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>writes/reads to a file, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt></dl></dd></dl></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="appe-Publican-Revision_History.html"><strong>Prev</strong>Appendix A. Revision History</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li></ul></body></html> \ No newline at end of file 3 ⁠</a>Index</h1></div></div></div><div class="index"><div class="indexdiv"><h3>Symbols</h3><dl><dt>$count</dt><dd><dl><dt>sample usage</dt><dd><dl><dt>local variables, <a class="indexterm" href="iotimesect.html">Tracking I/O Time For Each File Read or Write</a></dt></dl></dd></dl></dd><dt>$return</dt><dd><dl><dt>sample usage</dt><dd><dl><dt>local variables, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a>, <a class="indexterm" href="traceiosect.html">Track Cumulative IO</a></dt></dl></dd></dl></dd><dt>@avg (integer extractor)</dt><dd><dl><dt>computing for statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd><dt>@count (integer extractor)</dt><dd><dl><dt>computing for statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd><dt>@max (integer extractor)</dt><dd><dl><dt>computing for statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd><dt>@min (integer extractor)</dt><dd><dl><dt>computing for statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd><dt>@sum (integer extractor)</dt><dd><dl><dt>computing for statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>A</h3><dl><dt>adding values to statistical aggregates</dt><dd><dl><dt>computing for statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd><dt>advantages of cross-instrumentation, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>aggregate element not found</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>aggregates (statistical)</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd><dt>aggregation overflow</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>algebraic formulas using arrays</dt><dd><dl><dt>reading values from arrays</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt></dl></dd></dl></dd><dt>architecture notation, determining, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>architecture of SystemTap, <a class="indexterm" href="understanding-how-systemtap-works.html#understanding-architecture-tools">Architecture</a></dt><dt>array locals not supported</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>array operations</dt><dd><dl><dt>assigning associated values, <a class="indexterm" href="arrayoperators.html#arrayops-assignvalue">Assigning an Associated Value</a></dt><dd><dl><dt>associating timestamps to process names, <a class="indexterm" href="arrayoperators.html#arrayops-assignvalue">Assigning an Associated Value</a></dt></dl></dd><dt>associative arrays, <a class="indexterm" href="arrayoperators.html">Array Operations in SystemTap</a></dt><dt>clearing arrays/array elements, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dd><dl><dt>delete operator, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dt>multiple array operations within the same probe, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dt>virtual file system reads (non-cumulative), tallying, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt></dl></dd><dt>computing for statistical aggregates, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dd><dl><dt>@avg (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@count (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@max (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@min (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@sum (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>adding values to statistical aggregates, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>count (operator), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>extracting data collected by statistical aggregates, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd><dt>conditional statements, using arrays in, <a class="indexterm" href="arrayops-conditionals.html">Using Arrays in Conditional Statements</a></dt><dd><dl><dt>testing for array membership, <a class="indexterm" href="arrayops-conditionals.html">Using Arrays in Conditional Statements</a></dt></dl></dd><dt>deleting arrays and array elements, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dt>incrementing associated values, <a class="indexterm" href="arrayops-increment.html">Incrementing Associated Values</a></dt><dd><dl><dt>tallying virtual file system reads (VFS reads), <a class="indexterm" href="arrayops-increment.html">Incrementing Associated Values</a></dt></dl></dd><dt>multiple elements in an array, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>processing multiple elements in an array, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dd><dl><dt>cumulative virtual file system reads, tallying, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>foreach, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>iterations, processing elements in an array as, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>limiting the output of foreach, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>ordering the output of foreach, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd><dt>reading values from arrays, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt><dd><dl><dt>computing for timestamp deltas, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt><dt>empty unique keys, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt><dt>using arrays in simple computations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt></dl></dd></dl></dd><dt>arrays, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt><dd><dl><dt>(see also associative arrays)</dt></dl></dd><dt>assigning associated values</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayoperators.html#arrayops-assignvalue">Assigning an Associated Value</a></dt><dd><dl><dt>associating timestamps to process names, <a class="indexterm" href="arrayoperators.html#arrayops-assignvalue">Assigning an Associated Value</a></dt></dl></dd><dt>associating timestamps to process names</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayoperators.html#arrayops-assignvalue">Assigning an Associated Value</a></dt></dl></dd></dl></dd><dt>associated values</dt><dd><dl><dt>introduction</dt><dd><dl><dt>arrays, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt></dl></dd></dl></dd><dt>associating timestamps to process names</dt><dd><dl><dt>assigning associated values</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayoperators.html#arrayops-assignvalue">Assigning an Associated Value</a></dt></dl></dd></dl></dd><dt>associative arrays</dt><dd><dl><dt>introduction, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt><dd><dl><dt>associated values, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt><dt>example, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt><dt>index expression, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt><dt>key pairs, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt><dt>syntax, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt><dt>unique keys, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt></dl></dd></dl></dd><dt>asynchronous events</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>B</h3><dl><dt>begin</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>building instrumentation modules from SystemTap scripts, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>building kernel modules from SystemTap scripts, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt></dl></div><div class="indexdiv"><h3>C</h3><dl><dt>call graph tracing</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt></dl></dd><dt>capabilities of SystemTap</dt><dd><dl><dt>Introduction, <a class="indexterm" href="intro-systemtap-vs-others.html">SystemTap Capabilities</a></dt></dl></dd><dt>changes to file attributes, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatch2sect.html">Monitoring Changes to File Attributes</a></dt></dl></dd><dt>clearing arrays/array elements</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dd><dl><dt>delete operator, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dt>multiple array operations within the same probe, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dt>virtual file system reads (non-cumulative), tallying, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt></dl></dd></dl></dd><dt>command-line arguments</dt><dd><dl><dt>SystemTap handler constructs</dt><dd><dl><dt>handlers, <a class="indexterm" href="commandlineargssect.html">Command-Line Arguments</a></dt></dl></dd></dl></dd><dt>compiling instrumentation/kernel modules from SystemTap scripts, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>components</dt><dd><dl><dt>SystemTap scripts</dt><dd><dl><dt>introduction, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt></dl></dd></dl></dd><dt>computing for statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dd><dl><dt>@avg (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@count (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@max (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@min (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@sum (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>adding values to statistical aggregates, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>count (operator), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>extracting data collected by statistical aggregates, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd><dt>computing for timestamp deltas</dt><dd><dl><dt>reading values from arrays</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt></dl></dd></dl></dd><dt>conditional operators</dt><dd><dl><dt>conditional statements</dt><dd><dl><dt>handlers, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt></dl></dd></dl></dd><dt>conditional statements, using arrays in</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-conditionals.html">Using Arrays in Conditional Statements</a></dt><dd><dl><dt>testing for array membership, <a class="indexterm" href="arrayops-conditionals.html">Using Arrays in Conditional Statements</a></dt></dl></dd></dl></dd><dt>CONFIG_HZ, computing for, <a class="indexterm" href="scriptconstructions.html#variablesconstructs">Variables</a></dt><dt>contended user-space locks (futex contentions), identifying</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt></dl></dd><dt>copy fault</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>count operator</dt><dd><dl><dt>computing for statistical aggregates</dt><dd><dl><dt>array (operator), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd><dt>counting function calls</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="mainsect-profiling.html#countcallssect">Counting Function Calls Made</a></dt></dl></dd><dt>CPU ticks</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="threadtimessect.html">Determining Time Spent in Kernel and User Space</a></dt></dl></dd><dt>cpu()</dt><dd><dl><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>cross-compiling, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>cross-instrumentation</dt><dd><dl><dt>advantages of, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>building kernel modules from SystemTap scripts, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>configuration</dt><dd><dl><dt>host system and target system, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt></dl></dd><dt>generating instrumentation from SystemTap scripts, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>host system, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>instrumentation module, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>target kernel, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>target system, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt></dl></dd><dt>ctime()</dt><dd><dl><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>ctime(), example of usage</dt><dd><dl><dt>script examples, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt></dl></dd><dt>cumulative I/O, tracking</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceiosect.html">Track Cumulative IO</a></dt></dl></dd><dt>cumulative virtual file system reads, tallying</dt><dd><dl><dt>processing multiple elements in an array</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>D</h3><dl><dt>delete operator</dt><dd><dl><dt>clearing arrays/array elements</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt></dl></dd></dl></dd><dt>determining architecture notation, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>determining the kernel version, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>determining time spent in kernel and user space</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="threadtimessect.html">Determining Time Spent in Kernel and User Space</a></dt></dl></dd><dt>device I/O, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt></dl></dd><dt>device number of a file (integer format)</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt></dl></dd><dt>disk I/O traffic, summarizing</dt><dd><dl><dt>script examples, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt></dl></dd><dt>division by 0</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>documentation goals</dt><dd><dl><dt>Introduction, <a class="indexterm" href="introduction.html#goals">Documentation Goals</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>E</h3><dl><dt>embedded code in unprivileged script</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>empty unique keys</dt><dd><dl><dt>reading values from arrays</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt></dl></dd></dl></dd><dt>end</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>errors</dt><dd><dl><dt>parse/semantics error, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dd><dl><dt>embedded code in unprivileged script, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>expected symbol/array index expression, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>grammatical/typographical script error, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>guru mode, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>invalid values to variables/arrays, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>libdwfl failure, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>no match for probe point, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>non-global arrays, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>probe mismatch, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>type mismatch for identifier, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>unresolved function call, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>unresolved target-symbol expression, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>unresolved type for identifier, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>variable modified during 'foreach', <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd><dt>runtime errors/warnings, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dd><dl><dt>aggregate element not found, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>aggregation overflow, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>copy fault, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>division by 0, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>MAXACTION exceeded, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>MAXNESTING exceeded, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>number of errors: N, skipped probes: M, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>pointer dereference fault, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>event types</dt><dd><dl><dt>Understanding How SystemTap Works, <a class="indexterm" href="understanding-how-systemtap-works.html">Understanding How SystemTap Works</a></dt></dl></dd><dt>Events</dt><dd><dl><dt>asynchronous events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>begin, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>end, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>examples of synchronous and asynchronous events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>introduction, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>kernel.function("function"), <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>kernel.trace("tracepoint"), <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>module("module"), <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>synchronous events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>syscall.system_call, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>timer events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>user-space, <a class="indexterm" href="userspace-probing.html#uevents">User-Space Events</a></dt><dt>vfs.file_operation, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>wildcards, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>events and handlers, <a class="indexterm" href="understanding-how-systemtap-works.html">Understanding How SystemTap Works</a></dt><dt>events wildcards, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>example</dt><dd><dl><dt>introduction</dt><dd><dl><dt>arrays, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt></dl></dd></dl></dd><dt>example of multiple command-line arguments</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt></dl></dd><dt>examples of synchronous and asynchronous events</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html">Useful SystemTap Scripts</a></dt><dd><dl><dt>call graph tracing, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt><dt>CPU ticks, <a class="indexterm" href="threadtimessect.html">Determining Time Spent in Kernel and User Space</a></dt><dt>ctime(), example of usage, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt><dt>determining time spent in kernel and user space, <a class="indexterm" href="threadtimessect.html">Determining Time Spent in Kernel and User Space</a></dt><dt>file device number (integer format), <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt><dt>futex (lock) contentions, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt><dt>futex system call, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt><dt>identifying contended user-space locks (futex contentions), <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt><dt>if/else conditionals, alternative syntax, <a class="indexterm" href="useful-systemtap-scripts.html#nettopsect">Network Profiling</a></dt><dt>inode number, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt><dt>monitoring changes to file attributes, <a class="indexterm" href="inodewatch2sect.html">Monitoring Changes to File Attributes</a></dt><dt>monitoring device I/O, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt><dt>monitoring I/O block time, <a class="indexterm" href="ioblktimesect.html">Periodically Print I/O Block Time</a></dt><dt>monitoring I/O time, <a class="indexterm" href="iotimesect.html">Tracking I/O Time For Each File Read or Write</a></dt><dt>monitoring incoming TCP connections, <a class="indexterm" href="useful-systemtap-scripts.html#tcpconnectionssect">Monitoring Incoming TCP Connections</a></dt><dt>monitoring polling applications, <a class="indexterm" href="timeoutssect.html">Monitoring Polling Applications</a></dt><dt>monitoring reads and writes to a file, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt><dt>monitoring system calls, <a class="indexterm" href="topsyssect.html">Tracking Most Frequently Used System Calls</a></dt><dt>monitoring system calls (volume per process), <a class="indexterm" href="syscallsbyprocpidsect.html">Tracking System Call Volume Per Process</a></dt><dt>monitoring TCP packets, <a class="indexterm" href="useful-systemtap-scripts.html#tcpdumplikesect">Monitoring TCP Packets</a></dt><dt>multiple command-line arguments, example of, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt><dt>net/socket.c, tracing functions from, <a class="indexterm" href="useful-systemtap-scripts.html#sockettracesect">Tracing Functions Called in Network Socket Code</a></dt><dt>network profiling, <a class="indexterm" href="useful-systemtap-scripts.html#nettopsect">Network Profiling</a>, <a class="indexterm" href="useful-systemtap-scripts.html#dropwatchsect">Monitoring Network Packets Drops in Kernel</a></dt><dt>stat -c, determining file device number (integer format), <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt><dt>stat -c, determining whole device number, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt><dt>summarizing disk I/O traffic, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt><dt>tallying function calls, <a class="indexterm" href="mainsect-profiling.html#countcallssect">Counting Function Calls Made</a></dt><dt>thread_indent(), sample usage, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt><dt>timer.ms(), sample usage, <a class="indexterm" href="mainsect-profiling.html#countcallssect">Counting Function Calls Made</a></dt><dt>timer.s(), sample usage, <a class="indexterm" href="timeoutssect.html">Monitoring Polling Applications</a>, <a class="indexterm" href="topsyssect.html">Tracking Most Frequently Used System Calls</a></dt><dt>tracing functions called in network socket code, <a class="indexterm" href="useful-systemtap-scripts.html#sockettracesect">Tracing Functions Called in Network Socket Code</a></dt><dt>tracking cumulative I/O, <a class="indexterm" href="traceiosect.html">Track Cumulative IO</a></dt><dt>trigger function, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt><dt>usrdev2kerndev(), <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt><dt>whole device number (usage as a command-line argument), <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt></dl></dd><dt>exceeded MAXACTION</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>exceeded MAXNESTING</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>exit()</dt><dd><dl><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>expected symbol/array index expression</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>extracting data collected by statistical aggregates</dt><dd><dl><dt>computing for statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>F</h3><dl><dt>feedback</dt><dd><dl><dt>contact information for this manual, <a class="indexterm" href="pr01s02.html">We Need Feedback!</a></dt></dl></dd><dt>file attributes, monitoring changes to</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatch2sect.html">Monitoring Changes to File Attributes</a></dt></dl></dd><dt>file device number (integer format)</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt></dl></dd><dt>file reads/writes, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt></dl></dd><dt>flight recorder mode, <a class="indexterm" href="using-usage.html#flight-recorder">SystemTap Flight Recorder Mode</a></dt><dd><dl><dt>file mode, <a class="indexterm" href="using-usage.html#file-flight-recorder">File Flight Recorder</a></dt><dt>in-memory mode, <a class="indexterm" href="using-usage.html#memory-flight-recorder">In-memory Flight Recorder</a></dt></dl></dd><dt>for loops</dt><dd><dl><dt>conditional statements</dt><dd><dl><dt>handlers, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt></dl></dd></dl></dd><dt>foreach</dt><dd><dl><dt>processing multiple elements in an array</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd></dl></dd><dt>format</dt><dd><dl><dt>introduction</dt><dd><dl><dt>arrays, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt></dl></dd></dl></dd><dt>format and syntax</dt><dd><dl><dt>printf(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>SystemTap handler constructs</dt><dd><dl><dt>handlers, <a class="indexterm" href="scriptconstructions.html#variablesconstructs">Variables</a></dt></dl></dd><dt>SystemTap scripts</dt><dd><dl><dt>introduction, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt></dl></dd></dl></dd><dt>format specifiers</dt><dd><dl><dt>printf(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>format strings</dt><dd><dl><dt>printf(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>function call (unresolved)</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>function calls (incoming/outgoing), tracing</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt></dl></dd><dt>function calls, tallying</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="mainsect-profiling.html#countcallssect">Counting Function Calls Made</a></dt></dl></dd><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dd><dl><dt>cpu(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>ctime(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>gettimeofday_s(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>pp(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>SystemTap scripts</dt><dd><dl><dt>introduction, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt></dl></dd><dt>target(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>thread_indent(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>tid(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>uid(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>functions (used in handlers)</dt><dd><dl><dt>exit(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>functions called in network socket code, tracing</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#sockettracesect">Tracing Functions Called in Network Socket Code</a></dt></dl></dd><dt>futex (lock) contentions</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt></dl></dd><dt>futex contention, definition</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt></dl></dd><dt>futex contentions, identifying</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt></dl></dd><dt>futex system call</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>G</h3><dl><dt>gettimeofday_s()</dt><dd><dl><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>global</dt><dd><dl><dt>SystemTap handler constructs</dt><dd><dl><dt>handlers, <a class="indexterm" href="scriptconstructions.html#variablesconstructs">Variables</a></dt></dl></dd></dl></dd><dt>goals, documentation</dt><dd><dl><dt>Introduction, <a class="indexterm" href="introduction.html#goals">Documentation Goals</a></dt></dl></dd><dt>grammatical/typographical script error</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>guru mode</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>H</h3><dl><dt>handler functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>handlers</dt><dd><dl><dt>conditional statements, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt><dd><dl><dt>conditional operators, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt><dt>for loops, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt><dt>if/else, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt><dt>while loops, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt></dl></dd><dt>introduction, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>SystemTap handler constructs, <a class="indexterm" href="scriptconstructions.html">Basic SystemTap Handler Constructs</a></dt><dd><dl><dt>command-line arguments, <a class="indexterm" href="commandlineargssect.html">Command-Line Arguments</a></dt><dt>global, <a class="indexterm" href="scriptconstructions.html#variablesconstructs">Variables</a></dt><dt>syntax and format, <a class="indexterm" href="scriptconstructions.html">Basic SystemTap Handler Constructs</a></dt><dt>variable notations, <a class="indexterm" href="commandlineargssect.html">Command-Line Arguments</a></dt><dt>variables, <a class="indexterm" href="scriptconstructions.html#variablesconstructs">Variables</a></dt></dl></dd><dt>target variables, <a class="indexterm" href="targetvariables.html">Target Variables</a></dt></dl></dd><dt>handlers and events, <a class="indexterm" href="understanding-how-systemtap-works.html">Understanding How SystemTap Works</a></dt><dd><dl><dt>SystemTap scripts</dt><dd><dl><dt>introduction, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt></dl></dd></dl></dd><dt>heaviest disk reads/writes, identifying</dt><dd><dl><dt>script examples, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt></dl></dd><dt>host system</dt><dd><dl><dt>cross-instrumentation, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt></dl></dd><dt>host system and target system</dt><dd><dl><dt>cross-instrumentation</dt><dd><dl><dt>configuration, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>I</h3><dl><dt>I/O block time, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="ioblktimesect.html">Periodically Print I/O Block Time</a></dt></dl></dd><dt>I/O monitoring (by device)</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt></dl></dd><dt>I/O time, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="iotimesect.html">Tracking I/O Time For Each File Read or Write</a></dt></dl></dd><dt>I/O traffic, summarizing</dt><dd><dl><dt>script examples, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt></dl></dd><dt>identifier type mismatch</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>identifying contended user-space locks (futex contentions)</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt></dl></dd><dt>identifying heaviest disk reads/writes</dt><dd><dl><dt>script examples, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt></dl></dd><dt>if/else</dt><dd><dl><dt>conditional statements</dt><dd><dl><dt>handlers, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt></dl></dd></dl></dd><dt>if/else conditionals, alternative syntax</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#nettopsect">Network Profiling</a></dt></dl></dd><dt>if/else statements, using arrays in</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-conditionals.html">Using Arrays in Conditional Statements</a></dt></dl></dd><dt>incoming TCP connections, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#tcpconnectionssect">Monitoring Incoming TCP Connections</a></dt></dl></dd><dt>incoming/outgoing function calls, tracing</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt></dl></dd><dt>incrementing associated values</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-increment.html">Incrementing Associated Values</a></dt><dd><dl><dt>tallying virtual file system reads (VFS reads), <a class="indexterm" href="arrayops-increment.html">Incrementing Associated Values</a></dt></dl></dd></dl></dd><dt>index expression</dt><dd><dl><dt>introduction</dt><dd><dl><dt>arrays, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt></dl></dd></dl></dd><dt>initial testing, <a class="indexterm" href="using-systemtap.html#testing">Initial Testing</a></dt><dt>inode number</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt></dl></dd><dt>Installation</dt><dd><dl><dt>initial testing, <a class="indexterm" href="using-systemtap.html#testing">Initial Testing</a></dt><dt>kernel information packages, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>kernel version, determining the, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>required packages, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>Setup and Installation, <a class="indexterm" href="using-systemtap.html#using-setup">Installation and Setup</a></dt><dt>systemtap package, <a class="indexterm" href="using-systemtap.html#installproper">Installing SystemTap</a></dt><dt>systemtap-runtime package, <a class="indexterm" href="using-systemtap.html#installproper">Installing SystemTap</a></dt></dl></dd><dt>instrumentation module</dt><dd><dl><dt>cross-instrumentation, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt></dl></dd><dt>instrumentation modules from SystemTap scripts, building, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>integer extractors</dt><dd><dl><dt>computing for statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd></dl></dd><dt>Introduction</dt><dd><dl><dt>capabilities of SystemTap, <a class="indexterm" href="intro-systemtap-vs-others.html">SystemTap Capabilities</a></dt><dt>documentation goals, <a class="indexterm" href="introduction.html#goals">Documentation Goals</a></dt><dt>goals, documentation, <a class="indexterm" href="introduction.html#goals">Documentation Goals</a></dt><dt>limitations of SystemTap, <a class="indexterm" href="intro-systemtap-limitations.html">Limitations of SystemTap</a></dt><dt>performance monitoring, <a class="indexterm" href="introduction.html">Introduction</a></dt></dl></dd><dt>invalid division</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>invalid values to variables/arrays</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>iterations, processing elements in an array as</dt><dd><dl><dt>processing multiple elements in an array</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>K</h3><dl><dt>kernel and user space, determining time spent in</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="threadtimessect.html">Determining Time Spent in Kernel and User Space</a></dt></dl></dd><dt>kernel information packages, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>kernel modules from SystemTap scripts, building, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>kernel version, determining the, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>kernel.function("function")</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>kernel.trace("tracepoint")</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>key pairs</dt><dd><dl><dt>introduction</dt><dd><dl><dt>arrays, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>L</h3><dl><dt>libdwfl failure</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>limitations of SystemTap</dt><dd><dl><dt>Introduction, <a class="indexterm" href="intro-systemtap-limitations.html">Limitations of SystemTap</a></dt></dl></dd><dt>limiting the output of foreach</dt><dd><dl><dt>processing multiple elements in an array</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd></dl></dd><dt>local variables</dt><dd><dl><dt>name, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>sample usage</dt><dd><dl><dt>$count, <a class="indexterm" href="iotimesect.html">Tracking I/O Time For Each File Read or Write</a></dt><dt>$return, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a>, <a class="indexterm" href="traceiosect.html">Track Cumulative IO</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>M</h3><dl><dt>MAXACTION exceeded</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>MAXNESTING exceeded</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>membership (in array), testing for</dt><dd><dl><dt>conditional statements, using arrays in</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-conditionals.html">Using Arrays in Conditional Statements</a></dt></dl></dd></dl></dd><dt>module("module")</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>monitoring changes to file attributes</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatch2sect.html">Monitoring Changes to File Attributes</a></dt></dl></dd><dt>monitoring cumulative I/O</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceiosect.html">Track Cumulative IO</a></dt></dl></dd><dt>monitoring device I/O</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt></dl></dd><dt>monitoring I/O block time</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="ioblktimesect.html">Periodically Print I/O Block Time</a></dt></dl></dd><dt>monitoring I/O time</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="iotimesect.html">Tracking I/O Time For Each File Read or Write</a></dt></dl></dd><dt>monitoring incoming TCP connections</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#tcpconnectionssect">Monitoring Incoming TCP Connections</a></dt></dl></dd><dt>monitoring polling applications</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="timeoutssect.html">Monitoring Polling Applications</a></dt></dl></dd><dt>monitoring reads and writes to a file</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt></dl></dd><dt>monitoring system calls</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="topsyssect.html">Tracking Most Frequently Used System Calls</a></dt></dl></dd><dt>monitoring system calls (volume per process)</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="syscallsbyprocpidsect.html">Tracking System Call Volume Per Process</a></dt></dl></dd><dt>monitoring TCP packets</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#tcpdumplikesect">Monitoring TCP Packets</a></dt></dl></dd><dt>multiple array operations within the same probe</dt><dd><dl><dt>clearing arrays/array elements</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt></dl></dd></dl></dd><dt>multiple command-line arguments, example of</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt></dl></dd><dt>multiple elements in an array</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>N</h3><dl><dt>name</dt><dd><dl><dt>local variables, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>net/socket.c, tracing functions from</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#sockettracesect">Tracing Functions Called in Network Socket Code</a></dt></dl></dd><dt>network profiling</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#nettopsect">Network Profiling</a>, <a class="indexterm" href="useful-systemtap-scripts.html#dropwatchsect">Monitoring Network Packets Drops in Kernel</a></dt></dl></dd><dt>network socket code, tracing functions called in</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#sockettracesect">Tracing Functions Called in Network Socket Code</a></dt></dl></dd><dt>network traffic, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#nettopsect">Network Profiling</a>, <a class="indexterm" href="useful-systemtap-scripts.html#dropwatchsect">Monitoring Network Packets Drops in Kernel</a></dt></dl></dd><dt>no match for probe point</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>non-global arrays</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>number of errors: N, skipped probes: M</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>O</h3><dl><dt>operations</dt><dd><dl><dt>assigning associated values</dt><dd><dl><dt>associating timestamps to process names, <a class="indexterm" href="arrayoperators.html#arrayops-assignvalue">Assigning an Associated Value</a></dt></dl></dd><dt>associative arrays, <a class="indexterm" href="arrayoperators.html">Array Operations in SystemTap</a></dt><dt>clearing arrays/array elements, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dd><dl><dt>delete operator, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dt>multiple array operations within the same probe, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dt>virtual file system reads (non-cumulative), tallying, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt></dl></dd><dt>computing for statistical aggregates, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dd><dl><dt>@avg (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@count (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@max (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@min (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>@sum (integer extractor), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>adding values to statistical aggregates, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>count (operator), <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt><dt>extracting data collected by statistical aggregates, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd><dt>conditional statements, using arrays in, <a class="indexterm" href="arrayops-conditionals.html">Using Arrays in Conditional Statements</a></dt><dd><dl><dt>testing for array membership, <a class="indexterm" href="arrayops-conditionals.html">Using Arrays in Conditional Statements</a></dt></dl></dd><dt>deleting arrays and array elements, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt><dt>incrementing associated values, <a class="indexterm" href="arrayops-increment.html">Incrementing Associated Values</a></dt><dd><dl><dt>tallying virtual file system reads (VFS reads), <a class="indexterm" href="arrayops-increment.html">Incrementing Associated Values</a></dt></dl></dd><dt>multiple elements in an array, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>processing multiple elements in an array, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dd><dl><dt>cumulative virtual file system reads, tallying, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>foreach, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>iterations, processing elements in an array as, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>limiting the output of foreach, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>ordering the output of foreach, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd><dt>reading values from arrays, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt><dd><dl><dt>computing for timestamp deltas, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt><dt>empty unique keys, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt><dt>using arrays in simple computations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt></dl></dd></dl></dd><dt>options, stap</dt><dd><dl><dt>Usage, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt></dl></dd><dt>ordering the output of foreach</dt><dd><dl><dt>processing multiple elements in an array</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd></dl></dd><dt>overflow of aggregation</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>P</h3><dl><dt>packages required to run SystemTap, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dd><dl><dt>embedded code in unprivileged script, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>expected symbol/array index expression, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>grammatical/typographical script error, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>guru mode, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>invalid values to variables/arrays, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>libdwfl failure, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>no match for probe point, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>non-global arrays, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>probe mismatch, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>type mismatch for identifier, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>unresolved function call, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>unresolved target-symbol expression, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>unresolved type for identifier, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>variable modified during 'foreach', <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>performance monitoring</dt><dd><dl><dt>Introduction, <a class="indexterm" href="introduction.html">Introduction</a></dt></dl></dd><dt>pointer dereference fault</dt><dd><dl><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>polling applications, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="timeoutssect.html">Monitoring Polling Applications</a></dt></dl></dd><dt>pp()</dt><dd><dl><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>printf()</dt><dd><dl><dt>format specifiers, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>format strings, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>syntax and format, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>printing I/O activity (cumulative)</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceiosect.html">Track Cumulative IO</a></dt></dl></dd><dt>printing I/O block time (periodically)</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="ioblktimesect.html">Periodically Print I/O Block Time</a></dt></dl></dd><dt>probe mismatch</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>probe point (no match for)</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>probes</dt><dd><dl><dt>SystemTap scripts</dt><dd><dl><dt>introduction, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt></dl></dd></dl></dd><dt>processing multiple elements in an array</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt><dt>cumulative virtual file system reads, tallying</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd><dt>foreach</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd><dt>limiting the output of foreach</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd><dt>ordering the output of foreach</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd></dl></dd><dt>profiling the network</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#nettopsect">Network Profiling</a>, <a class="indexterm" href="useful-systemtap-scripts.html#dropwatchsect">Monitoring Network Packets Drops in Kernel</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>R</h3><dl><dt>reading values from arrays</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt><dd><dl><dt>empty unique keys, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt><dt>using arrays in simple computations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt></dl></dd><dt>computing for timestamp deltas</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt></dl></dd></dl></dd><dt>reads/writes to a file, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt></dl></dd><dt>required packages, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>RPMs required to run SystemTap, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>running scripts from standard input, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt><dt>running SystemTap scripts</dt><dd><dl><dt>Usage, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt></dl></dd><dt>runtime errors/warnings</dt><dd><dl><dt>understainding SystemTap errors, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dd><dl><dt>aggregate element not found, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>aggregation overflow, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>copy fault, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>division by 0, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>MAXACTION exceeded, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>MAXNESTING exceeded, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>number of errors: N, skipped probes: M, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>pointer dereference fault, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>S</h3><dl><dt>script examples</dt><dd><dl><dt>call graph tracing, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt><dt>CPU ticks, <a class="indexterm" href="threadtimessect.html">Determining Time Spent in Kernel and User Space</a></dt><dt>ctime(), example of usage, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt><dt>determining time spent in kernel and user space, <a class="indexterm" href="threadtimessect.html">Determining Time Spent in Kernel and User Space</a></dt><dt>file device number (integer format), <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt><dt>futex (lock) contentions, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt><dt>futex system call, <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt><dt>identifying contended user-space locks (futex contentions), <a class="indexterm" href="futexcontentionsect.html">Identifying Contended User-Space Locks</a></dt><dt>if/else conditionals, alternative syntax, <a class="indexterm" href="useful-systemtap-scripts.html#nettopsect">Network Profiling</a></dt><dt>inode number, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt><dt>monitoring changes to file attributes, <a class="indexterm" href="inodewatch2sect.html">Monitoring Changes to File Attributes</a></dt><dt>monitoring device I/O, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt><dt>monitoring I/O block time, <a class="indexterm" href="ioblktimesect.html">Periodically Print I/O Block Time</a></dt><dt>monitoring I/O time, <a class="indexterm" href="iotimesect.html">Tracking I/O Time For Each File Read or Write</a></dt><dt>monitoring incoming TCP connections, <a class="indexterm" href="useful-systemtap-scripts.html#tcpconnectionssect">Monitoring Incoming TCP Connections</a></dt><dt>monitoring polling applications, <a class="indexterm" href="timeoutssect.html">Monitoring Polling Applications</a></dt><dt>monitoring reads and writes to a file, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt><dt>monitoring system calls, <a class="indexterm" href="topsyssect.html">Tracking Most Frequently Used System Calls</a></dt><dt>monitoring system calls (volume per process), <a class="indexterm" href="syscallsbyprocpidsect.html">Tracking System Call Volume Per Process</a></dt><dt>monitoring TCP packets, <a class="indexterm" href="useful-systemtap-scripts.html#tcpdumplikesect">Monitoring TCP Packets</a></dt><dt>multiple command-line arguments, example of, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt><dt>net/socket.c, tracing functions from, <a class="indexterm" href="useful-systemtap-scripts.html#sockettracesect">Tracing Functions Called in Network Socket Code</a></dt><dt>network profiling, <a class="indexterm" href="useful-systemtap-scripts.html#nettopsect">Network Profiling</a>, <a class="indexterm" href="useful-systemtap-scripts.html#dropwatchsect">Monitoring Network Packets Drops in Kernel</a></dt><dt>stat -c, determining file device number (integer format), <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt><dt>stat -c, determining whole device number, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt><dt>summarizing disk I/O traffic, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt><dt>tallying function calls, <a class="indexterm" href="mainsect-profiling.html#countcallssect">Counting Function Calls Made</a></dt><dt>thread_indent(), sample usage, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt><dt>timer.ms(), sample usage, <a class="indexterm" href="mainsect-profiling.html#countcallssect">Counting Function Calls Made</a></dt><dt>timer.s(), sample usage, <a class="indexterm" href="timeoutssect.html">Monitoring Polling Applications</a>, <a class="indexterm" href="topsyssect.html">Tracking Most Frequently Used System Calls</a></dt><dt>tracing functions called in network socket code, <a class="indexterm" href="useful-systemtap-scripts.html#sockettracesect">Tracing Functions Called in Network Socket Code</a></dt><dt>tracking cumulative I/O, <a class="indexterm" href="traceiosect.html">Track Cumulative IO</a></dt><dt>trigger function, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt><dt>usrdev2kerndev(), <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt><dt>whole device number (usage as a command-line argument), <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt></dl></dd><dt>scripts</dt><dd><dl><dt>introduction, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dd><dl><dt>components, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>events and handlers, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>format and syntax, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>functions, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>probes, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>statement blocks, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt></dl></dd></dl></dd><dt>sessions, SystemTap, <a class="indexterm" href="understanding-how-systemtap-works.html#understanding-architecture-tools">Architecture</a></dt><dt>Setup and Installation, <a class="indexterm" href="using-systemtap.html#using-setup">Installation and Setup</a></dt><dt>Stack backtrace</dt><dd><dl><dt>user-space, <a class="indexterm" href="ustack.html">User-Space Stack Backtraces</a></dt></dl></dd><dt>standard input, running scripts from</dt><dd><dl><dt>Usage, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt></dl></dd><dt>stap</dt><dd><dl><dt>Usage, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt></dl></dd><dt>stap options, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt><dt>stapdev</dt><dd><dl><dt>Usage, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt></dl></dd><dt>staprun</dt><dd><dl><dt>Usage, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt></dl></dd><dt>stapusr</dt><dd><dl><dt>Usage, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt></dl></dd><dt>stat -c, determining file device number (integer format)</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt></dl></dd><dt>stat -c, determining whole device number</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt></dl></dd><dt>statement blocks</dt><dd><dl><dt>SystemTap scripts</dt><dd><dl><dt>introduction, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt></dl></dd></dl></dd><dt>statistical aggregates</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-aggregates.html">Computing for Statistical Aggregates</a></dt></dl></dd><dt>summarizing disk I/O traffic</dt><dd><dl><dt>script examples, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a></dt></dl></dd><dt>synchronous events</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>syntax</dt><dd><dl><dt>introduction</dt><dd><dl><dt>arrays, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt></dl></dd></dl></dd><dt>syntax and format</dt><dd><dl><dt>printf(), <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>SystemTap handler constructs</dt><dd><dl><dt>handlers, <a class="indexterm" href="scriptconstructions.html">Basic SystemTap Handler Constructs</a></dt></dl></dd><dt>SystemTap scripts</dt><dd><dl><dt>introduction, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt></dl></dd></dl></dd><dt>syscall.system_call</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>system calls volume (per process), monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="syscallsbyprocpidsect.html">Tracking System Call Volume Per Process</a></dt></dl></dd><dt>system calls, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="topsyssect.html">Tracking Most Frequently Used System Calls</a></dt></dl></dd><dt>SystemTap architecture, <a class="indexterm" href="understanding-how-systemtap-works.html#understanding-architecture-tools">Architecture</a></dt><dt>SystemTap handlers</dt><dd><dl><dt>SystemTap handler constructs, <a class="indexterm" href="scriptconstructions.html">Basic SystemTap Handler Constructs</a></dt><dd><dl><dt>syntax and format, <a class="indexterm" href="scriptconstructions.html">Basic SystemTap Handler Constructs</a></dt></dl></dd></dl></dd><dt>systemtap package, <a class="indexterm" href="using-systemtap.html#installproper">Installing SystemTap</a></dt><dt>SystemTap script functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>SystemTap scripts</dt><dd><dl><dt>introduction, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dd><dl><dt>components, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>events and handlers, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>format and syntax, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>functions, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>probes, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt><dt>statement blocks, <a class="indexterm" href="scripts.html">SystemTap Scripts</a></dt></dl></dd><dt>useful examples, <a class="indexterm" href="useful-systemtap-scripts.html">Useful SystemTap Scripts</a></dt></dl></dd><dt>SystemTap scripts, how to run, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt><dt>SystemTap sessions, <a class="indexterm" href="understanding-how-systemtap-works.html#understanding-architecture-tools">Architecture</a></dt><dt>SystemTap statements</dt><dd><dl><dt>conditional statements, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt><dd><dl><dt>conditional operators, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt><dt>for loops, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt><dt>if/else, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt><dt>while loops, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt></dl></dd><dt>SystemTap handler constructs</dt><dd><dl><dt>command-line arguments, <a class="indexterm" href="commandlineargssect.html">Command-Line Arguments</a></dt><dt>global, <a class="indexterm" href="scriptconstructions.html#variablesconstructs">Variables</a></dt><dt>variable notations, <a class="indexterm" href="commandlineargssect.html">Command-Line Arguments</a></dt><dt>variables, <a class="indexterm" href="scriptconstructions.html#variablesconstructs">Variables</a></dt></dl></dd></dl></dd><dt>systemtap-runtime package, <a class="indexterm" href="using-systemtap.html#installproper">Installing SystemTap</a></dt><dt>systemtap-testsuite package</dt><dd><dl><dt>sample scripts, <a class="indexterm" href="useful-systemtap-scripts.html">Useful SystemTap Scripts</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>T</h3><dl><dt>tallying function calls</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="mainsect-profiling.html#countcallssect">Counting Function Calls Made</a></dt></dl></dd><dt>tallying virtual file system reads (VFS reads)</dt><dd><dl><dt>incrementing associated values</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-increment.html">Incrementing Associated Values</a></dt></dl></dd></dl></dd><dt>Tapsets</dt><dd><dl><dt>definition of, <a class="indexterm" href="understanding-tapsets.html">Tapsets</a></dt></dl></dd><dt>target kernel</dt><dd><dl><dt>cross-instrumentation, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt></dl></dd><dt>target system</dt><dd><dl><dt>cross-instrumentation, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt></dl></dd><dt>target system and host system</dt><dd><dl><dt>configuration, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt></dl></dd><dt>target variables, <a class="indexterm" href="targetvariables.html">Target Variables</a></dt><dd><dl><dt>pretty printing, <a class="indexterm" href="targetvariables.html#targetprettyprinting">Pretty Printing Target Variables</a></dt><dt>typecasting, <a class="indexterm" href="typecasting.html">Typecasting</a></dt><dt>user-space, <a class="indexterm" href="utargetvariable.html">Accessing User-Space Target Variables</a></dt><dt>variable availability, <a class="indexterm" href="targetavailable.html">Checking Target Variable Availability</a></dt></dl></dd><dt>target()</dt><dd><dl><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>target-symbol expression, unresolved</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>TCP connections (incoming), monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#tcpconnectionssect">Monitoring Incoming TCP Connections</a></dt></dl></dd><dt>TCP packets, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#tcpdumplikesect">Monitoring TCP Packets</a></dt></dl></dd><dt>testing for array membership</dt><dd><dl><dt>conditional statements, using arrays in</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-conditionals.html">Using Arrays in Conditional Statements</a></dt></dl></dd></dl></dd><dt>testing, initial, <a class="indexterm" href="using-systemtap.html#testing">Initial Testing</a></dt><dt>thread_indent()</dt><dd><dl><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>thread_indent(), sample usage</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt></dl></dd><dt>tid()</dt><dd><dl><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>time of I/O </dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="iotimesect.html">Tracking I/O Time For Each File Read or Write</a></dt></dl></dd><dt>time spent in kernel/user space, determining</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="threadtimessect.html">Determining Time Spent in Kernel and User Space</a></dt></dl></dd><dt>timer events</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>timer.ms(), sample usage</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="mainsect-profiling.html#countcallssect">Counting Function Calls Made</a></dt></dl></dd><dt>timer.s(), sample usage</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="timeoutssect.html">Monitoring Polling Applications</a>, <a class="indexterm" href="topsyssect.html">Tracking Most Frequently Used System Calls</a></dt></dl></dd><dt>timestamp deltas, computing for</dt><dd><dl><dt>reading values from arrays</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt></dl></dd></dl></dd><dt>timestamps, association thereof to process names</dt><dd><dl><dt>assigning associated values</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayoperators.html#arrayops-assignvalue">Assigning an Associated Value</a></dt></dl></dd></dl></dd><dt>tracepoint, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a>, <a class="indexterm" href="useful-systemtap-scripts.html#dropwatchsect">Monitoring Network Packets Drops in Kernel</a></dt><dt>tracing call graph</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt></dl></dd><dt>tracing functions called in network socket code</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html#sockettracesect">Tracing Functions Called in Network Socket Code</a></dt></dl></dd><dt>tracing incoming/outgoing function calls</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt></dl></dd><dt>tracking cumulative I/O</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceiosect.html">Track Cumulative IO</a></dt></dl></dd><dt>trigger function</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="paracallgraph.html">Call Graph Tracing</a></dt></dl></dd><dt>type mismatch for identifier</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>typographical script error</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>U</h3><dl><dt>uid()</dt><dd><dl><dt>functions, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt></dl></dd><dt>uname -m, <a class="indexterm" href="cross-compiling.html">Generating Instrumentation for Other Computers</a></dt><dt>uname -r, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information Packages Manually</a></dt><dt>understainding SystemTap errors</dt><dd><dl><dt>runtime errors/warnings, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dd><dl><dt>aggregate element not found, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>aggregation overflow, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>copy fault, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>division by 0, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>MAXACTION exceeded, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>MAXNESTING exceeded, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>number of errors: N, skipped probes: M, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt><dt>pointer dereference fault, <a class="indexterm" href="runtimeerror.html">Runtime Errors and Warnings</a></dt></dl></dd></dl></dd><dt>Understanding How SystemTap Works, <a class="indexterm" href="understanding-how-systemtap-works.html">Understanding How SystemTap Works</a></dt><dd><dl><dt>architecture, <a class="indexterm" href="understanding-how-systemtap-works.html#understanding-architecture-tools">Architecture</a></dt><dt>event types, <a class="indexterm" href="understanding-how-systemtap-works.html">Understanding How SystemTap Works</a></dt><dt>events and handlers, <a class="indexterm" href="understanding-how-systemtap-works.html">Understanding How SystemTap Works</a></dt><dt>SystemTap sessions, <a class="indexterm" href="understanding-how-systemtap-works.html#understanding-architecture-tools">Architecture</a></dt></dl></dd><dt>understanding SystemTap errors</dt><dd><dl><dt>parse/semantics error, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dd><dl><dt>embedded code in unprivileged script, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>expected symbol/array index expression, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>grammatical/typographical script error, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>guru mode, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>invalid values to variables/arrays, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>libdwfl failure, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>no match for probe point, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>non-global arrays, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>probe mismatch, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>type mismatch for identifier, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>unresolved function call, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>unresolved target-symbol expression, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>unresolved type for identifier, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt><dt>variable modified during 'foreach', <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>unique keys</dt><dd><dl><dt>introduction</dt><dd><dl><dt>arrays, <a class="indexterm" href="associativearrays.html">Associative Arrays</a></dt></dl></dd></dl></dd><dt>unprivileged script, embedded code in</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>unresolved function call</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>unresolved target-symbol expression</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>unresolved type for identifier</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>unsafe embedded code in unprivileged script</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>Usage</dt><dd><dl><dt>options, stap, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt><dt>running SystemTap scripts, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt><dt>standard input, running scripts from, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt><dt>stap, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt><dt>stapdev, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt><dt>staprun, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt><dt>stapusr, <a class="indexterm" href="using-usage.html">Running SystemTap Scripts</a></dt></dl></dd><dt>useful examples of SystemTap scripts, <a class="indexterm" href="useful-systemtap-scripts.html">Useful SystemTap Scripts</a></dt><dt>user and kernel space, determining time spent in</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="threadtimessect.html">Determining Time Spent in Kernel and User Space</a></dt></dl></dd><dt>using arrays in simple computations</dt><dd><dl><dt>reading values from arrays</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-readvalues.html">Reading Values From Arrays</a></dt></dl></dd></dl></dd><dt>Using SystemTap, <a class="indexterm" href="using-systemtap.html">Using SystemTap</a></dt><dt>usrdev2kerndev()</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>V</h3><dl><dt>values, assignment of</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayoperators.html#arrayops-assignvalue">Assigning an Associated Value</a></dt></dl></dd><dt>variable modified during 'foreach'</dt><dd><dl><dt>parse/semantics error</dt><dd><dl><dt>understanding SystemTap errors, <a class="indexterm" href="errors.html#parsetype">Parse and Semantic Errors</a></dt></dl></dd></dl></dd><dt>variable notations</dt><dd><dl><dt>SystemTap handler constructs</dt><dd><dl><dt>handlers, <a class="indexterm" href="commandlineargssect.html">Command-Line Arguments</a></dt></dl></dd></dl></dd><dt>variables</dt><dd><dl><dt>SystemTap handler constructs</dt><dd><dl><dt>handlers, <a class="indexterm" href="scriptconstructions.html#variablesconstructs">Variables</a></dt></dl></dd></dl></dd><dt>variables (local)</dt><dd><dl><dt>name, <a class="indexterm" href="systemtapscript-handler.html">SystemTap Handler/Body</a></dt><dt>sample usage</dt><dd><dl><dt>$count, <a class="indexterm" href="iotimesect.html">Tracking I/O Time For Each File Read or Write</a></dt><dt>$return, <a class="indexterm" href="mainsect-disk.html#disktop">Summarizing Disk Read/Write Traffic</a>, <a class="indexterm" href="traceiosect.html">Track Cumulative IO</a></dt></dl></dd></dl></dd><dt>VFS reads, tallying of</dt><dd><dl><dt>incrementing associated values</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-increment.html">Incrementing Associated Values</a></dt></dl></dd></dl></dd><dt>vfs.file_operation</dt><dd><dl><dt>Events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt></dl></dd><dt>virtual file system reads (cumulative), tallying</dt><dd><dl><dt>processing multiple elements in an array</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-foreach.html">Processing Multiple Elements in an Array</a></dt></dl></dd></dl></dd><dt>virtual file system reads (non-cumulative), tallying</dt><dd><dl><dt>clearing arrays/array elements</dt><dd><dl><dt>array operations, <a class="indexterm" href="arrayops-deleting.html">Clearing/Deleting Arrays and Array Elements</a></dt></dl></dd></dl></dd></dl></div><div class="indexdiv"><h3>W</h3><dl><dt>while loops</dt><dd><dl><dt>conditional statements</dt><dd><dl><dt>handlers, <a class="indexterm" href="handlerconditionalstatements.html">Conditional Statements</a></dt></dl></dd></dl></dd><dt>whole device number (usage as a command-line argument)</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="traceio2sect.html">I/O Monitoring (By Device)</a></dt></dl></dd><dt>wildcards in events, <a class="indexterm" href="scripts.html#systemtapscript-events">Event</a></dt><dt>writes/reads to a file, monitoring</dt><dd><dl><dt>examples of SystemTap scripts, <a class="indexterm" href="inodewatchsect.html">Monitoring Reads and Writes to a File</a></dt></dl></dd></dl></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="appe-Publican-Revision_History.html"><strong>Prev</strong>Appendix A. Revision History</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/mainsect-disk.html b/SystemTap_Beginners_Guide/mainsect-disk.html
index f1b4fd55..aa4cac07 100644
--- a/SystemTap_Beginners_Guide/mainsect-disk.html
+++ b/SystemTap_Beginners_Guide/mainsect-disk.html
@@ -1,12 +1,7 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.2. Disk</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="useful-systemtap-scripts.html" title="Chapter 5. Useful SystemTap Scripts" /><link rel="prev" href="useful-systemtap-scripts.html" title="Chapter 5. Useful SystemTap Scripts" /><link rel="next" href="iotimesect.html" title="5.2.2. Tracking I/O Time For Each File Read or Write" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="useful-systemtap-scripts.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="iotimesect.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="mainsect-disk"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.2. Disk</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="useful-systemtap-scripts.html" title="Chapter 5. Useful SystemTap Scripts" /><link rel="prev" href="useful-systemtap-scripts.html" title="Chapter 5. Useful SystemTap Scripts" /><link rel="next" href="iotimesect.html" title="5.2.2. Tracking I/O Time For Each File Read or Write" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="useful-systemtap-scripts.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="iotimesect.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="mainsect-disk">
3 ⁠</a>5.2. Disk</h2></div></div></div><div class="para"> 3 ⁠</a>5.2. Disk</h2></div></div></div><div class="para">The following sections showcase scripts that monitor disk and I/O activity.</div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="disktop">
4 The following sections showcase scripts that monitor disk and I/O activity. 4 ⁠</a>5.2.1. Summarizing Disk Read/Write Traffic</h3></div></div></div><a id="idm140174743033280" class="indexterm"></a><a id="idm140174735018528" class="indexterm"></a><a id="idm140174731928464" class="indexterm"></a><a id="idm140174732298512" class="indexterm"></a><a id="idm140174732172000" class="indexterm"></a><a id="idm140174743478544" class="indexterm"></a><a id="idm140174742047120" class="indexterm"></a><a id="idm140174740560848" class="indexterm"></a><div class="para">This section describes how to identify which processes are performing the heaviest disk reads/writes to the system.</div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">disktop.stp</div>
5 </div><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="disktop">
6 ⁠</a>5.2.1. Summarizing Disk Read/Write Traffic</h3></div></div></div><a id="idm47748186380480" class="indexterm"></a><a id="idm47748188132032" class="indexterm"></a><a id="idm47748180419040" class="indexterm"></a><a id="idm47748218753488" class="indexterm"></a><a id="idm47748174945088" class="indexterm"></a><a id="idm47748222434960" class="indexterm"></a><a id="idm47748177176960" class="indexterm"></a><a id="idm47748219411536" class="indexterm"></a><div class="para">
7 This section describes how to identify which processes are performing the heaviest disk reads/writes to the system.
8 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">disktop.stp</div>
9
10<pre class="programlisting">#!/usr/bin/env stap 5<pre class="programlisting">#!/usr/bin/env stap
11# 6#
12# Copyright (C) 2007 Oracle Corp. 7# Copyright (C) 2007 Oracle Corp.
@@ -79,27 +74,12 @@ probe end{
79 delete write_bytes 74 delete write_bytes
80} 75}
81</pre> 76</pre>
82 </div><div class="para"> 77</div><div class="para"><a class="xref" href="mainsect-disk.html#scriptdisktop">disktop.stp</a> outputs the top ten processes responsible for the heaviest reads/writes to disk. <a class="xref" href="mainsect-disk.html#disktopoutput">Example 5.6, “disktop.stp Sample Output”</a> displays a sample output for this script, and includes the following data per listed process:</div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"><code class="computeroutput">UID</code> — user ID. A user ID of <code class="computeroutput">0</code> refers to the root user.</div></li><li class="listitem"><div class="para"><code class="computeroutput">PID</code> — the ID of the listed process.</div></li><li class="listitem"><div class="para"><code class="computeroutput">PPID</code> — the process ID of the listed process's <span class="emphasis"><em>parent process</em></span>.</div></li><li class="listitem"><div class="para"><code class="computeroutput">CMD</code> — the name of the listed process.</div></li><li class="listitem"><div class="para"><code class="computeroutput">DEVICE</code> — which storage device the listed process is reading from or writing to.</div></li><li class="listitem"><div class="para"><code class="computeroutput">T</code> — the type of action performed by the listed process; <code class="computeroutput">W</code> refers to write, while <code class="computeroutput">R</code> refers to read.</div></li><li class="listitem"><div class="para"><code class="computeroutput">BYTES</code> — the amount of data read to or written from disk.</div></li></ul></div><a id="idm140174732302992" class="indexterm"></a><a id="idm140174733566608" class="indexterm"></a><a id="idm140174735961104" class="indexterm"></a><div class="para">The time and date in the output of <a class="xref" href="mainsect-disk.html#scriptdisktop">disktop.stp</a> is returned by the functions <code class="command">ctime()</code> and <code class="command">gettimeofday_s()</code>. <code class="command">ctime()</code> derives calendar time in terms of seconds passed since the Unix epoch (January 1, 1970). <code class="command">gettimeofday_s()</code> counts the <span class="emphasis"><em>actual</em></span> number of seconds since Unix epoch, which gives a fairly accurate human-readable timestamp for the output.</div><a id="idm140174736349152" class="indexterm"></a><a id="idm140174732592192" class="indexterm"></a><a id="idm140174736673552" class="indexterm"></a><div class="para">
83 <a class="xref" href="mainsect-disk.html#scriptdisktop">disktop.stp</a> outputs the top ten processes responsible for the heaviest reads/writes to disk. <a class="xref" href="mainsect-disk.html#disktopoutput">Example 5.6, “disktop.stp Sample Output”</a> displays a sample output for this script, and includes the following data per listed process: 78 In this script, the <code class="command">$return</code> is a local variable that stores the
84 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"> 79 actual number of bytes each process reads or writes from the virtual file system.
85 <code class="computeroutput">UID</code> — user ID. A user ID of <code class="computeroutput">0</code> refers to the root user. 80 <code class="command">$return</code> can only be used in return probes (for example,
86 </div></li><li class="listitem"><div class="para"> 81 <code class="command">vfs.read.return</code> and <code class="command">vfs.read.return</code>).
87 <code class="computeroutput">PID</code> — the ID of the listed process. 82</div><div class="example"><a id="disktopoutput">
88 </div></li><li class="listitem"><div class="para">
89 <code class="computeroutput">PPID</code> — the process ID of the listed process's <span class="emphasis"><em>parent process</em></span>.
90 </div></li><li class="listitem"><div class="para">
91 <code class="computeroutput">CMD</code> — the name of the listed process.
92 </div></li><li class="listitem"><div class="para">
93 <code class="computeroutput">DEVICE</code> — which storage device the listed process is reading from or writing to.
94 </div></li><li class="listitem"><div class="para">
95 <code class="computeroutput">T</code> — the type of action performed by the listed process; <code class="computeroutput">W</code> refers to write, while <code class="computeroutput">R</code> refers to read.
96 </div></li><li class="listitem"><div class="para">
97 <code class="computeroutput">BYTES</code> — the amount of data read to or written from disk.
98 </div></li></ul></div><a id="idm47748218455296" class="indexterm"></a><a id="idm47748181023056" class="indexterm"></a><a id="idm47748234410224" class="indexterm"></a><div class="para">
99 The time and date in the output of <a class="xref" href="mainsect-disk.html#scriptdisktop">disktop.stp</a> is returned by the functions <code class="command">ctime()</code> and <code class="command">gettimeofday_s()</code>. <code class="command">ctime()</code> derives calendar time in terms of seconds passed since the Unix epoch (January 1, 1970). <code class="command">gettimeofday_s()</code> counts the <span class="emphasis"><em>actual</em></span> number of seconds since Unix epoch, which gives a fairly accurate human-readable timestamp for the output.
100 </div><a id="idm47748224802848" class="indexterm"></a><a id="idm47748228836944" class="indexterm"></a><a id="idm47748174088816" class="indexterm"></a><div class="para">
101 In this script, the <code class="command">$return</code> is a local variable that stores the actual number of bytes each process reads or writes from the virtual file system. <code class="command">$return</code> can only be used in return probes (for example, <code class="command">vfs.read.return</code> and <code class="command">vfs.read.return</code>).
102 </div><div class="example"><a id="disktopoutput">
103 ⁠</a><p class="title"><strong>Example 5.6. <a class="xref" href="mainsect-disk.html#scriptdisktop">disktop.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">[...] 83 ⁠</a><p class="title"><strong>Example 5.6. <a class="xref" href="mainsect-disk.html#scriptdisktop">disktop.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">[...]
104Mon Sep 29 03:38:28 2008 , Average: 19Kb/sec, Read: 7Kb, Write: 89Kb 84Mon Sep 29 03:38:28 2008 , Average: 19Kb/sec, Read: 7Kb, Write: 89Kb
105 85
diff --git a/SystemTap_Beginners_Guide/mainsect-profiling.html b/SystemTap_Beginners_Guide/mainsect-profiling.html
index 3884d099..8bbaaf56 100644
--- a/SystemTap_Beginners_Guide/mainsect-profiling.html
+++ b/SystemTap_Beginners_Guide/mainsect-profiling.html
@@ -1,12 +1,7 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.3. Profiling</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="useful-systemtap-scripts.html" title="Chapter 5. Useful SystemTap Scripts" /><link rel="prev" href="ioblktimesect.html" title="5.2.7. Periodically Print I/O Block Time" /><link rel="next" href="paracallgraph.html" title="5.3.2. Call Graph Tracing" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="ioblktimesect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="paracallgraph.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="mainsect-profiling"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.3. Profiling</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="useful-systemtap-scripts.html" title="Chapter 5. Useful SystemTap Scripts" /><link rel="prev" href="ioblktimesect.html" title="5.2.7. Periodically Print I/O Block Time" /><link rel="next" href="paracallgraph.html" title="5.3.2. Call Graph Tracing" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="ioblktimesect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="paracallgraph.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="mainsect-profiling">
3 ⁠</a>5.3. Profiling</h2></div></div></div><div class="para"> 3 ⁠</a>5.3. Profiling</h2></div></div></div><div class="para">The following sections showcase scripts that profile kernel activity by monitoring function calls.</div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="countcallssect">
4 The following sections showcase scripts that profile kernel activity by monitoring function calls. 4 ⁠</a>5.3.1. Counting Function Calls Made</h3></div></div></div><a id="idm140174737387008" class="indexterm"></a><a id="idm140174731580160" class="indexterm"></a><a id="idm140174735842768" class="indexterm"></a><a id="idm140174736602864" class="indexterm"></a><a id="idm140174738666688" class="indexterm"></a><div class="para">This section describes how to identify how many times the system called a specific kernel function in a 30-second sample. Depending on the use of wildcards, you can also use this script to target multiple kernel functions.</div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">functioncallcount.stp</div>
5 </div><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="countcallssect">
6 ⁠</a>5.3.1. Counting Function Calls Made</h3></div></div></div><a id="idm47748228831728" class="indexterm"></a><a id="idm47748175555120" class="indexterm"></a><a id="idm47748224551184" class="indexterm"></a><a id="idm47748216750176" class="indexterm"></a><a id="idm47748234470208" class="indexterm"></a><div class="para">
7 This section describes how to identify how many times the system called a specific kernel function in a 30-second sample. Depending on the use of wildcards, you can also use this script to target multiple kernel functions.
8 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">functioncallcount.stp</div>
9
10<pre class="programlisting">#! /usr/bin/env stap 5<pre class="programlisting">#! /usr/bin/env stap
11# The following line command will probe all the functions 6# The following line command will probe all the functions
12# in kernel's memory management code: 7# in kernel's memory management code:
@@ -26,11 +21,7 @@ probe end {
26 exit() 21 exit()
27} 22}
28</pre> 23</pre>
29 </div><div class="para"> 24</div><div class="para"><a class="xref" href="mainsect-profiling.html#countcalls">functioncallcount.stp</a> takes the targeted kernel function as an argument. The argument supports wildcards, which enables you to target multiple kernel functions up to a certain extent.</div><a id="idm140174740001920" class="indexterm"></a><a id="idm140174736181552" class="indexterm"></a><a id="idm140174731581760" class="indexterm"></a><div class="para">The output of <a class="xref" href="mainsect-profiling.html#countcalls">functioncallcount.stp</a> contains the name of the function called and how many times it was called during the sample time (in alphabetical order). <a class="xref" href="mainsect-profiling.html#countcallsoutput">Example 5.13, “functioncallcount.stp Sample Output”</a> contains an excerpt from the output of <code class="command">stap functioncallcount.stp "*@mm/*.c"</code>:</div><div class="example"><a id="countcallsoutput">
30 <a class="xref" href="mainsect-profiling.html#countcalls">functioncallcount.stp</a> takes the targeted kernel function as an argument. The argument supports wildcards, which enables you to target multiple kernel functions up to a certain extent.
31 </div><a id="idm47748224240544" class="indexterm"></a><a id="idm47748176379696" class="indexterm"></a><a id="idm47748219938528" class="indexterm"></a><div class="para">
32 The output of <a class="xref" href="mainsect-profiling.html#countcalls">functioncallcount.stp</a> contains the name of the function called and how many times it was called during the sample time (in alphabetical order). <a class="xref" href="mainsect-profiling.html#countcallsoutput">Example 5.13, “functioncallcount.stp Sample Output”</a> contains an excerpt from the output of <code class="command">stap functioncallcount.stp "*@mm/*.c"</code>:
33 </div><div class="example"><a id="countcallsoutput">
34 ⁠</a><p class="title"><strong>Example 5.13. <a class="xref" href="mainsect-profiling.html#countcalls">functioncallcount.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">[...] 25 ⁠</a><p class="title"><strong>Example 5.13. <a class="xref" href="mainsect-profiling.html#countcalls">functioncallcount.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">[...]
35__vma_link 97 26__vma_link 97
36__vma_link_file 66 27__vma_link_file 66
diff --git a/SystemTap_Beginners_Guide/paracallgraph.html b/SystemTap_Beginners_Guide/paracallgraph.html
index f9f111e0..dbc7e492 100644
--- a/SystemTap_Beginners_Guide/paracallgraph.html
+++ b/SystemTap_Beginners_Guide/paracallgraph.html
@@ -1,9 +1,6 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.3.2. Call Graph Tracing</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-profiling.html" title="5.3. Profiling" /><link rel="prev" href="mainsect-profiling.html" title="5.3. Profiling" /><link rel="next" href="threadtimessect.html" title="5.3.3. Determining Time Spent in Kernel and User Space" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="mainsect-profiling.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="threadtimessect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="paracallgraph"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.3.2. Call Graph Tracing</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-profiling.html" title="5.3. Profiling" /><link rel="prev" href="mainsect-profiling.html" title="5.3. Profiling" /><link rel="next" href="threadtimessect.html" title="5.3.3. Determining Time Spent in Kernel and User Space" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="mainsect-profiling.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="threadtimessect.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="paracallgraph">
3 ⁠</a>5.3.2. Call Graph Tracing</h3></div></div></div><a id="idm47748220031456" class="indexterm"></a><a id="idm47748212852464" class="indexterm"></a><a id="idm47748180441200" class="indexterm"></a><a id="idm47748174958208" class="indexterm"></a><a id="idm47748229602272" class="indexterm"></a><a id="idm47748214936752" class="indexterm"></a><a id="idm47748224767888" class="indexterm"></a><div class="para"> 3 ⁠</a>5.3.2. Call Graph Tracing</h3></div></div></div><a id="idm140174743138304" class="indexterm"></a><a id="idm140174732496176" class="indexterm"></a><a id="idm140174733821680" class="indexterm"></a><a id="idm140174733108304" class="indexterm"></a><a id="idm140174740316944" class="indexterm"></a><a id="idm140174735298064" class="indexterm"></a><a id="idm140174743476720" class="indexterm"></a><div class="para">This section describes how to trace incoming and outgoing function calls. </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">para-callgraph.stp</div>
4 This section describes how to trace incoming and outgoing function calls.
5 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">para-callgraph.stp</div>
6
7<pre class="programlisting">#! /usr/bin/env stap 4<pre class="programlisting">#! /usr/bin/env stap
8 5
9function trace(entry_p, extra) { 6function trace(entry_p, extra) {
@@ -29,17 +26,15 @@ probe $2.return {
29probe $1.call { trace(1, $$parms) } 26probe $1.call { trace(1, $$parms) }
30probe $1.return { trace(-1, $$return) } 27probe $1.return { trace(-1, $$return) }
31</pre> 28</pre>
32 </div><a id="idm47748217407344" class="indexterm"></a><a id="idm47748230534944" class="indexterm"></a><a id="idm47748177377216" class="indexterm"></a><a id="idm47748224883136" class="indexterm"></a><div class="para"> 29</div><a id="idm140174733093424" class="indexterm"></a><a id="idm140174730951392" class="indexterm"></a><a id="idm140174738683824" class="indexterm"></a><a id="idm140174731781856" class="indexterm"></a><div class="para"><a class="xref" href="paracallgraph.html#scriptcallgraph">para-callgraph.stp</a> takes two command-line arguments:</div><a id="idm140174739395152" class="indexterm"></a><a id="idm140174740115248" class="indexterm"></a><a id="idm140174741038112" class="indexterm"></a><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
33 <a class="xref" href="paracallgraph.html#scriptcallgraph">para-callgraph.stp</a> takes two command-line arguments: 30 The function/s whose entry/exit call you'd like to trace
34 </div><a id="idm47748213434688" class="indexterm"></a><a id="idm47748230727904" class="indexterm"></a><a id="idm47748220086096" class="indexterm"></a><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"> 31 (<code class="command">$1</code>).
35 The function/s whose entry/exit call you'd like to trace (<code class="command">$1</code>). 32 </div></li><li class="listitem"><div class="para">
36 </div></li><li class="listitem"><div class="para"> 33 A second optional <em class="firstterm">trigger function</em> (<code class="command">$2</code>), which
37 A second optional <em class="firstterm">trigger function</em> (<code class="command">$2</code>), which enables or disables tracing on a per-thread basis. Tracing in each thread will continue as long as the trigger function has not exited yet. 34 enables or disables tracing on a per-thread basis. Tracing in each thread
38 </div></li></ul></div><a id="idm47748225719104" class="indexterm"></a><a id="idm47748214106144" class="indexterm"></a><a id="idm47748214753056" class="indexterm"></a><div class="para"> 35 will continue as long as the trigger function has not exited yet.
39 <a class="xref" href="paracallgraph.html#scriptcallgraph">para-callgraph.stp</a> uses <code class="command">thread_indent()</code>; as such, its output contains the timestamp, process name, and thread ID of <code class="command">$1</code> (that is, the probe function you are tracing). For more information about <code class="command">thread_indent()</code>, refer to its entry in <a class="xref" href="systemtapscript-handler.html#systemtapscript-functions">SystemTap Functions</a>. 36 </div></li></ul></div><a id="idm140174732854688" class="indexterm"></a><a id="idm140174733736016" class="indexterm"></a><a id="idm140174741564064" class="indexterm"></a><div class="para"><a class="xref" href="paracallgraph.html#scriptcallgraph">para-callgraph.stp</a> uses <code class="command">thread_indent()</code>; as such, its output contains the timestamp, process name, and thread ID of <code class="command">$1</code> (that is, the probe function you are tracing). For more information about <code class="command">thread_indent()</code>, refer to its entry in <a class="xref" href="systemtapscript-handler.html#systemtapscript-functions">SystemTap Functions</a>.</div><div class="para">The following example contains an excerpt from the output
40 </div><div class="para"> 37for <code class="command">stap para-callgraph.stp 'kernel.function("*@fs/*.c")' 'kernel.function("sys_read")'</code>:</div><div class="example"><a id="paracallgraphoutput">
41 The following example contains an excerpt from the output for <code class="command">stap para-callgraph.stp 'kernel.function("*@fs/*.c")' 'kernel.function("sys_read")'</code>:
42 </div><div class="example"><a id="paracallgraphoutput">
43 ⁠</a><p class="title"><strong>Example 5.14. <a class="xref" href="paracallgraph.html#scriptcallgraph">para-callgraph.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">[...] 38 ⁠</a><p class="title"><strong>Example 5.14. <a class="xref" href="paracallgraph.html#scriptcallgraph">para-callgraph.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">[...]
44 267 gnome-terminal(2921): &lt;-do_sync_read return=0xfffffffffffffff5 39 267 gnome-terminal(2921): &lt;-do_sync_read return=0xfffffffffffffff5
45 269 gnome-terminal(2921):&lt;-vfs_read return=0xfffffffffffffff5 40 269 gnome-terminal(2921):&lt;-vfs_read return=0xfffffffffffffff5
diff --git a/SystemTap_Beginners_Guide/pr01s02.html b/SystemTap_Beginners_Guide/pr01s02.html
index 16f4038f..56135f3b 100644
--- a/SystemTap_Beginners_Guide/pr01s02.html
+++ b/SystemTap_Beginners_Guide/pr01s02.html
@@ -1,7 +1,10 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">2. We Need Feedback!</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="SystemTap_Beginners_Guide-Preface.html" title="Preface" /><link rel="prev" href="SystemTap_Beginners_Guide-Preface.html" title="Preface" /><link rel="next" href="introduction.html" title="Chapter 1. Introduction" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="SystemTap_Beginners_Guide-Preface.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="introduction.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="idm47748175495472"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">2. We Need Feedback!</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="SystemTap_Beginners_Guide-Preface.html" title="Preface" /><link rel="prev" href="SystemTap_Beginners_Guide-Preface.html" title="Preface" /><link rel="next" href="introduction.html" title="Chapter 1. Introduction" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="SystemTap_Beginners_Guide-Preface.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="introduction.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="idm140174732887472">
3 ⁠</a>2. We Need Feedback!</h2></div></div></div><a id="idm47748223595536" class="indexterm"></a><div class="para"> 3 ⁠</a>2. We Need Feedback!</h2></div></div></div><a id="idm140174732738304" class="indexterm"></a><div class="para">
4 If you find a typographical error in this manual, or if you have thought of a way to make this manual better, we would love to hear from you! Please submit a report in Bugzilla: <a href="http://sourceware.org/bugzilla/">http://sourceware.org/bugzilla/</a> against the product <span class="application"><strong>systemtap</strong></span>. 4 If you find a typographical error in this manual, or if you have thought of a way to make this manual better, we would love to hear from you!
5Please submit a report in Bugzilla:
6<a href="http://sourceware.org/bugzilla/">http://sourceware.org/bugzilla/</a>
7against the product <span class="application"><strong>systemtap</strong></span>.
5 </div><div class="para"> 8 </div><div class="para">
6 When submitting a report, be sure to include the specific file or URL the report refers to and the manual's identifier: <em class="citetitle">SystemTap_Beginners_Guide</em> 9 When submitting a report, be sure to include the specific file or URL the report refers to and the manual's identifier: <em class="citetitle">SystemTap_Beginners_Guide</em>
7 </div><div class="para"> 10 </div><div class="para">
diff --git a/SystemTap_Beginners_Guide/references.html b/SystemTap_Beginners_Guide/references.html
index 8c729e1c..df7f43f8 100644
--- a/SystemTap_Beginners_Guide/references.html
+++ b/SystemTap_Beginners_Guide/references.html
@@ -1,23 +1,46 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Chapter 7. References</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="runtimeerror.html" title="6.2. Runtime Errors and Warnings" /><link rel="next" href="appe-Publican-Revision_History.html" title="Appendix A. Revision History" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="runtimeerror.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="appe-Publican-Revision_History.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" lang="en-US"><div class="titlepage"><div><div><h1 class="title"><a id="references"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Chapter 7. References</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="runtimeerror.html" title="6.2. Runtime Errors and Warnings" /><link rel="next" href="appe-Publican-Revision_History.html" title="Appendix A. Revision History" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="runtimeerror.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="appe-Publican-Revision_History.html"><strong>Next</strong></a></li></ul><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="references">
3 ⁠</a>Chapter 7. References</h1></div></div></div><div class="para"> 3 ⁠</a>Chapter 7. References</h1></div></div></div><div class="para">
4 This chapter enumerates other references for more information about SystemTap. Refer to these sources in the course of writing advanced probes and tapsets. 4 This chapter enumerates other references for more information about SystemTap.
5 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">SystemTap Wiki</span></dt><dd><div class="para"> 5 Refer to these sources in the course of writing advanced probes and tapsets.
6 The <em class="citetitle">SystemTap Wiki</em> is a collection of links and articles related to the deployment, usage, and development of SystemTap. You can find it at <a href="http://sourceware.org/systemtap/wiki/HomePage">http://sourceware.org/systemtap/wiki/HomePage</a>. 6</div><div class="variablelist"><dl class="variablelist"><dt><span class="term">SystemTap Wiki</span></dt><dd><div class="para">
7 </div></dd><dt><span class="term">SystemTap Tutorial</span></dt><dd><div class="para"> 7 The <em class="citetitle">SystemTap Wiki</em> is a collection of links and articles related to the
8 Much of the content in this book comes from the <em class="citetitle">SystemTap Tutorial</em>. The <em class="citetitle">SystemTap Tutorial</em> is a more appropriate reference for users with intermediate to advanced knowledge of C++ and kernel development, and you can find it at <a href="http://sourceware.org/systemtap/tutorial/">http://sourceware.org/systemtap/tutorial/</a>. 8 deployment, usage, and development of SystemTap. You can find it at
9 </div></dd><dt><span class="term">man stapprobes</span></dt><dd><div class="para"> 9 <a href="http://sourceware.org/systemtap/wiki/HomePage">http://sourceware.org/systemtap/wiki/HomePage</a>.
10 The <span class="citerefentry"><span class="refentrytitle">stapprobes</span>(3stap)</span> man page enumerates a variety of probe points supported by SystemTap, along with additional aliases defined by the SystemTap tapset library. The bottom part of the man page includes a list of other man pages enumerating similar probe points for specific system components, such as <code class="filename">tapset::scsi</code>, <code class="filename">tapset::kprocess</code>, <code class="filename">tapset::signal</code>, and so on. 10</div></dd><dt><span class="term">SystemTap Tutorial</span></dt><dd><div class="para">
11 </div></dd><dt><span class="term">man stapfuncs</span></dt><dd><div class="para"> 11 Much of the content in this book comes from the <em class="citetitle">SystemTap Tutorial</em>.
12 The <span class="citerefentry"><span class="refentrytitle">stapfuncs</span>(3stap)</span> man page enumerates numerous functions supported by the SystemTap tapset library, along with the prescribed syntax for each of them. Note, however, that it does not provide a complete list of <span class="emphasis"><em>all</em></span> supported functions; there are more undocumented functions available. 12 The <em class="citetitle">SystemTap Tutorial</em> is a more appropriate reference for
13 </div></dd><dt><span class="term">SystemTap Tapset Reference Manual</span></dt><dd><div class="para"> 13 users with intermediate to advanced knowledge of C++ and kernel development, and you can find it at
14 The <em class="citetitle">SystemTap Tapset Reference Manual</em> describes the individual predefined functions and probe points of the tapsets in greater detail. You can find it at <a href="http://sourceware.org/systemtap/tapsets/">http://sourceware.org/systemtap/tapsets/</a>. 14 <a href="http://sourceware.org/systemtap/tutorial/">http://sourceware.org/systemtap/tutorial/</a>.
15 </div></dd><dt><span class="term">SystemTap Language Reference</span></dt><dd><div class="para"> 15</div></dd><dt><span class="term">man stapprobes</span></dt><dd><div class="para">
16 The <em class="citetitle">SystemTap Language Reference</em> is a comprehensive reference of SystemTap's language constructs and syntax. It is recommended for users with a rudimentary to intermediate knowledge of C++ and other similar programming languages, and is available to all users at <a href="http://sourceware.org/systemtap/langref/">http://sourceware.org/systemtap/langref/</a>. 16The <span class="citerefentry"><span class="refentrytitle">stapprobes</span>(3stap)</span> man page enumerates a variety of probe points supported by SystemTap, along with additional aliases
17 </div></dd><dt><span class="term">Tapset Developers Guide</span></dt><dd><div class="para"> 17defined by the SystemTap tapset library. The bottom part of the man page includes a list of other man pages
18 Once you have sufficient proficiency in writing SystemTap scripts, you can try to write your own tapsets. The <em class="citetitle">Tapset Developers Guide</em> describes how to add functions to your tapset library. 18enumerating similar probe points for specific system components, such as
19 </div></dd><dt><span class="term">Test Suite</span></dt><dd><div class="para"> 19<code class="filename">tapset::scsi</code>, <code class="filename">tapset::kprocess</code>,
20 The <span class="package">systemtap-testsuite</span> package allows you to test the entire SystemTap toolchain without having to build it from source code. In addition, it also contains numerous examples of SystemTap scripts to study and test; some of these scripts are also documented in <a class="xref" href="useful-systemtap-scripts.html">Chapter 5, <em>Useful SystemTap Scripts</em></a>. 20<code class="filename">tapset::signal</code>, and so on.
21 </div><div class="para"> 21</div></dd><dt><span class="term">man stapfuncs</span></dt><dd><div class="para">
22 By default, the example scripts included in <span class="package">systemtap-testsuite</span> are located in the <code class="filename">/usr/share/systemtap/testsuite/systemtap.examples/</code> directory. 22 The <span class="citerefentry"><span class="refentrytitle">stapfuncs</span>(3stap)</span> man page enumerates numerous functions supported by the SystemTap tapset
23 </div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="runtimeerror.html"><strong>Prev</strong>6.2. Runtime Errors and Warnings</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="appe-Publican-Revision_History.html"><strong>Next</strong>Appendix A. Revision History</a></li></ul></body></html> \ No newline at end of file 23 library, along with the prescribed syntax for each of them. Note, however, that it does not provide a
24 complete list of <span class="emphasis"><em>all</em></span> supported functions; there are more undocumented
25 functions available.
26</div></dd><dt><span class="term">SystemTap Tapset Reference Manual</span></dt><dd><div class="para">
27 The <em class="citetitle">SystemTap Tapset Reference Manual</em>
28 describes the individual predefined functions and probe points of the
29 tapsets in greater detail. You can find it at
30 <a href="http://sourceware.org/systemtap/tapsets/">http://sourceware.org/systemtap/tapsets/</a>.
31</div></dd><dt><span class="term">SystemTap Language Reference</span></dt><dd><div class="para">
32 The <em class="citetitle">SystemTap Language Reference</em> is a comprehensive reference of SystemTap's language constructs and syntax. It is
33 recommended for users with a rudimentary to intermediate knowledge of C++ and other similar
34 programming languages, and is available to all
35 users at <a href="http://sourceware.org/systemtap/langref/">http://sourceware.org/systemtap/langref/</a>.
36</div></dd><dt><span class="term">Tapset Developers Guide</span></dt><dd><div class="para">
37 Once you have sufficient proficiency in writing SystemTap scripts, you can try to write your own tapsets. The <em class="citetitle">Tapset Developers Guide</em> describes how to add functions to your tapset library.
38</div></dd><dt><span class="term">Test Suite</span></dt><dd><div class="para">
39 The <span class="package">systemtap-testsuite</span> package allows you to test the entire SystemTap
40 toolchain without having to build it from source code. In addition, it also contains numerous examples of
41 SystemTap scripts to study and test; some of these scripts are also documented in
42 <a class="xref" href="useful-systemtap-scripts.html">Chapter 5, <em>Useful SystemTap Scripts</em></a>.
43</div><div class="para">
44 By default, the example scripts included in <span class="package">systemtap-testsuite</span> are located
45 in the <code class="filename">/usr/share/systemtap/testsuite/systemtap.examples/</code> directory.
46</div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="runtimeerror.html"><strong>Prev</strong>6.2. Runtime Errors and Warnings</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="appe-Publican-Revision_History.html"><strong>Next</strong>Appendix A. Revision History</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/runtimeerror.html b/SystemTap_Beginners_Guide/runtimeerror.html
index 692c7f0c..7b683b6e 100644
--- a/SystemTap_Beginners_Guide/runtimeerror.html
+++ b/SystemTap_Beginners_Guide/runtimeerror.html
@@ -1,29 +1,42 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">6.2. Runtime Errors and Warnings</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="errors.html" title="Chapter 6. Understanding SystemTap Errors" /><link rel="prev" href="errors.html" title="Chapter 6. Understanding SystemTap Errors" /><link rel="next" href="references.html" title="Chapter 7. References" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="errors.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="references.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="runtimeerror"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">6.2. Runtime Errors and Warnings</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="errors.html" title="Chapter 6. Understanding SystemTap Errors" /><link rel="prev" href="errors.html" title="Chapter 6. Understanding SystemTap Errors" /><link rel="next" href="references.html" title="Chapter 7. References" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="errors.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="references.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="runtimeerror">
3 ⁠</a>6.2. Runtime Errors and Warnings</h2></div></div></div><a id="idm47748233339472" class="indexterm"></a><a id="idm47748230554064" class="indexterm"></a><a id="idm47748230552624" class="indexterm"></a><div class="para"> 3 ⁠</a>6.2. Runtime Errors and Warnings</h2></div></div></div><a id="idm140174732321296" class="indexterm"></a><a id="idm140174732319664" class="indexterm"></a><a id="idm140174738645856" class="indexterm"></a><div class="para">
4 Runtime errors and warnings occur when the SystemTap instrumentation has been installed and is collecting data on the system. 4 Runtime errors and warnings occur when the SystemTap
5 </div><h3><a id="idm47748230550624"> 5 instrumentation has been installed and is collecting data on
6 ⁠</a>WARNING: Number of errors: <em class="replaceable">N</em>, skipped probes: <em class="replaceable">M</em></h3><a id="idm47748230548976" class="indexterm"></a><a id="idm47748230547120" class="indexterm"></a><a id="idm47748186285520" class="indexterm"></a><a id="idm47748186283664" class="indexterm"></a><div class="para"> 6 the system.
7 Errors and/or skipped probes occurred during this run. Both <em class="replaceable">N</em> and <em class="replaceable">M</em> are the counts of the number of probes that were not executed due to conditions such as too much time required to execute event handlers over an interval of time. 7 </div><h3><a id="idm140174738643712">
8 </div><h3><a id="idm47748186280176"> 8 ⁠</a>WARNING: Number of errors: <em class="replaceable">N</em>, skipped probes: <em class="replaceable">M</em></h3><a id="idm140174738641952" class="indexterm"></a><a id="idm140174733496016" class="indexterm"></a><a id="idm140174733493936" class="indexterm"></a><a id="idm140174733491840" class="indexterm"></a><div class="para">
9 ⁠</a>division by 0</h3><a id="idm47748186279376" class="indexterm"></a><a id="idm47748224602192" class="indexterm"></a><a id="idm47748224600272" class="indexterm"></a><a id="idm47748224598384" class="indexterm"></a><a id="idm47748224596496" class="indexterm"></a><div class="para"> 9 Errors and/or skipped probes occurred during this run. Both
10 The script code performed an invalid division. 10 <em class="replaceable">N</em> and <em class="replaceable">M</em> are
11 </div><h3><a id="idm47748224322928"> 11 the counts of the number of probes that were not executed due to
12 ⁠</a>aggregate element not found</h3><a id="idm47748224322160" class="indexterm"></a><a id="idm47748224320304" class="indexterm"></a><a id="idm47748224318416" class="indexterm"></a><a id="idm47748200944848" class="indexterm"></a><div class="para"> 12 conditions such as too much time required to execute event handlers over
13 A statistics extractor function other than <code class="command">@count</code> was invoked on an aggregate that has not had any values accumulated yet. This is similar to a division by zero. 13 an interval of time.
14 </div><h3><a id="idm47748200941968"> 14</div><h3><a id="idm140174741847168">
15 ⁠</a>aggregation overflow</h3><a id="idm47748200941168" class="indexterm"></a><a id="idm47748200939280" class="indexterm"></a><a id="idm47748200937360" class="indexterm"></a><a id="idm47748224342576" class="indexterm"></a><a id="idm47748224340688" class="indexterm"></a><div class="para"> 15 ⁠</a>division by 0</h3><a id="idm140174741846112" class="indexterm"></a><a id="idm140174741844032" class="indexterm"></a><a id="idm140174734705264" class="indexterm"></a><a id="idm140174734703296" class="indexterm"></a><a id="idm140174734701216" class="indexterm"></a><div class="para">
16 An array containing aggregate values contains too many distinct key pairs at this time. 16 The script code performed an invalid division.
17 </div><h3><a id="idm47748224337936"> 17</div><h3><a id="idm140174733708160">
18 ⁠</a>MAXNESTING exceeded</h3><a id="idm47748224337264" class="indexterm"></a><a id="idm47748188314448" class="indexterm"></a><a id="idm47748188312528" class="indexterm"></a><a id="idm47748188310640" class="indexterm"></a><a id="idm47748188308752" class="indexterm"></a><div class="para"> 18 ⁠</a>aggregate element not found</h3><a id="idm140174733707136" class="indexterm"></a><a id="idm140174733705040" class="indexterm"></a><a id="idm140174733186736" class="indexterm"></a><a id="idm140174733184640" class="indexterm"></a><div class="para">
19 Too many levels of function call nesting were attempted. The default nesting of function calls allowed is 10. 19 A statistics extractor function other than <code class="command">@count</code>
20 </div><h3><a id="idm47748225884752"> 20 was invoked on an aggregate that has not had any values accumulated yet.
21 ⁠</a>MAXACTION exceeded</h3><a id="idm47748225883952" class="indexterm"></a><a id="idm47748225882064" class="indexterm"></a><a id="idm47748225880144" class="indexterm"></a><a id="idm47748225878256" class="indexterm"></a><a id="idm47748188141168" class="indexterm"></a><div class="para"> 21 This is similar to a division by zero.
22 The probe handler attempted to execute too many statements in the probe handler. The default number of actions allowed in a probe handler is 1000. 22</div><h3><a id="idm140174743324128">
23 </div><h3><a id="idm47748188138656"> 23 ⁠</a>aggregation overflow</h3><a id="idm140174743323120" class="indexterm"></a><a id="idm140174743321040" class="indexterm"></a><a id="idm140174741151568" class="indexterm"></a><a id="idm140174741149488" class="indexterm"></a><a id="idm140174741147408" class="indexterm"></a><div class="para">
24 ⁠</a>kernel/user string copy fault at <em class="replaceable">ADDR</em></h3><a id="idm47748188137568" class="indexterm"></a><a id="idm47748188135680" class="indexterm"></a><a id="idm47748224811824" class="indexterm"></a><a id="idm47748224809936" class="indexterm"></a><div class="para"> 24An array containing aggregate values contains too many distinct key pairs at this time.
25 The probe handler attempted to copy a string from kernel or user space at an invalid address (<em class="replaceable">ADDR</em>). 25</div><h3><a id="idm140174732619952">
26 </div><h3><a id="idm47748224807120"> 26 ⁠</a>MAXNESTING exceeded</h3><a id="idm140174732619232" class="indexterm"></a><a id="idm140174732617152" class="indexterm"></a><a id="idm140174733100640" class="indexterm"></a><a id="idm140174733098560" class="indexterm"></a><a id="idm140174733096480" class="indexterm"></a><div class="para">
27 ⁠</a>pointer dereference fault</h3><a id="idm47748224806192" class="indexterm"></a><a id="idm47748222487200" class="indexterm"></a><a id="idm47748222485312" class="indexterm"></a><a id="idm47748222483456" class="indexterm"></a><div class="para"> 27 Too many levels of function call nesting were attempted.
28 There was a fault encountered during a pointer dereference operation such as a target variable evaluation. 28 The default nesting of function calls allowed is 10.
29 </div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="errors.html"><strong>Prev</strong>Chapter 6. Understanding SystemTap Errors</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="references.html"><strong>Next</strong>Chapter 7. References</a></li></ul></body></html> \ No newline at end of file 29</div><h3><a id="idm140174741720448">
30 ⁠</a>MAXACTION exceeded</h3><a id="idm140174741719440" class="indexterm"></a><a id="idm140174741717360" class="indexterm"></a><a id="idm140174741169408" class="indexterm"></a><a id="idm140174741167328" class="indexterm"></a><a id="idm140174741165248" class="indexterm"></a><div class="para">
31 The probe handler attempted to execute too many statements in the
32 probe handler. The default number of actions allowed in a probe handler
33 is 1000.
34</div><h3><a id="idm140174736740448">
35 ⁠</a>kernel/user string copy fault at <em class="replaceable">ADDR</em></h3><a id="idm140174736739088" class="indexterm"></a><a id="idm140174736737008" class="indexterm"></a><a id="idm140174738740624" class="indexterm"></a><a id="idm140174738738544" class="indexterm"></a><div class="para">
36 The probe handler attempted to copy a string from kernel or
37 user space at an invalid address (<em class="replaceable">ADDR</em>).
38</div><h3><a id="idm140174732012960">
39 ⁠</a>pointer dereference fault</h3><a id="idm140174732011936" class="indexterm"></a><a id="idm140174732009840" class="indexterm"></a><a id="idm140174732007760" class="indexterm"></a><a id="idm140174741486528" class="indexterm"></a><div class="para">
40 There was a fault encountered during a pointer
41 dereference operation such as a target variable evaluation.
42</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="errors.html"><strong>Prev</strong>Chapter 6. Understanding SystemTap Errors</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="references.html"><strong>Next</strong>Chapter 7. References</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/scriptconstructions.html b/SystemTap_Beginners_Guide/scriptconstructions.html
index d30c84ff..4d44bf6e 100644
--- a/SystemTap_Beginners_Guide/scriptconstructions.html
+++ b/SystemTap_Beginners_Guide/scriptconstructions.html
@@ -1,13 +1,8 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.3. Basic SystemTap Handler Constructs</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="understanding-how-systemtap-works.html" title="Chapter 3. Understanding How SystemTap Works" /><link rel="prev" href="systemtapscript-handler.html" title="3.2.2. SystemTap Handler/Body" /><link rel="next" href="targetvariables.html" title="3.3.2. Target Variables" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="systemtapscript-handler.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="targetvariables.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="scriptconstructions"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.3. Basic SystemTap Handler Constructs</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="understanding-how-systemtap-works.html" title="Chapter 3. Understanding How SystemTap Works" /><link rel="prev" href="systemtapscript-handler.html" title="3.2.2. SystemTap Handler/Body" /><link rel="next" href="targetvariables.html" title="3.3.2. Target Variables" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="systemtapscript-handler.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="targetvariables.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="scriptconstructions">
3 ⁠</a>3.3. Basic SystemTap Handler Constructs</h2></div></div></div><a id="idm47748175414000" class="indexterm"></a><a id="idm47748175415952" class="indexterm"></a><a id="idm47748230650096" class="indexterm"></a><a id="idm47748230650864" class="indexterm"></a><a id="idm47748230652784" class="indexterm"></a><div class="para"> 3 ⁠</a>3.3. Basic SystemTap Handler Constructs</h2></div></div></div><a id="idm140174734280752" class="indexterm"></a><a id="idm140174731780848" class="indexterm"></a><a id="idm140174736257504" class="indexterm"></a><a id="idm140174739139552" class="indexterm"></a><a id="idm140174735156800" class="indexterm"></a><div class="para">SystemTap supports the use of several basic constructs in handlers. The syntax for most of these handler constructs are mostly based on C and <code class="command">awk</code> syntax. This section describes several of the most useful SystemTap handler constructs, which should provide you with enough information to write simple yet useful SystemTap scripts.</div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="variablesconstructs">
4 SystemTap supports the use of several basic constructs in handlers. The syntax for most of these handler constructs are mostly based on C and <code class="command">awk</code> syntax. This section describes several of the most useful SystemTap handler constructs, which should provide you with enough information to write simple yet useful SystemTap scripts. 4 ⁠</a>3.3.1. Variables</h3></div></div></div><a id="idm140174742601584" class="indexterm"></a><a id="idm140174734767120" class="indexterm"></a><a id="idm140174740030688" class="indexterm"></a><a id="idm140174733394224" class="indexterm"></a><div class="para">Variables can be used freely throughout a handler; simply choose a
5 </div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="variablesconstructs"> 5name, assign a value from a function or expression to it, and use it in an expression. SystemTap automatically identifies whether a variable should be typed as a string or integer, based on the type of the values assigned to it. For instance, if you use set the variable <code class="command">foo</code> to <code class="command">gettimeofday_s()</code> (as in <code class="command">foo = gettimeofday_s()</code>), then <code class="command">foo</code> is typed as a number and can be printed in a <code class="command">printf()</code> with the integer format specifier (<code class="command">%d</code>).</div><a id="idm140174733067296" class="indexterm"></a><a id="idm140174731098048" class="indexterm"></a><a id="idm140174734727936" class="indexterm"></a><div class="para">Note, however, that by default variables are only local to the probe they are used in. This means that variables are initialized, used and disposed at each probe handler invocation. To share a variable between probes, declare the variable name using <code class="command">global</code> outside of the probes. Consider the following example:</div><div class="example"><a id="timerjiffies">
6 ⁠</a>3.3.1. Variables</h3></div></div></div><a id="idm47748220493280" class="indexterm"></a><a id="idm47748217480112" class="indexterm"></a><a id="idm47748220111920" class="indexterm"></a><a id="idm47748216568240" class="indexterm"></a><div class="para">
7 Variables can be used freely throughout a handler; simply choose a name, assign a value from a function or expression to it, and use it in an expression. SystemTap automatically identifies whether a variable should be typed as a string or integer, based on the type of the values assigned to it. For instance, if you use set the variable <code class="command">foo</code> to <code class="command">gettimeofday_s()</code> (as in <code class="command">foo = gettimeofday_s()</code>), then <code class="command">foo</code> is typed as a number and can be printed in a <code class="command">printf()</code> with the integer format specifier (<code class="command">%d</code>).
8 </div><a id="idm47748184388656" class="indexterm"></a><a id="idm47748223737072" class="indexterm"></a><a id="idm47748175414816" class="indexterm"></a><div class="para">
9 Note, however, that by default variables are only local to the probe they are used in. This means that variables are initialized, used and disposed at each probe handler invocation. To share a variable between probes, declare the variable name using <code class="command">global</code> outside of the probes. Consider the following example:
10 </div><div class="example"><a id="timerjiffies">
11 ⁠</a><p class="title"><strong>Example 3.8. timer-jiffies.stp</strong></p><div class="example-contents"><pre class="programlisting">global count_jiffies, count_ms 6 ⁠</a><p class="title"><strong>Example 3.8. timer-jiffies.stp</strong></p><div class="example-contents"><pre class="programlisting">global count_jiffies, count_ms
12probe timer.jiffies(100) { count_jiffies ++ } 7probe timer.jiffies(100) { count_jiffies ++ }
13probe timer.ms(100) { count_ms ++ } 8probe timer.ms(100) { count_ms ++ }
@@ -17,10 +12,4 @@ probe timer.ms(12345)
17 printf ("jiffies:ms ratio %d:%d =&gt; CONFIG_HZ=%d\n", 12 printf ("jiffies:ms ratio %d:%d =&gt; CONFIG_HZ=%d\n",
18 count_jiffies, count_ms, hz) 13 count_jiffies, count_ms, hz)
19 exit () 14 exit ()
20}</pre></div></div><a id="idm47748188225168" class="indexterm"></a><div class="para"> 15}</pre></div></div><a id="idm140174741290560" class="indexterm"></a><div class="para"><a class="xref" href="scriptconstructions.html#timerjiffies">Example 3.8, “timer-jiffies.stp”</a> computes the <code class="command">CONFIG_HZ</code> setting of the kernel using timers that count jiffies and milliseconds, then computing accordingly. The <code class="command">global</code> statement allows the script to use the variables <code class="command">count_jiffies</code> and <code class="command">count_ms</code> (set in their own respective probes) to be shared with <code class="command">probe timer.ms(12345)</code>.</div><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><div class="para">The <code class="command">++</code> notation in <a class="xref" href="scriptconstructions.html#timerjiffies">Example 3.8, “timer-jiffies.stp”</a> (that is, <code class="command">count_jiffies ++</code> and <code class="command">count_ms ++</code>) is used to increment the value of a variable by 1. In the following probe, <code class="command">count_jiffies</code> is incremented by 1 every 100 jiffies:</div><pre class="screen">probe timer.jiffies(100) { count_jiffies ++ }</pre><div class="para">In this instance, SystemTap understands that <code class="command">count_jiffies</code> is an integer. Because no initial value was assigned to <code class="command">count_jiffies</code>, its initial value is zero by default.</div></div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="systemtapscript-handler.html"><strong>Prev</strong>3.2.2. SystemTap Handler/Body</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="targetvariables.html"><strong>Next</strong>3.3.2. Target Variables</a></li></ul></body></html> \ No newline at end of file
21 <a class="xref" href="scriptconstructions.html#timerjiffies">Example 3.8, “timer-jiffies.stp”</a> computes the <code class="command">CONFIG_HZ</code> setting of the kernel using timers that count jiffies and milliseconds, then computing accordingly. The <code class="command">global</code> statement allows the script to use the variables <code class="command">count_jiffies</code> and <code class="command">count_ms</code> (set in their own respective probes) to be shared with <code class="command">probe timer.ms(12345)</code>.
22 </div><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><div class="para">
23 The <code class="command">++</code> notation in <a class="xref" href="scriptconstructions.html#timerjiffies">Example 3.8, “timer-jiffies.stp”</a> (that is, <code class="command">count_jiffies ++</code> and <code class="command">count_ms ++</code>) is used to increment the value of a variable by 1. In the following probe, <code class="command">count_jiffies</code> is incremented by 1 every 100 jiffies:
24 </div><pre class="screen">probe timer.jiffies(100) { count_jiffies ++ }</pre><div class="para">
25 In this instance, SystemTap understands that <code class="command">count_jiffies</code> is an integer. Because no initial value was assigned to <code class="command">count_jiffies</code>, its initial value is zero by default.
26 </div></div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="systemtapscript-handler.html"><strong>Prev</strong>3.2.2. SystemTap Handler/Body</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="targetvariables.html"><strong>Next</strong>3.3.2. Target Variables</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/scripts.html b/SystemTap_Beginners_Guide/scripts.html
index ad61f536..8c1c33da 100644
--- a/SystemTap_Beginners_Guide/scripts.html
+++ b/SystemTap_Beginners_Guide/scripts.html
@@ -1,89 +1,160 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.2. SystemTap Scripts</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="understanding-how-systemtap-works.html" title="Chapter 3. Understanding How SystemTap Works" /><link rel="prev" href="understanding-how-systemtap-works.html" title="Chapter 3. Understanding How SystemTap Works" /><link rel="next" href="systemtapscript-handler.html" title="3.2.2. SystemTap Handler/Body" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="understanding-how-systemtap-works.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="systemtapscript-handler.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="scripts"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.2. SystemTap Scripts</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="understanding-how-systemtap-works.html" title="Chapter 3. Understanding How SystemTap Works" /><link rel="prev" href="understanding-how-systemtap-works.html" title="Chapter 3. Understanding How SystemTap Works" /><link rel="next" href="systemtapscript-handler.html" title="3.2.2. SystemTap Handler/Body" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="understanding-how-systemtap-works.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="systemtapscript-handler.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="scripts">
3 ⁠</a>3.2. SystemTap Scripts</h2></div></div></div><a id="idm47748215303264" class="indexterm"></a><a id="idm47748215304416" class="indexterm"></a><div class="para"> 3 ⁠</a>3.2. SystemTap Scripts</h2></div></div></div><a id="idm140174735056432" class="indexterm"></a><a id="idm140174735055776" class="indexterm"></a><div class="para">
4 For the most part, SystemTap scripts are the foundation of each SystemTap session. SystemTap scripts instruct SystemTap on what type of information to collect, and what to do once that information is collected. 4 For the most part, SystemTap scripts are the foundation of each SystemTap
5 </div><a id="idm47748215307696" class="indexterm"></a><a id="idm47748215308624" class="indexterm"></a><a id="idm47748215310576" class="indexterm"></a><a id="idm47748215312704" class="indexterm"></a><a id="idm47748215314688" class="indexterm"></a><a id="idm47748215316656" class="indexterm"></a><div class="para"> 5 session. SystemTap scripts instruct SystemTap on what type of information to
6 As stated in <a class="xref" href="understanding-how-systemtap-works.html">Chapter 3, <em>Understanding How SystemTap Works</em></a>, SystemTap scripts are made up of two components: <span class="emphasis"><em>events</em></span> and <span class="emphasis"><em>handlers</em></span>. Once a SystemTap session is underway, SystemTap monitors the operating system for the specified events and executes the handlers as they occur. 6 collect, and what to do once that information is collected.
7 </div><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><a id="idm47748215323360" class="indexterm"></a><a id="idm47748215325264" class="indexterm"></a><a id="idm47748215327168" class="indexterm"></a><div class="para"> 7 </div><a id="idm140174735058048" class="indexterm"></a><a id="idm140174735060064" class="indexterm"></a><a id="idm140174735061840" class="indexterm"></a><a id="idm140174735063776" class="indexterm"></a><a id="idm140174735065728" class="indexterm"></a><a id="idm140174735067664" class="indexterm"></a><div class="para">
8 An event and its corresponding handler is collectively called a <span class="emphasis"><em>probe</em></span>. A SystemTap script can have multiple probes. 8 As stated in <a class="xref" href="understanding-how-systemtap-works.html">Chapter 3, <em>Understanding How SystemTap Works</em></a>, SystemTap
9 </div><div class="para"> 9 scripts are made up of two components: <span class="emphasis"><em>events</em></span> and
10 A probe's handler is commonly referred to as a <span class="emphasis"><em>probe body</em></span>. 10 <span class="emphasis"><em>handlers</em></span>. Once a SystemTap session is underway,
11 </div></div></div><div class="para"> 11 SystemTap monitors the operating system for the specified events and
12 In terms of application development, using events and handlers is similar to instrumenting the code by inserting diagnostic print statements in a program's sequence of commands. These diagnostic print statements allow you to view a history of commands executed once the program is run. 12 executes the handlers as they occur.
13 </div><div class="para"> 13 </div><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><a id="idm140174735072880" class="indexterm"></a><a id="idm140174735074368" class="indexterm"></a><a id="idm140174735076304" class="indexterm"></a><div class="para">
14 SystemTap scripts allow insertion of the instrumentation code without recompilation of the code and allows more flexibility with regard to handlers. Events serve as the triggers for handlers to run; handlers can be specified to record specified data and print it in a certain manner. 14 An event and its corresponding handler is collectively called a
15 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">Format</div><a id="idm47748215331776" class="indexterm"></a><a id="idm47748215332560" class="indexterm"></a><a id="idm47748215334096" class="indexterm"></a><a id="idm47748215335616" class="indexterm"></a> 15 <span class="emphasis"><em>probe</em></span>. A SystemTap script can have multiple probes.
16 SystemTap scripts use the file extension <code class="filename">.stp</code>, and contains probes written in the following format: 16 </div><div class="para">
17 </div><pre class="screen">probe <em class="replaceable">event</em> {<em class="replaceable">statements</em>}</pre><div class="para"> 17 A probe's handler is commonly referred to as a <span class="emphasis"><em>probe
18 SystemTap supports multiple events per probe; multiple events are delimited by a comma (<code class="command">,</code>). If multiple events are specified in a single probe, SystemTap will execute the handler when any of the specified events occur. 18 body</em></span>.
19 </div><a id="idm47748215340800" class="indexterm"></a><a id="idm47748215342720" class="indexterm"></a><a id="idm47748215344672" class="indexterm"></a><div class="para"> 19 </div></div></div><div class="para">
20 Each probe has a corresponding <em class="firstterm">statement block</em>. This statement block is enclosed in braces (<code class="command">{ }</code>) and contains the statements to be executed per event. SystemTap executes these statements in sequence; special separators or terminators are generally not necessary between multiple statements. 20 In terms of application development, using events and handlers is similar to
21 </div><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><div class="para"> 21 instrumenting the code by inserting diagnostic print statements in a
22 Statement blocks in SystemTap scripts follow the same syntax and semantics as the C programming language. A statement block can be nested within another statement block. 22 program's sequence of commands. These diagnostic print statements allow you
23 </div></div></div><a id="idm47748215349824" class="indexterm"></a><a id="idm47748215351872" class="indexterm"></a><a id="idm47748215353840" class="indexterm"></a><div class="para"> 23 to view a history of commands executed once the program is run.
24 SystemTap allows you to write functions to factor out code to be used by a number of probes. Thus, rather than repeatedly writing the same series of statements in multiple probes, you can just place the instructions in a <em class="firstterm">function</em>, as in: 24 </div><div class="para">
25 </div><pre class="screen">function <em class="replaceable">function_name</em>(<em class="replaceable">arguments</em>) {<em class="replaceable">statements</em>} 25 SystemTap scripts allow insertion of the instrumentation code without
26 recompilation of the code and allows more flexibility with regard to
27 handlers. Events serve as the triggers for handlers to run; handlers can be
28 specified to record specified data and print it in a certain manner.
29 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">Format</div><a id="idm140174735082896" class="indexterm"></a><a id="idm140174735084816" class="indexterm"></a><a id="idm140174735086464" class="indexterm"></a><a id="idm140174735088352" class="indexterm"></a>
30 SystemTap scripts use the file extension <code class="filename">.stp</code>, and
31 contains probes written in the following format:
32 </div><pre class="screen">probe <em class="replaceable">event</em> {<em class="replaceable">statements</em>}</pre><div class="para">
33 SystemTap supports multiple events per probe; multiple events are delimited
34 by a comma (<code class="command">,</code>). If multiple events are specified in a
35 single probe, SystemTap will execute the handler when any of the specified
36 events occur.
37 </div><a id="idm140174735093760" class="indexterm"></a><a id="idm140174735096544" class="indexterm"></a><a id="idm140174735098528" class="indexterm"></a><div class="para">
38 Each probe has a corresponding <em class="firstterm">statement block</em>. This statement block is
39 enclosed in braces (<code class="command">{ }</code>) and contains the statements to be executed per event.
40 SystemTap executes these statements in sequence; special separators or
41 terminators are generally not necessary between multiple statements.
42 </div><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><div class="para">
43 Statement blocks in SystemTap scripts follow the same syntax and semantics as the C
44 programming language. A statement block can be nested within another statement block.
45 </div></div></div><a id="idm140174735105696" class="indexterm"></a><a id="idm140174735107616" class="indexterm"></a><a id="idm140174735109536" class="indexterm"></a><div class="para">
46 SystemTap allows you to write functions to factor out code to be used by a
47 number of probes. Thus, rather than repeatedly writing the same
48 series of statements in multiple probes, you can just place the instructions
49 in a <em class="firstterm">function</em>, as in:
50 </div><pre class="screen">function <em class="replaceable">function_name</em>(<em class="replaceable">arguments</em>) {<em class="replaceable">statements</em>}
26probe <em class="replaceable">event</em> {<em class="replaceable">function_name</em>(<em class="replaceable">arguments</em>)}</pre><div class="para"> 51probe <em class="replaceable">event</em> {<em class="replaceable">function_name</em>(<em class="replaceable">arguments</em>)}</pre><div class="para">
27 The <code class="command"><em class="replaceable">statements</em></code> in <em class="replaceable">function_name</em> are executed when the probe for <em class="replaceable">event</em> executes. The <em class="replaceable">arguments</em> are optional values passed into the function. 52 The <code class="command"><em class="replaceable">statements</em></code> in
28 </div><div xmlns:d="http://docbook.org/ns/docbook" class="important"><div class="admonition_header"><p><strong>Important</strong></p></div><div class="admonition"><div class="para"> 53 <em class="replaceable">function_name</em> are executed when the probe for
29 <a class="xref" href="scripts.html">Section 3.2, “SystemTap Scripts”</a> is designed to introduce readers to the basics of SystemTap scripts. To understand SystemTap scripts better, it is advisable that you refer to <a class="xref" href="useful-systemtap-scripts.html">Chapter 5, <em>Useful SystemTap Scripts</em></a>; each section therein provides a detailed explanation of the script, its events, handlers, and expected output. 54 <em class="replaceable">event</em> executes. The
30 </div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="systemtapscript-events"> 55 <em class="replaceable">arguments</em> are optional values passed into the
31 ⁠</a>3.2.1. Event</h3></div></div></div><a id="idm47748215366864" class="indexterm"></a><div class="para"> 56 function.
32 SystemTap events can be broadly classified into two types: <em class="firstterm">synchronous</em> and <em class="firstterm">asynchronous</em>. 57 </div><div xmlns:d="http://docbook.org/ns/docbook" class="important"><div class="admonition_header"><p><strong>Important</strong></p></div><div class="admonition"><div class="para">
33 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">Synchronous Events</div><a id="idm47748215370912" class="indexterm"></a><a id="idm47748215371552" class="indexterm"></a> 58 <a class="xref" href="scripts.html">Section 3.2, “SystemTap Scripts”</a> is designed to introduce readers to the basics
34 A <em class="firstterm">synchronous</em> event occurs when any process executes an instruction at a particular location in kernel code. This gives other events a reference point from which more contextual data may be available. 59 of SystemTap scripts. To understand SystemTap scripts better, it is
35 </div><a id="idm47748215374992" class="indexterm"></a><a id="idm47748215376432" class="indexterm"></a><div class="para"> 60 advisable that you refer to <a class="xref" href="useful-systemtap-scripts.html">Chapter 5, <em>Useful SystemTap Scripts</em></a>;
36 Examples of synchronous events include: 61 each section therein provides a detailed explanation of the script, its
37 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">syscall.<em class="replaceable">system_call</em></span></dt><dd><a id="idm47748215380304" class="indexterm"></a><a id="idm47748215381472" class="indexterm"></a><div class="para"> 62 events, handlers, and expected output.
38 The entry to the system call <em class="replaceable">system_call</em>. If the exit from a syscall is desired, appending a <code class="command">.return</code> to the event monitor the exit of the system call instead. For example, to specify the entry and exit of the system call <code class="command">close</code>, use <code class="command">syscall.close</code> and <code class="command">syscall.close.return</code> respectively. 63 </div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="systemtapscript-events">
39 </div></dd><dt><span class="term">vfs.<em class="replaceable">file_operation</em></span></dt><dd><a id="idm47748215388928" class="indexterm"></a><a id="idm47748217455552" class="indexterm"></a><div class="para"> 64 ⁠</a>3.2.1. Event</h3></div></div></div><a id="idm140174735120320" class="indexterm"></a><div class="para">
40 The entry to the <em class="replaceable">file_operation</em> event for Virtual File System (VFS). Similar to <code class="command">syscall</code> event, appending a <code class="command">.return</code> to the event monitors the exit of the <em class="replaceable">file_operation</em> operation. 65 SystemTap events can be broadly classified into two types:
41 </div></dd><dt><span class="term">kernel.function("<em class="replaceable">function</em>")</span></dt><dd><a id="idm47748217460416" class="indexterm"></a><a id="idm47748217461744" class="indexterm"></a><div class="para"> 66 <em class="firstterm">synchronous</em> and
42 The entry to the kernel function <em class="replaceable">function</em>. For example, <code class="command">kernel.function("sys_open")</code> refers to the "event" that occurs when the kernel function <code class="command">sys_open</code> is called by any thread in the system. To specify the <span class="emphasis"><em>return</em></span> of the kernel function <code class="command">sys_open</code>, append the <code class="command">return</code> string to the event statement; that is, <code class="command">kernel.function("sys_open").return</code>. 67 <em class="firstterm">asynchronous</em>.
43 </div><a id="idm47748217468176" class="indexterm"></a><a id="idm47748217469120" class="indexterm"></a><a id="idm47748217469600" class="indexterm"></a><div class="para"> 68 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">Synchronous Events</div><a id="idm140174735124432" class="indexterm"></a><a id="idm140174735125664" class="indexterm"></a>
44 When defining probe events, you can use asterisk (<code class="literal">*</code>) for wildcards. You can also trace the entry or exit of a function in a kernel source file. Consider the following example: 69 A <em class="firstterm">synchronous</em> event occurs when any process
45 </div><div class="example"><a id="wildcards"> 70 executes an instruction at a particular location in kernel
71 code. This gives other events a reference point from which more
72 contextual data may be available.
73 </div><a id="idm140174735129200" class="indexterm"></a><a id="idm140174735130704" class="indexterm"></a><div class="para">Examples of synchronous events include:</div><div class="variablelist"><dl class="variablelist"><dt><span class="term">syscall.<em class="replaceable">system_call</em></span></dt><dd><a id="idm140174735134720" class="indexterm"></a><a id="idm140174735138272" class="indexterm"></a><div class="para">
74 The entry to the system call
75 <em class="replaceable">system_call</em>. If the exit from a syscall
76 is desired, appending a <code class="command">.return</code> to the event
77 monitor the exit of the system call instead. For example, to specify
78 the entry and exit of the system call <code class="command">close</code>, use
79 <code class="command">syscall.close</code> and
80 <code class="command">syscall.close.return</code> respectively.
81 </div></dd><dt><span class="term">vfs.<em class="replaceable">file_operation</em></span></dt><dd><a id="idm140174735145952" class="indexterm"></a><a id="idm140174735147648" class="indexterm"></a><div class="para">
82 The entry to the <em class="replaceable">file_operation</em> event for
83 Virtual File System (VFS). Similar to <code class="command">syscall</code>
84 event, appending a <code class="command">.return</code> to the event monitors
85 the exit of the <em class="replaceable">file_operation</em> operation.
86 </div></dd><dt><span class="term">kernel.function("<em class="replaceable">function</em>")</span></dt><dd><a id="idm140174735153600" class="indexterm"></a><a id="idm140174735156128" class="indexterm"></a><div class="para">
87 The entry to the kernel function
88 <em class="replaceable">function</em>. For example,
89 <code class="command">kernel.function("sys_open")</code> refers to the "event"
90 that occurs when the kernel function <code class="command">sys_open</code> is
91 called by any thread in the system. To specify the
92 <span class="emphasis"><em>return</em></span> of the kernel function
93 <code class="command">sys_open</code>, append the <code class="command">return</code>
94 string to the event statement;
95 that is, <code class="command">kernel.function("sys_open").return</code>.
96 </div><a id="idm140174735163056" class="indexterm"></a><a id="idm140174735164560" class="indexterm"></a><a id="idm140174735165904" class="indexterm"></a><div class="para">
97 When defining probe events, you can use asterisk (<code class="literal">*</code>)
98 for wildcards. You can also trace the entry or exit of a function in
99 a kernel source file. Consider the following example:
100 </div><div class="example"><a id="wildcards">
46 ⁠</a><p class="title"><strong>Example 3.1. wildcards.stp</strong></p><div class="example-contents"><pre class="programlisting">probe kernel.function("*@net/socket.c") { } 101 ⁠</a><p class="title"><strong>Example 3.1. wildcards.stp</strong></p><div class="example-contents"><pre class="programlisting">probe kernel.function("*@net/socket.c") { }
47probe kernel.function("*@net/socket.c").return { }</pre></div></div><div class="para"> 102probe kernel.function("*@net/socket.c").return { }</pre></div></div><div class="para">
48 In the previous example, the first probe's event specifies the entry of ALL functions in the kernel source file <code class="filename">net/socket.c</code>. The second probe specifies the exit of all those functions. Note that in this example, there are no statements in the handler; as such, no information will be collected or displayed. 103 In the previous example, the first probe's event specifies the entry
49 </div></dd><dt><span class="term">kernel.trace("<em class="replaceable">tracepoint</em>")</span></dt><dd><a id="idm47748217476512" class="indexterm"></a><a id="idm47748217476992" class="indexterm"></a><a id="idm47748217479616" class="indexterm"></a><div class="para"> 104 of ALL functions in the kernel source file
50 The static probe for <em class="replaceable">tracepoint</em>. Recent kernels (2.6.30 and newer) include instrumentation for specific events in the kernel. These events are statically marked with tracepoints. One example of a tracepoint available in systemtap is <code class="command">kernel.trace("kfree_skb")</code> which indicates each time a network buffer is freed in the kernel. 105 <code class="filename">net/socket.c</code>. The second probe specifies the
51 </div></dd><dt><span class="term">module("<em class="replaceable">module</em>").function("<em class="replaceable">function</em>")</span></dt><dd><a id="idm47748217484960" class="indexterm"></a><a id="idm47748217486704" class="indexterm"></a><div class="para"> 106 exit of all those functions. Note that in this example,
52 Allows you to probe functions within modules. For example: 107 there are no statements in the handler;
53 </div><div class="example"><a id="eventsmodules"> 108 as such, no information will be collected or displayed.
109 </div></dd><dt><span class="term">kernel.trace("<em class="replaceable">tracepoint</em>")</span></dt><dd><a id="idm140174735174224" class="indexterm"></a><a id="idm140174735174784" class="indexterm"></a><a id="idm140174735176800" class="indexterm"></a><div class="para">
110 The static probe for <em class="replaceable">tracepoint</em>.
111 Recent kernels (2.6.30 and newer)
112 include instrumentation for specific events in the kernel. These
113 events are statically marked with tracepoints. One example of a
114 tracepoint available in systemtap is
115 <code class="command">kernel.trace("kfree_skb")</code> which indicates each
116 time a network buffer is freed in the kernel.
117 </div></dd><dt><span class="term">module("<em class="replaceable">module</em>").function("<em class="replaceable">function</em>")</span></dt><dd><a id="idm140174735183376" class="indexterm"></a><a id="idm140174735187888" class="indexterm"></a><div class="para">Allows you to probe functions within modules. For example:</div><div class="example"><a id="eventsmodules">
54 ⁠</a><p class="title"><strong>Example 3.2. moduleprobe.stp</strong></p><div class="example-contents"><pre class="programlisting">probe module("ext3").function("*") { } 118 ⁠</a><p class="title"><strong>Example 3.2. moduleprobe.stp</strong></p><div class="example-contents"><pre class="programlisting">probe module("ext3").function("*") { }
55probe module("ext3").function("*").return { }</pre></div></div><div class="para"> 119probe module("ext3").function("*").return { }</pre></div></div><div class="para">
56 The first probe in <a class="xref" href="scripts.html#eventsmodules">Example 3.2, “moduleprobe.stp”</a> points to the entry of <span class="emphasis"><em>all</em></span> functions for the <code class="filename">ext3</code> module. The second probe points to the exits of all functions for that same module; the use of the <code class="command">.return</code> suffix is similar to <code class="command">kernel.function()</code>. Note that the probes in <a class="xref" href="scripts.html#eventsmodules">Example 3.2, “moduleprobe.stp”</a> do not contain statements in the probe handlers, and as such will not print any useful data (as in <a class="xref" href="scripts.html#wildcards">Example 3.1, “wildcards.stp”</a>). 120 The first probe in <a class="xref" href="scripts.html#eventsmodules">Example 3.2, “moduleprobe.stp”</a>
57 </div><div class="para"> 121 points to the entry of <span class="emphasis"><em>all</em></span> functions for
58 A system's kernel modules are typically located in <code class="filename">/lib/modules/<em class="replaceable">kernel_version</em></code>, where <em class="replaceable">kernel_version</em> refers to the currently loaded kernel version. Modules use the file name extension <code class="filename">.ko</code>. 122 the <code class="filename">ext3</code> module. The second probe points to
59 </div></dd></dl></div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">Asynchronous Events</div><a id="idm47748217497648" class="indexterm"></a><a id="idm47748217498864" class="indexterm"></a> 123 the exits of all functions for that same module; the use of the
60 <em class="firstterm">Asynchronous</em> events are not tied to a particular instruction or location in code. This family of probe points consists mainly of counters, timers, and similar constructs. 124 <code class="command">.return</code> suffix is similar to
61 </div><div class="para"> 125 <code class="command">kernel.function()</code>. Note that the probes in
62 Examples of asynchronous events include: 126 <a class="xref" href="scripts.html#eventsmodules">Example 3.2, “moduleprobe.stp”</a> do not contain statements
63 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">begin</span></dt><dd><a id="idm47748217503968" class="indexterm"></a><a id="idm47748217505264" class="indexterm"></a><div class="para"> 127 in the probe handlers, and as such will not print any useful
64 The startup of a SystemTap session; that is, as soon as the SystemTap script is run. 128 data (as in <a class="xref" href="scripts.html#wildcards">Example 3.1, “wildcards.stp”</a>).
65 </div></dd><dt><span class="term">end</span></dt><dd><a id="idm47748217508464" class="indexterm"></a><a id="idm47748217511824" class="indexterm"></a><div class="para"> 129 </div><div class="para">
66 The end of a SystemTap session. 130 A system's kernel modules are typically located in <code class="filename">/lib/modules/<em class="replaceable">kernel_version</em></code>, where <em class="replaceable">kernel_version</em> refers to the currently loaded kernel version. Modules use the file name extension <code class="filename">.ko</code>.
67 </div></dd><dt><span class="term">timer events</span></dt><dd><a id="idm47748217512832" class="indexterm"></a><a id="idm47748217513472" class="indexterm"></a><div class="para"> 131 </div></dd></dl></div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">Asynchronous Events</div><a id="idm140174735198512" class="indexterm"></a><a id="idm140174735200000" class="indexterm"></a>
68 An event that specifies a handler to be executed periodically. For example: 132 <em class="firstterm">Asynchronous</em> events are not tied to a particular
69 </div><div class="example"><a id="timer"> 133 instruction or location in code. This family of probe points consists
134 mainly of counters, timers, and similar constructs.
135 </div><div class="para">Examples of asynchronous events include:</div><div class="variablelist"><dl class="variablelist"><dt><span class="term">begin</span></dt><dd><a id="idm140174735204928" class="indexterm"></a><a id="idm140174735208352" class="indexterm"></a><div class="para">
136 The startup of a SystemTap session; that is, as soon as the SystemTap
137 script is run.
138 </div></dd><dt><span class="term">end</span></dt><dd><a id="idm140174735210784" class="indexterm"></a><a id="idm140174736893776" class="indexterm"></a><div class="para">The end of a SystemTap session.</div></dd><dt><span class="term">timer events</span></dt><dd><a id="idm140174736897760" class="indexterm"></a><a id="idm140174736899616" class="indexterm"></a><div class="para">
139 An event that specifies a handler to be executed periodically.
140 For example:
141 </div><div class="example"><a id="timer">
70 ⁠</a><p class="title"><strong>Example 3.3. timer-s.stp</strong></p><div class="example-contents"><pre class="programlisting">probe timer.s(4) 142 ⁠</a><p class="title"><strong>Example 3.3. timer-s.stp</strong></p><div class="example-contents"><pre class="programlisting">probe timer.s(4)
71{ 143{
72 printf("hello world\n") 144 printf("hello world\n")
73}</pre></div></div><div class="para"> 145}</pre></div></div><div class="para">
74 <a class="xref" href="scripts.html#timer">Example 3.3, “timer-s.stp”</a> is an example of a probe that prints <code class="command">hello world</code> every 4 seconds. It is also possible to use the following timer events: 146 <a class="xref" href="scripts.html#timer">Example 3.3, “timer-s.stp”</a> is an example of a probe that prints
75 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"> 147 <code class="command">hello world</code> every 4 seconds. It is also possible
76 <code class="command">timer.ms(<em class="replaceable">milliseconds</em>)</code> 148 to use the following timer events:
77 </div></li><li class="listitem"><div class="para"> 149 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"><code class="command">timer.ms(<em class="replaceable">milliseconds</em>)</code></div></li><li class="listitem"><div class="para"><code class="command">timer.us(<em class="replaceable">microseconds</em>)</code></div></li><li class="listitem"><div class="para"><code class="command">timer.ns(<em class="replaceable">nanoseconds</em>)</code></div></li><li class="listitem"><div class="para"><code class="command">timer.hz(<em class="replaceable">hertz</em>)</code></div></li><li class="listitem"><div class="para"><code class="command">timer.jiffies(<em class="replaceable">jiffies</em>)</code></div></li></ul></div><div class="para">
78 <code class="command">timer.us(<em class="replaceable">microseconds</em>)</code> 150 When used in conjunction with other probes that collect information,
79 </div></li><li class="listitem"><div class="para"> 151 timer events allows you to print out get periodic updates and see
80 <code class="command">timer.ns(<em class="replaceable">nanoseconds</em>)</code> 152 how that information changes over time.
81 </div></li><li class="listitem"><div class="para"> 153 </div></dd></dl></div><div xmlns:d="http://docbook.org/ns/docbook" class="important"><div class="admonition_header"><p><strong>Important</strong></p></div><div class="admonition"><div class="para">
82 <code class="command">timer.hz(<em class="replaceable">hertz</em>)</code> 154 SystemTap supports the use of a large collection of probe events. For
83 </div></li><li class="listitem"><div class="para"> 155 more information about supported events, refer to <code class="command">man
84 <code class="command">timer.jiffies(<em class="replaceable">jiffies</em>)</code> 156 stapprobes</code>. The <em class="citetitle">SEE ALSO</em> section of
85 </div></li></ul></div><div class="para"> 157 <code class="command">man stapprobes</code> also contains links to other
86 When used in conjunction with other probes that collect information, timer events allows you to print out get periodic updates and see how that information changes over time. 158 <code class="command">man</code> pages that discuss supported events for specific
87 </div></dd></dl></div><div xmlns:d="http://docbook.org/ns/docbook" class="important"><div class="admonition_header"><p><strong>Important</strong></p></div><div class="admonition"><div class="para"> 159 subsystems and components.
88 SystemTap supports the use of a large collection of probe events. For more information about supported events, refer to <code class="command">man stapprobes</code>. The <em class="citetitle">SEE ALSO</em> section of <code class="command">man stapprobes</code> also contains links to other <code class="command">man</code> pages that discuss supported events for specific subsystems and components. 160 </div></div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="understanding-how-systemtap-works.html"><strong>Prev</strong>Chapter 3. Understanding How SystemTap Works</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="systemtapscript-handler.html"><strong>Next</strong>3.2.2. SystemTap Handler/Body</a></li></ul></body></html> \ No newline at end of file
89 </div></div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="understanding-how-systemtap-works.html"><strong>Prev</strong>Chapter 3. Understanding How SystemTap Works</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="systemtapscript-handler.html"><strong>Next</strong>3.2.2. SystemTap Handler/Body</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/syscallsbyprocpidsect.html b/SystemTap_Beginners_Guide/syscallsbyprocpidsect.html
index ed253c7a..dab3b00d 100644
--- a/SystemTap_Beginners_Guide/syscallsbyprocpidsect.html
+++ b/SystemTap_Beginners_Guide/syscallsbyprocpidsect.html
@@ -1,9 +1,17 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.3.6. Tracking System Call Volume Per Process</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-profiling.html" title="5.3. Profiling" /><link rel="prev" href="topsyssect.html" title="5.3.5. Tracking Most Frequently Used System Calls" /><link rel="next" href="futexcontentionsect.html" title="5.4. Identifying Contended User-Space Locks" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="topsyssect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="futexcontentionsect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="syscallsbyprocpidsect"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.3.6. Tracking System Call Volume Per Process</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-profiling.html" title="5.3. Profiling" /><link rel="prev" href="topsyssect.html" title="5.3.5. Tracking Most Frequently Used System Calls" /><link rel="next" href="futexcontentionsect.html" title="5.4. Identifying Contended User-Space Locks" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="topsyssect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="futexcontentionsect.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="syscallsbyprocpidsect">
3 ⁠</a>5.3.6. Tracking System Call Volume Per Process</h3></div></div></div><a id="idm47748178164096" class="indexterm"></a><a id="idm47748220123648" class="indexterm"></a><a id="idm47748220578736" class="indexterm"></a><a id="idm47748186335664" class="indexterm"></a><div class="para"> 3 ⁠</a>5.3.6. Tracking System Call Volume Per Process</h3></div></div></div><a id="idm140174734949120" class="indexterm"></a><a id="idm140174740964912" class="indexterm"></a><a id="idm140174732170736" class="indexterm"></a><a id="idm140174741305360" class="indexterm"></a><div class="para">
4 This section illustrates how to determine which processes are performing the highest volume of system calls. In previous sections, we've described how to monitor the top system calls used by the system over time (<a class="xref" href="topsyssect.html">Section 5.3.5, “Tracking Most Frequently Used System Calls”</a>). We've also described how to identify which applications use a specific set of "polling suspect" system calls the most (<a class="xref" href="timeoutssect.html">Section 5.3.4, “Monitoring Polling Applications”</a>). Monitoring the volume of system calls made by each process provides more data in investigating your system for polling processes and other resource hogs. 4 This section illustrates how to determine which processes
5 are performing the highest volume of system calls. In
6 previous sections, we've described how to monitor the top system
7 calls used by the system over time (<a class="xref" href="topsyssect.html">Section 5.3.5, “Tracking Most Frequently Used System Calls”</a>).
8 We've also described how to identify which applications use a
9 specific set of "polling suspect" system calls the most
10 (<a class="xref" href="timeoutssect.html">Section 5.3.4, “Monitoring Polling Applications”</a>). Monitoring the volume of
11 system calls made by each process provides more data in
12 investigating your system for polling processes and other resource
13 hogs.
5 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">syscalls_by_proc.stp</div> 14 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">syscalls_by_proc.stp</div>
6
7<pre class="programlisting">#! /usr/bin/env stap 15<pre class="programlisting">#! /usr/bin/env stap
8 16
9# Copyright (C) 2006 IBM Corp. 17# Copyright (C) 2006 IBM Corp.
@@ -33,9 +41,13 @@ probe end {
33 printf("%-10d %-s\n", syscalls[proc], proc) 41 printf("%-10d %-s\n", syscalls[proc], proc)
34} 42}
35</pre> 43</pre>
36 </div><div class="para"> 44</div><div class="para">
37 <a class="xref" href="syscallsbyprocpidsect.html#syscallsbyprocpid">syscalls_by_proc.stp</a> lists the top 20 processes performing the highest number of system calls. It also lists how many system calls each process performed during the time period. Refer to <a class="xref" href="syscallsbyprocpidsect.html#syscallsbyprocpidoutput">Example 5.18, “topsys.stp Sample Output”</a> for a sample output. 45 <a class="xref" href="syscallsbyprocpidsect.html#syscallsbyprocpid">syscalls_by_proc.stp</a> lists the top 20 processes performing the
38 </div><div class="example"><a id="syscallsbyprocpidoutput"> 46 highest number of system calls. It also lists how many system calls each process
47 performed during the time period. Refer to
48 <a class="xref" href="syscallsbyprocpidsect.html#syscallsbyprocpidoutput">Example 5.18, “topsys.stp Sample Output”</a> for a sample output.
49
50</div><div class="example"><a id="syscallsbyprocpidoutput">
39 ⁠</a><p class="title"><strong>Example 5.18. <a class="xref" href="topsyssect.html#topsys">topsys.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">Collecting data... Type Ctrl-C to exit and display results 51 ⁠</a><p class="title"><strong>Example 5.18. <a class="xref" href="topsyssect.html#topsys">topsys.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">Collecting data... Type Ctrl-C to exit and display results
40#SysCalls Process Name 52#SysCalls Process Name
411577 multiload-apple 531577 multiload-apple
@@ -52,9 +64,9 @@ probe end {
5278 gnome-screensav 6478 gnome-screensav
5366 scim-launcher 6566 scim-launcher
54[...]</pre></div></div><div class="para"> 66[...]</pre></div></div><div class="para">
55 To display the process IDs instead of the process names, use the following script instead. 67 To display the process IDs instead of the process names,
56 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">syscalls_by_pid.stp</div> 68 use the following script instead.
57 69</div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">syscalls_by_pid.stp</div>
58<pre class="programlisting">#! /usr/bin/env stap 70<pre class="programlisting">#! /usr/bin/env stap
59 71
60# Copyright (C) 2006 IBM Corp. 72# Copyright (C) 2006 IBM Corp.
@@ -84,9 +96,12 @@ probe end {
84 printf("%-10d %-d\n", syscalls[pid], pid) 96 printf("%-10d %-d\n", syscalls[pid], pid)
85} 97}
86</pre> 98</pre>
87 </div><div class="para"> 99</div><div class="para">
88 As indicated in the output, you need to manually exit the script in order to display the results. You can add a timed expiration to either script by simply adding a <code class="command">timer.s()</code> probe; for example, to instruct the script to expire after 5 seconds, add the following probe to the script: 100 As indicated in the output, you need to manually exit the script in order to display the
89 </div><pre class="screen">probe timer.s(5) 101 results. You can add a timed expiration to either script by simply adding
102 a <code class="command">timer.s()</code> probe; for example, to instruct the script to expire after
103 5 seconds, add the following probe to the script:
104</div><pre class="screen">probe timer.s(5)
90{ 105{
91 exit() 106 exit()
92}</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="topsyssect.html"><strong>Prev</strong>5.3.5. Tracking Most Frequently Used System Calls</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="futexcontentionsect.html"><strong>Next</strong>5.4. Identifying Contended User-Space Locks</a></li></ul></body></html> \ No newline at end of file 107}</pre></div><ul class="docnav"><li class="previous"><a accesskey="p" href="topsyssect.html"><strong>Prev</strong>5.3.5. Tracking Most Frequently Used System Calls</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="futexcontentionsect.html"><strong>Next</strong>5.4. Identifying Contended User-Space Locks</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/systemtapscript-handler.html b/SystemTap_Beginners_Guide/systemtapscript-handler.html
index 48b89686..fc8574b6 100644
--- a/SystemTap_Beginners_Guide/systemtapscript-handler.html
+++ b/SystemTap_Beginners_Guide/systemtapscript-handler.html
@@ -1,65 +1,92 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.2.2. SystemTap Handler/Body</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="scripts.html" title="3.2. SystemTap Scripts" /><link rel="prev" href="scripts.html" title="3.2. SystemTap Scripts" /><link rel="next" href="scriptconstructions.html" title="3.3. Basic SystemTap Handler Constructs" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="scripts.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="scriptconstructions.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="systemtapscript-handler"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.2.2. SystemTap Handler/Body</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="scripts.html" title="3.2. SystemTap Scripts" /><link rel="prev" href="scripts.html" title="3.2. SystemTap Scripts" /><link rel="next" href="scriptconstructions.html" title="3.3. Basic SystemTap Handler Constructs" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="scripts.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="scriptconstructions.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="systemtapscript-handler">
3 ⁠</a>3.2.2. SystemTap Handler/Body</h3></div></div></div><a id="idm47748217535072" class="indexterm"></a><div class="para"> 3 ⁠</a>3.2.2. SystemTap Handler/Body</h3></div></div></div><a id="idm140174736918336" class="indexterm"></a><div class="para"> Consider the following sample script: </div><div class="example"><a id="helloworld">
4 Consider the following sample script:
5 </div><div class="example"><a id="helloworld">
6 ⁠</a><p class="title"><strong>Example 3.4. helloworld.stp</strong></p><div class="example-contents"><pre class="programlisting">probe begin 4 ⁠</a><p class="title"><strong>Example 3.4. helloworld.stp</strong></p><div class="example-contents"><pre class="programlisting">probe begin
7{ 5{
8 printf ("hello world\n") 6 printf ("hello world\n")
9 exit () 7 exit ()
10}</pre></div></div><div class="para"> 8}</pre></div></div><div class="para">
11 In <a class="xref" href="systemtapscript-handler.html#helloworld">Example 3.4, “helloworld.stp”</a>, the event <code class="command">begin</code> (that is, the start of the session) triggers the handler enclosed in <code class="command">{ }</code>, which simply prints <code class="command">hello world</code> followed by a new-line, then exits. 9 In <a class="xref" href="systemtapscript-handler.html#helloworld">Example 3.4, “helloworld.stp”</a>, the event <code class="command">begin</code>
12 </div><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><a id="idm47748217542016" class="indexterm"></a><a id="idm47748217543712" class="indexterm"></a><div class="para"> 10 (that is, the start of the session) triggers the handler enclosed in
13 SystemTap scripts continue to run until the <code class="command">exit()</code> function executes. If the users wants to stop the execution of the script, it can interrupted manually with <span class="keycap"><strong>Ctrl</strong></span>+<span class="keycap"><strong>C</strong></span>. 11 <code class="command">{ }</code>, which simply prints <code class="command">hello
14 </div></div></div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">printf ( ) Statements</div><a id="idm47748217548352" class="indexterm"></a> 12 world</code> followed by a new-line, then exits.
15 The <code class="command">printf ()</code> statement is one of the simplest functions for printing data. <code class="command">printf ()</code> can also be used to display data using a wide variety of SystemTap functions in the following format: 13 </div><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><a id="idm140174736925616" class="indexterm"></a><a id="idm140174736928064" class="indexterm"></a><div class="para">
16 </div><pre class="programlisting"> printf ("<em class="replaceable">format string</em>\n", <em class="replaceable">arguments</em>) 14 SystemTap scripts continue to run until the
17</pre><a id="idm47748216787968" class="indexterm"></a><a id="idm47748216789216" class="indexterm"></a><div class="para"> 15 <code class="command">exit()</code> function executes. If the users wants to stop
18 The <em class="replaceable">format string</em> specifies how <em class="replaceable">arguments</em> should be printed. The format string of <a class="xref" href="systemtapscript-handler.html#helloworld">Example 3.4, “helloworld.stp”</a> instructs SystemTap to print <code class="command">hello world</code>, and contains no format specifiers. 16 the execution of the script, it can interrupted manually with
19 </div><a id="idm47748216793440" class="indexterm"></a><a id="idm47748216796576" class="indexterm"></a><div class="para"> 17 <span class="keycap"><strong>Ctrl</strong></span>+<span class="keycap"><strong>C</strong></span>.
20 You can use the format specifiers <code class="command">%s</code> (for strings) and <code class="command">%d</code> (for numbers) in format strings, depending on your list of arguments. Format strings can have multiple format specifiers, each matching a corresponding argument; multiple arguments are delimited by a comma (<code class="command">,</code>). 18 </div></div></div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">printf ( ) Statements</div><a id="idm140174736933264" class="indexterm"></a>
21 </div><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><a id="idm47748216799168" class="indexterm"></a><a id="idm47748216801680" class="indexterm"></a><a id="idm47748216803056" class="indexterm"></a><div class="para"> 19 The <code class="command">printf ()</code> statement is one of the simplest
22 Semantically, the SystemTap <code class="command">printf</code> function is very similar to its C language counterpart. The aforementioned syntax and format for SystemTap's <code class="command">printf</code> function is identical to that of the C-style <code class="command">printf</code>. 20 functions for printing data. <code class="command">printf ()</code> can also be
23 </div></div></div><div class="para"> 21 used to display data using a wide variety of SystemTap functions in the
24 To illustrate this, consider the following probe example: 22 following format:
25 </div><div class="example"><a id="syscall-open"> 23 </div><pre class="programlisting"> printf ("<em class="replaceable">format string</em>\n", <em class="replaceable">arguments</em>)
24 </pre><a id="idm140174736938912" class="indexterm"></a><a id="idm140174736940272" class="indexterm"></a><div class="para">
25 The <em class="replaceable">format string</em> specifies how
26 <em class="replaceable">arguments</em> should be printed. The format string
27 of <a class="xref" href="systemtapscript-handler.html#helloworld">Example 3.4, “helloworld.stp”</a> instructs SystemTap to print
28 <code class="command">hello world</code>, and contains no format specifiers.
29 </div><a id="idm140174736944080" class="indexterm"></a><a id="idm140174736947456" class="indexterm"></a><div class="para">
30 You can use the format specifiers <code class="command">%s</code> (for strings)
31 and <code class="command">%d</code> (for numbers) in format strings, depending on
32 your list of arguments. Format strings can have multiple format
33 specifiers, each matching a corresponding argument; multiple arguments
34 are delimited by a comma (<code class="command">,</code>).
35 </div><div xmlns:d="http://docbook.org/ns/docbook" class="note"><div class="admonition_header"><p><strong>Note</strong></p></div><div class="admonition"><a id="idm140174736950368" class="indexterm"></a><a id="idm140174736952368" class="indexterm"></a><a id="idm140174736954272" class="indexterm"></a><div class="para">Semantically, the SystemTap <code class="command">printf</code> function is
36 very similar to its C language counterpart. The aforementioned syntax
37 and format for SystemTap's <code class="command">printf</code> function is
38 identical to that of the C-style <code class="command">printf</code>.
39 </div></div></div><div class="para"> To illustrate this, consider the following probe example: </div><div class="example"><a id="syscall-open">
26 ⁠</a><p class="title"><strong>Example 3.5. variables-in-printf-statements.stp</strong></p><div class="example-contents"><pre class="programlisting">probe syscall.open 40 ⁠</a><p class="title"><strong>Example 3.5. variables-in-printf-statements.stp</strong></p><div class="example-contents"><pre class="programlisting">probe syscall.open
27{ 41{
28 printf ("%s(%d) open\n", execname(), pid()) 42 printf ("%s(%d) open\n", execname(), pid())
29}</pre></div></div><div class="para"> 43}</pre></div></div><div class="para">
30 <a class="xref" href="systemtapscript-handler.html#syscall-open">Example 3.5, “variables-in-printf-statements.stp”</a> instructs SystemTap to probe all entries to the system call <code class="command">open</code>; for each event, it prints the current <code class="command">execname()</code> (a string with the executable name) and <code class="command">pid()</code> (the current process ID number), followed by the word <code class="command">open</code>. A snippet of this probe's output would look like: 44 <a class="xref" href="systemtapscript-handler.html#syscall-open">Example 3.5, “variables-in-printf-statements.stp”</a> instructs SystemTap to probe all entries to
31 </div><pre class="screen">vmware-guestd(2206) open 45 the system call <code class="command">open</code>; for each event, it prints the
46 current <code class="command">execname()</code> (a string with the executable name) and
47 <code class="command">pid()</code> (the current process ID number), followed by the word
48 <code class="command">open</code>. A snippet of this probe's output would look like:
49 </div><pre class="screen">vmware-guestd(2206) open
32hald(2360) open 50hald(2360) open
33hald(2360) open 51hald(2360) open
34hald(2360) open 52hald(2360) open
35df(3433) open 53df(3433) open
36df(3433) open 54df(3433) open
37df(3433) open 55df(3433) open
38hald(2360) open</pre><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">SystemTap Functions</div><a id="idm47748216813776" class="indexterm"></a><a id="idm47748216814560" class="indexterm"></a><a id="idm47748216815088" class="indexterm"></a> 56hald(2360) open</pre><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">SystemTap Functions</div><a id="idm140174736966784" class="indexterm"></a><a id="idm140174736967616" class="indexterm"></a><a id="idm140174736969232" class="indexterm"></a>
39 SystemTap supports a wide variety of functions that can be used as <code class="command">printf ()</code> arguments. <a class="xref" href="systemtapscript-handler.html#syscall-open">Example 3.5, “variables-in-printf-statements.stp”</a> uses the SystemTap functions <code class="command">execname()</code> (name of the process that called a kernel function/performed a system call) and <code class="command">pid()</code> (current process ID). 57 SystemTap supports a wide variety of functions that can be used as
40 </div><div class="para"> 58 <code class="command">printf ()</code> arguments. <a class="xref" href="systemtapscript-handler.html#syscall-open">Example 3.5, “variables-in-printf-statements.stp”</a>
41 The following is a list of commonly-used SystemTap functions: 59 uses the SystemTap functions <code class="command">execname()</code> (name of the
42 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">tid()</span></dt><dd><a id="idm47748216821488" class="indexterm"></a><a id="idm47748216822912" class="indexterm"></a><a id="idm47748216824336" class="indexterm"></a><div class="para"> 60 process that called a kernel function/performed a system call) and
43 The ID of the current thread. 61 <code class="command">pid()</code> (current process ID).
44 </div></dd><dt><span class="term">uid()</span></dt><dd><a id="idm47748216829024" class="indexterm"></a><a id="idm47748216829344" class="indexterm"></a><div class="para"> 62 </div><div class="para">The following is a list of commonly-used SystemTap functions:</div><div class="variablelist"><dl class="variablelist"><dt><span class="term">tid()</span></dt><dd><a id="idm140174736975600" class="indexterm"></a><a id="idm140174736977744" class="indexterm"></a><a id="idm140174736979504" class="indexterm"></a><div class="para">The ID of the current thread.</div></dd><dt><span class="term">uid()</span></dt><dd><a id="idm140174736984048" class="indexterm"></a><a id="idm140174736986256" class="indexterm"></a><div class="para">The ID of the current user.</div></dd><dt><span class="term">cpu()</span></dt><dd><a id="idm140174736990208" class="indexterm"></a><a id="idm140174734572304" class="indexterm"></a><div class="para">The current CPU number.</div></dd><dt><span class="term">gettimeofday_s()</span></dt><dd><a id="idm140174734576144" class="indexterm"></a><a id="idm140174734578496" class="indexterm"></a><div class="para">The number of seconds since UNIX epoch (January 1, 1970).</div></dd><dt><span class="term">ctime()</span></dt><dd><a id="idm140174734583280" class="indexterm"></a><a id="idm140174734586144" class="indexterm"></a><div class="para">
45 The ID of the current user. 63 Convert number of seconds since UNIX epoch to date.
46 </div></dd><dt><span class="term">cpu()</span></dt><dd><a id="idm47748216832848" class="indexterm"></a><a id="idm47748216834464" class="indexterm"></a><div class="para"> 64 </div></dd><dt><span class="term">pp()</span></dt><dd><a id="idm140174734284576" class="indexterm"></a><a id="idm140174734287360" class="indexterm"></a><div class="para">A string describing the probe point currently being handled.</div></dd><dt><span class="term">thread_indent()</span></dt><dd><a id="idm140174734291472" class="indexterm"></a><a id="idm140174734295504" class="indexterm"></a><div class="para">
47 The current CPU number. 65 This particular function is quite useful in providing you with a way
48 </div></dd><dt><span class="term">gettimeofday_s()</span></dt><dd><a id="idm47748216838096" class="indexterm"></a><a id="idm47748216840016" class="indexterm"></a><div class="para"> 66 to better organize your print results. The function takes one
49 The number of seconds since UNIX epoch (January 1, 1970). 67 argument, an indentation delta, which indicates how many
50 </div></dd><dt><span class="term">ctime()</span></dt><dd><a id="idm47748216843408" class="indexterm"></a><a id="idm47748216845024" class="indexterm"></a><div class="para"> 68 spaces to add or remove from a thread's "indentation counter".
51 Convert number of seconds since UNIX epoch to date. 69 It then returns a
52 </div></dd><dt><span class="term">pp()</span></dt><dd><a id="idm47748216849696" class="indexterm"></a><a id="idm47748216852128" class="indexterm"></a><div class="para"> 70 string with some generic trace data along with an appropriate number
53 A string describing the probe point currently being handled. 71 of indentation spaces.
54 </div></dd><dt><span class="term">thread_indent()</span></dt><dd><a id="idm47748216857424" class="indexterm"></a><a id="idm47748216858368" class="indexterm"></a><div class="para"> 72 </div><div class="para">
55 This particular function is quite useful in providing you with a way to better organize your print results. The function takes one argument, an indentation delta, which indicates how many spaces to add or remove from a thread's "indentation counter". It then returns a string with some generic trace data along with an appropriate number of indentation spaces. 73 The generic data included in the returned string includes a
56 </div><div class="para"> 74 timestamp (number of microseconds since the
57 The generic data included in the returned string includes a timestamp (number of microseconds since the first call to <code class="command">thread_indent()</code> by the thread), a process name, and the thread ID. This allows you to identify what functions were called, who called them, and the duration of each function call. 75 first call to <code class="command">thread_indent()</code> by the thread),
58 </div><div class="para"> 76 a process name, and the thread ID. This allows you to
59 If call entries and exits immediately precede each other, it is easy to match them. However, in most cases, after a first function call entry is made several other call entries and exits may be made before the first call exits. The indentation counter helps you match an entry with its corresponding exit by indenting the next function call if it is not the exit of the previous one. 77 identify what functions were called, who called them, and the
60 </div><div class="para"> 78 duration of each function call.
61 Consider the following example on the use of <code class="command">thread_indent()</code>: 79 </div><div class="para">
62 </div><div class="example"><a id="thread_indent"> 80 If call entries and exits immediately precede each other, it is easy
81 to match them. However, in most cases, after a first function call
82 entry is made several other call entries and exits may be made
83 before the first call exits. The indentation counter helps you match
84 an entry with its corresponding exit by indenting the next function
85 call if it is not the exit of the previous one.
86 </div><div class="para">
87 Consider the following example on the use of
88 <code class="command">thread_indent()</code>:
89 </div><div class="example"><a id="thread_indent">
63 ⁠</a><p class="title"><strong>Example 3.6. thread_indent.stp</strong></p><div class="example-contents"><pre class="programlisting">probe kernel.function("*@net/socket.c").call 90 ⁠</a><p class="title"><strong>Example 3.6. thread_indent.stp</strong></p><div class="example-contents"><pre class="programlisting">probe kernel.function("*@net/socket.c").call
64{ 91{
65 printf ("%s -&gt; %s\n", thread_indent(1), probefunc()) 92 printf ("%s -&gt; %s\n", thread_indent(1), probefunc())
@@ -68,8 +95,9 @@ probe kernel.function("*@net/socket.c").return
68{ 95{
69 printf ("%s &lt;- %s\n", thread_indent(-1), probefunc()) 96 printf ("%s &lt;- %s\n", thread_indent(-1), probefunc())
70}</pre></div></div><div class="para"> 97}</pre></div></div><div class="para">
71 <a class="xref" href="systemtapscript-handler.html#thread_indent">Example 3.6, “thread_indent.stp”</a> prints out the <code class="command">thread_indent()</code> and probe functions at each event in the following format: 98 <a class="xref" href="systemtapscript-handler.html#thread_indent">Example 3.6, “thread_indent.stp”</a> prints out the
72 </div><pre class="screen">0 ftp(7223): -&gt; sys_socketcall 99 <code class="command">thread_indent()</code> and probe functions at each event
100 in the following format:</div><pre class="screen">0 ftp(7223): -&gt; sys_socketcall
731159 ftp(7223): -&gt; sys_socket 1011159 ftp(7223): -&gt; sys_socket
742173 ftp(7223): -&gt; __sock_create 1022173 ftp(7223): -&gt; __sock_create
752286 ftp(7223): -&gt; sock_alloc_inode 1032286 ftp(7223): -&gt; sock_alloc_inode
@@ -84,28 +112,36 @@ probe kernel.function("*@net/socket.c").return
844699 ftp(7223): &lt;- sock_map_file 1124699 ftp(7223): &lt;- sock_map_file
854715 ftp(7223): &lt;- sock_map_fd 1134715 ftp(7223): &lt;- sock_map_fd
864732 ftp(7223): &lt;- sys_socket 1144732 ftp(7223): &lt;- sys_socket
874775 ftp(7223): &lt;- sys_socketcall</pre><div class="para"> 1154775 ftp(7223): &lt;- sys_socketcall</pre><div class="para">This sample output contains the following information:</div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">The time (in microseconds) since the initial <code class="command">thread_indent()</code> call for the thread (included in the string from <code class="command">thread_indent()</code>).</div></li><li class="listitem"><div class="para">The process name (and its corresponding ID) that made the function call (included in the string from <code class="command">thread_indent()</code>).</div></li><li class="listitem"><div class="para">An arrow signifying whether the call was an entry (<code class="computeroutput">&lt;-</code>) or an exit (<code class="computeroutput">-&gt;</code>); the indentations help you match specific function call entries with their corresponding exits.</div></li><li class="listitem"><div class="para">The name of the function called by the process.</div></li></ul></div></dd><dt><span class="term">name</span></dt><dd><a id="idm140174736768448" class="indexterm"></a><a id="idm140174736769952" class="indexterm"></a><a id="idm140174734917936" class="indexterm"></a><div class="para">Identifies the name of a specific system call. This variable can
88 This sample output contains the following information: 116 only be used in probes that use the event
89 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"> 117 <code class="command">syscall.<em class="replaceable">system_call</em></code>.
90 The time (in microseconds) since the initial <code class="command">thread_indent()</code> call for the thread (included in the string from <code class="command">thread_indent()</code>). 118 </div></dd><dt><span class="term">target()</span></dt><dd><a id="idm140174734922768" class="indexterm"></a><a id="idm140174738850016" class="indexterm"></a><div class="para">
91 </div></li><li class="listitem"><div class="para"> 119 Used in conjunction with <code class="command">stap
92 The process name (and its corresponding ID) that made the function call (included in the string from <code class="command">thread_indent()</code>). 120 <em class="replaceable">script</em> -x <em class="replaceable">process
93 </div></li><li class="listitem"><div class="para"> 121 ID</em></code> or <code class="command">stap
94 An arrow signifying whether the call was an entry (<code class="computeroutput">&lt;-</code>) or an exit (<code class="computeroutput">-&gt;</code>); the indentations help you match specific function call entries with their corresponding exits. 122 <em class="replaceable">script</em> -c
95 </div></li><li class="listitem"><div class="para"> 123 <em class="replaceable">command</em></code>. If you want to specify
96 The name of the function called by the process. 124 a script to take an argument of a process ID or command, use
97 </div></li></ul></div></dd><dt><span class="term">name</span></dt><dd><a id="idm47748227105824" class="indexterm"></a><a id="idm47748227106800" class="indexterm"></a><a id="idm47748227109552" class="indexterm"></a><div class="para"> 125 <code class="command">target()</code> as the variable in the script to refer
98 Identifies the name of a specific system call. This variable can only be used in probes that use the event <code class="command">syscall.<em class="replaceable">system_call</em></code>. 126 to it. For example:
99 </div></dd><dt><span class="term">target()</span></dt><dd><a id="idm47748227111824" class="indexterm"></a><a id="idm47748227113600" class="indexterm"></a><div class="para"> 127 </div><div class="example"><a id="targetexample">
100 Used in conjunction with <code class="command">stap <em class="replaceable">script</em> -x <em class="replaceable">process ID</em></code> or <code class="command">stap <em class="replaceable">script</em> -c <em class="replaceable">command</em></code>. If you want to specify a script to take an argument of a process ID or command, use <code class="command">target()</code> as the variable in the script to refer to it. For example:
101 </div><div class="example"><a id="targetexample">
102 ⁠</a><p class="title"><strong>Example 3.7. targetexample.stp</strong></p><div class="example-contents"><pre class="programlisting">probe syscall.* { 128 ⁠</a><p class="title"><strong>Example 3.7. targetexample.stp</strong></p><div class="example-contents"><pre class="programlisting">probe syscall.* {
103 if (pid() == target()) 129 if (pid() == target())
104 printf("%s\n", name) 130 printf("%s\n", name)
105}</pre></div></div><div class="para"> 131} </pre></div></div><div class="para">
106 When <a class="xref" href="systemtapscript-handler.html#targetexample">Example 3.7, “targetexample.stp”</a> is run with the argument <code class="command">-x <em class="replaceable">process ID</em></code>, it watches all system calls (as specified by the event <code class="command">syscall.*</code>) and prints out the name of all system calls made by the specified process. 132 When <a class="xref" href="systemtapscript-handler.html#targetexample">Example 3.7, “targetexample.stp”</a> is run with the argument
107 </div><div class="para"> 133 <code class="command">-x <em class="replaceable">process ID</em></code>, it
108 This has the same effect as specifying <code class="command">if (pid() == <em class="replaceable">process ID</em>)</code> each time you wish to target a specific process. However, using <code class="command">target()</code> makes it easier for you to re-use the script, giving you the ability to pass a process ID as an argument each time you wish to run the script (that is, <code class="command">stap targetexample.stp -x <em class="replaceable">process ID</em></code>). 134 watches all system calls (as specified by the event
109 </div></dd></dl></div><div class="para"> 135 <code class="command">syscall.*</code>) and prints out the name of all system
110 For more information about supported SystemTap functions, refer to <code class="command">man stapfuncs</code>. 136 calls made by the specified process.
111 </div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="scripts.html"><strong>Prev</strong>3.2. SystemTap Scripts</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="scriptconstructions.html"><strong>Next</strong>3.3. Basic SystemTap Handler Constructs</a></li></ul></body></html> \ No newline at end of file 137 </div><div class="para">
138 This has the same effect as specifying <code class="command">if (pid() ==
139 <em class="replaceable">process ID</em>)</code> each time you wish
140 to target a specific process. However, using
141 <code class="command">target()</code> makes it easier for you to re-use the
142 script, giving you the ability to pass a process ID as an
143 argument each time you wish to run the script (that is, <code class="command">stap
144 targetexample.stp -x <em class="replaceable">process ID</em></code>).
145 </div></dd></dl></div><div class="para">For more information about supported SystemTap functions, refer to
146 <code class="command">man stapfuncs</code>.
147 </div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="scripts.html"><strong>Prev</strong>3.2. SystemTap Scripts</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="scriptconstructions.html"><strong>Next</strong>3.3. Basic SystemTap Handler Constructs</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/targetavailable.html b/SystemTap_Beginners_Guide/targetavailable.html
index 7075030e..831c8ded 100644
--- a/SystemTap_Beginners_Guide/targetavailable.html
+++ b/SystemTap_Beginners_Guide/targetavailable.html
@@ -1,10 +1,24 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.3.2.3. Checking Target Variable Availability</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="targetvariables.html" title="3.3.2. Target Variables" /><link rel="prev" href="typecasting.html" title="3.3.2.2. Typecasting" /><link rel="next" href="handlerconditionalstatements.html" title="3.3.3. Conditional Statements" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="typecasting.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="handlerconditionalstatements.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="targetavailable"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.3.2.3. Checking Target Variable Availability</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="targetvariables.html" title="3.3.2. Target Variables" /><link rel="prev" href="typecasting.html" title="3.3.2.2. Typecasting" /><link rel="next" href="handlerconditionalstatements.html" title="3.3.3. Conditional Statements" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="typecasting.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="handlerconditionalstatements.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="targetavailable">
3 ⁠</a>3.3.2.3. Checking Target Variable Availability</h4></div></div></div><a id="idm47748218780896" class="indexterm"></a><div class="para"> 3 ⁠</a>3.3.2.3. Checking Target Variable Availability</h4></div></div></div><a id="idm140174731543616" class="indexterm"></a><div class="para">
4 As code evolves the target variables available may change. The <code class="command">@defined</code> makes it easier to handle those variations in the available target variables. The <code class="command">@defined</code> provides a test to see if a particular target variable is available. The result of this test can be used to select the appropriate expression. 4 As code evolves the target variables available may change.
5 </div><div class="para"> 5 The <code class="command">@defined</code> makes it easier to handle
6 The <a class="xref" href="targetavailable.html#available">Example 3.10, “Testing target variable available Example”</a> from the <code class="command">memory.stp</code> tapset provides an probe event alias. Some version of the kernel functions being probed have an argument <code class="command">$flags</code>. When available, the <code class="command">$flags</code> argument is used to generate the local variable <code class="command">write_access</code>. The versions of the probed functions that do not have the <code class="command">$flags</code> argument have a <code class="command">$write</code> argument and that is used instead for the local variable <code class="command">write_access</code>. 6 those variations in the available target variables.
7 </div><div class="example"><a id="available"> 7 The <code class="command">@defined</code> provides a test to see if a particular
8 target variable is available. The result of this test
9 can be used to select the appropriate expression.
10</div><div class="para">
11 The <a class="xref" href="targetavailable.html#available">Example 3.10, “Testing target variable available Example”</a> from the
12 <code class="command">memory.stp</code> tapset provides an probe event alias.
13 Some version of the kernel functions being probed have an argument
14 <code class="command">$flags</code>. When available, the
15 <code class="command">$flags</code> argument is used to generate
16 the local variable <code class="command">write_access</code>.
17 The versions of the probed functions that do not have the
18 <code class="command">$flags</code> argument have a <code class="command">$write</code>
19 argument and that is used instead for the local variable
20 <code class="command">write_access</code>.
21</div><div class="example"><a id="available">
8 ⁠</a><p class="title"><strong>Example 3.10. Testing target variable available Example</strong></p><div class="example-contents"><pre class="programlisting">probe vm.pagefault = kernel.function("__handle_mm_fault@mm/memory.c") ?, 22 ⁠</a><p class="title"><strong>Example 3.10. Testing target variable available Example</strong></p><div class="example-contents"><pre class="programlisting">probe vm.pagefault = kernel.function("__handle_mm_fault@mm/memory.c") ?,
9 kernel.function("handle_mm_fault@mm/memory.c") ? 23 kernel.function("handle_mm_fault@mm/memory.c") ?
10{ 24{
diff --git a/SystemTap_Beginners_Guide/targetvariables.html b/SystemTap_Beginners_Guide/targetvariables.html
index 7883ed44..15ff129b 100644
--- a/SystemTap_Beginners_Guide/targetvariables.html
+++ b/SystemTap_Beginners_Guide/targetvariables.html
@@ -1,61 +1,130 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.3.2. Target Variables</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="scriptconstructions.html" title="3.3. Basic SystemTap Handler Constructs" /><link rel="prev" href="scriptconstructions.html" title="3.3. Basic SystemTap Handler Constructs" /><link rel="next" href="typecasting.html" title="3.3.2.2. Typecasting" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="scriptconstructions.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="typecasting.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="targetvariables"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.3.2. Target Variables</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="scriptconstructions.html" title="3.3. Basic SystemTap Handler Constructs" /><link rel="prev" href="scriptconstructions.html" title="3.3. Basic SystemTap Handler Constructs" /><link rel="next" href="typecasting.html" title="3.3.2.2. Typecasting" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="scriptconstructions.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="typecasting.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="targetvariables">
3 ⁠</a>3.3.2. Target Variables</h3></div></div></div><a id="idm47748227094960" class="indexterm"></a><a id="idm47748217186352" class="indexterm"></a><div class="para"> 3 ⁠</a>3.3.2. Target Variables</h3></div></div></div><a id="idm140174734582176" class="indexterm"></a><a id="idm140174734166944" class="indexterm"></a><div class="para">
4 The probe events that map to actual locations in the code (for example <code class="command">kernel.function("<em class="replaceable">function</em>")</code> and <code class="command">kernel.statement("<em class="replaceable">statement</em>")</code>) allow the use of <span class="emphasis"><em>target variables</em></span> to obtain the value of variables visible at that location in the code. You can use the <code class="command">-L</code> option to list the target variable available at a probe point. If the debug information is installed for the running kernel, you can run the following command to find out what target variables are available for the <code class="command">vfs_read</code> function: 4The probe events that map to actual locations in the code (for example
5 </div><pre class="screen">stap -L 'kernel.function("vfs_read")'</pre><div class="para"> 5<code class="command">kernel.function("<em class="replaceable">function</em>")</code> and
6 This will yield something similar to the following: 6<code class="command">kernel.statement("<em class="replaceable">statement</em>")</code>)
7 </div><pre class="screen">kernel.function("vfs_read@fs/read_write.c:277") $file:struct file* $buf:char* $count:size_t $pos:loff_t*</pre><div class="para"> 7allow the use of <span class="emphasis"><em>target variables</em></span> to obtain the value of
8 Each target variable is proceeded by a <span class="quote">“<span class="quote"><code class="command">$</code></span>”</span> and the type of the target variable follows the <span class="quote">“<span class="quote"><code class="command">:</code></span>”</span>. The kernel's <code class="command">vfs_read</code> function has <code class="command">$file</code> (pointer to structure describing the file), <code class="command">$buf</code> (pointer to the user-space memory to store the read data), <code class="command">$count</code> (number of bytes to read), and <code class="command">$pos</code> (position to start reading from in the file) target variables at the entry to the function. 8variables visible at that location in the code.
9 </div><div class="para"> 9You can use the <code class="command">-L</code> option to list the target variable available at a
10 When a target variable is not local to the probe point, like a global external variable or a file local static variable defined in another file then it can be referenced through <span class="quote">“<span class="quote"><code class="command">@var("<em class="replaceable">varname</em>@<em class="replaceable">src/file.c</em>")</code></span>”</span>. 10probe point.
11 </div><div class="para"> 11If the debug information is installed for the running kernel,
12 SystemTap tracks the typing information of the target variable and can examine the fields of a structure with the <code class="command">-&gt;</code> operator. The <code class="command">-&gt;</code> operator can be chained to look at data structures contained within data structures and follow pointers to other data structures. The <code class="command">-&gt;</code> operator will obtain the value in the field of the structure. The <code class="command">-&gt;</code> operator is used regardless whether accessing a field in a substructure or accessing another structure through a pointer. 12you can run the following command to find out what target variables
13 </div><div class="para"> 13are available for the <code class="command">vfs_read</code> function:
14 For example to access a field of the static files_stat target variable defined in fs/file_table.c (which holds some of the current file system sysctl tunables), one could write: 14</div><pre class="screen">stap -L 'kernel.function("vfs_read")'</pre><div class="para">
15 </div><pre class="screen"> 15This will yield something similar to the following:
16</div><pre class="screen">kernel.function("vfs_read@fs/read_write.c:277") $file:struct file* $buf:char* $count:size_t $pos:loff_t*</pre><div class="para">
17Each target variable is proceeded by a <span class="quote">“<span class="quote"><code class="command">$</code></span>”</span> and
18the type of the target variable follows the <span class="quote">“<span class="quote"><code class="command">:</code></span>”</span>.
19The kernel's <code class="command">vfs_read</code> function has
20<code class="command">$file</code> (pointer to structure describing the file),
21<code class="command">$buf</code> (pointer to the user-space memory to store the read data),
22<code class="command">$count</code> (number of bytes to read),
23and <code class="command">$pos</code> (position to start reading from in the file)
24target variables at the entry to the function.
25</div><div class="para">
26When a target variable is not local to the probe point, like a global
27external variable or a file local static variable defined in another file
28then it can be referenced through
29<span class="quote">“<span class="quote"><code class="command">@var("<em class="replaceable">varname</em>@<em class="replaceable">src/file.c</em>")</code></span>”</span>.
30</div><div class="para">
31SystemTap tracks the typing information of the target variable and can
32examine the fields of a structure with the <code class="command">-&gt;</code> operator.
33The <code class="command">-&gt;</code> operator can be chained to look at data structures
34contained within data structures and follow pointers to other data structures.
35The <code class="command">-&gt;</code> operator will obtain the value in the field of the
36structure.
37The <code class="command">-&gt;</code> operator is used regardless whether accessing a field
38in a substructure or accessing another structure through a pointer.
39</div><div class="para">
40For example to access a field of the static files_stat target variable
41defined in fs/file_table.c (which holds some of the current file system
42sysctl tunables), one could write:
43</div><pre class="screen">
16stap -e 'probe kernel.function("vfs_read") { 44stap -e 'probe kernel.function("vfs_read") {
17 printf ("current files_stat max_files: %d\n", 45 printf ("current files_stat max_files: %d\n",
18 @var("files_stat@fs/file_table.c")-&gt;max_files); 46 @var("files_stat@fs/file_table.c")-&gt;max_files);
19 exit(); }' 47 exit(); }'
20</pre><div class="para"> 48</pre><div class="para">
21 Which will yield something similar to the following: 49Which will yield something similar to the following:
22 </div><pre class="screen"> 50</div><pre class="screen">
23current files_stat max_files: 386070 51current files_stat max_files: 386070
24</pre><div class="para"> 52</pre><div class="para">
25 For pointers to base types such as integers and strings there are a number of functions listed below to access kernel-space data. The first argument for each functions is the pointer to the data item. Similar functions are described in <a class="xref" href="utargetvariable.html">Section 4.2, “Accessing User-Space Target Variables”</a> for accessing target variables in user-space code. 53For pointers to base types such as integers and strings
26 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">kernel_char(<em class="replaceable">address</em>)</span></dt><dd><div class="para"> 54there are a number of functions listed below to access kernel-space data.
27 Obtain the character at <em class="replaceable">address</em> from kernel memory. 55The first argument for each functions is the pointer to the data item.
28 </div></dd><dt><span class="term">kernel_short(<em class="replaceable">address</em>)</span></dt><dd><div class="para"> 56Similar functions are described in <a class="xref" href="utargetvariable.html">Section 4.2, “Accessing User-Space Target Variables”</a> for
29 Obtain the short at <em class="replaceable">address</em> from kernel memory. 57accessing target variables in user-space code.
30 </div></dd><dt><span class="term">kernel_int(<em class="replaceable">address</em>)</span></dt><dd><div class="para"> 58</div><div class="variablelist"><dl class="variablelist"><dt><span class="term">kernel_char(<em class="replaceable">address</em>)</span></dt><dd><div class="para">
31 Obtain the int at <em class="replaceable">address</em> from kernel memory. 59Obtain the character at <em class="replaceable">address</em> from kernel memory.
32 </div></dd><dt><span class="term">kernel_long(<em class="replaceable">address</em>)</span></dt><dd><div class="para"> 60</div></dd><dt><span class="term">kernel_short(<em class="replaceable">address</em>)</span></dt><dd><div class="para">
33 Obtain the long at <em class="replaceable">address</em> from kernel memory 61Obtain the short at <em class="replaceable">address</em> from kernel memory.
34 </div></dd><dt><span class="term">kernel_string(<em class="replaceable">address</em>)</span></dt><dd><div class="para"> 62</div></dd><dt><span class="term">kernel_int(<em class="replaceable">address</em>)</span></dt><dd><div class="para">
35 Obtain the string at <em class="replaceable">address</em> from kernel memory. 63Obtain the int at <em class="replaceable">address</em> from kernel memory.
36 </div></dd><dt><span class="term">kernel_string_n(<em class="replaceable">address</em>, <em class="replaceable">n</em>)</span></dt><dd><div class="para"> 64</div></dd><dt><span class="term">kernel_long(<em class="replaceable">address</em>)</span></dt><dd><div class="para">
37 Obtain the string at <em class="replaceable">address</em> from the kernel memory and limits the string to <em class="replaceable">n</em> bytes. 65Obtain the long at <em class="replaceable">address</em> from kernel memory
38 </div></dd></dl></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="targetprettyprinting"> 66</div></dd><dt><span class="term">kernel_string(<em class="replaceable">address</em>)</span></dt><dd><div class="para">
39 ⁠</a>3.3.2.1. Pretty Printing Target Variables</h4></div></div></div><a id="idm47748178472368" class="indexterm"></a><div class="para"> 67Obtain the string at <em class="replaceable">address</em> from kernel memory.
40 SystemTap scripts are often used to observe what is happening within the code. In many cases just printing the values of the various context variables is sufficient. SystemTap makes a number operations available that can generate printable strings for target variables: 68</div></dd><dt><span class="term">kernel_string_n(<em class="replaceable">address</em>, <em class="replaceable">n</em>)</span></dt><dd><div class="para">
41 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">$$vars</span></dt><dd><div class="para"> 69Obtain the string at <em class="replaceable">address</em> from the kernel memory
42 Expands to a character string that is equivalent to <code class="command">sprintf("parm1=%x ... parmN=%x var1=%x ... varN=%x", parm1, ..., parmN, var1, ..., varN)</code> for each variable in scope at the probe point. Some values may be printed as <span class="quote">“<span class="quote"><code class="command">=?</code></span>”</span> if their run-time location cannot be found. 70and limits the string to <em class="replaceable">n</em> bytes.
43 </div></dd><dt><span class="term">$$locals</span></dt><dd><div class="para"> 71</div></dd></dl></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="targetprettyprinting">
44 Expands to a subset of <code class="command">$$vars</code> containing only the local variables. 72 ⁠</a>3.3.2.1. Pretty Printing Target Variables</h4></div></div></div><a id="idm140174738365648" class="indexterm"></a><div class="para">
45 </div></dd><dt><span class="term">$$parms</span></dt><dd><div class="para"> 73 SystemTap scripts are often used to observe what is happening within
46 Expands to a subset of <code class="command">$$vars</code> containing only the function parameters. 74 the code.
47 </div></dd><dt><span class="term">$$return</span></dt><dd><div class="para"> 75 In many cases just printing the values of the various context variables
48 Is available in return probes only. It expands to a string that is equivalent to <code class="command">sprintf("return=%x", $return)</code> if the probed function has a return value, or else an empty string. 76 is sufficient.
49 </div></dd></dl></div><div class="para"> 77 SystemTap makes a number operations available that can generate
50 Below is a command-line script that prints the values of the parameters passed into the function <code class="command">vfs_read</code>: 78 printable strings for target variables:
51 </div><pre class="programlisting">stap -e 'probe kernel.function("vfs_read") {printf("%s\n", $$parms); exit(); }'</pre><div class="para"> 79</div><div class="variablelist"><dl class="variablelist"><dt><span class="term">$$vars</span></dt><dd><div class="para">
52 There are four parameters passed into <code class="command">vfs_read</code>: <code class="command">file</code>, <code class="command">buf</code>, <code class="command">count</code>, and <code class="command">pos</code>. The <code class="command">$$parms</code> generates a string for the parameters passed into the function. In this case all but the <code class="command">count</code> parameter are pointers. The following is an example of the output from the previous command-line script: 80 Expands to a character string that is equivalent to
53 </div><pre class="programlisting">file=0xffff8800b40d4c80 buf=0x7fff634403e0 count=0x2004 pos=0xffff8800af96df48</pre><div class="para"> 81 <code class="command">sprintf("parm1=%x ... parmN=%x var1=%x ... varN=%x",
54 Having the address a pointer points to may not be useful. Instead the fields of the data structure the pointer points to may be of more use. Use the <span class="quote">“<span class="quote"><code class="command">$</code></span>”</span> suffix to pretty print the data structure. The following command-line example uses the pretty printing suffix to print more details about the data structures passed into the function <code class="command">vfs_read</code>: 82 parm1, ..., parmN, var1, ..., varN)</code>
55 </div><pre class="programlisting">stap -e 'probe kernel.function("vfs_read") {printf("%s\n", $$parms$); exit(); }'</pre><div class="para"> 83 for each variable in scope at the probe point.
56 The previous command line will generate something similar to the following with the fields of the data structure included in the output: 84 Some values may be printed as <span class="quote">“<span class="quote"><code class="command">=?</code></span>”</span>
57 </div><pre class="programlisting">file={.f_u={...}, .f_path={...}, .f_op=0xffffffffa06e1d80, .f_lock={...}, .f_count={...}, .f_flags=34818, .f_mode=31, .f_pos=0, .f_owner={...}, .f_cred=0xffff88013148fc80, .f_ra={...}, .f_version=0, .f_security=0xffff8800b8dce560, .private_data=0x0, .f_ep_links={...}, .f_mapping=0xffff880037f8fdf8} buf="" count=8196 pos=-131938753921208</pre><div class="para"> 85 if their run-time location cannot be found.
58 With the <span class="quote">“<span class="quote"><code class="command">$</code></span>”</span> suffix fields that are composed of data structures are not expanded. The <span class="quote">“<span class="quote"><code class="command">$$</code></span>”</span> suffix will print the values contained within the nested data structures. Below is an example using the <span class="quote">“<span class="quote"><code class="command">$$</code></span>”</span> suffix: 86 </div></dd><dt><span class="term">$$locals</span></dt><dd><div class="para">
59 </div><pre class="programlisting">stap -e 'probe kernel.function("vfs_read") {printf("%s\n", $$parms$$); exit(); }'</pre><div class="para"> 87 Expands to a subset of <code class="command">$$vars</code>
60 The <span class="quote">“<span class="quote"><code class="command">$$</code></span>”</span> suffix, like all strings, is limited to the maximum string size. Below is a representative output from the previous command-line script, which is truncated because of the string size limit: 88 containing only the local variables.
61 </div><pre class="programlisting">file={.f_u={.fu_list={.next=0xffff8801336ca0e8, .prev=0xffff88012ded0840}, .fu_rcuhead={.next=0xffff8801336ca0e8, .func=0xffff88012ded0840}}, .f_path={.mnt=0xffff880132fc97c0, .dentry=0xffff88001a889cc0}, .f_op=0xffffffffa06f64c0, .f_lock={.raw_lock={.slock=196611}}, .f_count={.counter=2}, .f_flags=34818, .f_mode=31, .f_pos=0, .f_owner={.lock={.raw_lock={.lock=16777216}}, .pid=0x0, .pid_type=0, .uid=0, .euid=0, .signum=0}, .f_cred=0xffff880130129a80, .f_ra={.start=0, .size=0, .async_size=0, .ra_pages=32, .</pre></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="scriptconstructions.html"><strong>Prev</strong>3.3. Basic SystemTap Handler Constructs</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="typecasting.html"><strong>Next</strong>3.3.2.2. Typecasting</a></li></ul></body></html> \ No newline at end of file 89 </div></dd><dt><span class="term">$$parms</span></dt><dd><div class="para">
90 Expands to a subset of <code class="command">$$vars</code>
91 containing only the function parameters.
92 </div></dd><dt><span class="term">$$return</span></dt><dd><div class="para">
93 Is available in return probes only. It expands to a string that
94 is equivalent to
95 <code class="command">sprintf("return=%x", $return)</code> if the probed
96 function has a return value, or else an empty string.
97 </div></dd></dl></div><div class="para">
98 Below is a command-line script that prints the values of the
99 parameters passed into the function <code class="command">vfs_read</code>:
100</div><pre class="programlisting">stap -e 'probe kernel.function("vfs_read") {printf("%s\n", $$parms); exit(); }'</pre><div class="para">
101 There are four parameters passed into <code class="command">vfs_read</code>:
102 <code class="command">file</code>, <code class="command">buf</code>,
103 <code class="command">count</code>, and <code class="command">pos</code>.
104 The <code class="command">$$parms</code> generates a string for the parameters
105 passed into the function. In this case all but the
106 <code class="command">count</code> parameter are pointers. The following
107 is an example of the output from the previous command-line script:
108</div><pre class="programlisting">file=0xffff8800b40d4c80 buf=0x7fff634403e0 count=0x2004 pos=0xffff8800af96df48</pre><div class="para">
109 Having the address a pointer points to may not be useful.
110 Instead the fields of the data structure the pointer points to may be of more use.
111 Use the <span class="quote">“<span class="quote"><code class="command">$</code></span>”</span> suffix to pretty print
112 the data structure.
113 The following command-line example uses the pretty printing suffix to
114 print more details about the data structures passed into the function
115 <code class="command">vfs_read</code>:
116</div><pre class="programlisting">stap -e 'probe kernel.function("vfs_read") {printf("%s\n", $$parms$); exit(); }'</pre><div class="para">
117 The previous command line will generate something similar to the
118 following with the fields of the data structure included in the output:
119</div><pre class="programlisting">file={.f_u={...}, .f_path={...}, .f_op=0xffffffffa06e1d80, .f_lock={...}, .f_count={...}, .f_flags=34818, .f_mode=31, .f_pos=0, .f_owner={...}, .f_cred=0xffff88013148fc80, .f_ra={...}, .f_version=0, .f_security=0xffff8800b8dce560, .private_data=0x0, .f_ep_links={...}, .f_mapping=0xffff880037f8fdf8} buf="" count=8196 pos=-131938753921208</pre><div class="para">
120 With the <span class="quote">“<span class="quote"><code class="command">$</code></span>”</span> suffix fields that are composed of
121 data structures are not expanded.
122 The <span class="quote">“<span class="quote"><code class="command">$$</code></span>”</span> suffix will print the values contained within
123 the nested data structures.
124 Below is an example using the <span class="quote">“<span class="quote"><code class="command">$$</code></span>”</span> suffix:
125</div><pre class="programlisting">stap -e 'probe kernel.function("vfs_read") {printf("%s\n", $$parms$$); exit(); }'</pre><div class="para">
126 The <span class="quote">“<span class="quote"><code class="command">$$</code></span>”</span> suffix, like all strings,
127 is limited to the maximum string size.
128 Below is a representative output from the previous command-line script,
129 which is truncated because of the string size limit:
130</div><pre class="programlisting">file={.f_u={.fu_list={.next=0xffff8801336ca0e8, .prev=0xffff88012ded0840}, .fu_rcuhead={.next=0xffff8801336ca0e8, .func=0xffff88012ded0840}}, .f_path={.mnt=0xffff880132fc97c0, .dentry=0xffff88001a889cc0}, .f_op=0xffffffffa06f64c0, .f_lock={.raw_lock={.slock=196611}}, .f_count={.counter=2}, .f_flags=34818, .f_mode=31, .f_pos=0, .f_owner={.lock={.raw_lock={.lock=16777216}}, .pid=0x0, .pid_type=0, .uid=0, .euid=0, .signum=0}, .f_cred=0xffff880130129a80, .f_ra={.start=0, .size=0, .async_size=0, .ra_pages=32, .</pre></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="scriptconstructions.html"><strong>Prev</strong>3.3. Basic SystemTap Handler Constructs</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="typecasting.html"><strong>Next</strong>3.3.2.2. Typecasting</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/threadtimessect.html b/SystemTap_Beginners_Guide/threadtimessect.html
index 8af2e5b8..a945d4fc 100644
--- a/SystemTap_Beginners_Guide/threadtimessect.html
+++ b/SystemTap_Beginners_Guide/threadtimessect.html
@@ -1,9 +1,6 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.3.3. Determining Time Spent in Kernel and User Space</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-profiling.html" title="5.3. Profiling" /><link rel="prev" href="paracallgraph.html" title="5.3.2. Call Graph Tracing" /><link rel="next" href="timeoutssect.html" title="5.3.4. Monitoring Polling Applications" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="paracallgraph.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="timeoutssect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="threadtimessect"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.3.3. Determining Time Spent in Kernel and User Space</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-profiling.html" title="5.3. Profiling" /><link rel="prev" href="paracallgraph.html" title="5.3.2. Call Graph Tracing" /><link rel="next" href="timeoutssect.html" title="5.3.4. Monitoring Polling Applications" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="paracallgraph.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="timeoutssect.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="threadtimessect">
3 ⁠</a>5.3.3. Determining Time Spent in Kernel and User Space</h3></div></div></div><a id="idm47748175624800" class="indexterm"></a><a id="idm47748217104592" class="indexterm"></a><a id="idm47748186234032" class="indexterm"></a><a id="idm47748222494752" class="indexterm"></a><a id="idm47748181027696" class="indexterm"></a><a id="idm47748220161024" class="indexterm"></a><div class="para"> 3 ⁠</a>5.3.3. Determining Time Spent in Kernel and User Space</h3></div></div></div><a id="idm140174743201264" class="indexterm"></a><a id="idm140174736453504" class="indexterm"></a><a id="idm140174737556880" class="indexterm"></a><a id="idm140174741059360" class="indexterm"></a><a id="idm140174741932176" class="indexterm"></a><a id="idm140174731779968" class="indexterm"></a><div class="para">This section illustrates how to determine the amount of time any given thread is spending in either kernel or user-space.</div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">thread-times.stp</div>
4 This section illustrates how to determine the amount of time any given thread is spending in either kernel or user-space.
5 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">thread-times.stp</div>
6
7<pre class="programlisting">#! /usr/bin/env stap 4<pre class="programlisting">#! /usr/bin/env stap
8 5
9probe perf.sw.cpu_clock!, timer.profile { 6probe perf.sw.cpu_clock!, timer.profile {
@@ -18,9 +15,9 @@ probe perf.sw.cpu_clock!, timer.profile {
18 tids[e,tid] &lt;&lt;&lt; 1 15 tids[e,tid] &lt;&lt;&lt; 1
19} 16}
20 17
21global uticks, kticks, ticks 18global uticks%, kticks%, ticks
22 19
23global tids 20global tids%
24 21
25probe timer.s(5), end { 22probe timer.s(5), end {
26 allticks = @count(ticks) 23 allticks = @count(ticks)
@@ -40,11 +37,7 @@ probe timer.s(5), end {
40 delete tids 37 delete tids
41} 38}
42</pre> 39</pre>
43 </div><a id="idm47748178248224" class="indexterm"></a><a id="idm47748225876448" class="indexterm"></a><a id="idm47748214273728" class="indexterm"></a><div class="para"> 40</div><a id="idm140174742969440" class="indexterm"></a><a id="idm140174733946288" class="indexterm"></a><a id="idm140174737235984" class="indexterm"></a><div class="para"><a class="xref" href="threadtimessect.html#threadtimes">thread-times.stp</a> lists the top 20 processes currently taking up CPU time within a 5-second sample, along with the total number of CPU ticks made during the sample. The output of this script also notes the percentage of CPU time each process used, as well as whether that time was spent in kernel space or user space. </div><div class="para"><a class="xref" href="threadtimessect.html#threadtimesoutput">Example 5.15, “thread-times.stp Sample Output”</a> contains a 5-second sample of the output for <a class="xref" href="threadtimessect.html#threadtimes">thread-times.stp</a>:</div><div class="example"><a id="threadtimesoutput">
44 <a class="xref" href="threadtimessect.html#threadtimes">thread-times.stp</a> lists the top 20 processes currently taking up CPU time within a 5-second sample, along with the total number of CPU ticks made during the sample. The output of this script also notes the percentage of CPU time each process used, as well as whether that time was spent in kernel space or user space.
45 </div><div class="para">
46 <a class="xref" href="threadtimessect.html#threadtimesoutput">Example 5.15, “thread-times.stp Sample Output”</a> contains a 5-second sample of the output for <a class="xref" href="threadtimessect.html#threadtimes">thread-times.stp</a>:
47 </div><div class="example"><a id="threadtimesoutput">
48 ⁠</a><p class="title"><strong>Example 5.15. <a class="xref" href="threadtimessect.html#threadtimes">thread-times.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen"> tid %user %kernel (of 20002 ticks) 41 ⁠</a><p class="title"><strong>Example 5.15. <a class="xref" href="threadtimessect.html#threadtimes">thread-times.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen"> tid %user %kernel (of 20002 ticks)
49 0 0.00% 87.88% 42 0 0.00% 87.88%
5032169 5.24% 0.03% 4332169 5.24% 0.03%
diff --git a/SystemTap_Beginners_Guide/timeoutssect.html b/SystemTap_Beginners_Guide/timeoutssect.html
index 00ba32a1..56b3576a 100644
--- a/SystemTap_Beginners_Guide/timeoutssect.html
+++ b/SystemTap_Beginners_Guide/timeoutssect.html
@@ -1,9 +1,10 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.3.4. Monitoring Polling Applications</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-profiling.html" title="5.3. Profiling" /><link rel="prev" href="threadtimessect.html" title="5.3.3. Determining Time Spent in Kernel and User Space" /><link rel="next" href="topsyssect.html" title="5.3.5. Tracking Most Frequently Used System Calls" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="threadtimessect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="topsyssect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="timeoutssect"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.3.4. Monitoring Polling Applications</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-profiling.html" title="5.3. Profiling" /><link rel="prev" href="threadtimessect.html" title="5.3.3. Determining Time Spent in Kernel and User Space" /><link rel="next" href="topsyssect.html" title="5.3.5. Tracking Most Frequently Used System Calls" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="threadtimessect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="topsyssect.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="timeoutssect">
3 ⁠</a>5.3.4. Monitoring Polling Applications</h3></div></div></div><a id="idm47748229606544" class="indexterm"></a><a id="idm47748176146704" class="indexterm"></a><a id="idm47748176223040" class="indexterm"></a><a id="idm47748224542352" class="indexterm"></a><div class="para"> 3 ⁠</a>5.3.4. Monitoring Polling Applications</h3></div></div></div><a id="idm140174738675728" class="indexterm"></a><a id="idm140174742674704" class="indexterm"></a><a id="idm140174730661664" class="indexterm"></a><a id="idm140174734987904" class="indexterm"></a><div class="para">
4 This section describes how to identify and monitor which applications are polling. Doing so allows you to track unnecessary or excessive polling, which can help you pinpoint areas for improvement in terms of CPU usage and power savings. 4 This section describes how to identify and monitor which applications are polling. Doing so allows you to track
5 unnecessary or excessive polling, which can help you pinpoint areas for improvement in terms of CPU usage
6 and power savings.
5 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">timeout.stp</div> 7 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">timeout.stp</div>
6
7<pre class="programlisting">#! /usr/bin/env stap 8<pre class="programlisting">#! /usr/bin/env stap
8# Copyright (C) 2009 Red Hat, Inc. 9# Copyright (C) 2009 Red Hat, Inc.
9# Written by Ulrich Drepper &lt;drepper@redhat.com&gt; 10# Written by Ulrich Drepper &lt;drepper@redhat.com&gt;
@@ -107,23 +108,12 @@ probe timer.s(1) {
107 } 108 }
108} 109}
109</pre> 110</pre>
110 </div><div class="para"> 111</div><div class="para">
111 <a class="xref" href="timeoutssect.html#timeouts">timeout.stp</a> tracks how many times each of the following system calls completed due to time expiring rather than due to an actual event occurring: 112 <a class="xref" href="timeoutssect.html#timeouts">timeout.stp</a> tracks how many times each
112 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"> 113 of the following system calls completed
113 <code class="command">poll</code> 114 due to time expiring rather than due to an actual event
114 </div></li><li class="listitem"><div class="para"> 115 occurring:
115 <code class="command">select</code> 116 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"><code class="command">poll</code></div></li><li class="listitem"><div class="para"><code class="command">select</code></div></li><li class="listitem"><div class="para"><code class="command">epoll</code></div></li><li class="listitem"><div class="para"><code class="command">itimer</code></div></li><li class="listitem"><div class="para"><code class="command">futex</code></div></li><li class="listitem"><div class="para"><code class="command">nanosleep</code></div></li><li class="listitem"><div class="para"><code class="command">signal</code></div></li></ul></div><a id="idm140174731315728" class="indexterm"></a><a id="idm140174736178576" class="indexterm"></a><a id="idm140174731615904" class="indexterm"></a><div class="example"><a id="timeoutsoutput">
116 </div></li><li class="listitem"><div class="para">
117 <code class="command">epoll</code>
118 </div></li><li class="listitem"><div class="para">
119 <code class="command">itimer</code>
120 </div></li><li class="listitem"><div class="para">
121 <code class="command">futex</code>
122 </div></li><li class="listitem"><div class="para">
123 <code class="command">nanosleep</code>
124 </div></li><li class="listitem"><div class="para">
125 <code class="command">signal</code>
126 </div></li></ul></div><a id="idm47748175178544" class="indexterm"></a><a id="idm47748178835168" class="indexterm"></a><a id="idm47748188107664" class="indexterm"></a><div class="example"><a id="timeoutsoutput">
127 ⁠</a><p class="title"><strong>Example 5.16. <a class="xref" href="timeoutssect.html#timeouts">timeout.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen"> uid | poll select epoll itimer futex nanosle signal| process 117 ⁠</a><p class="title"><strong>Example 5.16. <a class="xref" href="timeoutssect.html#timeouts">timeout.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen"> uid | poll select epoll itimer futex nanosle signal| process
12828937 | 148793 0 0 4727 37288 0 0| firefox 11828937 | 148793 0 0 4727 37288 0 0| firefox
12922945 | 0 56949 0 1 0 0 0| scim-bridge 11922945 | 0 56949 0 1 0 0 0| scim-bridge
@@ -145,5 +135,10 @@ probe timer.s(1) {
145 3165 | 0 1441 0 0 0 0 0| xterm 135 3165 | 0 1441 0 0 0 0 0| xterm
14629548 | 0 1440 0 0 0 0 0| httpd 13629548 | 0 1440 0 0 0 0 0| httpd
147 1862 | 0 0 0 0 0 1438 0| iscsid</pre></div></div><div class="para"> 137 1862 | 0 0 0 0 0 1438 0| iscsid</pre></div></div><div class="para">
148 You can increase the sample time by editing the second probe (<code class="command">timer.s(1)</code>). The output of <a class="xref" href="timeoutssect.html#timeouts">timeout.stp</a> contains the name and UID of the top 20 polling applications, along with how many times each application performed each polling system call (over time). <a class="xref" href="timeoutssect.html#timeoutsoutput">Example 5.16, “timeout.stp Sample Output”</a> contains an excerpt of the script. In this particular example firefox is doing an excessive amount of polling due to a plugin module. 138 You can increase the sample time by editing the second probe (<code class="command">timer.s(1)</code>).
149 </div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="threadtimessect.html"><strong>Prev</strong>5.3.3. Determining Time Spent in Kernel and User ...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="topsyssect.html"><strong>Next</strong>5.3.5. Tracking Most Frequently Used System Calls</a></li></ul></body></html> \ No newline at end of file 139 The output of <a class="xref" href="timeoutssect.html#timeouts">timeout.stp</a> contains the name and UID of the top 20 polling applications,
140 along with how many times each application performed each polling system call (over time).
141 <a class="xref" href="timeoutssect.html#timeoutsoutput">Example 5.16, “timeout.stp Sample Output”</a> contains an excerpt of the script.
142 In this particular example firefox is doing an excessive amount of
143 polling due to a plugin module.
144</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="threadtimessect.html"><strong>Prev</strong>5.3.3. Determining Time Spent in Kernel and User ...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="topsyssect.html"><strong>Next</strong>5.3.5. Tracking Most Frequently Used System Calls</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/topsyssect.html b/SystemTap_Beginners_Guide/topsyssect.html
index 5d2784ec..b3e0c039 100644
--- a/SystemTap_Beginners_Guide/topsyssect.html
+++ b/SystemTap_Beginners_Guide/topsyssect.html
@@ -1,9 +1,24 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.3.5. Tracking Most Frequently Used System Calls</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-profiling.html" title="5.3. Profiling" /><link rel="prev" href="timeoutssect.html" title="5.3.4. Monitoring Polling Applications" /><link rel="next" href="syscallsbyprocpidsect.html" title="5.3.6. Tracking System Call Volume Per Process" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="timeoutssect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="syscallsbyprocpidsect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="topsyssect"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.3.5. Tracking Most Frequently Used System Calls</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-profiling.html" title="5.3. Profiling" /><link rel="prev" href="timeoutssect.html" title="5.3.4. Monitoring Polling Applications" /><link rel="next" href="syscallsbyprocpidsect.html" title="5.3.6. Tracking System Call Volume Per Process" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="timeoutssect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="syscallsbyprocpidsect.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="topsyssect">
3 ⁠</a>5.3.5. Tracking Most Frequently Used System Calls</h3></div></div></div><a id="idm47748234468720" class="indexterm"></a><a id="idm47748230443984" class="indexterm"></a><a id="idm47748220180464" class="indexterm"></a><a id="idm47748230615344" class="indexterm"></a><div class="para"> 3 ⁠</a>5.3.5. Tracking Most Frequently Used System Calls</h3></div></div></div><a id="idm140174735215088" class="indexterm"></a><a id="idm140174733464208" class="indexterm"></a><a id="idm140174737378704" class="indexterm"></a><a id="idm140174737545520" class="indexterm"></a><div class="para">
4 <a class="xref" href="timeoutssect.html#timeouts">timeout.stp</a> from <a class="xref" href="timeoutssect.html">Section 5.3.4, “Monitoring Polling Applications”</a> helps you identify which applications are polling by examining a small subset of system calls ( <code class="command">poll</code>, <code class="command">select</code>, <code class="command">epoll</code>, <code class="command">itimer</code>, <code class="command">futex</code>, <code class="command">nanosleep</code>, and <code class="command">signal</code>). However, in some systems, an excessive number of system calls outside that small subset might be responsible for time spent in the kernel. If you suspect that an application is using system calls excessively, you need to identify the most frequently used system calls on the system. To do this, use <a class="xref" href="topsyssect.html#topsys">topsys.stp</a>. 4 <a class="xref" href="timeoutssect.html#timeouts">timeout.stp</a> from <a class="xref" href="timeoutssect.html">Section 5.3.4, “Monitoring Polling Applications”</a>
5 helps you identify which applications
6 are polling by examining a small subset of system calls (
7 <code class="command">poll</code>,
8 <code class="command">select</code>,
9 <code class="command">epoll</code>,
10 <code class="command">itimer</code>,
11 <code class="command">futex</code>,
12 <code class="command">nanosleep</code>, and
13 <code class="command">signal</code>).
14 However, in some systems, an excessive number of system calls
15 outside that small subset
16 might be responsible for time spent in the
17 kernel. If you suspect that an application is using
18 system calls excessively, you need to
19 identify the most frequently used system calls on the
20 system. To do this, use <a class="xref" href="topsyssect.html#topsys">topsys.stp</a>.
5 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">topsys.stp</div> 21 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">topsys.stp</div>
6
7<pre class="programlisting">#! /usr/bin/env stap 22<pre class="programlisting">#! /usr/bin/env stap
8# 23#
9# This script continuously lists the top 20 systemcalls in the interval 24# This script continuously lists the top 20 systemcalls in the interval
@@ -29,9 +44,10 @@ probe timer.s(5) {
29 printf("--------------------------------------------------------------\n") 44 printf("--------------------------------------------------------------\n")
30} 45}
31</pre> 46</pre>
32 </div><div class="para"> 47</div><div class="para">
33 <a class="xref" href="topsyssect.html#topsys">topsys.stp</a> lists the top 20 system calls used by the system per 5-second interval. It also lists how many times each system call was used during that period. Refer to <a class="xref" href="topsyssect.html#topsysoutput">Example 5.17, “topsys.stp Sample Output”</a> for a sample output. 48 <a class="xref" href="topsyssect.html#topsys">topsys.stp</a> lists the top 20 system calls used by the system per 5-second interval. It also lists
34 </div><a id="idm47748174084368" class="indexterm"></a><a id="idm47748218616992" class="indexterm"></a><a id="idm47748181785008" class="indexterm"></a><div class="example"><a id="topsysoutput"> 49 how many times each system call was used during that period. Refer to <a class="xref" href="topsyssect.html#topsysoutput">Example 5.17, “topsys.stp Sample Output”</a> for a sample output.
50</div><a id="idm140174733050128" class="indexterm"></a><a id="idm140174733421168" class="indexterm"></a><a id="idm140174734629856" class="indexterm"></a><div class="example"><a id="topsysoutput">
35 ⁠</a><p class="title"><strong>Example 5.17. <a class="xref" href="topsyssect.html#topsys">topsys.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">-------------------------------------------------------------- 51 ⁠</a><p class="title"><strong>Example 5.17. <a class="xref" href="topsyssect.html#topsys">topsys.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">--------------------------------------------------------------
36 SYSCALL COUNT 52 SYSCALL COUNT
37 gettimeofday 1857 53 gettimeofday 1857
diff --git a/SystemTap_Beginners_Guide/traceio2sect.html b/SystemTap_Beginners_Guide/traceio2sect.html
index 1ccecf84..361bdcb4 100644
--- a/SystemTap_Beginners_Guide/traceio2sect.html
+++ b/SystemTap_Beginners_Guide/traceio2sect.html
@@ -1,9 +1,8 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.2.4. I/O Monitoring (By Device)</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-disk.html" title="5.2. Disk" /><link rel="prev" href="traceiosect.html" title="5.2.3. Track Cumulative IO" /><link rel="next" href="inodewatchsect.html" title="5.2.5. Monitoring Reads and Writes to a File" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="traceiosect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="inodewatchsect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="traceio2sect"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.2.4. I/O Monitoring (By Device)</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-disk.html" title="5.2. Disk" /><link rel="prev" href="traceiosect.html" title="5.2.3. Track Cumulative IO" /><link rel="next" href="inodewatchsect.html" title="5.2.5. Monitoring Reads and Writes to a File" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="traceiosect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="inodewatchsect.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="traceio2sect">
3 ⁠</a>5.2.4. I/O Monitoring (By Device)</h3></div></div></div><a id="idm47748218300896" class="indexterm"></a><a id="idm47748226055424" class="indexterm"></a><a id="idm47748177828528" class="indexterm"></a><a id="idm47748224893056" class="indexterm"></a><a id="idm47748181890768" class="indexterm"></a><div class="para"> 3 ⁠</a>5.2.4. I/O Monitoring (By Device)</h3></div></div></div><a id="idm140174743046720" class="indexterm"></a><a id="idm140174741303712" class="indexterm"></a><a id="idm140174736828032" class="indexterm"></a><a id="idm140174743094448" class="indexterm"></a><a id="idm140174732284992" class="indexterm"></a><div class="para">
4 This section describes how to monitor I/O activity on a specific device. 4 This section describes how to monitor I/O activity on a specific device.
5 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">traceio2.stp</div> 5 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">traceio2.stp</div>
6
7<pre class="programlisting">#! /usr/bin/env stap 6<pre class="programlisting">#! /usr/bin/env stap
8 7
9global device_of_interest 8global device_of_interest
@@ -24,15 +23,7 @@ probe vfs.write, vfs.read
24 execname(), pid(), ppfunc(), dev) 23 execname(), pid(), ppfunc(), dev)
25} 24}
26</pre> 25</pre>
27 </div><a id="idm47748218752304" class="indexterm"></a><a id="idm47748212816560" class="indexterm"></a><a id="idm47748187979024" class="indexterm"></a><a id="idm47748222595408" class="indexterm"></a><a id="idm47748219421072" class="indexterm"></a><a id="idm47748213449392" class="indexterm"></a><div class="para"> 26</div><a id="idm140174736339264" class="indexterm"></a><a id="idm140174730540000" class="indexterm"></a><a id="idm140174736206224" class="indexterm"></a><a id="idm140174736798432" class="indexterm"></a><a id="idm140174736068496" class="indexterm"></a><a id="idm140174742637136" class="indexterm"></a><div class="para"><a class="xref" href="traceio2sect.html#traceio2">traceio2.stp</a> takes 1 argument: the whole device number. To get this number, use <code class="command">stat -c "0x%D" <em class="replaceable">directory</em></code>, where <code class="command"><em class="replaceable">directory</em></code> is located in the device to be monitored.</div><a id="idm140174732229712" class="indexterm"></a><a id="idm140174737156352" class="indexterm"></a><a id="idm140174738646592" class="indexterm"></a><div class="para">The <code class="command">usrdev2kerndev()</code> function converts the whole device number into the format understood by the kernel. The output produced by <code class="command">usrdev2kerndev()</code> is used in conjunction with the <code class="command">MKDEV()</code>, <code class="command">MINOR()</code>, and <code class="command">MAJOR()</code> functions to determine the major and minor numbers of a specific device.</div><div class="para">The output of <a class="xref" href="traceio2sect.html#traceio2">traceio2.stp</a> includes the name and ID of any process performing a read/write, the function it is performing (that is, <code class="command">vfs_read</code> or <code class="command">vfs_write</code>), and the kernel device number.</div><div class="para">The following example is an excerpt from the full output of <code class="command">stap traceio2.stp 0x805</code>, where <code class="literal">0x805</code> is the whole device number of <code class="filename">/home</code>. <code class="filename">/home</code> resides in <code class="filename">/dev/sda5</code>, which is the device we wish to monitor.</div><div class="example"><a id="traceio2output">
28 <a class="xref" href="traceio2sect.html#traceio2">traceio2.stp</a> takes 1 argument: the whole device number. To get this number, use <code class="command">stat -c "0x%D" <em class="replaceable">directory</em></code>, where <code class="command"><em class="replaceable">directory</em></code> is located in the device to be monitored.
29 </div><a id="idm47748223221408" class="indexterm"></a><a id="idm47748230537008" class="indexterm"></a><a id="idm47748222628960" class="indexterm"></a><div class="para">
30 The <code class="command">usrdev2kerndev()</code> function converts the whole device number into the format understood by the kernel. The output produced by <code class="command">usrdev2kerndev()</code> is used in conjunction with the <code class="command">MKDEV()</code>, <code class="command">MINOR()</code>, and <code class="command">MAJOR()</code> functions to determine the major and minor numbers of a specific device.
31 </div><div class="para">
32 The output of <a class="xref" href="traceio2sect.html#traceio2">traceio2.stp</a> includes the name and ID of any process performing a read/write, the function it is performing (that is, <code class="command">vfs_read</code> or <code class="command">vfs_write</code>), and the kernel device number.
33 </div><div class="para">
34 The following example is an excerpt from the full output of <code class="command">stap traceio2.stp 0x805</code>, where <code class="literal">0x805</code> is the whole device number of <code class="filename">/home</code>. <code class="filename">/home</code> resides in <code class="filename">/dev/sda5</code>, which is the device we wish to monitor.
35 </div><div class="example"><a id="traceio2output">
36 ⁠</a><p class="title"><strong>Example 5.9. <a class="xref" href="traceio2sect.html#traceio2">traceio2.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">[...] 27 ⁠</a><p class="title"><strong>Example 5.9. <a class="xref" href="traceio2sect.html#traceio2">traceio2.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">[...]
37synergyc(3722) vfs_read 0x800005 28synergyc(3722) vfs_read 0x800005
38synergyc(3722) vfs_read 0x800005 29synergyc(3722) vfs_read 0x800005
diff --git a/SystemTap_Beginners_Guide/traceiosect.html b/SystemTap_Beginners_Guide/traceiosect.html
index afa0cbd3..acfde8ea 100644
--- a/SystemTap_Beginners_Guide/traceiosect.html
+++ b/SystemTap_Beginners_Guide/traceiosect.html
@@ -1,9 +1,8 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.2.3. Track Cumulative IO</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-disk.html" title="5.2. Disk" /><link rel="prev" href="iotimesect.html" title="5.2.2. Tracking I/O Time For Each File Read or Write" /><link rel="next" href="traceio2sect.html" title="5.2.4. I/O Monitoring (By Device)" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="iotimesect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="traceio2sect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="traceiosect"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">5.2.3. Track Cumulative IO</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="mainsect-disk.html" title="5.2. Disk" /><link rel="prev" href="iotimesect.html" title="5.2.2. Tracking I/O Time For Each File Read or Write" /><link rel="next" href="traceio2sect.html" title="5.2.4. I/O Monitoring (By Device)" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="iotimesect.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="traceio2sect.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="traceiosect">
3 ⁠</a>5.2.3. Track Cumulative IO</h3></div></div></div><a id="idm47748220185904" class="indexterm"></a><a id="idm47748175080768" class="indexterm"></a><a id="idm47748183091184" class="indexterm"></a><a id="idm47748183056160" class="indexterm"></a><a id="idm47748180437728" class="indexterm"></a><a id="idm47748230864960" class="indexterm"></a><div class="para"> 3 ⁠</a>5.2.3. Track Cumulative IO</h3></div></div></div><a id="idm140174741723040" class="indexterm"></a><a id="idm140174741938240" class="indexterm"></a><a id="idm140174736492576" class="indexterm"></a><a id="idm140174741722688" class="indexterm"></a><a id="idm140174741605488" class="indexterm"></a><a id="idm140174740479248" class="indexterm"></a><div class="para">
4 This section describes how to track the cumulative amount of I/O to the system. 4 This section describes how to track the cumulative amount of I/O to the system.
5 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">traceio.stp</div> 5 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">traceio.stp</div>
6
7<pre class="programlisting">#! /usr/bin/env stap 6<pre class="programlisting">#! /usr/bin/env stap
8# traceio.stp 7# traceio.stp
9# Copyright (C) 2007 Red Hat, Inc., Eugene Teo &lt;eteo@redhat.com&gt; 8# Copyright (C) 2007 Red Hat, Inc., Eugene Teo &lt;eteo@redhat.com&gt;
@@ -54,11 +53,15 @@ probe timer.s(1) {
54 # so the values are cumulative since the script started. 53 # so the values are cumulative since the script started.
55} 54}
56</pre> 55</pre>
57 </div><div class="para"> 56</div><div class="para">
58 <a class="xref" href="traceiosect.html#traceio">traceio.stp</a> prints the top ten executables generating I/O traffic over time. In addition, it also tracks the cumulative amount of I/O reads and writes done by those ten executables. This information is tracked and printed out in 1-second intervals, and in descending order. 57 <a class="xref" href="traceiosect.html#traceio">traceio.stp</a> prints the top ten executables generating I/O traffic over time. In
59 </div><a id="idm47748220256464" class="indexterm"></a><a id="idm47748226105888" class="indexterm"></a><a id="idm47748226191072" class="indexterm"></a><div class="para"> 58 addition, it also tracks the cumulative amount of I/O reads and writes done by those ten
60 Note that <a class="xref" href="traceiosect.html#traceio">traceio.stp</a> also uses the local variable <code class="command">$return</code>, which is also used by <a class="xref" href="mainsect-disk.html#scriptdisktop">disktop.stp</a> from <a class="xref" href="mainsect-disk.html#disktop">Section 5.2.1, “Summarizing Disk Read/Write Traffic”</a>. 59 executables. This information is tracked and printed out in 1-second intervals, and in
61 </div><div class="example"><a id="traceiooutput"> 60 descending order.
61</div><a id="idm140174742490864" class="indexterm"></a><a id="idm140174732834160" class="indexterm"></a><a id="idm140174733356160" class="indexterm"></a><div class="para">
62 Note that <a class="xref" href="traceiosect.html#traceio">traceio.stp</a> also uses the local variable <code class="command">$return</code>,
63 which is also used by <a class="xref" href="mainsect-disk.html#scriptdisktop">disktop.stp</a> from <a class="xref" href="mainsect-disk.html#disktop">Section 5.2.1, “Summarizing Disk Read/Write Traffic”</a>.
64</div><div class="example"><a id="traceiooutput">
62 ⁠</a><p class="title"><strong>Example 5.8. <a class="xref" href="traceiosect.html#traceio">traceio.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">[...] 65 ⁠</a><p class="title"><strong>Example 5.8. <a class="xref" href="traceiosect.html#traceio">traceio.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">[...]
63 Xorg r: 583401 KiB w: 0 KiB 66 Xorg r: 583401 KiB w: 0 KiB
64 floaters r: 96 KiB w: 7130 KiB 67 floaters r: 96 KiB w: 7130 KiB
diff --git a/SystemTap_Beginners_Guide/typecasting.html b/SystemTap_Beginners_Guide/typecasting.html
index f96c1fb2..01980d08 100644
--- a/SystemTap_Beginners_Guide/typecasting.html
+++ b/SystemTap_Beginners_Guide/typecasting.html
@@ -1,10 +1,34 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.3.2.2. Typecasting</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="targetvariables.html" title="3.3.2. Target Variables" /><link rel="prev" href="targetvariables.html" title="3.3.2. Target Variables" /><link rel="next" href="targetavailable.html" title="3.3.2.3. Checking Target Variable Availability" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="targetvariables.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="targetavailable.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="typecasting"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.3.2.2. Typecasting</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="targetvariables.html" title="3.3.2. Target Variables" /><link rel="prev" href="targetvariables.html" title="3.3.2. Target Variables" /><link rel="next" href="targetavailable.html" title="3.3.2.3. Checking Target Variable Availability" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="targetvariables.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="targetavailable.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="typecasting">
3 ⁠</a>3.3.2.2. Typecasting</h4></div></div></div><a id="idm47748180457792" class="indexterm"></a><div class="para"> 3 ⁠</a>3.3.2.2. Typecasting</h4></div></div></div><a id="idm140174731976128" class="indexterm"></a><div class="para">
4 In most cases SystemTap can determine a variable's type from the debug information. However, code may use void pointers for variables (for example memory allocation routines) and typing information is not available. Also the typing information available within a probe handler is not available within a function; SystemTap functions arguments use a long in place of a typed pointer. SystemTap's <code class="command">@cast</code> operator (first available in SystemTap 0.9) can be used to indicate the correct type of the object. 4 In most cases SystemTap can determine a variable's type
5 </div><div class="para"> 5 from the debug information.
6 The <a class="xref" href="typecasting.html#casting">Example 3.9, “Casting Example”</a> is from the <code class="command">task.stp</code> tapset. The function returns the value of the <code class="command">state</code> field from a <code class="command">task_struct</code> pointed to by the long <code class="command">task</code>. The first argument of the <code class="command">@cast</code> operator, <code class="command">task</code>, is the pointer to the object. The second argument is the type to cast the object to, <code class="command">task_struct</code>. The third argument lists what file that the type definition information comes from and is optional. With the <code class="command">@cast</code> operator the various fields of this particular <code class="command">task_struct</code> <code class="command">task</code> can be accessed; in this example the <code class="command">state</code> field is obtained. 6 However, code may use void pointers for variables
7 </div><div class="example"><a id="casting"> 7 (for example memory allocation routines) and typing information is
8 not available.
9 Also the typing information available within a probe handler is not
10 available within a function;
11 SystemTap functions arguments use a long in place of a typed pointer.
12 SystemTap's <code class="command">@cast</code> operator (first available in
13 SystemTap 0.9) can be used to indicate
14 the correct type of the object.
15</div><div class="para">
16 The <a class="xref" href="typecasting.html#casting">Example 3.9, “Casting Example”</a> is from the
17 <code class="command">task.stp</code> tapset.
18 The function returns the value of the <code class="command">state</code>
19 field from a <code class="command">task_struct</code> pointed to by
20 the long <code class="command">task</code>.
21 The first argument of the <code class="command">@cast</code> operator,
22 <code class="command">task</code>, is the pointer to the object.
23 The second argument is the type to cast the object to,
24 <code class="command">task_struct</code>.
25 The third argument lists what file that the type definition
26 information comes from and is optional.
27 With the <code class="command">@cast</code> operator the various fields of
28 this particular <code class="command">task_struct</code> <code class="command">task</code>
29 can be accessed; in this example the <code class="command">state</code> field
30 is obtained.
31</div><div class="example"><a id="casting">
8 ⁠</a><p class="title"><strong>Example 3.9. Casting Example</strong></p><div class="example-contents"><pre class="programlisting">function task_state:long (task:long) 32 ⁠</a><p class="title"><strong>Example 3.9. Casting Example</strong></p><div class="example-contents"><pre class="programlisting">function task_state:long (task:long)
9{ 33{
10 return @cast(task, "task_struct", "kernel&lt;linux/sched.h&gt;")-&gt;state 34 return @cast(task, "task_struct", "kernel&lt;linux/sched.h&gt;")-&gt;state
diff --git a/SystemTap_Beginners_Guide/understanding-how-systemtap-works.html b/SystemTap_Beginners_Guide/understanding-how-systemtap-works.html
index 78b25799..f78aa733 100644
--- a/SystemTap_Beginners_Guide/understanding-how-systemtap-works.html
+++ b/SystemTap_Beginners_Guide/understanding-how-systemtap-works.html
@@ -1,25 +1,49 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Chapter 3. Understanding How SystemTap Works</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="using-usage.html" title="2.3. Running SystemTap Scripts" /><link rel="next" href="scripts.html" title="3.2. SystemTap Scripts" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="using-usage.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="scripts.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" lang="en-US"><div class="titlepage"><div><div><h1 class="title"><a id="understanding-how-systemtap-works"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Chapter 3. Understanding How SystemTap Works</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="using-usage.html" title="2.3. Running SystemTap Scripts" /><link rel="next" href="scripts.html" title="3.2. SystemTap Scripts" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="using-usage.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="scripts.html"><strong>Next</strong></a></li></ul><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="understanding-how-systemtap-works">
3 ⁠</a>Chapter 3. Understanding How SystemTap Works</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="understanding-how-systemtap-works.html#understanding-architecture-tools">3.1. Architecture</a></span></dt><dt><span class="section"><a href="scripts.html">3.2. SystemTap Scripts</a></span></dt><dd><dl><dt><span class="section"><a href="scripts.html#systemtapscript-events">3.2.1. Event</a></span></dt><dt><span class="section"><a href="systemtapscript-handler.html">3.2.2. SystemTap Handler/Body</a></span></dt></dl></dd><dt><span class="section"><a href="scriptconstructions.html">3.3. Basic SystemTap Handler Constructs</a></span></dt><dd><dl><dt><span class="section"><a href="scriptconstructions.html#variablesconstructs">3.3.1. Variables</a></span></dt><dt><span class="section"><a href="targetvariables.html">3.3.2. Target Variables</a></span></dt><dt><span class="section"><a href="handlerconditionalstatements.html">3.3.3. Conditional Statements</a></span></dt><dt><span class="section"><a href="commandlineargssect.html">3.3.4. Command-Line Arguments</a></span></dt></dl></dd><dt><span class="section"><a href="associativearrays.html">3.4. Associative Arrays</a></span></dt><dt><span class="section"><a href="arrayoperators.html">3.5. Array Operations in SystemTap</a></span></dt><dd><dl><dt><span class="section"><a href="arrayoperators.html#arrayops-assignvalue">3.5.1. Assigning an Associated Value</a></span></dt><dt><span class="section"><a href="arrayops-readvalues.html">3.5.2. Reading Values From Arrays</a></span></dt><dt><span class="section"><a href="arrayops-increment.html">3.5.3. Incrementing Associated Values</a></span></dt><dt><span class="section"><a href="arrayops-foreach.html">3.5.4. Processing Multiple Elements in an Array</a></span></dt><dt><span class="section"><a href="arrayops-deleting.html">3.5.5. Clearing/Deleting Arrays and Array Elements</a></span></dt><dt><span class="section"><a href="arrayops-conditionals.html">3.5.6. Using Arrays in Conditional Statements</a></span></dt><dt><span class="section"><a href="arrayops-aggregates.html">3.5.7. Computing for Statistical Aggregates</a></span></dt></dl></dd><dt><span class="section"><a href="understanding-tapsets.html">3.6. Tapsets</a></span></dt></dl></div><a id="idm47748215268544" class="indexterm"></a><div class="para"> 3 ⁠</a>Chapter 3. Understanding How SystemTap Works</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="understanding-how-systemtap-works.html#understanding-architecture-tools">3.1. Architecture</a></span></dt><dt><span class="section"><a href="scripts.html">3.2. SystemTap Scripts</a></span></dt><dd><dl><dt><span class="section"><a href="scripts.html#systemtapscript-events">3.2.1. Event</a></span></dt><dt><span class="section"><a href="systemtapscript-handler.html">3.2.2. SystemTap Handler/Body</a></span></dt></dl></dd><dt><span class="section"><a href="scriptconstructions.html">3.3. Basic SystemTap Handler Constructs</a></span></dt><dd><dl><dt><span class="section"><a href="scriptconstructions.html#variablesconstructs">3.3.1. Variables</a></span></dt><dt><span class="section"><a href="targetvariables.html">3.3.2. Target Variables</a></span></dt><dt><span class="section"><a href="handlerconditionalstatements.html">3.3.3. Conditional Statements</a></span></dt><dt><span class="section"><a href="commandlineargssect.html">3.3.4. Command-Line Arguments</a></span></dt></dl></dd><dt><span class="section"><a href="associativearrays.html">3.4. Associative Arrays</a></span></dt><dt><span class="section"><a href="arrayoperators.html">3.5. Array Operations in SystemTap</a></span></dt><dd><dl><dt><span class="section"><a href="arrayoperators.html#arrayops-assignvalue">3.5.1. Assigning an Associated Value</a></span></dt><dt><span class="section"><a href="arrayops-readvalues.html">3.5.2. Reading Values From Arrays</a></span></dt><dt><span class="section"><a href="arrayops-increment.html">3.5.3. Incrementing Associated Values</a></span></dt><dt><span class="section"><a href="arrayops-foreach.html">3.5.4. Processing Multiple Elements in an Array</a></span></dt><dt><span class="section"><a href="arrayops-deleting.html">3.5.5. Clearing/Deleting Arrays and Array Elements</a></span></dt><dt><span class="section"><a href="arrayops-conditionals.html">3.5.6. Using Arrays in Conditional Statements</a></span></dt><dt><span class="section"><a href="arrayops-aggregates.html">3.5.7. Computing for Statistical Aggregates</a></span></dt></dl></dd><dt><span class="section"><a href="understanding-tapsets.html">3.6. Tapsets</a></span></dt></dl></div><a id="idm140174735019504" class="indexterm"></a><div class="para">
4 SystemTap allows users to write and reuse simple scripts to deeply examine the activities of a running Linux system. These scripts can be designed to extract data, filter it, and summarize it quickly (and safely), enabling the diagnosis of complex performance (or even functional) problems. 4 SystemTap allows users to write and reuse simple scripts to deeply
5 </div><a id="idm47748215269952" class="indexterm"></a><a id="idm47748215271648" class="indexterm"></a><a id="idm47748215275408" class="indexterm"></a><div class="para"> 5 examine the activities of a running Linux system. These scripts can be
6 The essential idea behind a SystemTap script is to name <span class="emphasis"><em>events</em></span>, and to give them <span class="emphasis"><em>handlers</em></span>. When SystemTap runs the script, SystemTap monitors for the event; once the event occurs, the Linux kernel then runs the handler as a quick sub-routine, then resumes. 6 designed to extract data, filter it, and summarize it quickly (and
7 </div><a id="idm47748215276640" class="indexterm"></a><a id="idm47748215278928" class="indexterm"></a><div class="para"> 7 safely), enabling the diagnosis of complex performance (or even
8 There are several kind of events; entering/exiting a function, timer expiration, session termination, etc. A handler is a series of script language statements that specify the work to be done whenever the event occurs. This work normally includes extracting data from the event context, storing them into internal variables, and printing results. 8 functional) problems.
9 </div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="understanding-architecture-tools"> 9 </div><a id="idm140174735021312" class="indexterm"></a><a id="idm140174735023296" class="indexterm"></a><a id="idm140174735024432" class="indexterm"></a><div class="para">The essential idea behind a SystemTap script is to name
10 ⁠</a>3.1. Architecture</h2></div></div></div><a id="idm47748215282384" class="indexterm"></a><a id="idm47748215283792" class="indexterm"></a><a id="idm47748215284752" class="indexterm"></a><div class="para"> 10 <span class="emphasis"><em>events</em></span>, and to give them
11 A SystemTap session begins when you run a SystemTap script. This session occurs in the following fashion: 11 <span class="emphasis"><em>handlers</em></span>. When SystemTap runs the script, SystemTap
12 </div><div xmlns:d="http://docbook.org/ns/docbook" class="procedure"><a id="systemtapsession"> 12 monitors for the event; once the event occurs, the Linux kernel then runs
13 ⁠</a><p class="title"><strong>Procedure 3.1. SystemTap Session</strong></p><a id="idm47748215287120" class="indexterm"></a><a id="idm47748215288928" class="indexterm"></a><a id="idm47748215289920" class="indexterm"></a><ol class="1"><li class="step"><div class="para"> 13 the handler as a quick sub-routine, then resumes.
14 First, SystemTap checks the script against the existing tapset library (normally in <code class="filename">/usr/share/systemtap/tapset/</code> for any tapsets used. SystemTap will then substitute any located tapsets with their corresponding definitions in the tapset library. 14 </div><a id="idm140174735028016" class="indexterm"></a><a id="idm140174735029104" class="indexterm"></a><div class="para">
15 </div></li><li class="step"><div class="para"> 15 There are several kind of events; entering/exiting a function, timer
16 SystemTap then translates the script to C, running the system C compiler to create a kernel module from it. The tools that perform this step are contained in the <code class="filename">systemtap</code> package (refer to <a class="xref" href="using-systemtap.html#installproper">Section 2.1.1, “Installing SystemTap”</a> for more information). 16 expiration, session termination, etc. A handler is a series of script
17 </div></li><li class="step"><div class="para"> 17 language statements that specify the work to be done whenever the event
18 SystemTap loads the module, then enables all the probes (events and handlers) in the script. The <code class="command">staprun</code> in the <code class="filename">systemtap-runtime</code> package (refer to <a class="xref" href="using-systemtap.html#installproper">Section 2.1.1, “Installing SystemTap”</a> for more information) provides this functionality. 18 occurs. This work normally includes extracting data from the event context,
19 </div></li><li class="step"><div class="para"> 19 storing them into internal variables, and printing results.
20 As the events occur, their corresponding handlers are executed. 20</div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="understanding-architecture-tools">
21 </div></li><li class="step"><div class="para"> 21 ⁠</a>3.1. Architecture</h2></div></div></div><a id="idm140174735034800" class="indexterm"></a><a id="idm140174735034640" class="indexterm"></a><a id="idm140174735035728" class="indexterm"></a><div class="para">
22 Once the SystemTap session is terminated, the probes are disabled, and the kernel module is unloaded. 22 A SystemTap session begins when you run a SystemTap script. This
23 </div></li></ol></div><div class="para"> 23 session occurs in the following fashion:
24 This sequence is driven from a single command-line program: <code class="command">stap</code>. This program is SystemTap's main front-end tool. For more information about <code class="command">stap</code>, refer to <code class="command">man stap</code> (once SystemTap is properly installed on your machine). 24 </div><div xmlns:d="http://docbook.org/ns/docbook" class="procedure"><a id="systemtapsession">
25 </div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="using-usage.html"><strong>Prev</strong>2.3. Running SystemTap Scripts</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="scripts.html"><strong>Next</strong>3.2. SystemTap Scripts</a></li></ul></body></html> \ No newline at end of file 25 ⁠</a><p class="title"><strong>Procedure 3.1. SystemTap Session</strong></p><a id="idm140174735038464" class="indexterm"></a><a id="idm140174735039376" class="indexterm"></a><a id="idm140174735040496" class="indexterm"></a><ol class="1"><li class="step"><div class="para">
26 First, SystemTap checks the script against the existing tapset library
27 (normally in <code class="filename">/usr/share/systemtap/tapset/</code> for any
28 tapsets used. SystemTap will then substitute any located tapsets with their
29 corresponding definitions in the tapset library.
30 </div></li><li class="step"><div class="para">SystemTap then translates the script to C, running the system C
31 compiler to create a kernel module from it. The tools that perform
32 this step are contained in the <code class="filename">systemtap</code> package
33 (refer to <a class="xref" href="using-systemtap.html#installproper">Section 2.1.1, “Installing SystemTap”</a> for more information).
34 </div></li><li class="step"><div class="para">
35 SystemTap loads the module, then enables all the probes (events and
36 handlers) in the script. The <code class="command">staprun</code> in the
37 <code class="filename">systemtap-runtime</code> package (refer to <a class="xref" href="using-systemtap.html#installproper">Section 2.1.1, “Installing SystemTap”</a> for more information) provides this
38 functionality.
39 </div></li><li class="step"><div class="para">
40 As the events occur, their corresponding handlers are executed.
41 </div></li><li class="step"><div class="para">
42 Once the SystemTap session is terminated, the probes are disabled, and
43 the kernel module is unloaded.
44 </div></li></ol></div><div class="para">This sequence is driven from a single command-line program:
45 <code class="command">stap</code>. This program is SystemTap's main front-end
46 tool. For more information about <code class="command">stap</code>, refer to
47 <code class="command">man stap</code> (once SystemTap is properly installed on your
48 machine).
49 </div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="using-usage.html"><strong>Prev</strong>2.3. Running SystemTap Scripts</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="scripts.html"><strong>Next</strong>3.2. SystemTap Scripts</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/understanding-tapsets.html b/SystemTap_Beginners_Guide/understanding-tapsets.html
index c203741f..cd40de67 100644
--- a/SystemTap_Beginners_Guide/understanding-tapsets.html
+++ b/SystemTap_Beginners_Guide/understanding-tapsets.html
@@ -1,11 +1,30 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.6. Tapsets</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="understanding-how-systemtap-works.html" title="Chapter 3. Understanding How SystemTap Works" /><link rel="prev" href="arrayops-aggregates.html" title="3.5.7. Computing for Statistical Aggregates" /><link rel="next" href="userspace-probing.html" title="Chapter 4. User-space Probing" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="arrayops-aggregates.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="userspace-probing.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="understanding-tapsets"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">3.6. Tapsets</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="understanding-how-systemtap-works.html" title="Chapter 3. Understanding How SystemTap Works" /><link rel="prev" href="arrayops-aggregates.html" title="3.5.7. Computing for Statistical Aggregates" /><link rel="next" href="userspace-probing.html" title="Chapter 4. User-space Probing" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="arrayops-aggregates.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="userspace-probing.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="understanding-tapsets">
3 ⁠</a>3.6. Tapsets</h2></div></div></div><a id="idm47748176328160" class="indexterm"></a><div class="para"> 3 ⁠</a>3.6. Tapsets</h2></div></div></div><a id="idm140174740797136" class="indexterm"></a><div class="para">
4 <em class="firstterm">Tapsets</em> are scripts that form a library of pre-written probes and functions to be used in SystemTap scripts. When a user runs a SystemTap script, SystemTap checks the script's probe events and handlers against the tapset library; SystemTap then loads the corresponding probes and functions before translating the script to C (refer to <a class="xref" href="understanding-how-systemtap-works.html#understanding-architecture-tools">Section 3.1, “Architecture”</a> for information on what transpires in a SystemTap session). 4 <em class="firstterm">Tapsets</em> are scripts that form a library of
5 </div><div class="para"> 5 pre-written probes and functions to be used in SystemTap scripts. When a
6 Like SystemTap scripts, tapsets use the file name extension <code class="filename">.stp</code>. The standard library of tapsets is located in <code class="filename">/usr/share/systemtap/tapset/</code> by default. However, unlike SystemTap scripts, tapsets are not meant for direct execution; rather, they constitute the library from which other scripts can pull definitions. 6 user runs a SystemTap script, SystemTap checks the script's probe events
7 </div><div class="para"> 7 and handlers against the tapset library; SystemTap then loads the
8 The tapset library is an abstraction layer designed to make it easier for users to define events and functions. Tapsets provide useful aliases for functions that users may want to specify as an event; knowing the proper alias to use is, for the most part, easier than remembering specific kernel functions that might vary between kernel versions. 8 corresponding probes and functions before translating the script to C
9 </div><div class="para"> 9 (refer to <a class="xref" href="understanding-how-systemtap-works.html#understanding-architecture-tools">Section 3.1, “Architecture”</a> for
10 Several handlers and functions in <a class="xref" href="scripts.html#systemtapscript-events">Section 3.2.1, “Event”</a> and <a class="xref" href="systemtapscript-handler.html#systemtapscript-functions">SystemTap Functions</a> are defined in tapsets. For example, <code class="command">thread_indent()</code> is defined in <code class="filename">indent.stp</code>. 10 information on what transpires in a SystemTap session).
11 </div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayops-aggregates.html"><strong>Prev</strong>3.5.7. Computing for Statistical Aggregates</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="userspace-probing.html"><strong>Next</strong>Chapter 4. User-space Probing</a></li></ul></body></html> \ No newline at end of file 11 </div><div class="para">
12 Like SystemTap scripts, tapsets use the file name extension
13 <code class="filename">.stp</code>. The standard library of tapsets is located in
14 <code class="filename">/usr/share/systemtap/tapset/</code> by default. However,
15 unlike SystemTap scripts, tapsets are not meant for direct execution;
16 rather, they constitute the library from which other scripts can pull
17 definitions.
18 </div><div class="para">
19 The tapset library is an abstraction layer designed to make it
20 easier for users to define events and functions.
21 Tapsets provide useful aliases for functions that users may want to
22 specify as an event; knowing the proper alias to use is, for the most
23 part, easier than remembering specific kernel functions that might vary
24 between kernel versions.
25 </div><div class="para">
26 Several handlers and functions in <a class="xref" href="scripts.html#systemtapscript-events">Section 3.2.1, “Event”</a>
27 and <a class="xref" href="systemtapscript-handler.html#systemtapscript-functions">SystemTap Functions</a> are defined in tapsets.
28 For example, <code class="command">thread_indent()</code> is defined in
29 <code class="filename">indent.stp</code>.
30 </div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayops-aggregates.html"><strong>Prev</strong>3.5.7. Computing for Statistical Aggregates</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="userspace-probing.html"><strong>Next</strong>Chapter 4. User-space Probing</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/useful-systemtap-scripts.html b/SystemTap_Beginners_Guide/useful-systemtap-scripts.html
index 091dbf84..f837e26f 100644
--- a/SystemTap_Beginners_Guide/useful-systemtap-scripts.html
+++ b/SystemTap_Beginners_Guide/useful-systemtap-scripts.html
@@ -1,15 +1,8 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Chapter 5. Useful SystemTap Scripts</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="ustack.html" title="4.3. User-Space Stack Backtraces" /><link rel="next" href="mainsect-disk.html" title="5.2. Disk" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="ustack.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="mainsect-disk.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" lang="en-US"><div class="titlepage"><div><div><h1 class="title"><a id="useful-systemtap-scripts"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Chapter 5. Useful SystemTap Scripts</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="ustack.html" title="4.3. User-Space Stack Backtraces" /><link rel="next" href="mainsect-disk.html" title="5.2. Disk" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="ustack.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="mainsect-disk.html"><strong>Next</strong></a></li></ul><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="useful-systemtap-scripts">
3 ⁠</a>Chapter 5. Useful SystemTap Scripts</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="useful-systemtap-scripts.html#mainsect-network">5.1. Network</a></span></dt><dd><dl><dt><span class="section"><a href="useful-systemtap-scripts.html#nettopsect">5.1.1. Network Profiling</a></span></dt><dt><span class="section"><a href="useful-systemtap-scripts.html#sockettracesect">5.1.2. Tracing Functions Called in Network Socket Code</a></span></dt><dt><span class="section"><a href="useful-systemtap-scripts.html#tcpconnectionssect">5.1.3. Monitoring Incoming TCP Connections</a></span></dt><dt><span class="section"><a href="useful-systemtap-scripts.html#tcpdumplikesect">5.1.4. Monitoring TCP Packets</a></span></dt><dt><span class="section"><a href="useful-systemtap-scripts.html#dropwatchsect">5.1.5. Monitoring Network Packets Drops in Kernel</a></span></dt></dl></dd><dt><span class="section"><a href="mainsect-disk.html">5.2. Disk</a></span></dt><dd><dl><dt><span class="section"><a href="mainsect-disk.html#disktop">5.2.1. Summarizing Disk Read/Write Traffic</a></span></dt><dt><span class="section"><a href="iotimesect.html">5.2.2. Tracking I/O Time For Each File Read or Write</a></span></dt><dt><span class="section"><a href="traceiosect.html">5.2.3. Track Cumulative IO</a></span></dt><dt><span class="section"><a href="traceio2sect.html">5.2.4. I/O Monitoring (By Device)</a></span></dt><dt><span class="section"><a href="inodewatchsect.html">5.2.5. Monitoring Reads and Writes to a File</a></span></dt><dt><span class="section"><a href="inodewatch2sect.html">5.2.6. Monitoring Changes to File Attributes</a></span></dt><dt><span class="section"><a href="ioblktimesect.html">5.2.7. Periodically Print I/O Block Time</a></span></dt></dl></dd><dt><span class="section"><a href="mainsect-profiling.html">5.3. Profiling</a></span></dt><dd><dl><dt><span class="section"><a href="mainsect-profiling.html#countcallssect">5.3.1. Counting Function Calls Made</a></span></dt><dt><span class="section"><a href="paracallgraph.html">5.3.2. Call Graph Tracing</a></span></dt><dt><span class="section"><a href="threadtimessect.html">5.3.3. Determining Time Spent in Kernel and User Space</a></span></dt><dt><span class="section"><a href="timeoutssect.html">5.3.4. Monitoring Polling Applications</a></span></dt><dt><span class="section"><a href="topsyssect.html">5.3.5. Tracking Most Frequently Used System Calls</a></span></dt><dt><span class="section"><a href="syscallsbyprocpidsect.html">5.3.6. Tracking System Call Volume Per Process</a></span></dt></dl></dd><dt><span class="section"><a href="futexcontentionsect.html">5.4. Identifying Contended User-Space Locks</a></span></dt></dl></div><a id="idm47748230948288" class="indexterm"></a><a id="idm47748230949696" class="indexterm"></a><a id="idm47748230950624" class="indexterm"></a><a id="idm47748230951552" class="indexterm"></a><div class="para"> 3 ⁠</a>Chapter 5. Useful SystemTap Scripts</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="useful-systemtap-scripts.html#mainsect-network">5.1. Network</a></span></dt><dd><dl><dt><span class="section"><a href="useful-systemtap-scripts.html#nettopsect">5.1.1. Network Profiling</a></span></dt><dt><span class="section"><a href="useful-systemtap-scripts.html#sockettracesect">5.1.2. Tracing Functions Called in Network Socket Code</a></span></dt><dt><span class="section"><a href="useful-systemtap-scripts.html#tcpconnectionssect">5.1.3. Monitoring Incoming TCP Connections</a></span></dt><dt><span class="section"><a href="useful-systemtap-scripts.html#tcpdumplikesect">5.1.4. Monitoring TCP Packets</a></span></dt><dt><span class="section"><a href="useful-systemtap-scripts.html#dropwatchsect">5.1.5. Monitoring Network Packets Drops in Kernel</a></span></dt></dl></dd><dt><span class="section"><a href="mainsect-disk.html">5.2. Disk</a></span></dt><dd><dl><dt><span class="section"><a href="mainsect-disk.html#disktop">5.2.1. Summarizing Disk Read/Write Traffic</a></span></dt><dt><span class="section"><a href="iotimesect.html">5.2.2. Tracking I/O Time For Each File Read or Write</a></span></dt><dt><span class="section"><a href="traceiosect.html">5.2.3. Track Cumulative IO</a></span></dt><dt><span class="section"><a href="traceio2sect.html">5.2.4. I/O Monitoring (By Device)</a></span></dt><dt><span class="section"><a href="inodewatchsect.html">5.2.5. Monitoring Reads and Writes to a File</a></span></dt><dt><span class="section"><a href="inodewatch2sect.html">5.2.6. Monitoring Changes to File Attributes</a></span></dt><dt><span class="section"><a href="ioblktimesect.html">5.2.7. Periodically Print I/O Block Time</a></span></dt></dl></dd><dt><span class="section"><a href="mainsect-profiling.html">5.3. Profiling</a></span></dt><dd><dl><dt><span class="section"><a href="mainsect-profiling.html#countcallssect">5.3.1. Counting Function Calls Made</a></span></dt><dt><span class="section"><a href="paracallgraph.html">5.3.2. Call Graph Tracing</a></span></dt><dt><span class="section"><a href="threadtimessect.html">5.3.3. Determining Time Spent in Kernel and User Space</a></span></dt><dt><span class="section"><a href="timeoutssect.html">5.3.4. Monitoring Polling Applications</a></span></dt><dt><span class="section"><a href="topsyssect.html">5.3.5. Tracking Most Frequently Used System Calls</a></span></dt><dt><span class="section"><a href="syscallsbyprocpidsect.html">5.3.6. Tracking System Call Volume Per Process</a></span></dt></dl></dd><dt><span class="section"><a href="futexcontentionsect.html">5.4. Identifying Contended User-Space Locks</a></span></dt></dl></div><a id="idm140174737472880" class="indexterm"></a><a id="idm140174730600432" class="indexterm"></a><a id="idm140174730599024" class="indexterm"></a><a id="idm140174730600176" class="indexterm"></a><div class="para">This chapter enumerates several SystemTap scripts you can use to monitor and investigate different subsystems. All of these scripts are available at <code class="filename">/usr/share/systemtap/testsuite/systemtap.examples/</code> once you install the <code class="filename">systemtap-testsuite</code> RPM.</div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="mainsect-network">
4 This chapter enumerates several SystemTap scripts you can use to monitor and investigate different subsystems. All of these scripts are available at <code class="filename">/usr/share/systemtap/testsuite/systemtap.examples/</code> once you install the <code class="filename">systemtap-testsuite</code> RPM. 4 ⁠</a>5.1. Network</h2></div></div></div><div class="para">The following sections showcase scripts that trace network-related functions and build a profile of network activity.</div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="nettopsect">
5 </div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="mainsect-network"> 5 ⁠</a>5.1.1. Network Profiling</h3></div></div></div><a id="idm140174737198576" class="indexterm"></a><a id="idm140174737200080" class="indexterm"></a><a id="idm140174735412256" class="indexterm"></a><a id="idm140174736219696" class="indexterm"></a><a id="idm140174743147728" class="indexterm"></a><div class="para">This section describes how to profile network activity. <a class="xref" href="useful-systemtap-scripts.html#nettop">nettop.stp</a> provides a glimpse into how much network traffic each process is generating on a machine.</div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">nettop.stp</div>
6 ⁠</a>5.1. Network</h2></div></div></div><div class="para">
7 The following sections showcase scripts that trace network-related functions and build a profile of network activity.
8 </div><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="nettopsect">
9 ⁠</a>5.1.1. Network Profiling</h3></div></div></div><a id="idm47748214851184" class="indexterm"></a><a id="idm47748214852624" class="indexterm"></a><a id="idm47748214852912" class="indexterm"></a><a id="idm47748222568448" class="indexterm"></a><a id="idm47748222569920" class="indexterm"></a><div class="para">
10 This section describes how to profile network activity. <a class="xref" href="useful-systemtap-scripts.html#nettop">nettop.stp</a> provides a glimpse into how much network traffic each process is generating on a machine.
11 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">nettop.stp</div>
12
13<pre class="programlisting">#! /usr/bin/env stap 6<pre class="programlisting">#! /usr/bin/env stap
14 7
15global ifxmit, ifrecv 8global ifxmit, ifrecv
@@ -59,33 +52,14 @@ probe timer.ms(5000), end, error
59 print_activity() 52 print_activity()
60} 53}
61</pre> 54</pre>
62 </div><a id="idm47748174893840" class="indexterm"></a><a id="idm47748175636816" class="indexterm"></a><a id="idm47748177882496" class="indexterm"></a><div class="para"> 55</div><a id="idm140174736432096" class="indexterm"></a><a id="idm140174730597472" class="indexterm"></a><a id="idm140174734134992" class="indexterm"></a><div class="para">Note that <code class="command">function print_activity()</code> uses the following
63 Note that <code class="command">function print_activity()</code> uses the following expressions: 56expressions:</div><pre class="screen">n_xmit ? @sum(ifxmit[pid, dev, exec, uid])/1024 : 0
64 </div><pre class="screen">n_xmit ? @sum(ifxmit[pid, dev, exec, uid])/1024 : 0 57n_recv ? @sum(ifrecv[pid, dev, exec, uid])/1024 : 0</pre><div class="para">These expressions are if/else conditionals.
65n_recv ? @sum(ifrecv[pid, dev, exec, uid])/1024 : 0</pre><div class="para"> 58The first statement is a more concise way of writing the following
66 These expressions are if/else conditionals. The first statement is a more concise way of writing the following psuedo code: 59psuedo code:</div><pre class="screen">if n_recv != 0 then
67 </div><pre class="screen">if n_recv != 0 then
68 @sum(ifrecv[pid, dev, exec, uid])/1024 60 @sum(ifrecv[pid, dev, exec, uid])/1024
69else 61else
70 0</pre><div class="para"> 62 0 </pre><div class="para"><a class="xref" href="useful-systemtap-scripts.html#nettop">nettop.stp</a> tracks which processes are generating network traffic on the system, and provides the following information about each process:</div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"><code class="computeroutput">PID</code> — the ID of the listed process.</div></li><li class="listitem"><div class="para"><code class="computeroutput">UID</code> — user ID. A user ID of <code class="computeroutput">0</code> refers to the root user.</div></li><li class="listitem"><div class="para"><code class="computeroutput">DEV</code> — which ethernet device the process used to send / receive data (for example, eth0, eth1)</div></li><li class="listitem"><div class="para"><code class="computeroutput">XMIT_PK</code> — number of packets transmitted by the process</div></li><li class="listitem"><div class="para"><code class="computeroutput">RECV_PK</code> — number of packets received by the process</div></li><li class="listitem"><div class="para"><code class="computeroutput">XMIT_KB</code> — amount of data sent by the process, in kilobytes</div></li><li class="listitem"><div class="para"><code class="computeroutput">RECV_KB</code> — amount of data received by the service, in kilobytes</div></li></ul></div><div class="para"><a class="xref" href="useful-systemtap-scripts.html#nettop">nettop.stp</a> provides network profile sampling every 5 seconds. You can change this setting by editing <code class="command">probe timer.ms(5000)</code> accordingly. <a class="xref" href="useful-systemtap-scripts.html#nettopoutput">Example 5.1, “nettop.stp Sample Output”</a> contains an excerpt of the output from <a class="xref" href="useful-systemtap-scripts.html#nettop">nettop.stp</a> over a 20-second period:</div><div class="example"><a id="nettopoutput">
71 <a class="xref" href="useful-systemtap-scripts.html#nettop">nettop.stp</a> tracks which processes are generating network traffic on the system, and provides the following information about each process:
72 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
73 <code class="computeroutput">PID</code> — the ID of the listed process.
74 </div></li><li class="listitem"><div class="para">
75 <code class="computeroutput">UID</code> — user ID. A user ID of <code class="computeroutput">0</code> refers to the root user.
76 </div></li><li class="listitem"><div class="para">
77 <code class="computeroutput">DEV</code> — which ethernet device the process used to send / receive data (for example, eth0, eth1)
78 </div></li><li class="listitem"><div class="para">
79 <code class="computeroutput">XMIT_PK</code> — number of packets transmitted by the process
80 </div></li><li class="listitem"><div class="para">
81 <code class="computeroutput">RECV_PK</code> — number of packets received by the process
82 </div></li><li class="listitem"><div class="para">
83 <code class="computeroutput">XMIT_KB</code> — amount of data sent by the process, in kilobytes
84 </div></li><li class="listitem"><div class="para">
85 <code class="computeroutput">RECV_KB</code> — amount of data received by the service, in kilobytes
86 </div></li></ul></div><div class="para">
87 <a class="xref" href="useful-systemtap-scripts.html#nettop">nettop.stp</a> provides network profile sampling every 5 seconds. You can change this setting by editing <code class="command">probe timer.ms(5000)</code> accordingly. <a class="xref" href="useful-systemtap-scripts.html#nettopoutput">Example 5.1, “nettop.stp Sample Output”</a> contains an excerpt of the output from <a class="xref" href="useful-systemtap-scripts.html#nettop">nettop.stp</a> over a 20-second period:
88 </div><div class="example"><a id="nettopoutput">
89 ⁠</a><p class="title"><strong>Example 5.1. <a class="xref" href="useful-systemtap-scripts.html#nettop">nettop.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">[...] 63 ⁠</a><p class="title"><strong>Example 5.1. <a class="xref" href="useful-systemtap-scripts.html#nettop">nettop.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">[...]
90 PID UID DEV XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND 64 PID UID DEV XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND
91 0 0 eth0 0 5 0 0 swapper 65 0 0 eth0 0 5 0 0 swapper
@@ -109,11 +83,8 @@ else
10911178 0 eth0 43 1 3 0 synergyc 8311178 0 eth0 43 1 3 0 synergyc
11011362 0 eth0 0 7 0 0 firefox 8411362 0 eth0 0 7 0 0 firefox
111 3897 0 eth0 0 1 0 0 multiload-apple 85 3897 0 eth0 0 1 0 0 multiload-apple
112[...]</pre></div></div></div><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="sockettracesect"> 86[...]</pre></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="sockettracesect">
113 ⁠</a>5.1.2. Tracing Functions Called in Network Socket Code</h3></div></div></div><a id="idm47748187930144" class="indexterm"></a><a id="idm47748180861168" class="indexterm"></a><a id="idm47748212971088" class="indexterm"></a><a id="idm47748218416272" class="indexterm"></a><a id="idm47748175367472" class="indexterm"></a><a id="idm47748218214672" class="indexterm"></a><a id="idm47748224611104" class="indexterm"></a><a id="idm47748214853232" class="indexterm"></a><div class="para"> 87 ⁠</a>5.1.2. Tracing Functions Called in Network Socket Code</h3></div></div></div><a id="idm140174738362496" class="indexterm"></a><a id="idm140174739535008" class="indexterm"></a><a id="idm140174743113648" class="indexterm"></a><a id="idm140174732583792" class="indexterm"></a><a id="idm140174731705792" class="indexterm"></a><a id="idm140174741708016" class="indexterm"></a><a id="idm140174749002608" class="indexterm"></a><a id="idm140174732483952" class="indexterm"></a><div class="para">This section describes how to trace functions called from the kernel's <code class="filename">net/socket.c</code> file. This task helps you identify, in finer detail, how each process interacts with the network at the kernel level.</div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">socket-trace.stp</div>
114 This section describes how to trace functions called from the kernel's <code class="filename">net/socket.c</code> file. This task helps you identify, in finer detail, how each process interacts with the network at the kernel level.
115 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">socket-trace.stp</div>
116
117<pre class="programlisting">#! /usr/bin/env stap 88<pre class="programlisting">#! /usr/bin/env stap
118 89
119probe kernel.function("*@net/socket.c").call { 90probe kernel.function("*@net/socket.c").call {
@@ -123,9 +94,7 @@ probe kernel.function("*@net/socket.c").return {
123 printf ("%s &lt;- %s\n", thread_indent(-1), ppfunc()) 94 printf ("%s &lt;- %s\n", thread_indent(-1), ppfunc())
124} 95}
125</pre> 96</pre>
126 </div><div class="para"> 97</div><div class="para"><a class="xref" href="useful-systemtap-scripts.html#sockettrace">socket-trace.stp</a> is identical to <a class="xref" href="systemtapscript-handler.html#thread_indent">Example 3.6, “thread_indent.stp”</a>, which was earlier used in <a class="xref" href="systemtapscript-handler.html#systemtapscript-functions">SystemTap Functions</a> to illustrate how <code class="command">thread_indent()</code> works.</div><div class="example"><a id="sockettraceoutput">
127 <a class="xref" href="useful-systemtap-scripts.html#sockettrace">socket-trace.stp</a> is identical to <a class="xref" href="systemtapscript-handler.html#thread_indent">Example 3.6, “thread_indent.stp”</a>, which was earlier used in <a class="xref" href="systemtapscript-handler.html#systemtapscript-functions">SystemTap Functions</a> to illustrate how <code class="command">thread_indent()</code> works.
128 </div><div class="example"><a id="sockettraceoutput">
129 ⁠</a><p class="title"><strong>Example 5.2. <a class="xref" href="useful-systemtap-scripts.html#sockettrace">socket-trace.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">[...] 98 ⁠</a><p class="title"><strong>Example 5.2. <a class="xref" href="useful-systemtap-scripts.html#sockettrace">socket-trace.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">[...]
1300 Xorg(3611): -&gt; sock_poll 990 Xorg(3611): -&gt; sock_poll
1313 Xorg(3611): &lt;- sock_poll 1003 Xorg(3611): &lt;- sock_poll
@@ -145,13 +114,12 @@ probe kernel.function("*@net/socket.c").return {
14528 scim-bridge(3883): &lt;- sys_recvfrom 11428 scim-bridge(3883): &lt;- sys_recvfrom
14631 scim-bridge(3883): &lt;- sys_recv 11531 scim-bridge(3883): &lt;- sys_recv
14735 scim-bridge(3883): &lt;- sys_socketcall 11635 scim-bridge(3883): &lt;- sys_socketcall
148[...]</pre></div></div><div class="para"> 117[...]</pre></div></div><div class="para"><a class="xref" href="useful-systemtap-scripts.html#sockettraceoutput">Example 5.2, “socket-trace.stp Sample Output”</a> contains a 3-second excerpt of the output for <a class="xref" href="useful-systemtap-scripts.html#sockettrace">socket-trace.stp</a>. For more information about the output of this script as provided by <code class="command">thread_indent()</code>, refer to <a class="xref" href="systemtapscript-handler.html#systemtapscript-functions">SystemTap Functions</a> <a class="xref" href="systemtapscript-handler.html#thread_indent">Example 3.6, “thread_indent.stp”</a>. </div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="tcpconnectionssect">
149 <a class="xref" href="useful-systemtap-scripts.html#sockettraceoutput">Example 5.2, “socket-trace.stp Sample Output”</a> contains a 3-second excerpt of the output for <a class="xref" href="useful-systemtap-scripts.html#sockettrace">socket-trace.stp</a>. For more information about the output of this script as provided by <code class="command">thread_indent()</code>, refer to <a class="xref" href="systemtapscript-handler.html#systemtapscript-functions">SystemTap Functions</a> <a class="xref" href="systemtapscript-handler.html#thread_indent">Example 3.6, “thread_indent.stp”</a>. 118 ⁠</a>5.1.3. Monitoring Incoming TCP Connections</h3></div></div></div><a id="idm140174734619632" class="indexterm"></a><a id="idm140174740936640" class="indexterm"></a><a id="idm140174741672960" class="indexterm"></a><a id="idm140174731805552" class="indexterm"></a><a id="idm140174740000432" class="indexterm"></a><div class="para">
150 </div></div><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="tcpconnectionssect"> 119 This section illustrates how to monitor incoming TCP connections. This task is useful in
151 ⁠</a>5.1.3. Monitoring Incoming TCP Connections</h3></div></div></div><a id="idm47748179981136" class="indexterm"></a><a id="idm47748231018096" class="indexterm"></a><a id="idm47748225858016" class="indexterm"></a><a id="idm47748179952592" class="indexterm"></a><a id="idm47748226922528" class="indexterm"></a><div class="para"> 120 identifying any unauthorized, suspicious, or otherwise unwanted network access requests
152 This section illustrates how to monitor incoming TCP connections. This task is useful in identifying any unauthorized, suspicious, or otherwise unwanted network access requests in real time. 121 in real time.
153 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">tcp_connections.stp</div> 122</div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">tcp_connections.stp</div>
154
155<pre class="programlisting">#! /usr/bin/env stap 123<pre class="programlisting">#! /usr/bin/env stap
156 124
157probe begin { 125probe begin {
@@ -167,26 +135,17 @@ probe kernel.function("tcp_accept").return?,
167 inet_get_local_port(sock), inet_get_ip_source(sock)) 135 inet_get_local_port(sock), inet_get_ip_source(sock))
168} 136}
169</pre> 137</pre>
170 </div><div class="para"> 138</div><div class="para">
171 While <a class="xref" href="useful-systemtap-scripts.html#tcpconnections">tcp_connections.stp</a> is running, it will print out the following information about any incoming TCP connections accepted by the system in real time: 139 While <a class="xref" href="useful-systemtap-scripts.html#tcpconnections">tcp_connections.stp</a> is running, it will print out the following information
172 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"> 140 about any incoming TCP connections accepted by the system in real time:
173 Current <code class="command">UID</code> 141</div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">Current <code class="command">UID</code></div></li><li class="listitem"><div class="para"><code class="command">CMD</code> - the command accepting the connection</div></li><li class="listitem"><div class="para"><code class="command">PID</code> of the command</div></li><li class="listitem"><div class="para">Port used by the connection</div></li><li class="listitem"><div class="para">IP address from which the TCP connection originated</div></li></ul></div><div class="example"><a id="tcpconnectionsoutput">
174 </div></li><li class="listitem"><div class="para">
175 <code class="command">CMD</code> - the command accepting the connection
176 </div></li><li class="listitem"><div class="para">
177 <code class="command">PID</code> of the command
178 </div></li><li class="listitem"><div class="para">
179 Port used by the connection
180 </div></li><li class="listitem"><div class="para">
181 IP address from which the TCP connection originated
182 </div></li></ul></div><div class="example"><a id="tcpconnectionsoutput">
183 ⁠</a><p class="title"><strong>Example 5.3. <a class="xref" href="useful-systemtap-scripts.html#tcpconnections">tcp_connections.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">UID CMD PID PORT IP_SOURCE 142 ⁠</a><p class="title"><strong>Example 5.3. <a class="xref" href="useful-systemtap-scripts.html#tcpconnections">tcp_connections.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">UID CMD PID PORT IP_SOURCE
1840 sshd 3165 22 10.64.0.227 1430 sshd 3165 22 10.64.0.227
1850 sshd 3165 22 10.64.0.227</pre></div></div></div><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="tcpdumplikesect"> 1440 sshd 3165 22 10.64.0.227</pre></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="tcpdumplikesect">
186 ⁠</a>5.1.4. Monitoring TCP Packets</h3></div></div></div><a id="idm47748224552048" class="indexterm"></a><a id="idm47748187970304" class="indexterm"></a><a id="idm47748224775504" class="indexterm"></a><a id="idm47748183178832" class="indexterm"></a><a id="idm47748175160016" class="indexterm"></a><div class="para"> 145 ⁠</a>5.1.4. Monitoring TCP Packets</h3></div></div></div><a id="idm140174732944864" class="indexterm"></a><a id="idm140174736599024" class="indexterm"></a><a id="idm140174730759536" class="indexterm"></a><a id="idm140174737155664" class="indexterm"></a><a id="idm140174730596352" class="indexterm"></a><div class="para">
187 This section illustrates how to monitor TCP packets received by the system. This is useful in analyzing network traffic generated by applications running on the system. 146 This section illustrates how to monitor TCP packets received by the system. This is useful in
188 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">tcpdumplike.stp</div> 147 analyzing network traffic generated by applications running on the system.
189 148</div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">tcpdumplike.stp</div>
190<pre class="programlisting"> #! /usr/bin/env stap 149<pre class="programlisting"> #! /usr/bin/env stap
191 150
192// A TCP dump like example 151// A TCP dump like example
@@ -207,31 +166,18 @@ probe tcp.receive {
207 saddr, daddr, sport, dport, urg, ack, psh, rst, syn, fin) 166 saddr, daddr, sport, dport, urg, ack, psh, rst, syn, fin)
208} 167}
209</pre> 168</pre>
210 </div><div class="para"> 169</div><div class="para">
211 While <a class="xref" href="useful-systemtap-scripts.html#tcpdumplike">tcpdumplike.stp</a> is running, it will print out the following information about any received TCP packets in real time: 170 While <a class="xref" href="useful-systemtap-scripts.html#tcpdumplike">tcpdumplike.stp</a> is running, it will print out the following information
212 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"> 171 about any received TCP packets in real time:
213 Source and destination IP address (<code class="command">saddr</code>, <code class="command">daddr</code>, respectively) 172</div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">Source and destination IP address (<code class="command">saddr</code>,
214 </div></li><li class="listitem"><div class="para"> 173 <code class="command">daddr</code>, respectively)</div></li><li class="listitem"><div class="para">Source and destination ports (<code class="command">sport</code>, <code class="command">dport</code>,
215 Source and destination ports (<code class="command">sport</code>, <code class="command">dport</code>, respectively) 174 respectively)</div></li><li class="listitem"><div class="para">Packet flags</div></li></ul></div><div class="para">
216 </div></li><li class="listitem"><div class="para"> 175 To determine the flags used by the packet, <a class="xref" href="useful-systemtap-scripts.html#tcpdumplike">tcpdumplike.stp</a> uses the following
217 Packet flags 176 functions:
218 </div></li></ul></div><div class="para"> 177</div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"><code class="command">urg</code> - urgent</div></li><li class="listitem"><div class="para"><code class="command">ack</code> - acknowledgement</div></li><li class="listitem"><div class="para"><code class="command">psh</code> - push</div></li><li class="listitem"><div class="para"><code class="command">rst</code> - reset</div></li><li class="listitem"><div class="para"><code class="command">syn</code> - synchronize</div></li><li class="listitem"><div class="para"><code class="command">fin</code> - finished</div></li></ul></div><div class="para">
219 To determine the flags used by the packet, <a class="xref" href="useful-systemtap-scripts.html#tcpdumplike">tcpdumplike.stp</a> uses the following functions: 178 The aforementioned functions return <code class="command">1</code> or <code class="command">0</code> to
220 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"> 179 specify whether the packet uses the corresponding flag.
221 <code class="command">urg</code> - urgent 180</div><div class="example"><a id="tcpdumplikeoutput">
222 </div></li><li class="listitem"><div class="para">
223 <code class="command">ack</code> - acknowledgement
224 </div></li><li class="listitem"><div class="para">
225 <code class="command">psh</code> - push
226 </div></li><li class="listitem"><div class="para">
227 <code class="command">rst</code> - reset
228 </div></li><li class="listitem"><div class="para">
229 <code class="command">syn</code> - synchronize
230 </div></li><li class="listitem"><div class="para">
231 <code class="command">fin</code> - finished
232 </div></li></ul></div><div class="para">
233 The aforementioned functions return <code class="command">1</code> or <code class="command">0</code> to specify whether the packet uses the corresponding flag.
234 </div><div class="example"><a id="tcpdumplikeoutput">
235 ⁠</a><p class="title"><strong>Example 5.4. <a class="xref" href="useful-systemtap-scripts.html#tcpdumplike">tcpdumplike.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">----------------------------------------------------------------- 181 ⁠</a><p class="title"><strong>Example 5.4. <a class="xref" href="useful-systemtap-scripts.html#tcpdumplike">tcpdumplike.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">-----------------------------------------------------------------
236 Source IP Dest IP SPort DPort U A P R S F 182 Source IP Dest IP SPort DPort U A P R S F
237----------------------------------------------------------------- 183-----------------------------------------------------------------
@@ -246,11 +192,17 @@ probe tcp.receive {
246 209.85.229.147 10.0.2.15 80 21141 0 1 1 0 0 0 192 209.85.229.147 10.0.2.15 80 21141 0 1 1 0 0 0
247 209.85.229.147 10.0.2.15 80 21141 0 1 1 0 0 0 193 209.85.229.147 10.0.2.15 80 21141 0 1 1 0 0 0
248 209.85.229.118 10.0.2.15 80 63433 0 1 1 0 0 0 194 209.85.229.118 10.0.2.15 80 63433 0 1 1 0 0 0
249[...]</pre></div></div></div><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="dropwatchsect"> 195[...]</pre></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="dropwatchsect">
250 ⁠</a>5.1.5. Monitoring Network Packets Drops in Kernel</h3></div></div></div><a id="idm47748224843936" class="indexterm"></a><a id="idm47748230579888" class="indexterm"></a><a id="idm47748230479888" class="indexterm"></a><a id="idm47748230447632" class="indexterm"></a><a id="idm47748216544336" class="indexterm"></a><div class="para"> 196 ⁠</a>5.1.5. Monitoring Network Packets Drops in Kernel</h3></div></div></div><a id="idm140174730456304" class="indexterm"></a><a id="idm140174740224976" class="indexterm"></a><a id="idm140174730910352" class="indexterm"></a><a id="idm140174732132064" class="indexterm"></a><a id="idm140174748996576" class="indexterm"></a><div class="para">
251 <a id="idm47748218680768" class="indexterm"></a> The network stack in Linux can discard packets for various reasons. Some Linux kernels include a tracepoint, <code class="command">kernel.trace("kfree_skb")</code>, which easily tracks where packets are discarded. <a class="xref" href="useful-systemtap-scripts.html#dropwatch">dropwatch.stp</a> uses <code class="command">kernel.trace("kfree_skb")</code> to trace packet discards; the script summarizes which locations discard packets every five-second interval. 197<a id="idm140174739849648" class="indexterm"></a>
252 </div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">dropwatch.stp</div> 198The network stack in Linux
253 199can discard packets for various reasons. Some Linux kernels include a
200tracepoint, <code class="command">kernel.trace("kfree_skb")</code>, which easily tracks where packets are discarded.
201<a class="xref" href="useful-systemtap-scripts.html#dropwatch">dropwatch.stp</a> uses
202<code class="command">kernel.trace("kfree_skb")</code> to trace
203packet discards; the script summarizes which locations
204discard packets every five-second interval.
205</div><div class="para"><div xmlns:d="http://docbook.org/ns/docbook" class="title">dropwatch.stp</div>
254<pre class="programlisting">#! /usr/bin/env stap 206<pre class="programlisting">#! /usr/bin/env stap
255 207
256############################################################ 208############################################################
@@ -281,15 +233,30 @@ probe timer.sec(5)
281 delete locations 233 delete locations
282} 234}
283</pre> 235</pre>
284 </div><div class="para"> 236</div><div class="para">
285 The <code class="command">kernel.trace("kfree_skb")</code> traces which places in the kernel drop network packets. The <code class="command">kernel.trace("kfree_skb")</code> has two arguments: a pointer to the buffer being freed (<code class="command">$skb</code>) and the location in kernel code the buffer is being freed (<code class="command">$location</code>). The <a class="xref" href="useful-systemtap-scripts.html#dropwatch">dropwatch.stp</a> script provides the function containing <code class="command">$location</code> where possible. The information to map <code class="command">$location</code> back to the function is not in the instrumentation by default. On SystemTap 1.4 the <code class="command">--all-modules</code> option will include the required mapping information and the following command can be used to run the script: 237The <code class="command">kernel.trace("kfree_skb")</code> traces which places
286 </div><pre class="programlisting">stap --all-modules dropwatch.stp</pre><div class="para"> 238in the kernel drop network packets.
287 On older versions of SystemTap you can use the following command to emulate the <code class="command">--all-modules</code> option: 239The <code class="command">kernel.trace("kfree_skb")</code> has two arguments:
288 </div><pre class="programlisting">stap -dkernel \ 240a pointer to the buffer being freed (<code class="command">$skb</code>)
241and the location in kernel code the
242buffer is being freed (<code class="command">$location</code>).
243The <a class="xref" href="useful-systemtap-scripts.html#dropwatch">dropwatch.stp</a> script provides the function containing
244<code class="command">$location</code> where possible.
245The information to map <code class="command">$location</code> back to the
246function is not in the instrumentation by default.
247On SystemTap 1.4 the <code class="command">--all-modules</code> option will include the
248required mapping information and the following command can be used to run
249the script:
250</div><pre class="programlisting">stap --all-modules dropwatch.stp</pre><div class="para">
251On older versions of SystemTap you can use the following command to emulate the
252<code class="command">--all-modules</code> option:
253</div><pre class="programlisting">stap -dkernel \
289`cat /proc/modules | awk 'BEGIN { ORS = " " } {print "-d"$1}'` \ 254`cat /proc/modules | awk 'BEGIN { ORS = " " } {print "-d"$1}'` \
290dropwatch.stp</pre><div class="para"> 255dropwatch.stp</pre><div class="para">
291 Running the dropwatch.stp script 15 seconds would result in output similar in <a class="xref" href="useful-systemtap-scripts.html#dropwatchoutput">Example 5.5, “dropwatch.stp Sample Output”</a>. The output lists the number of misses for each tracepoint location with either the function name or the address. 256Running the dropwatch.stp script 15 seconds would result in output similar in
292 </div><div class="example"><a id="dropwatchoutput"> 257<a class="xref" href="useful-systemtap-scripts.html#dropwatchoutput">Example 5.5, “dropwatch.stp Sample Output”</a>. The output lists the number of misses for
258each tracepoint location with either the function name or the address.
259</div><div class="example"><a id="dropwatchoutput">
293 ⁠</a><p class="title"><strong>Example 5.5. <a class="xref" href="useful-systemtap-scripts.html#dropwatch">dropwatch.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">Monitoring for dropped packets 260 ⁠</a><p class="title"><strong>Example 5.5. <a class="xref" href="useful-systemtap-scripts.html#dropwatch">dropwatch.stp</a> Sample Output</strong></p><div class="example-contents"><pre class="screen">Monitoring for dropped packets
294 261
2951762 packets dropped at unix_stream_recvmsg 2621762 packets dropped at unix_stream_recvmsg
@@ -305,8 +272,20 @@ dropwatch.stp</pre><div class="para">
3054 packets dropped at nf_hook_slow 2724 packets dropped at nf_hook_slow
306Stopping dropped packet monitor 273Stopping dropped packet monitor
307</pre></div></div><div class="para"> 274</pre></div></div><div class="para">
308 When the script is being compiled on one machine and run on another the <code class="command">--all-modules</code> and <code class="filename">/proc/modules</code> directory are not available; the <code class="command">symname</code> function will just print out the raw address. To make the raw address of packet drops more meaningful, refer to the <code class="filename">/boot/System.map-`uname -r`</code> file. This file lists the starting addresses for each function, allowing you to map the addresses in the output of <a class="xref" href="useful-systemtap-scripts.html#dropwatchoutput">Example 5.5, “dropwatch.stp Sample Output”</a> to a specific function name. Given the following snippet of the <code class="filename">/boot/System.map-`uname -r`</code> file, the address 0xffffffff8149a8ed maps to the function <code class="command">unix_stream_recvmsg</code>: 275When the script is being compiled on one machine and run on
309 </div><pre class="screen">[...] 276another the <code class="command">--all-modules</code> and
277<code class="filename">/proc/modules</code> directory are not available; the
278<code class="command">symname</code> function will just print out the raw address.
279To make the raw address of packet drops more meaningful, refer to the
280<code class="filename">/boot/System.map-`uname -r`</code> file. This file lists the
281starting addresses for each function, allowing you to map the
282addresses in the output of <a class="xref" href="useful-systemtap-scripts.html#dropwatchoutput">Example 5.5, “dropwatch.stp Sample Output”</a> to a specific
283function name.
284Given the following snippet of the
285<code class="filename">/boot/System.map-`uname -r`</code> file,
286the address 0xffffffff8149a8ed maps to the function
287<code class="command">unix_stream_recvmsg</code>:
288</div><pre class="screen">[...]
310ffffffff8149a420 t unix_dgram_poll 289ffffffff8149a420 t unix_dgram_poll
311ffffffff8149a5e0 t unix_stream_recvmsg 290ffffffff8149a5e0 t unix_stream_recvmsg
312ffffffff8149ad00 t unix_find_other 291ffffffff8149ad00 t unix_find_other
diff --git a/SystemTap_Beginners_Guide/userspace-probing.html b/SystemTap_Beginners_Guide/userspace-probing.html
index 7d214969..76b5fe18 100644
--- a/SystemTap_Beginners_Guide/userspace-probing.html
+++ b/SystemTap_Beginners_Guide/userspace-probing.html
@@ -1,39 +1,78 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Chapter 4. User-space Probing</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="understanding-tapsets.html" title="3.6. Tapsets" /><link rel="next" href="utargetvariable.html" title="4.2. Accessing User-Space Target Variables" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="understanding-tapsets.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="utargetvariable.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" lang="en-US"><div class="titlepage"><div><div><h1 class="title"><a id="userspace-probing"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Chapter 4. User-space Probing</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="understanding-tapsets.html" title="3.6. Tapsets" /><link rel="next" href="utargetvariable.html" title="4.2. Accessing User-Space Target Variables" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="understanding-tapsets.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="utargetvariable.html"><strong>Next</strong></a></li></ul><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="userspace-probing">
3 ⁠</a>Chapter 4. User-space Probing</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="userspace-probing.html#uevents">4.1. User-Space Events</a></span></dt><dt><span class="section"><a href="utargetvariable.html">4.2. Accessing User-Space Target Variables</a></span></dt><dt><span class="section"><a href="ustack.html">4.3. User-Space Stack Backtraces</a></span></dt></dl></div><div class="para"> 3 ⁠</a>Chapter 4. User-space Probing</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="userspace-probing.html#uevents">4.1. User-Space Events</a></span></dt><dt><span class="section"><a href="utargetvariable.html">4.2. Accessing User-Space Target Variables</a></span></dt><dt><span class="section"><a href="ustack.html">4.3. User-Space Stack Backtraces</a></span></dt></dl></div><div class="para">
4 SystemTap initially focused on kernel-space probing. Because there are many instances where user-space probing can help diagnose a problem, SystemTap 0.6 added support to allow probing user-space processes. SystemTap can probe the entry into and return from a function in user-space processes, probe predefined markers in user-space code, and monitor user-process events. 4SystemTap initially focused on kernel-space probing. Because
5 </div><div class="para"> 5there are many instances where user-space probing can help diagnose
6 SystemTap requires the uprobes module to perform user-space probing. If your Linux kernel is version 3.5 or higher, it already includes uprobes. To verify that the current kernel supports uprobes natively, run the following command: 6a problem, SystemTap 0.6 added support to allow probing user-space processes.
7 </div><pre class="screen"><code class="command">grep CONFIG_UPROBES /boot/config-`uname -r`</code></pre><div class="para"> 7SystemTap can probe the entry into and return from a
8 If uprobes is integrated, the output of this command is as follows: 8function in user-space processes, probe predefined markers in
9 </div><pre class="screen">CONFIG_UPROBES=y</pre><div class="para"> 9user-space code, and monitor user-process events.
10 If you are running a kernel prior to version 3.5, SystemTap automatically builds the uprobes module. However, you also need the utrace kernel extensions required by the SystemTap user-space probing to track various user-space events. More details about the utrace infrastructure are available at <a href="http://sourceware.org/systemtap/wiki/utrace">http://sourceware.org/systemtap/wiki/utrace</a>. To determine whether the currently running Linux kernel provides the needed utrace support, type the following at a shell prompt: 10</div><div class="para">
11 </div><pre class="screen"><code class="command">grep CONFIG_UTRACE /boot/config-`uname -r`</code></pre><div class="para"> 11SystemTap requires the uprobes module to perform user-space probing. If your
12 If the Linux kernel supports user-space probing, the command produces the following output: 12Linux kernel is version 3.5 or higher, it already includes uprobes.
13 </div><pre class="screen">CONFIG_UTRACE=y</pre><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="uevents"> 13To verify that the current kernel supports uprobes natively, run the following command:
14 ⁠</a>4.1. User-Space Events</h2></div></div></div><a id="idm47748178391280" class="indexterm"></a><div class="para"> 14</div><pre class="screen"><code class="command">grep CONFIG_UPROBES /boot/config-`uname -r`</code></pre><div class="para">
15 All user-space event probes begin with <span class="emphasis"><em>process</em></span>. You can limit the process events to a specific running process by specifying the process ID. You can also limit the process events to monitor a particular executable by specifying the path to the executable (PATH). SystemTap makes use of the <code class="envar">PATH</code> environment variable, which allows you to use both the name used on the command-line to start the executable and the absolute path to the executable. 15If uprobes is integrated, the output of this command is as follows:
16 </div><div class="para"> 16</div><pre class="screen">CONFIG_UPROBES=y</pre><div class="para">
17 Several of the user-space probe events limit their scope to a particular executable name (PATH), because SystemTap must use debug information to statically analyze where to place the probes. But for many user-space probe events, the process ID and executable name are optional. Any <code class="command">process</code> event in the list below that include process ID or the path to the executable must include those arguments. The process ID and path to the executable are optional for the <code class="command">process</code> events that do not list them: 17If you are running a kernel prior to version 3.5, SystemTap automatically
18 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">process("<em class="replaceable">PATH</em>").function("<em class="replaceable">function</em>")</span></dt><dd><div class="para"> 18builds the uprobes module. However, you also need the utrace kernel
19 The entry to the user-space function <em class="replaceable">function</em> for the executable <em class="replaceable">PATH</em>. This event is the user-space analogue of the <code class="command">kernel.function("<em class="replaceable">function</em>")</code> event. It allows wildcards for the function <em class="replaceable">function</em> and <code class="literal">.return</code> suffix. 19extensions required by the SystemTap user-space probing to track
20 </div></dd><dt><span class="term">process("<em class="replaceable">PATH</em>").statement("<em class="replaceable">statement</em>")</span></dt><dd><div class="para"> 20various user-space events. More details about the utrace infrastructure are
21 The earliest instruction in the code for <em class="replaceable">statement</em>. This is the user-space analogue of <code class="command">kernel.statement("<em class="replaceable">statement</em>")</code>. 21available at <a href="http://sourceware.org/systemtap/wiki/utrace">http://sourceware.org/systemtap/wiki/utrace</a>.
22 </div></dd><dt><span class="term">process("<em class="replaceable">PATH</em>").mark("<em class="replaceable">marker</em>")</span></dt><dd><div class="para"> 22To determine whether the currently running Linux kernel provides the needed utrace support, type the following at a shell prompt:
23 The static probe point <em class="replaceable">marker</em> defined in <em class="replaceable">PATH</em>. You can use wildcards for <em class="replaceable">marker</em> to specify multiple marks with a single probe. The static probe points may also have numbered arguments ($1, $2, and so on) available to the probe. 23</div><pre class="screen"><code class="command">grep CONFIG_UTRACE /boot/config-`uname -r`</code></pre><div class="para">
24 </div><div class="para"> 24If the Linux kernel supports user-space probing, the command produces the following output:
25 A variety of user-space packages such as Java include these static probe points. Most packages that provide static probe points also provide aliases for the raw user-space mark events. Below is one such alias for the x86_64 Java hotspot JVM: 25</div><pre class="screen">CONFIG_UTRACE=y</pre><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="uevents">
26 </div><pre class="programlisting">probe hotspot.gc_begin = 26 ⁠</a>4.1. User-Space Events</h2></div></div></div><a id="idm140174740585424" class="indexterm"></a><div class="para">
27 process("/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server/libjvm.so").mark("gc__begin")</pre></dd><dt><span class="term">process.begin</span></dt><dd><div class="para"> 27All user-space event probes begin with <span class="emphasis"><em>process</em></span>.
28 A user-space process is created. You can limit this to a particular process ID or a full path to the executable. 28You can limit the process events to a specific running process by specifying the process ID.
29 </div></dd><dt><span class="term">process.thread.begin</span></dt><dd><div class="para"> 29You can also limit the process events to monitor a particular executable
30 A user-space thread is created. You can limit this to a particular process ID or a full path to the executable. 30by specifying the path to the executable (PATH).
31 </div></dd><dt><span class="term">process.end</span></dt><dd><div class="para"> 31SystemTap makes use of the <code class="envar">PATH</code> environment variable, which allows
32 A user-space process dies. You can limit this to a particular process ID or a full path to the executable. 32you to use both the name used on the command-line to start the executable and
33 </div></dd><dt><span class="term">process.thread.end</span></dt><dd><div class="para"> 33the absolute path to the executable.
34 A user-space thread is destroyed. You can limit this to a particular process ID or a full path to the executable. 34</div><div class="para">
35 </div></dd><dt><span class="term">process.syscall</span></dt><dd><div class="para"> 35Several of the user-space probe events limit their scope to a
36 A user-space process makes a system call. The system call number is available in the <code class="varname">$syscall</code> context variable, and the fist six arguments are available in <code class="varname">$arg1</code> through <code class="varname">$arg6</code>. The <code class="literal">.return</code> suffix places the probe at the return from the system call. For <code class="command">syscall.return</code>, the return value is available through the <code class="varname">$return</code> context variable. 36particular executable name (PATH), because
37 </div><div class="para"> 37SystemTap must use debug information to statically analyze where to
38 You can limit this to a particular process ID or a full path to the executable. 38place the probes. But for many user-space probe events, the process ID
39 </div></dd></dl></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="understanding-tapsets.html"><strong>Prev</strong>3.6. Tapsets</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="utargetvariable.html"><strong>Next</strong>4.2. Accessing User-Space Target Variables</a></li></ul></body></html> \ No newline at end of file 39and executable name are optional.
40Any <code class="command">process</code> event in the list below that include process ID or
41the path to the executable must include those arguments.
42The process ID and path to the executable are optional for the
43<code class="command">process</code> events that do not list them:
44</div><div class="variablelist"><dl class="variablelist"><dt><span class="term">process("<em class="replaceable">PATH</em>").function("<em class="replaceable">function</em>")</span></dt><dd><div class="para">
45The entry to the user-space function <em class="replaceable">function</em> for the executable <em class="replaceable">PATH</em>.
46This event is the user-space analogue of the
47<code class="command">kernel.function("<em class="replaceable">function</em>")</code> event.
48It allows wildcards for the function <em class="replaceable">function</em>
49and <code class="literal">.return</code> suffix.
50</div></dd><dt><span class="term">process("<em class="replaceable">PATH</em>").statement("<em class="replaceable">statement</em>")</span></dt><dd><div class="para">
51The earliest instruction in the code for <em class="replaceable">statement</em>. This is the user-space analogue of
52<code class="command">kernel.statement("<em class="replaceable">statement</em>")</code>.
53</div></dd><dt><span class="term">process("<em class="replaceable">PATH</em>").mark("<em class="replaceable">marker</em>")</span></dt><dd><div class="para">The static probe point <em class="replaceable">marker</em> defined in
54<em class="replaceable">PATH</em>.
55You can use wildcards for <em class="replaceable">marker</em> to specify
56multiple marks with a single probe.
57The static probe points may also have numbered arguments ($1, $2, and so on)
58available to the probe.</div><div class="para">A variety of user-space packages such as Java include these static
59probe points.
60Most packages that provide static probe points also
61provide aliases for the raw user-space mark events.
62Below is one such alias for the x86_64 Java hotspot JVM:
63 </div><pre class="programlisting">probe hotspot.gc_begin =
64 process("/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/lib/amd64/server/libjvm.so").mark("gc__begin")</pre></dd><dt><span class="term">process.begin</span></dt><dd><div class="para">A user-space process is created.
65You can limit this to a particular process ID or a full path to the
66executable.</div></dd><dt><span class="term">process.thread.begin</span></dt><dd><div class="para">A user-space thread is created.
67You can limit this to a particular process ID or a full path to the
68executable.</div></dd><dt><span class="term">process.end</span></dt><dd><div class="para">A user-space process dies.
69You can limit this to a particular process ID or a full path to the
70executable.</div></dd><dt><span class="term">process.thread.end</span></dt><dd><div class="para">A user-space thread is destroyed.
71You can limit this to a particular process ID or a full path to the
72executable.</div></dd><dt><span class="term">process.syscall</span></dt><dd><div class="para">A user-space process makes a system call.
73The system call number is available in the <code class="varname">$syscall</code> context variable, and
74the fist six arguments are available in <code class="varname">$arg1</code> through <code class="varname">$arg6</code>.
75The <code class="literal">.return</code> suffix places the probe at the return from the system call.
76For <code class="command">syscall.return</code>, the return value is available through the
77<code class="varname">$return</code> context variable.</div><div class="para">You can limit this to a particular process ID or a full path to the
78executable.</div></dd></dl></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="understanding-tapsets.html"><strong>Prev</strong>3.6. Tapsets</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="utargetvariable.html"><strong>Next</strong>4.2. Accessing User-Space Target Variables</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/using-systemtap.html b/SystemTap_Beginners_Guide/using-systemtap.html
index 9ad2a0d2..d5d3f301 100644
--- a/SystemTap_Beginners_Guide/using-systemtap.html
+++ b/SystemTap_Beginners_Guide/using-systemtap.html
@@ -1,75 +1,99 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Chapter 2. Using SystemTap</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="intro-systemtap-limitations.html" title="1.3. Limitations of SystemTap" /><link rel="next" href="cross-compiling.html" title="2.2. Generating Instrumentation for Other Computers" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="intro-systemtap-limitations.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="cross-compiling.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" lang="en-US"><div class="titlepage"><div><div><h1 class="title"><a id="using-systemtap"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">Chapter 2. Using SystemTap</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="index.html" title="SystemTap Beginners Guide" /><link rel="prev" href="intro-systemtap-limitations.html" title="1.3. Limitations of SystemTap" /><link rel="next" href="cross-compiling.html" title="2.2. Generating Instrumentation for Other Computers" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="intro-systemtap-limitations.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="cross-compiling.html"><strong>Next</strong></a></li></ul><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a id="using-systemtap">
3 ⁠</a>Chapter 2. Using SystemTap</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="using-systemtap.html#using-setup">2.1. Installation and Setup</a></span></dt><dd><dl><dt><span class="section"><a href="using-systemtap.html#installproper">2.1.1. Installing SystemTap</a></span></dt><dt><span class="section"><a href="using-systemtap.html#install-kinfo">2.1.2. Installing Required Kernel Information Packages Manually</a></span></dt><dt><span class="section"><a href="using-systemtap.html#testing">2.1.3. Initial Testing</a></span></dt></dl></dd><dt><span class="section"><a href="cross-compiling.html">2.2. Generating Instrumentation for Other Computers</a></span></dt><dt><span class="section"><a href="using-usage.html">2.3. Running SystemTap Scripts</a></span></dt><dd><dl><dt><span class="section"><a href="using-usage.html#flight-recorder">2.3.1. SystemTap Flight Recorder Mode</a></span></dt></dl></dd></dl></div><a id="idm47748228552048" class="indexterm"></a><div class="para"> 3 ⁠</a>Chapter 2. Using SystemTap</h1></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="using-systemtap.html#using-setup">2.1. Installation and Setup</a></span></dt><dd><dl><dt><span class="section"><a href="using-systemtap.html#installproper">2.1.1. Installing SystemTap</a></span></dt><dt><span class="section"><a href="using-systemtap.html#install-kinfo">2.1.2. Installing Required Kernel Information Packages Manually</a></span></dt><dt><span class="section"><a href="using-systemtap.html#testing">2.1.3. Initial Testing</a></span></dt></dl></dd><dt><span class="section"><a href="cross-compiling.html">2.2. Generating Instrumentation for Other Computers</a></span></dt><dt><span class="section"><a href="using-usage.html">2.3. Running SystemTap Scripts</a></span></dt><dd><dl><dt><span class="section"><a href="using-usage.html#flight-recorder">2.3.1. SystemTap Flight Recorder Mode</a></span></dt></dl></dd></dl></div><a id="idm140174731418912" class="indexterm"></a><div class="para">
4 This chapter documents how to install SystemTap in the system and explains how to use the <code class="command">stap</code> utility to run SystemTap scripts. 4 This chapter documents how to install SystemTap in the system and explains how to use the <code class="command">stap</code> utility to run SystemTap scripts.
5 </div><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="using-setup"> 5 </div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="using-setup">
6 ⁠</a>2.1. Installation and Setup</h2></div></div></div><a id="idm47748228557280" class="indexterm"></a><a id="idm47748228558512" class="indexterm"></a><div class="para"> 6 ⁠</a>2.1. Installation and Setup</h2></div></div></div><a id="idm140174731423296" class="indexterm"></a><a id="idm140174731424304" class="indexterm"></a><div class="para">To deploy SystemTap, install the SystemTap packages along
7 To deploy SystemTap, install the SystemTap packages along with the corresponding set of <span class="package">-devel</span>, <span class="package">-debuginfo</span>, and <span class="package">-debuginfo-common</span> packages for your kernel. If your system has multiple kernels installed and you intend to use SystemTap on more than one of them, also install the <span class="package">-devel</span> and <span class="package">-debuginfo</span> packages for <span class="emphasis"><em>each</em></span> of those kernel versions. 7 with the corresponding set of <span class="package">-devel</span>,
8 </div><div class="para"> 8 <span class="package">-debuginfo</span>, and <span class="package">-debuginfo-common</span>
9 The following sections discuss the installation procedures in greater detail. 9 packages for your kernel. If your system has multiple kernels installed and
10 </div><div xmlns:d="http://docbook.org/ns/docbook" class="important"><div class="admonition_header"><p><strong>Important</strong></p></div><div class="admonition"><div class="para"> 10 you intend to use SystemTap on more than one of them, also
11 Many users confuse <span class="package">-debuginfo</span> with <span class="package">-debug</span>. Remember that the deployment of SystemTap requires the installation of the <span class="package">-debuginfo</span> package of the kernel, not the <span class="package">-debug</span> version of the kernel. 11 install the <span class="package">-devel</span> and <span class="package">-debuginfo</span>
12 </div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="installproper"> 12 packages for <span class="emphasis"><em>each</em></span> of those kernel versions.
13 ⁠</a>2.1.1. Installing SystemTap</h3></div></div></div><div class="para"> 13 </div><div class="para">The following sections discuss the installation procedures in greater detail.
14 To deploy SystemTap, install the following RPM packages: 14 </div><div xmlns:d="http://docbook.org/ns/docbook" class="important"><div class="admonition_header"><p><strong>Important</strong></p></div><div class="admonition"><div class="para">Many users confuse
15 </div><a id="idm47748228568448" class="indexterm"></a><a id="idm47748228569904" class="indexterm"></a><a id="idm47748228571008" class="indexterm"></a><a id="idm47748228573904" class="indexterm"></a><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"> 15 <span class="package">-debuginfo</span> with <span class="package">-debug</span>. Remember
16 <span class="package">systemtap</span> 16 that the deployment of SystemTap requires the installation of the
17 </div></li><li class="listitem"><div class="para"> 17 <span class="package">-debuginfo</span> package of the kernel, not the
18 <span class="package">systemtap-runtime</span> 18 <span class="package">-debug</span> version of the kernel.</div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="installproper">
19 </div></li></ul></div><div class="para"> 19 ⁠</a>2.1.1. Installing SystemTap</h3></div></div></div><div class="para">To deploy SystemTap, install the following RPM packages:
20 To do so, run the following command as root: 20 </div><a id="idm140174731433248" class="indexterm"></a><a id="idm140174731434880" class="indexterm"></a><a id="idm140174731436032" class="indexterm"></a><a id="idm140174731437184" class="indexterm"></a><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"><span class="package">systemtap</span></div></li><li class="listitem"><div class="para"><span class="package">systemtap-runtime</span></div></li></ul></div><div class="para">
21 </div><pre class="screen"><code class="command">yum install systemtap systemtap-runtime</code></pre><div class="para"> 21 To do so, run the following command as root:
22 Note that before using SystemTap, you still need to install the required kernel information packages. On modern systems, run the following command as root to install these packages: 22 </div><pre class="screen"><code class="command">yum install systemtap systemtap-runtime</code></pre><div class="para">
23 </div><pre class="screen"><code class="command">stap-prep</code></pre><div class="para"> 23 Note that before using SystemTap, you still need to install the required
24 If this command does not work, try manual installation as described below. 24 kernel information packages. On modern systems, run the following command
25 </div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="install-kinfo"> 25 as root to install these packages:
26 ⁠</a>2.1.2. Installing Required Kernel Information Packages Manually</h3></div></div></div><a id="idm47748228580576" class="indexterm"></a><a id="idm47748228582000" class="indexterm"></a><a id="idm47748228583200" class="indexterm"></a><a id="idm47748228584128" class="indexterm"></a><a id="idm47748228585104" class="indexterm"></a><a id="idm47748228586576" class="indexterm"></a><div class="para"> 26 </div><pre class="screen"><code class="command">stap-prep</code></pre><div class="para">
27 SystemTap needs information about the kernel in order to place instrumentation in it (in other words, probe it). This information also allows SystemTap to generate the code for the instrumentation. 27 If this command does not work, try manual installation as described below.
28 </div><div class="para"> 28 </div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="install-kinfo">
29 The required information is contained in the matching <span class="package">-devel</span>, <span class="package">-debuginfo</span>, and <span class="package">-debuginfo-common</span> packages for your kernel. The necessary <span class="package">-devel</span> and <span class="package">-debuginfo</span> packages for the ordinary "vanilla" kernel are as follows: 29 ⁠</a>2.1.2. Installing Required Kernel Information Packages Manually</h3></div></div></div><a id="idm140174734071472" class="indexterm"></a><a id="idm140174734068832" class="indexterm"></a><a id="idm140174734069888" class="indexterm"></a><a id="idm140174734071056" class="indexterm"></a><a id="idm140174734072096" class="indexterm"></a><a id="idm140174732402528" class="indexterm"></a><div class="para">
30 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"> 30 SystemTap needs information about the kernel in order to place instrumentation in it (in other words, probe it). This
31 <span class="package">kernel-debuginfo</span> 31 information also allows SystemTap to generate the code for the instrumentation.
32 </div></li><li class="listitem"><div class="para"> 32 </div><div class="para">
33 <span class="package">kernel-debuginfo-common</span> 33 The required information is contained
34 </div></li><li class="listitem"><div class="para"> 34 in the matching <span class="package">-devel</span>, <span class="package">-debuginfo</span>, and <span class="package">-debuginfo-common</span>
35 <span class="package">kernel-devel</span> 35 packages for your kernel. The necessary <span class="package">-devel</span> and <span class="package">-debuginfo</span> packages for the ordinary
36 </div></li></ul></div><div class="para"> 36 "vanilla" kernel are as follows:
37 Likewise, the necessary packages for the PAE kernel are <span class="package">kernel-PAE-debuginfo</span>, <span class="package">kernel-PAE-debuginfo-common</span>, and <span class="package">kernel-PAE-devel</span>. 37 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"><span class="package">kernel-debuginfo</span></div></li><li class="listitem"><div class="para"><span class="package">kernel-debuginfo-common</span></div></li><li class="listitem"><div class="para"><span class="package">kernel-devel</span></div></li></ul></div><div class="para">
38 </div><a id="idm47748187993328" class="indexterm"></a><a id="idm47748187994448" class="indexterm"></a><a id="idm47748187995408" class="indexterm"></a><a id="idm47748178714352" class="indexterm"></a><div class="para"> 38 Likewise, the necessary packages for the PAE kernel are
39 To determine what kernel your system is currently using, use: 39 <span class="package">kernel-PAE-debuginfo</span>, <span class="package">kernel-PAE-debuginfo-common</span>,
40 </div><pre class="screen">uname -r</pre><div class="para"> 40 and <span class="package">kernel-PAE-devel</span>.
41 For example, if you intend to use SystemTap on kernel version <span class="emphasis"><em>2.6.18-53.el5</em></span> on an <span class="emphasis"><em>i686</em></span> machine, download and install the following RPM packages: 41 </div><a id="idm140174732432368" class="indexterm"></a><a id="idm140174732432240" class="indexterm"></a><a id="idm140174732434784" class="indexterm"></a><a id="idm140174731657104" class="indexterm"></a><div class="para"> To determine what kernel your system is currently using, use:</div><pre class="screen">uname -r</pre><div class="para">
42 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"> 42 For example, if you intend to use SystemTap on kernel version <span class="emphasis"><em>2.6.18-53.el5</em></span> on an <span class="emphasis"><em>i686</em></span> machine,
43 <span class="package">kernel-debuginfo-2.6.18-53.1.13.el5.i686.rpm</span> 43 download and install the following RPM packages:
44 </div></li><li class="listitem"><div class="para"> 44 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para"><span class="package">kernel-debuginfo-2.6.18-53.1.13.el5.i686.rpm</span></div></li><li class="listitem"><div class="para"><span class="package">kernel-debuginfo-common-2.6.18-53.1.13.el5.i686.rpm</span></div></li><li class="listitem"><div class="para"><span class="package">kernel-devel-2.6.18-53.1.13.el5.i686.rpm</span></div></li></ul></div><div xmlns:d="http://docbook.org/ns/docbook" class="important"><div class="admonition_header"><p><strong>Important</strong></p></div><div class="admonition"><div class="para">
45 <span class="package">kernel-debuginfo-common-2.6.18-53.1.13.el5.i686.rpm</span> 45 The version, variant, and architecture of the <span class="package">-devel</span>, <span class="package">-debuginfo</span> and
46 </div></li><li class="listitem"><div class="para"> 46 <span class="package">-debuginfo-common</span> packages must match the kernel you wish to probe with SystemTap <span class="emphasis"><em>exactly</em></span>.
47 <span class="package">kernel-devel-2.6.18-53.1.13.el5.i686.rpm</span> 47 </div></div></div><div class="para">
48 </div></li></ul></div><div xmlns:d="http://docbook.org/ns/docbook" class="important"><div class="admonition_header"><p><strong>Important</strong></p></div><div class="admonition"><div class="para"> 48 The easiest way to install the required kernel information
49 The version, variant, and architecture of the <span class="package">-devel</span>, <span class="package">-debuginfo</span> and <span class="package">-debuginfo-common</span> packages must match the kernel you wish to probe with SystemTap <span class="emphasis"><em>exactly</em></span>. 49 packages is through <code class="command">yum install</code> and
50 </div></div></div><div class="para"> 50 <code class="command">debuginfo-install</code> commands.
51 The easiest way to install the required kernel information packages is through <code class="command">yum install</code> and <code class="command">debuginfo-install</code> commands. The <code class="command">debuginfo-install</code> command is included with later versions of the <span class="package">yum-utils</span> package (for example, version 1.1.10) and also requires an appropriate <code class="command">yum</code> repository from which to download and install <span class="package">-debuginfo</span> and <span class="package">-debuginfo-common</span> packages. You can install the required <span class="package">-devel</span>, <span class="package">-debuginfo</span>, and <span class="package">-debuginfo-common</span> packages for your kernel. 51 The <code class="command">debuginfo-install</code> command is included with
52 </div><div class="para"> 52 later versions of the <span class="package">yum-utils</span>
53 When the appropriate software repositories are enabled, install the corresponding packages for a specific kernel with the following commands: 53 package (for example, version 1.1.10) and also requires
54 </div><pre class="screen"><code class="command">yum install <em class="replaceable">kernelname</em>-devel-<em class="replaceable">version</em></code> 54 an appropriate <code class="command">yum</code> repository from
55 which to download and install
56 <span class="package">-debuginfo</span> and <span class="package">-debuginfo-common</span>
57 packages. You can install the required
58 <span class="package">-devel</span>,
59 <span class="package">-debuginfo</span>, and
60 <span class="package">-debuginfo-common</span> packages for your
61 kernel.
62 </div><div class="para">
63 When the appropriate software repositories are enabled,
64 install the corresponding packages for a specific kernel
65 with the following commands:
66 </div><pre class="screen"><code class="command">yum install <em class="replaceable">kernelname</em>-devel-<em class="replaceable">version</em></code>
55<code class="command">debuginfo-install <em class="replaceable">kernelname</em>-<em class="replaceable">version</em></code></pre><div class="para"> 67<code class="command">debuginfo-install <em class="replaceable">kernelname</em>-<em class="replaceable">version</em></code></pre><div class="para">
56 Replace <em class="replaceable">kernelname</em> with the appropriate kernel variant name (for example, <code class="option">kernel-PAE</code>), and <em class="replaceable">version</em> with the target kernel's version. For example, to install the required kernel information packages for the <code class="systemitem">kernel-PAE-2.6.18-53.1.13.el5</code> kernel, run: 68 Replace <em class="replaceable">kernelname</em> with the appropriate kernel variant name
57 </div><pre class="screen"><code class="command">yum install kernel-PAE-devel-2.6.18-53.1.13.el5</code> 69 (for example, <code class="option">kernel-PAE</code>), and <em class="replaceable">version</em>
70 with the target kernel's version. For example, to install the required kernel information packages for
71 the <code class="systemitem">kernel-PAE-2.6.18-53.1.13.el5</code> kernel, run:
72</div><pre class="screen"><code class="command">yum install kernel-PAE-devel-2.6.18-53.1.13.el5</code>
58<code class="command">debuginfo-install kernel-PAE-2.6.18-53.1.13.el5</code></pre><div class="para"> 73<code class="command">debuginfo-install kernel-PAE-2.6.18-53.1.13.el5</code></pre><div class="para">
59 Once you have manually downloaded the required packages to the machine, run the following command as root to install them: 74Once you have manually downloaded the required packages to the machine, run the following command as root to install them:
60 </div><pre class="screen"><code class="command">rpm --force -ivh <em class="replaceable">package_names</em></code></pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="testing"> 75 </div><pre class="screen"><code class="command">rpm --force -ivh <em class="replaceable">package_names</em></code></pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="testing">
61 ⁠</a>2.1.3. Initial Testing</h3></div></div></div><a id="idm47748176243136" class="indexterm"></a><a id="idm47748180544976" class="indexterm"></a><a id="idm47748180545904" class="indexterm"></a><div class="para"> 76 ⁠</a>2.1.3. Initial Testing</h3></div></div></div><a id="idm140174731879296" class="indexterm"></a><a id="idm140174732414144" class="indexterm"></a><a id="idm140174732414976" class="indexterm"></a><div class="para">If you are currently using the kernel you intend to probe with
62 If you are currently using the kernel you intend to probe with SystemTap, you can immediately test whether the deployment was successful. If not, you restart the system and load the appropriate kernel. 77 SystemTap, you can immediately test whether the deployment was
63 </div><div class="para"> 78 successful. If not, you restart the system and load the appropriate
64 To start the test, run the following command: 79 kernel.
65 </div><pre class="screen"><code class="command">stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}'</code></pre><div class="para"> 80 </div><div class="para">
66 This command instructs SystemTap to print <code class="computeroutput">read performed</code> and then exit properly once a virtual file system read is detected. If the SystemTap deployment was successful, it prints output similar to the following: 81 To start the test, run the following command:
67 </div><pre class="screen">Pass 1: parsed user script and 45 library script(s) in 340usr/0sys/358real ms. 82 </div><pre class="screen"><code class="command">stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}'</code></pre><div class="para">
83 This command instructs SystemTap
84 to print <code class="computeroutput">read performed</code> and then exit
85 properly once a virtual file system read is detected. If the SystemTap
86 deployment was successful, it prints output similar to the
87 following:
88 </div><pre class="screen">Pass 1: parsed user script and 45 library script(s) in 340usr/0sys/358real ms.
68Pass 2: analyzed script: 1 probe(s), 1 function(s), 0 embed(s), 0 global(s) in 290usr/260sys/568real ms. 89Pass 2: analyzed script: 1 probe(s), 1 function(s), 0 embed(s), 0 global(s) in 290usr/260sys/568real ms.
69Pass 3: translated to C into "/tmp/stapiArgLX/stap_e5886fa50499994e6a87aacdc43cd392_399.c" in 490usr/430sys/938real ms. 90Pass 3: translated to C into "/tmp/stapiArgLX/stap_e5886fa50499994e6a87aacdc43cd392_399.c" in 490usr/430sys/938real ms.
70Pass 4: compiled C into "stap_e5886fa50499994e6a87aacdc43cd392_399.ko" in 3310usr/430sys/3714real ms. 91Pass 4: compiled C into "stap_e5886fa50499994e6a87aacdc43cd392_399.ko" in 3310usr/430sys/3714real ms.
71Pass 5: starting run. 92Pass 5: starting run.
72read performed 93read performed
73Pass 5: run completed in 10usr/40sys/73real ms.</pre><div class="para"> 94Pass 5: run completed in 10usr/40sys/73real ms.</pre><div class="para"> The last three lines of the output (beginning with
74 The last three lines of the output (beginning with <code class="computeroutput">Pass 5</code>) indicate that SystemTap was able to successfully create the instrumentation to probe the kernel, run the instrumentation, detect the event being probed (in this case, a virtual file system read), and execute a valid handler (print text then close it with no errors). 95 <code class="computeroutput">Pass 5</code>) indicate that SystemTap was able to
75 </div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="intro-systemtap-limitations.html"><strong>Prev</strong>1.3. Limitations of SystemTap</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="cross-compiling.html"><strong>Next</strong>2.2. Generating Instrumentation for Other Compute...</a></li></ul></body></html> \ No newline at end of file 96 successfully create the instrumentation to probe the kernel, run the
97 instrumentation, detect the event being probed (in this case, a virtual file
98 system read), and execute a valid handler (print text then close it with no errors).
99 </div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="intro-systemtap-limitations.html"><strong>Prev</strong>1.3. Limitations of SystemTap</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="cross-compiling.html"><strong>Next</strong>2.2. Generating Instrumentation for Other Compute...</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/using-usage.html b/SystemTap_Beginners_Guide/using-usage.html
index 25de7b1b..70127a00 100644
--- a/SystemTap_Beginners_Guide/using-usage.html
+++ b/SystemTap_Beginners_Guide/using-usage.html
@@ -1,65 +1,93 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">2.3. Running SystemTap Scripts</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="using-systemtap.html" title="Chapter 2. Using SystemTap" /><link rel="prev" href="cross-compiling.html" title="2.2. Generating Instrumentation for Other Computers" /><link rel="next" href="understanding-how-systemtap-works.html" title="Chapter 3. Understanding How SystemTap Works" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="cross-compiling.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="understanding-how-systemtap-works.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="using-usage"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">2.3. Running SystemTap Scripts</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="using-systemtap.html" title="Chapter 2. Using SystemTap" /><link rel="prev" href="cross-compiling.html" title="2.2. Generating Instrumentation for Other Computers" /><link rel="next" href="understanding-how-systemtap-works.html" title="Chapter 3. Understanding How SystemTap Works" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="cross-compiling.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="understanding-how-systemtap-works.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="using-usage">
3 ⁠</a>2.3. Running SystemTap Scripts</h2></div></div></div><a id="idm47748224207312" class="indexterm"></a><a id="idm47748176153536" class="indexterm"></a><a id="idm47748176152128" class="indexterm"></a><a id="idm47748188355600" class="indexterm"></a><a id="idm47748181146624" class="indexterm"></a><a id="idm47748181145184" class="indexterm"></a><div class="para"> 3 ⁠</a>2.3. Running SystemTap Scripts</h2></div></div></div><a id="idm140174731874608" class="indexterm"></a><a id="idm140174733911248" class="indexterm"></a><a id="idm140174732350384" class="indexterm"></a><a id="idm140174742495728" class="indexterm"></a><a id="idm140174742918944" class="indexterm"></a><a id="idm140174734831584" class="indexterm"></a><div class="para">
4 SystemTap is distributed with a number of command line tools that allow you to monitor the activities of the system. The <code class="command">stap</code> command reads probing instructions from a SystemTap script, translates these instructions into C code, builds a kernel module, and loads it into the running Linux kernel. The <code class="command">staprun</code> command runs SystemTap instrumentation, that is, a kernel module built from SystemTap scripts during a cross-instrumentation. 4 SystemTap is distributed with a number of command line tools that allow you to monitor the activities of the system. The <code class="command">stap</code> command reads probing instructions from a SystemTap script, translates these instructions into C code, builds a kernel module, and loads it into the running Linux kernel. The <code class="command">staprun</code> command runs SystemTap instrumentation, that is, a kernel module built from SystemTap scripts during a cross-instrumentation.
5 </div><a id="idm47748181116864" class="indexterm"></a><div class="para"> 5 </div><a id="idm140174743177952" class="indexterm"></a><div class="para">Running <code class="command">stap</code> and <code class="command">staprun</code> requires elevated privileges to the system. Because not all users can be granted root access just to run SystemTap, you can allow a non-privileged user to run SystemTap instrumentation on their machine by adding them to one of the following user groups:</div><div class="variablelist"><dl class="variablelist"><dt><span class="term">stapdev</span></dt><dd><a id="idm140174743190400" class="indexterm"></a><a id="idm140174743188784" class="indexterm"></a><div class="para">
6 Running <code class="command">stap</code> and <code class="command">staprun</code> requires elevated privileges to the system. Because not all users can be granted root access just to run SystemTap, you can allow a non-privileged user to run SystemTap instrumentation on their machine by adding them to one of the following user groups: 6 Members of this group can use the <code class="command">stap</code> command to run SystemTap scripts, or <code class="command">staprun</code> to run SystemTap instrumentation modules.
7 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">stapdev</span></dt><dd><a id="idm47748234386864" class="indexterm"></a><a id="idm47748234385904" class="indexterm"></a><div class="para"> 7</div><div class="para">
8 Members of this group can use the <code class="command">stap</code> command to run SystemTap scripts, or <code class="command">staprun</code> to run SystemTap instrumentation modules. 8 Running the <code class="command">stap</code> command involves compiling SystemTap scripts into kernel modules and
9 </div><div class="para"> 9 loading them into the kernel. This operation requires elevated privileges to the system, which are granted
10 Running the <code class="command">stap</code> command involves compiling SystemTap scripts into kernel modules and loading them into the kernel. This operation requires elevated privileges to the system, which are granted to <code class="systemitem">stapdev</code> members. Unfortunately, such privileges also grant effective root access to <code class="systemitem">stapdev</code> members. As a consequence, only grant <code class="systemitem">stapdev</code> group membership to users whom you can trust with root access. 10 to <code class="systemitem">stapdev</code> members. Unfortunately, such privileges also grant effective root
11 </div></dd><dt><span class="term">stapusr</span></dt><dd><a id="idm47748219971440" class="indexterm"></a><a id="idm47748175252592" class="indexterm"></a><div class="para"> 11 access to <code class="systemitem">stapdev</code> members. As a consequence, only grant
12 Members of this group can only use the <code class="command">staprun</code> command to run SystemTap instrumentation modules. In addition, they can only run modules from the <code class="filename">/lib/modules/<em class="replaceable">kernel_version</em>/systemtap/</code> directory. Note that this directory must be owned only by the root user, and must only be writable by the root user. 12 <code class="systemitem">stapdev</code> group membership to users whom you can trust with root access.
13 </div></dd></dl></div><div class="para"> 13</div></dd><dt><span class="term">stapusr</span></dt><dd><a id="idm140174732557312" class="indexterm"></a><a id="idm140174732555696" class="indexterm"></a><div class="para">
14 Members of this group can only use the <code class="command">staprun</code> command to run SystemTap instrumentation modules. In addition, they can only run modules from the <code class="filename">/lib/modules/<em class="replaceable">kernel_version</em>/systemtap/</code> directory. Note that this directory must be owned only by the root user, and must only be writable by the root user.
15</div></dd></dl></div><div class="para">
14 The <code class="command">stap</code> command reads a SystemTap script either from a file, or from standard input. To tell <code class="command">stap</code> to read a SystemTap script from a file, specify the file name on the command line: 16 The <code class="command">stap</code> command reads a SystemTap script either from a file, or from standard input. To tell <code class="command">stap</code> to read a SystemTap script from a file, specify the file name on the command line:
15 </div><pre class="screen"><code class="command">stap <em class="replaceable">file_name</em></code></pre><a id="idm47748228620736" class="indexterm"></a><a id="idm47748215175952" class="indexterm"></a><a id="idm47748215174544" class="indexterm"></a><div class="para"> 17 </div><pre class="screen"><code class="command">stap <em class="replaceable">file_name</em></code></pre><a id="idm140174733851136" class="indexterm"></a><a id="idm140174732412592" class="indexterm"></a><a id="idm140174732410960" class="indexterm"></a><div class="para">
16 To instruct <code class="command">stap</code> to read a SystemTap script from standard input, use the <code class="option">-</code> switch instead of the file name. Note that any command-line options you wish to use must be inserted before the <code class="option">-</code> switch. For example, to make the output of the <code class="command">stap</code> command more verbose, type: 18 To instruct <code class="command">stap</code> to read a SystemTap script from standard input, use the <code class="option">-</code> switch instead of the file name. Note that any command-line options you wish to use must be inserted before the <code class="option">-</code> switch. For example, to make the output of the <code class="command">stap</code> command more verbose, type:
17 </div><pre class="screen"><code class="command">echo "probe timer.s(1) {exit()}" | stap -v -</code></pre><div class="para"> 19 </div><pre class="screen"><code class="command">echo "probe timer.s(1) {exit()}" | stap -v -</code></pre><div class="para"> Below is a list of commonly used <code class="command">stap</code> options: </div><a id="idm140174742164080" class="indexterm"></a><a id="idm140174736744368" class="indexterm"></a><div class="variablelist"><a id="idm140174736742464" class="indexterm"></a><dl class="variablelist"><dt><span class="term">-v</span></dt><dd><div class="para">Makes the output of the SystemTap session more
18 Below is a list of commonly used <code class="command">stap</code> options: 20 verbose. You can repeat this option multiple times to provide more details on the script's execution,
19 </div><a id="idm47748220329952" class="indexterm"></a><a id="idm47748220328512" class="indexterm"></a><div class="variablelist"><a id="idm47748176235872" class="indexterm"></a><dl class="variablelist"><dt><span class="term">-v</span></dt><dd><div class="para"> 21 for example:</div><pre class="screen"><code class="command">stap -vvv script.stp</code></pre><div class="para">This option is particularly useful if you encounter any errors in running the script.
20 Makes the output of the SystemTap session more verbose. You can repeat this option multiple times to provide more details on the script's execution, for example: 22 For more information about common SystemTap script errors, refer to <a class="xref" href="errors.html">Chapter 6, <em>Understanding SystemTap Errors</em></a>.</div></dd><dt><span class="term">-o <em class="replaceable">file_name</em></span></dt><dd><div class="para">Sends the standard output to a file named <em class="replaceable">file_name</em>.</div></dd><dt><span class="term">-S <em class="replaceable">size</em>,<em class="replaceable">count</em></span></dt><dd><div class="para">Limits the maximum size of output files to <em class="replaceable">size</em> megabytes and
21 </div><pre class="screen"><code class="command">stap -vvv script.stp</code></pre><div class="para"> 23 the maximum number of stored files to
22 This option is particularly useful if you encounter any errors in running the script. For more information about common SystemTap script errors, refer to <a class="xref" href="errors.html">Chapter 6, <em>Understanding SystemTap Errors</em></a>. 24 <em class="replaceable">count</em>. This option implements logrotate operations for SystemTap
23 </div></dd><dt><span class="term">-o <em class="replaceable">file_name</em></span></dt><dd><div class="para"> 25 and the resulting file names have a sequence number suffix.</div></dd><dt><span class="term">-x <em class="replaceable">process_id</em></span></dt><dd><div class="para">Sets the SystemTap handler function <code class="function">target()</code> to the specified process ID. For more information about <code class="function">target()</code>, refer to <a class="xref" href="systemtapscript-handler.html#systemtapscript-functions">SystemTap Functions</a>.</div></dd><dt><span class="term">-c '<em class="replaceable">command</em>'</span></dt><dd><div class="para">Sets the SystemTap handler function
24 Sends the standard output to a file named <em class="replaceable">file_name</em>. 26 <code class="function">target()</code> to the specified
25 </div></dd><dt><span class="term">-S <em class="replaceable">size</em>,<em class="replaceable">count</em></span></dt><dd><div class="para"> 27 command and runs the SystemTap instrumentation for the duration
26 Limits the maximum size of output files to <em class="replaceable">size</em> megabytes and the maximum number of stored files to <em class="replaceable">count</em>. This option implements logrotate operations for SystemTap and the resulting file names have a sequence number suffix. 28 of this command.
27 </div></dd><dt><span class="term">-x <em class="replaceable">process_id</em></span></dt><dd><div class="para"> 29 For more information about
28 Sets the SystemTap handler function <code class="function">target()</code> to the specified process ID. For more information about <code class="function">target()</code>, refer to <a class="xref" href="systemtapscript-handler.html#systemtapscript-functions">SystemTap Functions</a>. 30 <code class="function">target()</code>, refer to <a class="xref" href="systemtapscript-handler.html#systemtapscript-functions">SystemTap Functions</a>.</div></dd><dt><span class="term">-e '<em class="replaceable">script</em>'</span></dt><dd><div class="para">Uses <em class="replaceable">script</em> rather than a file as input for the SystemTap translator.</div></dd><dt><span class="term">-F</span></dt><dd><div class="para">Uses SystemTap's flight recorder mode and makes the script a
29 </div></dd><dt><span class="term">-c '<em class="replaceable">command</em>'</span></dt><dd><div class="para"> 31 background process. For more information about flight
30 Sets the SystemTap handler function <code class="function">target()</code> to the specified command and runs the SystemTap instrumentation for the duration of this command. For more information about <code class="function">target()</code>, refer to <a class="xref" href="systemtapscript-handler.html#systemtapscript-functions">SystemTap Functions</a>. 32 recorder mode, refer to <a class="xref" href="using-usage.html#flight-recorder">Section 2.3.1, “SystemTap Flight Recorder Mode”</a>.</div></dd></dl></div><div class="para">For more information about the <code class="command">stap</code> command, refer to the <span class="citerefentry"><span class="refentrytitle">stap</span>(1)</span> man page. For more information about the <code class="command">staprun</code> command and cross-instrumentation, refer to <a class="xref" href="cross-compiling.html">Section 2.2, “Generating Instrumentation for Other Computers”</a> or the <span class="citerefentry"><span class="refentrytitle">staprun</span>(8)</span> man page.</div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="flight-recorder">
31 </div></dd><dt><span class="term">-e '<em class="replaceable">script</em>'</span></dt><dd><div class="para"> 33 ⁠</a>2.3.1. SystemTap Flight Recorder Mode</h3></div></div></div><a id="idm140174732998016" class="indexterm"></a><div class="para">
32 Uses <em class="replaceable">script</em> rather than a file as input for the SystemTap translator. 34SystemTap's flight recorder mode allows you to run a SystemTap script
33 </div></dd><dt><span class="term">-F</span></dt><dd><div class="para"> 35for long periods of time and just focus on recent output. The flight
34 Uses SystemTap's flight recorder mode and makes the script a background process. For more information about flight recorder mode, refer to <a class="xref" href="using-usage.html#flight-recorder">Section 2.3.1, “SystemTap Flight Recorder Mode”</a>. 36recorder mode limits the amount of output
35 </div></dd></dl></div><div class="para"> 37generated.
36 For more information about the <code class="command">stap</code> command, refer to the <span class="citerefentry"><span class="refentrytitle">stap</span>(1)</span> man page. For more information about the <code class="command">staprun</code> command and cross-instrumentation, refer to <a class="xref" href="cross-compiling.html">Section 2.2, “Generating Instrumentation for Other Computers”</a> or the <span class="citerefentry"><span class="refentrytitle">staprun</span>(8)</span> man page. 38</div><div class="para">
37 </div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="flight-recorder"> 39There are two variations of the flight recorder mode:
38 ⁠</a>2.3.1. SystemTap Flight Recorder Mode</h3></div></div></div><a id="idm47748224790032" class="indexterm"></a><div class="para"> 40<em class="firstterm">in-memory</em> and <em class="firstterm">file</em> mode.
39 SystemTap's flight recorder mode allows you to run a SystemTap script for long periods of time and just focus on recent output. The flight recorder mode limits the amount of output generated. 41In both cases, the SystemTap script runs as a
40 </div><div class="para"> 42background process.
41 There are two variations of the flight recorder mode: <em class="firstterm">in-memory</em> and <em class="firstterm">file</em> mode. In both cases, the SystemTap script runs as a background process. 43</div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="memory-flight-recorder">
42 </div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="memory-flight-recorder"> 44 ⁠</a>2.3.1.1. In-memory Flight Recorder</h4></div></div></div><a id="idm140174731760592" class="indexterm"></a><div class="para">
43 ⁠</a>2.3.1.1. In-memory Flight Recorder</h4></div></div></div><a id="idm47748224178320" class="indexterm"></a><div class="para"> 45When flight recorder mode is used without a
44 When flight recorder mode is used without a file name, SystemTap uses a buffer in kernel memory to store the output of the script. Once the SystemTap instrumentation module is loaded and the probes start running, the instrumentation detaches and is put in the background. When the interesting event occurs, you can reattach to the instrumentation to see the recent output in the memory buffer and any continuing output. 46file name, SystemTap uses a buffer in kernel memory to store the output of the
45 </div><div class="para"> 47script. Once the SystemTap instrumentation module is loaded and the probes start
46 To run a SystemTap script by using the flight recorder in-memory mode, run the <code class="command">stap</code> command with the <code class="option">-F</code> command line option: 48running, the instrumentation detaches and is put in the background. When
47 </div><pre class="screen"><code class="command">stap -F iotime.stp</code></pre><div class="para"> 49the interesting event occurs, you can reattach to the instrumentation to see
48 Once the script starts, <code class="command">stap</code> prints a message similar to the following to provide you with the command to reconnect to the running script: 50the recent output in the memory buffer and any continuing output.
49 </div><pre class="screen">Disconnecting from systemtap module. 51</div><div class="para">
52To run a SystemTap script by using the flight recorder in-memory mode, run the <code class="command">stap</code> command with the <code class="option">-F</code> command line option:
53</div><pre class="screen"><code class="command">stap -F iotime.stp</code></pre><div class="para">
54Once the script starts, <code class="command">stap</code> prints a message similar to
55the following to provide you with the command to reconnect to the running
56script:
57</div><pre class="screen">Disconnecting from systemtap module.
50To reconnect, type "staprun -A stap_5dd0073edcb1f13f7565d8c343063e68_19556"</pre><div class="para"> 58To reconnect, type "staprun -A stap_5dd0073edcb1f13f7565d8c343063e68_19556"</pre><div class="para">
51 When the interesting event occurs, run the following command to connect to the currently running script, output the recent data in the memory buffer, and get continuing output: 59When the interesting event occurs, run the following command to connect
52 </div><pre class="screen"><code class="command">staprun -A stap_5dd0073edcb1f13f7565d8c343063e68_19556</code></pre><div class="para"> 60to the currently running script, output the recent data in the memory buffer,
53 By default, the kernel buffer is 1MB in size. You can increase this value by using the <code class="option">-s</code> option with the size in megabytes (rounded up to the next power over 2) for the buffer. For example, <code class="option">-s2</code> on the SystemTap command line would specify 2MB for the buffer. 61and get continuing output:
54 </div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="file-flight-recorder"> 62</div><pre class="screen"><code class="command">staprun -A stap_5dd0073edcb1f13f7565d8c343063e68_19556</code></pre><div class="para">
55 ⁠</a>2.3.1.2. File Flight Recorder</h4></div></div></div><a id="idm47748180568960" class="indexterm"></a><div class="para"> 63By default, the kernel buffer is 1MB in size. You can increase this value by
56 The flight recorder mode can also store data to files. You can control the number and size of the files kept by using the <code class="option">-S</code> option followed by two numerical arguments separated by a comma: the first argument is the maximum size in megabytes for the each output file, the second argument is the number of recent files to keep. To specify the file name, use the <code class="option">-o</code> option followed by the name. SystemTap automatically adds a number suffix to the file name to indicate the order of the files. 64using the <code class="option">-s</code> option with the size in megabytes (rounded up to the
57 </div><div class="para"> 65next power over 2) for the buffer. For example, <code class="option">-s2</code> on the
58 The following command starts SystemTap in file flight recorder mode with the output going to files named <code class="filename">/tmp/iotime.log.<em class="replaceable">[0-9]+</em></code>, each file 1MB or smaller, and keeping latest two files: 66SystemTap command line would specify 2MB for the buffer.
59 </div><pre class="screen"><code class="command">stap -F -o /tmp/pfaults.log -S 1,2 pfaults.stp</code></pre><div class="para"> 67</div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="file-flight-recorder">
60 The command prints the process ID to standard output. Sending a SIGTERM to the process terminates the SystemTap script and stops the data collection. For example, if the previous command listed 7590 as the process ID, the following command would stop the SystemTap script: 68 ⁠</a>2.3.1.2. File Flight Recorder</h4></div></div></div><a id="idm140174733916832" class="indexterm"></a><div class="para">
61 </div><pre class="screen"><code class="command">kill -s SIGTERM 7590</code></pre><div class="para"> 69The flight recorder mode can also store data to files. You can control the number and size of
62 In this example, only the most recent two files generated by the script are kept: SystemTap automatically removes older files. As a result, the <code class="command">ls -sh /tmp/pfaults.log.*</code> command lists two files: 70the files kept by using the <code class="option">-S</code> option followed by two
63 </div><pre class="screen">1020K /tmp/pfaults.log.5 44K /tmp/pfaults.log.6</pre><div class="para"> 71numerical arguments separated by a comma: the first argument is the maximum size
64 To examine the latest data, read the file with the highest number, in this case <code class="filename">/tmp/pfaults.log.6</code>. 72in megabytes for the each output file, the second argument is the number of
65 </div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="cross-compiling.html"><strong>Prev</strong>2.2. Generating Instrumentation for Other Compute...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="understanding-how-systemtap-works.html"><strong>Next</strong>Chapter 3. Understanding How SystemTap Works</a></li></ul></body></html> \ No newline at end of file 73recent files to keep. To specify the file name, use the <code class="option">-o</code>
74option followed by the name. SystemTap automatically adds a number suffix to the file name
75to indicate the order of the files.
76</div><div class="para">
77The following command starts SystemTap in file
78flight recorder mode with the output going to files named
79<code class="filename">/tmp/iotime.log.<em class="replaceable">[0-9]+</em></code>, each
80file 1MB or smaller, and keeping latest two files:
81</div><pre class="screen"><code class="command">stap -F -o /tmp/pfaults.log -S 1,2 pfaults.stp</code></pre><div class="para">
82The command prints the process ID to standard output. Sending a SIGTERM to
83the process terminates the SystemTap script and stops the data collection. For
84example, if the previous command listed 7590 as the process ID, the following
85command would stop the SystemTap script:
86</div><pre class="screen"><code class="command">kill -s SIGTERM 7590</code></pre><div class="para">
87In this example, only the most recent two files generated by the script are
88kept: SystemTap automatically removes older files. As a result, the
89<code class="command">ls -sh /tmp/pfaults.log.*</code> command lists two files:
90</div><pre class="screen">1020K /tmp/pfaults.log.5 44K /tmp/pfaults.log.6</pre><div class="para">
91To examine the latest data, read the file with the highest number, in this case
92<code class="filename">/tmp/pfaults.log.6</code>.
93</div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="cross-compiling.html"><strong>Prev</strong>2.2. Generating Instrumentation for Other Compute...</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="understanding-how-systemtap-works.html"><strong>Next</strong>Chapter 3. Understanding How SystemTap Works</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/ustack.html b/SystemTap_Beginners_Guide/ustack.html
index 583940d9..a6e71b47 100644
--- a/SystemTap_Beginners_Guide/ustack.html
+++ b/SystemTap_Beginners_Guide/ustack.html
@@ -1,16 +1,40 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">4.3. User-Space Stack Backtraces</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="userspace-probing.html" title="Chapter 4. User-space Probing" /><link rel="prev" href="utargetvariable.html" title="4.2. Accessing User-Space Target Variables" /><link rel="next" href="useful-systemtap-scripts.html" title="Chapter 5. Useful SystemTap Scripts" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="utargetvariable.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="useful-systemtap-scripts.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="ustack"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">4.3. User-Space Stack Backtraces</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="userspace-probing.html" title="Chapter 4. User-space Probing" /><link rel="prev" href="utargetvariable.html" title="4.2. Accessing User-Space Target Variables" /><link rel="next" href="useful-systemtap-scripts.html" title="Chapter 5. Useful SystemTap Scripts" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="utargetvariable.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="useful-systemtap-scripts.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="ustack">
3 ⁠</a>4.3. User-Space Stack Backtraces</h2></div></div></div><a id="idm47748228688992" class="indexterm"></a><div class="para"> 3 ⁠</a>4.3. User-Space Stack Backtraces</h2></div></div></div><a id="idm140174740278928" class="indexterm"></a><div class="para">
4 The probe point (<code class="function">pp</code>) function indicates which particular event triggered the SystemTap event handler. A probe on the entry into a function would list the function name. However, in many cases the same probe point event may be triggered by many different modules in the program; this is particularly true for functions in shared libraries. A SystemTap backtrace of the user-space stack can provide additional context on how the probe point event is triggered. 4 The probe point (<code class="function">pp</code>) function indicates which
5 </div><div class="para"> 5 particular event triggered the SystemTap event handler.
6 The user-space stack backtrace generation is complicated by the compiler producing code optimized to eliminate stack frame pointers. However, the compiler also includes information in the debug information section to allow debugging tools to produce stack backtraces. SystemTap user-space stack backtrace mechanism makes use of that debug information to walk the stack to generate stack traces for 32-bit and 64-bit x86 processors; other processor architectures do not yet support the use of debug information to unwind the user-space stack. To ensure that the needed debug information is used to produce the user-space stack backtraces, use the <code class="option">-d <em class="replaceable">executable</em></code> option for executables and <code class="option">-ldd</code> for shared libraries. 6 A probe on the entry into a function would list the function name.
7 </div><div class="para"> 7 However, in many cases the same probe point event may be triggered by
8 For example, you can use the user-space backtrack functions to see how the <code class="function">xmalloc</code> function is being called by the <code class="command">ls</code> command. With the debuginfo for the <code class="command">ls</code> command installed, the following SystemTap command provides a backtrace each time the <code class="function">xmalloc</code> function is called: 8 many different modules in the program; this is particularly true for
9 </div><pre class="screen"><code class="command">stap -d /bin/ls --ldd \</code> 9 functions in shared libraries. A SystemTap backtrace of the user-space
10 stack can provide additional context on how the probe point event is
11 triggered.
12</div><div class="para">
13 The user-space stack backtrace generation is complicated
14 by the compiler producing code optimized to eliminate stack frame
15 pointers.
16 However, the compiler also includes information in the debug information
17 section to allow debugging tools to produce stack backtraces.
18 SystemTap user-space stack backtrace mechanism makes use of that
19 debug information to walk the stack to generate stack traces for 32-bit
20 and 64-bit x86 processors; other processor architectures do not yet
21 support the use of debug information to unwind the user-space stack.
22 To ensure that the needed debug information is used to produce the
23 user-space stack backtraces, use the
24 <code class="option">-d <em class="replaceable">executable</em></code> option for
25 executables and <code class="option">-ldd</code> for shared libraries.
26</div><div class="para">
27 For example, you can use the user-space backtrack functions to see how
28 the <code class="function">xmalloc</code> function is
29 being called by the <code class="command">ls</code> command. With the
30 debuginfo for the <code class="command">ls</code> command installed, the following
31 SystemTap command provides a backtrace each time the
32 <code class="function">xmalloc</code> function is called:
33</div><pre class="screen"><code class="command">stap -d /bin/ls --ldd \</code>
10<code class="command">-e 'probe process("ls").function("xmalloc") {print_usyms(ubacktrace())}' \</code> 34<code class="command">-e 'probe process("ls").function("xmalloc") {print_usyms(ubacktrace())}' \</code>
11<code class="command">-c "ls /"</code></pre><div class="para"> 35<code class="command">-c "ls /"</code></pre><div class="para">
12 When executed, this command produces output similar to the following: 36When executed, this command produces output similar to the following:
13 </div><pre class="screen"> 37</div><pre class="screen">
14bin dev lib media net proc sbin sys var 38bin dev lib media net proc sbin sys var
15boot etc lib64 misc op_session profilerc selinux tmp 39boot etc lib64 misc op_session profilerc selinux tmp
16cgroup home lost+found mnt opt root srv usr 40cgroup home lost+found mnt opt root srv usr
@@ -27,5 +51,9 @@ cgroup home lost+found mnt opt root srv usr
27 0x3fa441ec5d : __libc_start_main+0xfd/0x1d0 [/lib64/libc-2.12.so] 51 0x3fa441ec5d : __libc_start_main+0xfd/0x1d0 [/lib64/libc-2.12.so]
28 ... 52 ...
29</pre><div class="para"> 53</pre><div class="para">
30 For more details on the functions available for user-space stack backtraces, refer to <code class="filename">ucontext-symbols.stp</code> and <code class="filename">ucontext-unwind.stp</code> tapsets. You can also find the description of the functions in the aforementioned tapsets in the <em class="citetitle">SystemTap Tapset Reference Manual</em>. 54 For more details on the functions available for user-space stack
31 </div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="utargetvariable.html"><strong>Prev</strong>4.2. Accessing User-Space Target Variables</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="useful-systemtap-scripts.html"><strong>Next</strong>Chapter 5. Useful SystemTap Scripts</a></li></ul></body></html> \ No newline at end of file 55 backtraces, refer to <code class="filename">ucontext-symbols.stp</code> and
56 <code class="filename">ucontext-unwind.stp</code> tapsets. You can also find
57 the description of the functions in the aforementioned tapsets in the
58 <em class="citetitle">SystemTap Tapset Reference Manual</em>.
59</div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="utargetvariable.html"><strong>Prev</strong>4.2. Accessing User-Space Target Variables</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="useful-systemtap-scripts.html"><strong>Next</strong>Chapter 5. Useful SystemTap Scripts</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/utargetvariable.html b/SystemTap_Beginners_Guide/utargetvariable.html
index 0c173b87..7ca1266d 100644
--- a/SystemTap_Beginners_Guide/utargetvariable.html
+++ b/SystemTap_Beginners_Guide/utargetvariable.html
@@ -1,19 +1,31 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">4.2. Accessing User-Space Target Variables</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="publican v4.1.3" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.7-en-US-2.0-1" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="userspace-probing.html" title="Chapter 4. User-space Probing" /><link rel="prev" href="userspace-probing.html" title="Chapter 4. User-space Probing" /><link rel="next" href="ustack.html" title="4.3. User-Space Stack Backtraces" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img alt="Product Site" src="Common_Content/images//image_left.png" /></a><a class="right" href="https://fedorahosted.org/publican"><img alt="Documentation Site" src="Common_Content/images//image_right.png" /></a></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="userspace-probing.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="ustack.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="utargetvariable"> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title xmlns:d="http://docbook.org/ns/docbook">4.2. Accessing User-Space Target Variables</title><link rel="stylesheet" type="text/css" href="Common_Content/css/default.css" /><link rel="stylesheet" media="print" href="Common_Content/css/print.css" type="text/css" /><meta xmlns:d="http://docbook.org/ns/docbook" name="generator" content="not publican" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="" /><link rel="home" href="index.html" title="SystemTap Beginners Guide" /><link rel="up" href="userspace-probing.html" title="Chapter 4. User-space Probing" /><link rel="prev" href="userspace-probing.html" title="Chapter 4. User-space Probing" /><link rel="next" href="ustack.html" title="4.3. User-Space Stack Backtraces" /></head><body><p id="title"></p><ul class="docnav top"><li class="previous"><a accesskey="p" href="userspace-probing.html"><strong>Prev</strong></a></li><li class="home">SystemTap Beginners Guide</li><li class="next"><a accesskey="n" href="ustack.html"><strong>Next</strong></a></li></ul><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="utargetvariable">
3 ⁠</a>4.2. Accessing User-Space Target Variables</h2></div></div></div><a id="idm47748233418640" class="indexterm"></a><div class="para"> 3 ⁠</a>4.2. Accessing User-Space Target Variables</h2></div></div></div><a id="idm140174739361616" class="indexterm"></a><div class="para">
4 You can access user-space target variables in the same manner as described in <a class="xref" href="targetvariables.html">Section 3.3.2, “Target Variables”</a>. In Linux, however, there are separate address spaces for the user and kernel code. When using the <code class="literal">-&gt;</code> operator, SystemTap accesses the appropriate address space. 4You can access user-space target variables in the same manner as described in
5 </div><div class="para"> 5<a class="xref" href="targetvariables.html">Section 3.3.2, “Target Variables”</a>.
6 For pointers to base types such as integers and strings, there are a number of functions listed below to access user-space data. The first argument for each functions is the pointer to the data item. 6In Linux, however, there are separate address spaces for the user and
7 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">user_char(<em class="replaceable">address</em>)</span></dt><dd><div class="para"> 7kernel code.
8 Obtains the character at <em class="replaceable">address</em> for the current user process. 8When using the <code class="literal">-&gt;</code> operator, SystemTap accesses the appropriate address space.
9 </div></dd><dt><span class="term">user_short(<em class="replaceable">address</em>)</span></dt><dd><div class="para"> 9</div><div class="para">
10 Obtains the short integer at <em class="replaceable">address</em> for the current user process. 10For pointers to base types such as integers and strings,
11 </div></dd><dt><span class="term">user_int(<em class="replaceable">address</em>)</span></dt><dd><div class="para"> 11there are a number of functions listed below to access user-space data.
12 Obtains the integer at <em class="replaceable">address</em> for the current user process. 12The first argument for each functions is the pointer to the data item.
13 </div></dd><dt><span class="term">user_long(<em class="replaceable">address</em>)</span></dt><dd><div class="para"> 13</div><div class="variablelist"><dl class="variablelist"><dt><span class="term">user_char(<em class="replaceable">address</em>)</span></dt><dd><div class="para">
14 Obtains the long integer at <em class="replaceable">address</em> for the current user process. 14Obtains the character at <em class="replaceable">address</em> for the current
15 </div></dd><dt><span class="term">user_string(<em class="replaceable">address</em>)</span></dt><dd><div class="para"> 15user process.
16 Obtains the string at <em class="replaceable">address</em> for the current user process. 16</div></dd><dt><span class="term">user_short(<em class="replaceable">address</em>)</span></dt><dd><div class="para">
17 </div></dd><dt><span class="term">user_string_n(<em class="replaceable">address</em>, <em class="replaceable">n</em>)</span></dt><dd><div class="para"> 17Obtains the short integer at <em class="replaceable">address</em> for the current
18 Obtains the string at <em class="replaceable">address</em> for the current user process and limits the string to <em class="replaceable">n</em> bytes. 18user process.
19 </div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="userspace-probing.html"><strong>Prev</strong>Chapter 4. User-space Probing</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="ustack.html"><strong>Next</strong>4.3. User-Space Stack Backtraces</a></li></ul></body></html> \ No newline at end of file 19</div></dd><dt><span class="term">user_int(<em class="replaceable">address</em>)</span></dt><dd><div class="para">
20Obtains the integer at <em class="replaceable">address</em> for the current
21user process.
22</div></dd><dt><span class="term">user_long(<em class="replaceable">address</em>)</span></dt><dd><div class="para">
23Obtains the long integer at <em class="replaceable">address</em> for the current
24user process.
25</div></dd><dt><span class="term">user_string(<em class="replaceable">address</em>)</span></dt><dd><div class="para">
26Obtains the string at <em class="replaceable">address</em> for the current
27user process.
28</div></dd><dt><span class="term">user_string_n(<em class="replaceable">address</em>, <em class="replaceable">n</em>)</span></dt><dd><div class="para">
29Obtains the string at <em class="replaceable">address</em> for the current
30user process and limits the string to <em class="replaceable">n</em> bytes.
31</div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="userspace-probing.html"><strong>Prev</strong>Chapter 4. User-space Probing</a></li><li class="up"><a accesskey="u" href="#"><strong>Up</strong></a></li><li class="home"><a accesskey="h" href="index.html"><strong>Home</strong></a></li><li class="next"><a accesskey="n" href="ustack.html"><strong>Next</strong>4.3. User-Space Stack Backtraces</a></li></ul></body></html> \ No newline at end of file