summaryrefslogtreecommitdiffstats
path: root/SystemTap_Beginners_Guide
diff options
authormcermak <mcermak>2014-05-16 17:59:58 +0000
committermcermak <mcermak>2014-05-16 17:59:58 +0000
commitba268aa1275afdd5c37452071dbafa58979ea277 (patch)
tree06a5e0b4eec53e50acd21a691c58a2cb6a9b6b95 /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/css/common.css657
-rw-r--r--SystemTap_Beginners_Guide/Common_Content/css/default.css1
-rw-r--r--SystemTap_Beginners_Guide/Common_Content/images/title_logo.pngbin8178 -> 40059 bytes
-rw-r--r--SystemTap_Beginners_Guide/Common_Content/images/title_logo.svg118
-rw-r--r--SystemTap_Beginners_Guide/SystemTap_Beginners_Guide-Preface.html41
-rw-r--r--SystemTap_Beginners_Guide/appe-Publican-Revision_History.html7
-rw-r--r--SystemTap_Beginners_Guide/arrayoperators.html11
-rw-r--r--SystemTap_Beginners_Guide/arrayops-aggregates.html35
-rw-r--r--SystemTap_Beginners_Guide/arrayops-conditionals.html11
-rw-r--r--SystemTap_Beginners_Guide/arrayops-deleting.html11
-rw-r--r--SystemTap_Beginners_Guide/arrayops-foreach.html13
-rw-r--r--SystemTap_Beginners_Guide/arrayops-increment.html9
-rw-r--r--SystemTap_Beginners_Guide/arrayops-readvalues.html9
-rw-r--r--SystemTap_Beginners_Guide/associativearrays.html17
-rw-r--r--SystemTap_Beginners_Guide/commandlineargssect.html9
-rw-r--r--SystemTap_Beginners_Guide/cross-compiling.html77
-rw-r--r--SystemTap_Beginners_Guide/errors.html78
-rw-r--r--SystemTap_Beginners_Guide/futexcontentionsect.html15
-rw-r--r--SystemTap_Beginners_Guide/handlerconditionalstatements.html29
-rw-r--r--SystemTap_Beginners_Guide/index.html11
-rw-r--r--SystemTap_Beginners_Guide/inodewatch2sect.html9
-rw-r--r--SystemTap_Beginners_Guide/inodewatchsect.html19
-rw-r--r--SystemTap_Beginners_Guide/intro-systemtap-vs-others.html13
-rw-r--r--SystemTap_Beginners_Guide/introduction.html21
-rw-r--r--SystemTap_Beginners_Guide/ioblktimesect.html11
-rw-r--r--SystemTap_Beginners_Guide/iotimesect.html19
-rw-r--r--SystemTap_Beginners_Guide/ix01.html3
-rw-r--r--SystemTap_Beginners_Guide/mainsect-disk.html19
-rw-r--r--SystemTap_Beginners_Guide/mainsect-profiling.html15
-rw-r--r--SystemTap_Beginners_Guide/paracallgraph.html17
-rw-r--r--SystemTap_Beginners_Guide/pr01s02.html5
-rw-r--r--SystemTap_Beginners_Guide/references.html41
-rw-r--r--SystemTap_Beginners_Guide/runtimeerror.html37
-rw-r--r--SystemTap_Beginners_Guide/scriptconstructions.html17
-rw-r--r--SystemTap_Beginners_Guide/scripts.html63
-rw-r--r--SystemTap_Beginners_Guide/syscallsbyprocpidsect.html13
-rw-r--r--SystemTap_Beginners_Guide/systemtapscript-handler.html55
-rw-r--r--SystemTap_Beginners_Guide/targetavailable.html7
-rw-r--r--SystemTap_Beginners_Guide/targetvariables.html31
-rw-r--r--SystemTap_Beginners_Guide/threadtimessect.html11
-rw-r--r--SystemTap_Beginners_Guide/timeoutssect.html11
-rw-r--r--SystemTap_Beginners_Guide/topsyssect.html13
-rw-r--r--SystemTap_Beginners_Guide/traceio2sect.html17
-rw-r--r--SystemTap_Beginners_Guide/traceiosect.html23
-rw-r--r--SystemTap_Beginners_Guide/typecasting.html9
-rw-r--r--SystemTap_Beginners_Guide/understanding-how-systemtap-works.html13
-rw-r--r--SystemTap_Beginners_Guide/understanding-tapsets.html7
-rw-r--r--SystemTap_Beginners_Guide/useful-systemtap-scripts.html63
-rw-r--r--SystemTap_Beginners_Guide/userspace-probing.html66
-rw-r--r--SystemTap_Beginners_Guide/using-systemtap.html97
-rw-r--r--SystemTap_Beginners_Guide/using-usage.html109
-rw-r--r--SystemTap_Beginners_Guide/ustack.html21
-rw-r--r--SystemTap_Beginners_Guide/utargetvariable.html33
53 files changed, 1124 insertions, 943 deletions
diff --git a/SystemTap_Beginners_Guide/Common_Content/css/common.css b/SystemTap_Beginners_Guide/Common_Content/css/common.css
index d7dc3f27..5af9649c 100644
--- a/SystemTap_Beginners_Guide/Common_Content/css/common.css
+++ b/SystemTap_Beginners_Guide/Common_Content/css/common.css
@@ -1,6 +1,6 @@
1* { 1* {
2 widows: 2 !important; 2 widows: 4 !important;
3 orphans: 2 !important; 3 orphans: 4 !important;
4} 4}
5 5
6body, h1, h2, h3, h4, h5, h6, pre, li, div { 6body, h1, h2, h3, h4, h5, h6, pre, li, div {
@@ -11,9 +11,9 @@ body {
11 background-color: white; 11 background-color: white;
12 margin:0 auto; 12 margin:0 auto;
13 font-family: "liberation sans", "Myriad ", "Bitstream Vera Sans", "Lucida Grande", "Luxi Sans", "Trebuchet MS", helvetica, verdana, arial, sans-serif; 13 font-family: "liberation sans", "Myriad ", "Bitstream Vera Sans", "Lucida Grande", "Luxi Sans", "Trebuchet MS", helvetica, verdana, arial, sans-serif;
14 font-size:12px; 14 font-size: 14px;
15 max-width:55em; 15 max-width: 770px;
16 color:black; 16 color: black;
17} 17}
18 18
19body.toc_embeded { 19body.toc_embeded {
@@ -23,14 +23,14 @@ body.toc_embeded {
23 23
24object.toc, iframe.toc { 24object.toc, iframe.toc {
25 /*for web hosting system only*/ 25 /*for web hosting system only*/
26 border-style:none; 26 border-style: none;
27 position:fixed; 27 position: fixed;
28 width:290px; 28 width: 290px;
29 height:99.99%; 29 height: 99.99%;
30 top:0; 30 top: 0;
31 left:0; 31 left: 0;
32 z-index: 100; 32 z-index: 100;
33 border-style:none; 33 border-style: none;
34 border-right:1px solid #999; 34 border-right:1px solid #999;
35} 35}
36 36
@@ -43,14 +43,14 @@ body.notoc {
43iframe.notoc { 43iframe.notoc {
44 border-style:none; 44 border-style:none;
45 border: none; 45 border: none;
46 padding: 0em; 46 padding: 0px;
47 position:fixed; 47 position:fixed;
48 width: 21px; 48 width: 21px;
49 height: 29px; 49 height: 29px;
50 top: 0px; 50 top: 0px;
51 left:0; 51 left:0;
52 overflow: hidden; 52 overflow: hidden;
53 margin: 0em; 53 margin: 0px;
54 margin-left: -3px; 54 margin-left: -3px;
55} 55}
56/* End hide web menu */ 56/* End hide web menu */
@@ -63,13 +63,18 @@ body.desktop {
63body.desktop .book > .toc { 63body.desktop .book > .toc {
64 display:block; 64 display:block;
65 width:24em; 65 width:24em;
66 height:99%; 66 height:99.99%;
67 position:fixed; 67 position:fixed;
68 overflow:auto; 68 overflow:auto;
69 top:0px; 69 top:0px;
70 left:0px; 70 left:0px;
71 padding-left:1em; 71/* padding-left:1em; */
72 background-color:#EEEEEE; 72 background-color:#EEEEEE;
73 font-size: 12px;
74}
75
76body.pdf {
77 max-width: 100%;
73} 78}
74 79
75.toc { 80.toc {
@@ -97,14 +102,26 @@ div {
97} 102}
98 103
99div.section { 104div.section {
100 padding-top:1em; 105 page-break-inside: avoid;
101} 106}
102 107
103p, div.para, div.formalpara { 108p, div.para {
104 padding-top:0px; 109 padding-top: 0px;
105 margin-top:0.3em; 110 margin-top: 0.3em;
106 padding-bottom:0px; 111 padding-bottom: 0px;
107 margin-bottom:1em; 112 margin-bottom: 1em;
113}
114
115div.formalpara {
116 padding-top: 0px;
117 margin-top: 1em;
118 padding-bottom: 0px;
119 margin-bottom: 1em;
120}
121
122.varlistentry div.para {
123 page-break-before: avoid;
124
108} 125}
109 126
110/*Links*/ 127/*Links*/
@@ -113,11 +130,15 @@ a {
113} 130}
114 131
115a:link { 132a:link {
116 text-decoration:none; 133 text-decoration: none;
117 border-bottom: 1px dotted ; 134 border-bottom: 1px dotted ;
118 color:#3366cc; 135 color:#3366cc;
119} 136}
120 137
138body.pdf a:link {
139 word-wrap: break-word;
140}
141
121a:visited { 142a:visited {
122 text-decoration:none; 143 text-decoration:none;
123 border-bottom: 1px dotted ; 144 border-bottom: 1px dotted ;
@@ -142,44 +163,51 @@ div.longdesc-link {
142/*headings*/ 163/*headings*/
143h1, h2, h3, h4, h5, h6 { 164h1, h2, h3, h4, h5, h6 {
144 color: #336699; 165 color: #336699;
145 margin-top: 0em; 166 margin-top: 0px;
146 margin-bottom: 0em; 167 margin-bottom: 0px;
147 background-color: transparent; 168 background-color: transparent;
169 margin-bottom: 0px;
170 margin-top: 20px;
148 page-break-inside: avoid; 171 page-break-inside: avoid;
149 page-break-after: avoid; 172 page-break-after: avoid;
173 word-wrap: break-word;
150} 174}
151 175
152h1 { 176h1 {
153 font-size:2.0em; 177 font-size: 22px;
154} 178}
155 179
156.titlepage h1.title { 180.titlepage h1.title {
157 font-size: 3.0em;
158 padding-top: 1em;
159 text-align:left; 181 text-align:left;
160} 182}
161 183
162.book > .titlepage h1.title { 184.book > .titlepage h1.title {
163 text-align:center; 185 text-align: center;
164} 186}
165 187
166.article > .titlepage h1.title { 188.article > .titlepage h1.title,
167 text-align:center; 189.article > .titlepage h2.title {
190 text-align: center;
168} 191}
169 192
170.set .titlepage > div > div > h1.title { 193.set .titlepage > div > div > h1.title {
171 text-align:center; 194 text-align: center;
172} 195}
173 196
174.producttitle { 197.part > .titlepage h1.title {
175 margin-top: 0em; 198 text-align: center;
176 margin-bottom: 0em; 199 font-size: 24px;
177 font-size: 3.0em; 200}
201
202div.producttitle {
203 margin-top: 0px;
204 margin-bottom: 20px;
205 font-size: 48px;
178 font-weight: bold; 206 font-weight: bold;
179 background: #003d6e url(../images/h1-bg.png) top left repeat-x; 207/* background: #003d6e url(../images/h1-bg.png) top left repeat-x; */
180 color: white; 208 color: #336699;
181 text-align: center; 209 text-align: center;
182 padding: 0.7em; 210 padding-top: 12px;
183} 211}
184 212
185.titlepage .corpauthor { 213.titlepage .corpauthor {
@@ -188,66 +216,88 @@ h1 {
188} 216}
189 217
190.section h1.title { 218.section h1.title {
191 font-size: 1.6em; 219 font-size: 18px;
192 padding: 0em; 220 padding: 0px;
193 color: #336699; 221 color: #336699;
194 text-align: left; 222 text-align: left;
195 background: white; 223 background: white;
196} 224}
197 225
198h2 { 226h2 {
199 font-size:1.6em; 227 font-size: 20px;
228 margin-top: 30px;
200} 229}
201 230
202 231
203h2.subtitle, h3.subtitle { 232.book div.subtitle, .book h2.subtitle, .book h3.subtitle {
204 margin-top: 1em; 233 margin-top: 1em;
205 margin-bottom: 1em; 234 margin-bottom: 1em;
206 font-size: 1.4em; 235 font-size: 18px;
207 text-align: center; 236 text-align: center;
208} 237}
209 238
210.preface > div > div > div > h2.title { 239div.subtitle {
240 color: #336699;
241 font-weight: bold;
242}
243
244h1.legalnotice {
245 font-size: 24px;
246}
247
248.preface > div > div > div > h2.title,
249.preface > div > div > div > h1.title {
211 margin-top: 1em; 250 margin-top: 1em;
212 font-size: 2.0em; 251 font-size: 24px;
213} 252}
214 253
215.appendix h2 { 254.appendix h2 {
216 margin-top: 1em; 255 font-size: 24px;
217 font-size: 2.0em;
218} 256}
219 257
220 258
221 259
222h3 { 260h3 {
223 font-size:1.3em; 261 font-size: 14px;
224 padding-top:0em; 262 padding-top:0px;
225 padding-bottom:0em; 263 padding-bottom: 0px;
264 margin-bottom: 0px;
226} 265}
227h4 { 266h4 {
228 font-size:1.1em; 267 font-size: 14px;
229 padding-top:0em; 268 padding-top:0px;
230 padding-bottom:0em; 269 padding-bottom:0px;
231} 270}
232 271
233h5 { 272h5 {
234 font-size:1em; 273 font-size: 14px;
235} 274}
236 275
237h6 { 276h6 {
238 font-size:1em; 277 font-size: 14px;
239} 278 margin-bottom: 0px;
240
241h5.formalpara {
242 font-size:1em;
243 margin-top:2em;
244 margin-bottom:.8em;
245} 279}
246 280
247.abstract h6 { 281.abstract h6 {
248 margin-top:1em; 282 margin-top:1em;
249 margin-bottom:.5em; 283 margin-bottom:.5em;
250 font-size:2em; 284 font-size: 24px;
285}
286
287.index > div > div > div > h2.title {
288 font-size: 24px;
289}
290
291.chapter > div > div > div > h2.title {
292 font-size: 24px;
293}
294
295.section > div > div > div > h2.title {
296 font-size: 21px;
297}
298
299.section > div > div > div > h3.title {
300 font-size: 17px;
251} 301}
252 302
253/*element rules*/ 303/*element rules*/
@@ -256,17 +306,16 @@ hr {
256 border-style:none; 306 border-style:none;
257 border-top: 1px dotted #ccc; 307 border-top: 1px dotted #ccc;
258 width:100%; 308 width:100%;
259 margin-top: 3em;
260} 309}
261 310
262/* web site rules */ 311/* web site rules */
263ul.languages, .languages li { 312ul.languages, .languages li {
264 display:inline; 313 display:inline;
265 padding:0em; 314 padding:0px;
266} 315}
267 316
268.languages li a { 317.languages li a {
269 padding:0em .5em; 318 padding:0px .5em;
270 text-decoration: none; 319 text-decoration: none;
271} 320}
272 321
@@ -302,17 +351,17 @@ ul.languages {
302} 351}
303 352
304a.version { 353a.version {
305 font-size:2em; 354 font-size: 20px;
306 text-decoration:none; 355 text-decoration:none;
307 width:100%; 356 width:100%;
308 display:block; 357 display:block;
309 padding:1em 0em .2em 0em; 358 padding:1em 0px .2em 0px;
310 clear:both; 359 clear:both;
311} 360}
312 361
313a.version:before { 362a.version:before {
314 content:"Version"; 363 content:"Version";
315 font-size:smaller; 364 font-size: smaller;
316} 365}
317 366
318a.version:visited, a.version:link { 367a.version:visited, a.version:link {
@@ -347,7 +396,7 @@ a.version:focus, a.version:hover {
347 position:absolute; 396 position:absolute;
348 left:170px; 397 left:170px;
349 top:0px; 398 top:0px;
350 font-size:smaller; 399 font-size: smaller;
351} 400}
352 401
353.books .pdf:link, .books .pdf:visited { 402.books .pdf:link, .books .pdf:visited {
@@ -375,7 +424,7 @@ a.version:focus, a.version:hover {
375 424
376.products li a { 425.products li a {
377 width:300px; 426 width:300px;
378 padding:.5em 0em; 427 padding:.5em 0px;
379} 428}
380 429
381.products ul { 430.products ul {
@@ -390,7 +439,7 @@ a.version:focus, a.version:hover {
390.revhistory table { 439.revhistory table {
391 background-color:transparent; 440 background-color:transparent;
392 border-color:#fff; 441 border-color:#fff;
393 padding:0em; 442 padding:0px;
394 margin: 0; 443 margin: 0;
395 border-collapse:collapse; 444 border-collapse:collapse;
396 border-style:none; 445 border-style:none;
@@ -398,7 +447,7 @@ a.version:focus, a.version:hover {
398 447
399.revhistory td { 448.revhistory td {
400 text-align :left; 449 text-align :left;
401 padding:0em; 450 padding:0px;
402 border: none; 451 border: none;
403 border-top: 1px solid #fff; 452 border-top: 1px solid #fff;
404 font-weight: bold; 453 font-weight: bold;
@@ -424,25 +473,32 @@ a.version:focus, a.version:hover {
424 text-align: center; 473 text-align: center;
425} 474}
426 475
427h3.author { 476div.author div.author,
428 margin: 0em; 477div.translator div.translator,
429 padding: 0em; 478div.othercredit div.othercredit,
430 padding-top: 1em; 479div.editor div.editor,
480div.contrib div.contrib {
481 margin: 0px;
482 padding: 0px;
483 margin-top: 12px;
484 font-size: 14px;
485 font-weight: bold;
486 color: #336699;
431} 487}
432 488
433.authorgroup h4 { 489div.editedby {
434 padding: 0em; 490 margin-top: 15px;
435 margin: 0em; 491 margin-bottom: -0.8em;
436 padding-top: 1em;
437 margin-top: 1em;
438} 492}
439 493
440.author, 494div.authorgroup .author,
441.editor, 495div.authorgroup.editor,
442.translator, 496div.authorgroup.translator,
443.othercredit, 497div.authorgroup.othercredit,
444.contrib { 498div.authorgroup.contrib {
445 display: block; 499 display: block;
500 font-size: 14px;
501 page-break-inside: avoid;
446} 502}
447 503
448.revhistory .author { 504.revhistory .author {
@@ -455,8 +511,8 @@ h3.author {
455 511
456 512
457.othercredit { 513.othercredit {
458 margin:0em; 514 margin:0px;
459 padding:0em; 515 padding:0px;
460} 516}
461 517
462.releaseinfo { 518.releaseinfo {
@@ -485,7 +541,7 @@ h3.author {
485 padding-left: 2.6em; 541 padding-left: 2.6em;
486} 542}
487 543
488.answer label, .question label { 544.answer .label, .question .label {
489 float:left; 545 float:left;
490 font-weight:bold; 546 font-weight:bold;
491} 547}
@@ -508,7 +564,7 @@ h3.author {
508} 564}
509 565
510.perl_Comment { 566.perl_Comment {
511 color: #FF00FF; 567 color: #888888;
512} 568}
513 569
514 570
@@ -624,27 +680,27 @@ ol.upperroman {
624 680
625dt { 681dt {
626 font-weight:bold; 682 font-weight:bold;
627 margin-bottom:0em; 683 margin-bottom:0px;
628 padding-bottom:0em; 684 padding-bottom:0px;
629} 685}
630 686
631dd { 687dd {
632 margin:0em; 688 margin:0px;
633 margin-left:2em; 689 margin-left:2em;
634 padding-top:0em; 690 padding-top:0px;
635 padding-bottom: 1em; 691 padding-bottom: 1em;
636} 692}
637 693
638li { 694li {
639 padding-top:0px; 695 padding-top: 0px;
640 margin-top:0em; 696 margin-top: 0px;
641 padding-bottom:0px; 697 padding-bottom: 0px;
642 margin-bottom:0.4em; 698/* margin-bottom: 16px; */
643} 699}
644 700
645li p, li div.para { 701li p, li div.para {
646 padding-top:0px; 702 padding-top:0px;
647 margin-top:0em; 703 margin-top:0px;
648 padding-bottom:0px; 704 padding-bottom:0px;
649 margin-bottom:0.3em; 705 margin-bottom:0.3em;
650} 706}
@@ -653,21 +709,26 @@ li p, li div.para {
653img { 709img {
654 display:block; 710 display:block;
655 margin: 2em 0; 711 margin: 2em 0;
712 max-width: 100%;
656} 713}
657 714
658.inlinemediaobject, .inlinemediaobject img { 715.inlinemediaobject,
716.inlinemediaobject img,
717.inlinemediaobject object {
659 display:inline; 718 display:inline;
660 margin:0em; 719 margin:0px;
720 overflow: hidden;
661} 721}
662 722
663.figure img { 723.figure img,
724.mediaobject img {
664 display:block; 725 display:block;
665 margin:0; 726 margin:0;
666 page-break-inside: avoid; 727 page-break-inside: avoid;
667} 728}
668 729
669.figure .title { 730.figure .title {
670 margin:0em; 731 margin:0px;
671 margin-bottom:2em; 732 margin-bottom:2em;
672 padding:0px; 733 padding:0px;
673} 734}
@@ -690,7 +751,7 @@ img {
690} 751}
691 752
692.prompt { 753.prompt {
693 padding:0em .3em; 754 padding:0px .3em;
694} 755}
695 756
696/*user interface styles*/ 757/*user interface styles*/
@@ -700,22 +761,39 @@ img {
700.guibutton, .guilabel { 761.guibutton, .guilabel {
701 font-family: "liberation mono", "bitstream vera mono", "dejavu mono", monospace; 762 font-family: "liberation mono", "bitstream vera mono", "dejavu mono", monospace;
702 font-weight: bold; 763 font-weight: bold;
703 white-space: nowrap;
704} 764}
705 765
706.example { 766.example {
707 background-color: #ffffff; 767 background-color: #ffffff;
708 border-left: 3px solid #aaaaaa; 768 border-left: 3px solid #aaaaaa;
709 padding-top: 1em; 769 padding-top: 1px;
770 padding-bottom: 0.1em;
771 padding-left: 1em;
772}
773
774.equation {
775 border-left: 3px solid #aaaaaa;
776 background-color: #ffffff;
777 padding-top: 1px;
710 padding-bottom: 0.1em; 778 padding-bottom: 0.1em;
779 padding-left: 1em;
711} 780}
712 781
713.example h6 { 782.equation-contents {
714 padding-left: 10px; 783 margin-left: 4em;
784}
785
786div.title {
787 margin-bottom: 1em;
788 font-weight: 14px;
789 font-weight: bold;
790 color: #336699;
791 page-break-inside: avoid;
792 page-break-after: avoid;
793 word-wrap: break-word;
715} 794}
716 795
717.example-contents { 796.example-contents {
718 padding-left: 10px;
719 background-color: #ffffff; 797 background-color: #ffffff;
720} 798}
721 799
@@ -745,13 +823,26 @@ img {
745 font-weight: inherit; 823 font-weight: inherit;
746} 824}
747 825
826.toc H1 {
827 font-weight: bold;
828}
829
830
831div.programlisting {
832 white-space: pre-wrap; /* css-3 */
833 white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
834 white-space: -pre-wrap; /* Opera 4-6 */
835 white-space: -o-pre-wrap; /* Opera 7 */
836 word-wrap: break-word; /* Internet Explorer 5.5+ */
837}
838
748pre { 839pre {
749 font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace; 840 font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
750 display:block; 841 display:block;
751 background-color: #f5f5f5; 842 background-color: #f5f5f5;
752 color: #000000; 843 color: #000000;
753 border: 1px solid #aaaaaa; 844/* border: 1px solid #aaaaaa; */
754 margin-bottom: 0.3em; 845 margin-bottom: 1em;
755 padding:.5em 1em; 846 padding:.5em 1em;
756 white-space: pre-wrap; /* css-3 */ 847 white-space: pre-wrap; /* css-3 */
757 white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */ 848 white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
@@ -759,15 +850,28 @@ pre {
759 white-space: -o-pre-wrap; /* Opera 7 */ 850 white-space: -o-pre-wrap; /* Opera 7 */
760 word-wrap: break-word; /* Internet Explorer 5.5+ */ 851 word-wrap: break-word; /* Internet Explorer 5.5+ */
761 font-size: 0.9em; 852 font-size: 0.9em;
853 border-style:none;
854 box-shadow: 0 2px 5px #AAAAAA inset;
855 -moz-box-shadow: 0 2px 5px #AAAAAA inset;
856 -webkit-box-shadow: 0 2px 5px #AAAAAA inset;
857 -o-box-shadow: 0 2px 5px #AAAAAA inset;
858}
859
860body.pdf pre {
861 border: 1px solid #AAAAAA;
862 box-shadow: none;
863 -moz-box-shadow: none;
864 -webkit-box-shadow: none;
865 -o-box-shadow: none;
762} 866}
763 867
868
764pre .replaceable, 869pre .replaceable,
765pre .keycap { 870pre .keycap {
766} 871}
767 872
768code { 873code {
769 font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace; 874 font-family:"liberation mono", "bitstream vera mono", "dejavu mono", monospace;
770/* white-space: nowrap;*/
771 white-space: pre-wrap; 875 white-space: pre-wrap;
772 word-wrap: break-word; 876 word-wrap: break-word;
773 font-weight:bold; 877 font-weight:bold;
@@ -782,6 +886,12 @@ code {
782 word-wrap: break-word; /* Internet Explorer 5.5+ */ 886 word-wrap: break-word; /* Internet Explorer 5.5+ */
783} 887}
784 888
889code.email {
890 font-weight: normal;
891 font-family: "liberation sans", "Myriad ", "Bitstream Vera Sans", "Lucida Grande", "Luxi Sans", "Trebuchet MS", helvetica, verdana, arial, sans-serif;
892
893}
894
785/*Notifications*/ 895/*Notifications*/
786div.warning:before { 896div.warning:before {
787 content:url(../images/warning.png); 897 content:url(../images/warning.png);
@@ -800,8 +910,8 @@ div.important:before {
800 910
801div.warning, div.note, div.important { 911div.warning, div.note, div.important {
802 color: black; 912 color: black;
803 margin: 0em; 913 margin: 0px;
804 padding: 0em; 914 padding: 0px;
805 background: none; 915 background: none;
806 background-color: white; 916 background-color: white;
807 margin-bottom: 1em; 917 margin-bottom: 1em;
@@ -809,26 +919,26 @@ div.warning, div.note, div.important {
809 page-break-inside: avoid; 919 page-break-inside: avoid;
810} 920}
811 921
812div.warning h2, div.note h2,div.important h2 { 922div.admonition_header p {
813 margin: 0em; 923 margin: 0px;
814 padding: 0em; 924 padding: 0px;
815 color: #eeeeec; 925 color: #eeeeec;
816 padding-top: 0px; 926 padding-top: 0px;
817 padding-bottom: 0px; 927 padding-bottom: 0px;
818 height: 1.4em; 928 height: 1.4em;
819 line-height: 1.4em; 929 line-height: 1.4em;
820 font-size: 1.4em; 930 font-size: 17px;
821 display:inline; 931 display:inline;
822} 932}
823 933
824div.admonition_header { 934div.admonition_header {
825 clear: both; 935 clear: both;
826 margin: 0em; 936 margin: 0px;
827 padding: 0em; 937 padding: 0px;
828 margin-top: -3.3em; 938 margin-top: -40px;
829 padding-left: 58px; 939 padding-left: 58px;
830 line-height: 1.0em; 940 line-height: 1.0px;
831 font-size: 1.0em; 941 font-size: 1.0px;
832} 942}
833 943
834div.warning div.admonition_header { 944div.warning div.admonition_header {
@@ -849,16 +959,16 @@ div.important div.admonition_header {
849div.warning p, div.warning div.para, 959div.warning p, div.warning div.para,
850div.note p, div.note div.para, 960div.note p, div.note div.para,
851div.important p, div.important div.para { 961div.important p, div.important div.para {
852 padding: 0em; 962 padding: 0px;
853 margin: 0em; 963 margin: 0px;
854} 964}
855 965
856div.admonition { 966div.admonition {
857 border: none; 967 border: none;
858 border-left: 1px solid #aaaaaa; 968 border-left: 1px solid #aaaaaa;
859 border-right: 1px solid #aaaaaa; 969 border-right: 1px solid #aaaaaa;
860 padding:0em; 970 padding:0px;
861 margin:0em; 971 margin:0px;
862 padding-top: 1.5em; 972 padding-top: 1.5em;
863 padding-bottom: 1em; 973 padding-bottom: 1em;
864 padding-left: 2em; 974 padding-left: 2em;
@@ -874,7 +984,7 @@ div.admonition {
874 display:block; 984 display:block;
875 height:45px; 985 height:45px;
876 padding-bottom:1em; 986 padding-bottom:1em;
877 margin:0em; 987 margin:0px;
878} 988}
879 989
880#title a.left{ 990#title a.left{
@@ -885,7 +995,7 @@ div.admonition {
885#title a.left img{ 995#title a.left img{
886 border:none; 996 border:none;
887 float:left; 997 float:left;
888 margin:0em; 998 margin:0px;
889 margin-top:.7em; 999 margin-top:.7em;
890} 1000}
891 1001
@@ -896,7 +1006,7 @@ div.admonition {
896#title a.right img { 1006#title a.right img {
897 border:none; 1007 border:none;
898 float:right; 1008 float:right;
899 margin:0em; 1009 margin:0px;
900 margin-top:.7em; 1010 margin-top:.7em;
901} 1011}
902 1012
@@ -906,12 +1016,16 @@ div.table {
906} 1016}
907 1017
908table { 1018table {
909 border:1px solid #6c614b; 1019 border: 1px solid #444;
910 width:100%; 1020 width:100%;
911 border-collapse:collapse; 1021 border-collapse:collapse;
1022 table-layout: fixed;
1023 word-wrap: break-word;
912} 1024}
913 1025
914table.simplelist, .calloutlist table { 1026table.blockquote,
1027table.simplelist,
1028.calloutlist table {
915 border-style: none; 1029 border-style: none;
916} 1030}
917 1031
@@ -930,27 +1044,35 @@ table tr.even td {
930 background-color:#f5f5f5; 1044 background-color:#f5f5f5;
931} 1045}
932 1046
1047tr:nth-child(even) {
1048 background-color: #eeeeee;
1049
1050}
1051
1052
933table th p:first-child, table td p:first-child, table li p:first-child, 1053table th p:first-child, table td p:first-child, table li p:first-child,
934table th div.para:first-child, table td div.para:first-child, table li div.para:first-child { 1054table th div.para:first-child, table td div.para:first-child, table li div.para:first-child {
935 margin-top:0em; 1055 margin-top:0px;
936 padding-top:0em; 1056 padding-top:0px;
937 display:inline; 1057 display:inline;
938} 1058}
939 1059
940th, td { 1060th, td {
941 border-style:none; 1061 border-style:none;
942 vertical-align: top; 1062 vertical-align: top;
943 border: 1px solid #000; 1063/* border: 1px solid #000; */
944} 1064}
945 1065
946.simplelist th, .simplelist td { 1066.blockquote td,
1067.simplelist th,
1068.simplelist td {
947 border: none; 1069 border: none;
948} 1070}
949 1071
950table table td { 1072table table td {
951 border-bottom:1px dotted #aaa; 1073 border-bottom:1px dotted #aaa;
952 background-color:white; 1074 background-color:white;
953 padding:.6em 0em; 1075 padding:.6em 0px;
954} 1076}
955 1077
956table table { 1078table table {
@@ -1003,7 +1125,7 @@ th.dbkey {
1003span.book { 1125span.book {
1004 margin-top:4em; 1126 margin-top:4em;
1005 display:block; 1127 display:block;
1006 font-size:11pt; 1128 font-size: 11pt;
1007} 1129}
1008 1130
1009span.book a{ 1131span.book a{
@@ -1011,13 +1133,34 @@ span.book a{
1011} 1133}
1012span.chapter { 1134span.chapter {
1013 display:block; 1135 display:block;
1014 margin-top:0.5em;
1015} 1136}
1016 1137
1017table.simplelist td, .calloutlist table td { 1138table.simplelist td, .calloutlist table td {
1018 border-style: none; 1139 border-style: none;
1019} 1140}
1020 1141
1142
1143table.lt-4-cols.lt-7-rows td {
1144 border: none;
1145}
1146/*to simplify layout*/
1147
1148
1149table.lt-4-cols.gt-14-rows tr:nth-child(odd) {
1150 background-color: #fafafa;
1151}
1152/* to keep simple but stripe rows */
1153
1154
1155.gt-8-cols td {
1156 border-left: 1px solid #ccc;
1157}
1158
1159.gt-8-cols td:first-child {
1160 border-left: 0;
1161}
1162/* to apply vertical lines to differentiate columns*/
1163
1021/*Breadcrumbs*/ 1164/*Breadcrumbs*/
1022#breadcrumbs ul li.first:before { 1165#breadcrumbs ul li.first:before {
1023 content:" "; 1166 content:" ";
@@ -1049,12 +1192,21 @@ table.simplelist td, .calloutlist table td {
1049 color:#333; 1192 color:#333;
1050} 1193}
1051 1194
1195dl {
1196 margin-top: 0px;
1197 margin-left: 28px;
1198}
1199
1200.toc dl {
1201 margin-left: 10px;
1202}
1203
1052/*index*/ 1204/*index*/
1053.glossary h3, 1205.glossary h3,
1054.index h3 { 1206.index h3 {
1055 font-size: 2em; 1207 font-size: 20px;
1056 color:#aaa; 1208 color:#aaa;
1057 margin:0em; 1209 margin:0px;
1058} 1210}
1059 1211
1060.indexdiv { 1212.indexdiv {
@@ -1071,7 +1223,7 @@ table.simplelist td, .calloutlist table td {
1071.index dl dl dt { 1223.index dl dl dt {
1072 color:#777; 1224 color:#777;
1073 font-weight:normal; 1225 font-weight:normal;
1074 padding-top:0em; 1226 padding-top:0px;
1075} 1227}
1076 1228
1077.index dl dl dt:before { 1229.index dl dl dt:before {
@@ -1081,21 +1233,23 @@ table.simplelist td, .calloutlist table td {
1081 1233
1082/*changes*/ 1234/*changes*/
1083.footnote { 1235.footnote {
1084 font-size: .7em; 1236 font-size: 10px;
1085 margin:0em; 1237 margin: 0px;
1086 color:#222; 1238 color: #222;
1239}
1240
1241.footnotes {
1242 margin-bottom: 60px;
1087} 1243}
1088 1244
1089table .footnote { 1245table .footnote {
1090} 1246}
1091 1247
1092sup { 1248sup {
1093 color:#999; 1249 margin:0px;
1094 margin:0em; 1250 padding:0px;
1095 padding:0em; 1251 font-size: 10px;
1096 line-height: .4em; 1252 padding-left:0px;
1097 font-size: 1em;
1098 padding-left:0em;
1099} 1253}
1100 1254
1101.footnote { 1255.footnote {
@@ -1103,11 +1257,27 @@ sup {
1103} 1257}
1104 1258
1105.footnote sup { 1259.footnote sup {
1106 color:#e3dcc0; 1260 color: black;
1107 position:absolute;
1108 left: .4em; 1261 left: .4em;
1109} 1262}
1110 1263
1264.footnote a:link,
1265.footnote a:visited {
1266 text-decoration:none;
1267 border: none;
1268}
1269
1270.footnote .para sup {
1271/* position:absolute; */
1272 vertical-align:text-bottom;
1273}
1274
1275a.footnote {
1276 padding-right: 0.5em;
1277 text-decoration:none;
1278 border: none;
1279}
1280
1111.footnote sup a:link, 1281.footnote sup a:link,
1112.footnote sup a:visited { 1282.footnote sup a:visited {
1113 color:#92917d; 1283 color:#92917d;
@@ -1119,11 +1289,11 @@ sup {
1119} 1289}
1120 1290
1121.footnote p,.footnote div.para { 1291.footnote p,.footnote div.para {
1122 padding-left:2em; 1292 padding-left:1em;
1123} 1293}
1124 1294
1125.footnote a:link, 1295.footnote a:link,
1126.footnote a:visited { 1296.footnote a:visited before{
1127 color:#00537c; 1297 color:#00537c;
1128} 1298}
1129 1299
@@ -1131,18 +1301,51 @@ sup {
1131} 1301}
1132 1302
1133/**/ 1303/**/
1304.pdf-break {
1305 page-break-before: always;
1306}
1307
1308div.legalnotice {
1309 page-break-before: always;
1310}
1311
1312div.abstract {
1313 page-break-before: always;
1314/* page-break-after: always;*/
1315}
1316
1134div.chapter { 1317div.chapter {
1135 margin-top:3em; 1318 page-break-before: always;
1136 page-break-inside: avoid;
1137} 1319}
1138 1320
1139div.preface { 1321
1322div.titlepage {
1140 page-break-inside: avoid; 1323 page-break-inside: avoid;
1324 page-break-after: avoid;
1325}
1326
1327div.preface, div.part {
1328 page-break-before: always;
1329}
1330
1331div.appendix {
1332 page-break-before: always;
1141} 1333}
1142 1334
1143div.section { 1335div.section {
1144 margin-top:1em;
1145 page-break-inside: auto; 1336 page-break-inside: auto;
1337 page-break-before: auto;
1338 page-break-after: auto;
1339}
1340
1341
1342dt.varlistentry {
1343 page-break-inside: avoid;
1344 page-break-after: avoid;
1345}
1346
1347dd {
1348 page-break-before: avoid;
1146} 1349}
1147 1350
1148div.note .replaceable, 1351div.note .replaceable,
@@ -1154,9 +1357,9 @@ div.warning .keycap
1154{ 1357{
1155} 1358}
1156 1359
1157ul li p:last-child, ul li div.para:last-child { 1360ul li p:last-child, ul li para:last-child {
1158 margin-bottom:0em; 1361 margin-bottom:0px;
1159 padding-bottom:0em; 1362 padding-bottom:0px;
1160} 1363}
1161 1364
1162/*document navigation*/ 1365/*document navigation*/
@@ -1168,21 +1371,29 @@ ul li p:last-child, ul li div.para:last-child {
1168 1371
1169.docnav { 1372.docnav {
1170 list-style:none; 1373 list-style:none;
1171 margin:0em; 1374 margin:0px;
1172 padding:0em; 1375 padding:0px;
1173 position:relative; 1376 position:relative;
1174 width:100%; 1377 width:100%;
1175 padding-bottom:2em; 1378 padding-bottom:2em;
1176 padding-top:1em; 1379 padding-top:1em;
1380 height:2.5em;
1381 line-height:2.5em;
1382/*
1177 border-top:1px dotted #ccc; 1383 border-top:1px dotted #ccc;
1384 background-color: rgba(240, 240, 240, 0.9);
1385-webkitbox-shadow: 0px .15em .5em rgba(0,0,0,0.2);
1386 -moz-box-shadow: 0px .15em .5em rgba(0,0,0,0.2);
1387 box-shadow: 0px .15em .5em rgba(0,0,0,0.2);
1388*/
1178} 1389}
1179 1390
1180.docnav li { 1391.docnav li {
1181 list-style:none; 1392 list-style:none;
1182 margin:0em; 1393 margin:0px;
1183 padding:0em; 1394 padding:0px;
1184 display:inline; 1395 display:inline;
1185 font-size:.8em; 1396 font-size: 14px;
1186} 1397}
1187 1398
1188.docnav li:before { 1399.docnav li:before {
@@ -1191,13 +1402,20 @@ ul li p:last-child, ul li div.para:last-child {
1191 1402
1192.docnav li.previous, .docnav li.next { 1403.docnav li.previous, .docnav li.next {
1193 position:absolute; 1404 position:absolute;
1194 top:1em; 1405 top:1.5em;
1195} 1406}
1196 1407
1197.docnav li.up, .docnav li.home { 1408.docnav li.up, .docnav li.home {
1198 margin:0em 1.5em; 1409 margin:0px 1.5em;
1410}
1411
1412.docnav.top li.home {
1413 color: #336699;
1414 font-size: 22pt;
1415 font-weight: bold;
1199} 1416}
1200 1417
1418
1201.docnav li.previous { 1419.docnav li.previous {
1202 left:0px; 1420 left:0px;
1203 text-align:left; 1421 text-align:left;
@@ -1209,8 +1427,8 @@ ul li p:last-child, ul li div.para:last-child {
1209} 1427}
1210 1428
1211.docnav li.previous strong, .docnav li.next strong { 1429.docnav li.previous strong, .docnav li.next strong {
1212 height:22px; 1430 height: 17px;
1213 display:block; 1431 display: block;
1214} 1432}
1215 1433
1216.docnav { 1434.docnav {
@@ -1219,34 +1437,30 @@ ul li p:last-child, ul li div.para:last-child {
1219} 1437}
1220 1438
1221.docnav li.next a strong { 1439.docnav li.next a strong {
1222 background: url(../images/stock-go-forward.png) top right no-repeat; 1440 background: url(../images/stock-go-forward.png) right 120% no-repeat;
1223 padding-top:3px; 1441 padding-top:3px;
1224 padding-bottom:4px; 1442 padding-bottom:4px;
1225 padding-right:28px; 1443 padding-right:28px;
1226 font-size:1.2em;
1227} 1444}
1228 1445
1229.docnav li.previous a strong { 1446.docnav li.previous a strong {
1230 background: url(../images/stock-go-back.png) top left no-repeat; 1447 background: url(../images/stock-go-back.png) left 120% no-repeat;
1231 padding-top:3px; 1448 padding-top:3px;
1232 padding-bottom:4px; 1449 padding-bottom:4px;
1233 padding-left:28px; 1450 padding-left:28px;
1234 padding-right:0.5em; 1451 padding-right:0.5em;
1235 font-size:1.2em;
1236} 1452}
1237 1453
1238.docnav li.home a strong { 1454.docnav li.home a strong {
1239 background: url(../images/stock-home.png) top left no-repeat; 1455 background: url(../images/stock-home.png) top left no-repeat;
1240 padding:5px; 1456 padding:5px;
1241 padding-left:28px; 1457 padding-left:28px;
1242 font-size:1.2em;
1243} 1458}
1244 1459
1245.docnav li.up a strong { 1460.docnav li.up a strong {
1246 background: url(../images/stock-go-up.png) top left no-repeat; 1461 background: url(../images/stock-go-up.png) top left no-repeat;
1247 padding:5px; 1462 padding:5px;
1248 padding-left:28px; 1463 padding-left:28px;
1249 font-size:1.2em;
1250} 1464}
1251 1465
1252.docnav a:link, .docnav a:visited { 1466.docnav a:link, .docnav a:visited {
@@ -1258,7 +1472,7 @@ ul li p:last-child, ul li div.para:last-child {
1258} 1472}
1259 1473
1260.docnav a { 1474.docnav a {
1261 max-width: 10em; 1475 max-width: 10px;
1262 overflow:hidden; 1476 overflow:hidden;
1263} 1477}
1264 1478
@@ -1277,25 +1491,25 @@ ul.docnav {
1277/* Reports */ 1491/* Reports */
1278.reports ul { 1492.reports ul {
1279 list-style:none; 1493 list-style:none;
1280 margin:0em; 1494 margin:0px;
1281 padding:0em; 1495 padding:0px;
1282} 1496}
1283 1497
1284.reports li{ 1498.reports li{
1285 margin:0em; 1499 margin:0px;
1286 padding:0em; 1500 padding:0px;
1287} 1501}
1288 1502
1289.reports li.odd { 1503.reports li.odd {
1290 background-color: #eeeeee; 1504 background-color: #eeeeee;
1291 margin:0em; 1505 margin:0px;
1292 padding:0em; 1506 padding:0px;
1293} 1507}
1294 1508
1295.reports dl { 1509.reports dl {
1296 display:inline; 1510 display:inline;
1297 margin:0em; 1511 margin:0px;
1298 padding:0em; 1512 padding:0px;
1299 float:right; 1513 float:right;
1300 margin-right: 17em; 1514 margin-right: 17em;
1301 margin-top:-1.3em; 1515 margin-top:-1.3em;
@@ -1303,21 +1517,21 @@ ul.docnav {
1303 1517
1304.reports dt { 1518.reports dt {
1305 display:inline; 1519 display:inline;
1306 margin:0em; 1520 margin:0px;
1307 padding:0em; 1521 padding:0px;
1308} 1522}
1309 1523
1310.reports dd { 1524.reports dd {
1311 display:inline; 1525 display:inline;
1312 margin:0em; 1526 margin:0px;
1313 padding:0em; 1527 padding:0px;
1314 padding-right:.5em; 1528 padding-right:.5em;
1315} 1529}
1316 1530
1317.reports h2, .reports h3{ 1531.reports h2, .reports h3{
1318 display:inline; 1532 display:inline;
1319 padding-right:.5em; 1533 padding-right:.5em;
1320 font-size:10pt; 1534 font-size: 14px;
1321 font-weight:normal; 1535 font-weight:normal;
1322} 1536}
1323 1537
@@ -1326,16 +1540,16 @@ ul.docnav {
1326 float:right; 1540 float:right;
1327 width:16em; 1541 width:16em;
1328 background:#c00 url(../images/shine.png) top left repeat-x; 1542 background:#c00 url(../images/shine.png) top left repeat-x;
1329 margin:0em; 1543 margin:0px;
1330 margin-top:-1.3em; 1544 margin-top:-1.3em;
1331 padding:0em; 1545 padding:0px;
1332 border:none; 1546 border:none;
1333} 1547}
1334 1548
1335/*uniform*/ 1549/*uniform*/
1336body.results, body.reports { 1550body.results, body.reports {
1337 max-width:57em ; 1551 max-width:57em ;
1338 padding:0em; 1552 padding:0px;
1339} 1553}
1340 1554
1341/*Progress Bar*/ 1555/*Progress Bar*/
@@ -1365,25 +1579,25 @@ div.progress span.fuzzy {
1365 1579
1366.results ul { 1580.results ul {
1367 list-style:none; 1581 list-style:none;
1368 margin:0em; 1582 margin:0px;
1369 padding:0em; 1583 padding:0px;
1370} 1584}
1371 1585
1372.results li{ 1586.results li{
1373 margin:0em; 1587 margin:0px;
1374 padding:0em; 1588 padding:0px;
1375} 1589}
1376 1590
1377.results li.odd { 1591.results li.odd {
1378 background-color: #eeeeee; 1592 background-color: #eeeeee;
1379 margin:0em; 1593 margin:0px;
1380 padding:0em; 1594 padding:0px;
1381} 1595}
1382 1596
1383.results dl { 1597.results dl {
1384 display:inline; 1598 display:inline;
1385 margin:0em; 1599 margin:0px;
1386 padding:0em; 1600 padding:0px;
1387 float:right; 1601 float:right;
1388 margin-right: 17em; 1602 margin-right: 17em;
1389 margin-top:-1.3em; 1603 margin-top:-1.3em;
@@ -1391,21 +1605,21 @@ div.progress span.fuzzy {
1391 1605
1392.results dt { 1606.results dt {
1393 display:inline; 1607 display:inline;
1394 margin:0em; 1608 margin:0px;
1395 padding:0em; 1609 padding:0px;
1396} 1610}
1397 1611
1398.results dd { 1612.results dd {
1399 display:inline; 1613 display:inline;
1400 margin:0em; 1614 margin:0px;
1401 padding:0em; 1615 padding:0px;
1402 padding-right:.5em; 1616 padding-right:.5em;
1403} 1617}
1404 1618
1405.results h2, .results h3 { 1619.results h2, .results h3 {
1406 display:inline; 1620 display:inline;
1407 padding-right:.5em; 1621 padding-right:.5em;
1408 font-size:10pt; 1622 font-size: 14px;
1409 font-weight:normal; 1623 font-weight:normal;
1410} 1624}
1411 1625
@@ -1414,9 +1628,9 @@ div.progress span.fuzzy {
1414 float:right; 1628 float:right;
1415 width:16em; 1629 width:16em;
1416 background:#c00 url(../images/shine.png) top left repeat-x; 1630 background:#c00 url(../images/shine.png) top left repeat-x;
1417 margin:0em; 1631 margin:0px;
1418 margin-top:-1.3em; 1632 margin-top:-1.3em;
1419 padding:0em; 1633 padding:0px;
1420 border:none; 1634 border:none;
1421} 1635}
1422 1636
@@ -1444,7 +1658,7 @@ pre {
1444 background-color: transparent; 1658 background-color: transparent;
1445 margin-top: 1em; 1659 margin-top: 1em;
1446 margin-bottom: 1em; 1660 margin-bottom: 1em;
1447 font-size: 1.4em; 1661 font-size: 20px;
1448 font-weight: bold; 1662 font-weight: bold;
1449 text-align: center; 1663 text-align: center;
1450} 1664}
@@ -1491,15 +1705,15 @@ dl:after {
1491} 1705}
1492 1706
1493.toc dd { 1707.toc dd {
1494 padding-bottom: 0em; 1708 padding-bottom: 0px;
1495 margin-bottom: 1em; 1709 margin-bottom: 1em;
1496 padding-left: 1.3em; 1710 padding-left: 1.3em;
1497 margin-left: 0em; 1711 margin-left: 0px;
1498} 1712}
1499 1713
1500div.toc > dl > dt { 1714div.toc > dl > dt {
1501 padding-bottom: 0em; 1715 padding-bottom: 0px;
1502 margin-bottom: 0em; 1716 margin-bottom: 0px;
1503 margin-top: 1em; 1717 margin-top: 1em;
1504} 1718}
1505 1719
@@ -1513,16 +1727,23 @@ div.toc > dl > dt {
1513} 1727}
1514 1728
1515.calloutlist img, .callout { 1729.calloutlist img, .callout {
1516 padding: 0em; 1730 padding: 0px;
1517 margin: 0em; 1731 margin: 0px;
1518 width: 12pt; 1732 width: 12pt;
1519 display: inline; 1733 display: inline;
1520 vertical-align: middle; 1734 vertical-align: middle;
1521} 1735}
1522 1736
1737li.step > a:first-child {
1738 display: block;
1739}
1740
1523.stepalternatives { 1741.stepalternatives {
1524 list-style-image: none; 1742 list-style-image: none;
1525 list-style-type: none; 1743 list-style-type: upper-alpha;
1744}
1745.task {
1746/* page-break-inside: avoid; */
1526} 1747}
1527 1748
1528 1749
diff --git a/SystemTap_Beginners_Guide/Common_Content/css/default.css b/SystemTap_Beginners_Guide/Common_Content/css/default.css
index bf38ebb5..7fb9ada5 100644
--- a/SystemTap_Beginners_Guide/Common_Content/css/default.css
+++ b/SystemTap_Beginners_Guide/Common_Content/css/default.css
@@ -1,3 +1,4 @@
1@import url("common.css"); 1@import url("common.css");
2@import url("overrides.css"); 2@import url("overrides.css");
3@import url("lang.css"); 3@import url("lang.css");
4
diff --git a/SystemTap_Beginners_Guide/Common_Content/images/title_logo.png b/SystemTap_Beginners_Guide/Common_Content/images/title_logo.png
index 97dea57d..75fd5035 100644
--- a/SystemTap_Beginners_Guide/Common_Content/images/title_logo.png
+++ b/SystemTap_Beginners_Guide/Common_Content/images/title_logo.png
Binary files differ
diff --git a/SystemTap_Beginners_Guide/Common_Content/images/title_logo.svg b/SystemTap_Beginners_Guide/Common_Content/images/title_logo.svg
index 4baa3fc5..05cc1c4c 100644
--- a/SystemTap_Beginners_Guide/Common_Content/images/title_logo.svg
+++ b/SystemTap_Beginners_Guide/Common_Content/images/title_logo.svg
@@ -1,13 +1,18 @@
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
3<svg 4<svg
5 xmlns:dc="http://purl.org/dc/elements/1.1/"
6 xmlns:cc="http://creativecommons.org/ns#"
7 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
4 xmlns:svg="http://www.w3.org/2000/svg" 8 xmlns:svg="http://www.w3.org/2000/svg"
5 xmlns="http://www.w3.org/2000/svg" 9 xmlns="http://www.w3.org/2000/svg"
6 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"
7 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 12 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
8 version="1.0" 13 version="1.1"
9 width="363" 14 width="253.10916"
10 height="318" 15 height="195.16167"
11 id="svg2" 16 id="svg2"
12 style="enable-background:new"> 17 style="enable-background:new">
13 <defs 18 <defs
@@ -113,7 +118,7 @@
113 id="linearGradient3607" 118 id="linearGradient3607"
114 xlink:href="#linearGradient3770" 119 xlink:href="#linearGradient3770"
115 gradientUnits="userSpaceOnUse" 120 gradientUnits="userSpaceOnUse"
116 gradientTransform="matrix(0.8697037,0.5377184,-5.0885591e-2,2.0041935,-132.86485,4079.057)" /> 121 gradientTransform="matrix(0.8697037,0.5377184,-0.05088559,2.0041935,-132.86485,4079.057)" />
117 <linearGradient 122 <linearGradient
118 x1="579.61249" 123 x1="579.61249"
119 y1="-2053.46" 124 y1="-2053.46"
@@ -122,7 +127,7 @@
122 id="linearGradient3609" 127 id="linearGradient3609"
123 xlink:href="#linearGradient3770" 128 xlink:href="#linearGradient3770"
124 gradientUnits="userSpaceOnUse" 129 gradientUnits="userSpaceOnUse"
125 gradientTransform="matrix(0.8697037,0.5377184,-5.0885591e-2,2.0041935,-132.86485,4082.0622)" /> 130 gradientTransform="matrix(0.8697037,0.5377184,-0.05088559,2.0041935,-132.86485,4082.0622)" />
126 <linearGradient 131 <linearGradient
127 x1="579.61249" 132 x1="579.61249"
128 y1="-2053.46" 133 y1="-2053.46"
@@ -131,7 +136,7 @@
131 id="linearGradient3611" 136 id="linearGradient3611"
132 xlink:href="#linearGradient3770" 137 xlink:href="#linearGradient3770"
133 gradientUnits="userSpaceOnUse" 138 gradientUnits="userSpaceOnUse"
134 gradientTransform="matrix(0.8697037,0.5377184,-5.0885591e-2,2.0041935,-132.86485,4085.0674)" /> 139 gradientTransform="matrix(0.8697037,0.5377184,-0.05088559,2.0041935,-132.86485,4085.0674)" />
135 <linearGradient 140 <linearGradient
136 x1="579.61249" 141 x1="579.61249"
137 y1="-2053.46" 142 y1="-2053.46"
@@ -140,7 +145,7 @@
140 id="linearGradient3613" 145 id="linearGradient3613"
141 xlink:href="#linearGradient3770" 146 xlink:href="#linearGradient3770"
142 gradientUnits="userSpaceOnUse" 147 gradientUnits="userSpaceOnUse"
143 gradientTransform="matrix(0.8697037,0.5377184,-5.0885591e-2,2.0041935,-132.86485,4088.0726)" /> 148 gradientTransform="matrix(0.8697037,0.5377184,-0.05088559,2.0041935,-132.86485,4088.0726)" />
144 <radialGradient 149 <radialGradient
145 cx="308.00009" 150 cx="308.00009"
146 cy="237.60178" 151 cy="237.60178"
@@ -169,7 +174,7 @@
169 id="linearGradient3216" 174 id="linearGradient3216"
170 xlink:href="#linearGradient3210" 175 xlink:href="#linearGradient3210"
171 gradientUnits="userSpaceOnUse" 176 gradientUnits="userSpaceOnUse"
172 gradientTransform="matrix(0.9919329,0,0,0.9919329,1.4358062,0.4522511)" /> 177 gradientTransform="matrix(0.9919329,0,0,0.9919329,-57.187787,-52.294514)" />
173 <linearGradient 178 <linearGradient
174 x1="282.13562" 179 x1="282.13562"
175 y1="198.85522" 180 y1="198.85522"
@@ -177,7 +182,8 @@
177 y2="220.4299" 182 y2="220.4299"
178 id="linearGradient3224" 183 id="linearGradient3224"
179 xlink:href="#linearGradient3218" 184 xlink:href="#linearGradient3218"
180 gradientUnits="userSpaceOnUse" /> 185 gradientUnits="userSpaceOnUse"
186 gradientTransform="translate(-58.623593,-52.746766)" />
181 <linearGradient 187 <linearGradient
182 x1="282.13562" 188 x1="282.13562"
183 y1="198.85522" 189 y1="198.85522"
@@ -186,13 +192,13 @@
186 id="linearGradient6356" 192 id="linearGradient6356"
187 xlink:href="#linearGradient3218" 193 xlink:href="#linearGradient3218"
188 gradientUnits="userSpaceOnUse" 194 gradientUnits="userSpaceOnUse"
189 gradientTransform="translate(0,3.1983471)" /> 195 gradientTransform="translate(-58.623593,-49.548418)" />
190 <filter 196 <filter
197 color-interpolation-filters="sRGB"
191 id="filter6426"> 198 id="filter6426">
192 <feGaussianBlur 199 <feGaussianBlur
193 id="feGaussianBlur6428"
194 stdDeviation="1.3718847" 200 stdDeviation="1.3718847"
195 inkscape:collect="always" /> 201 id="feGaussianBlur6428" />
196 </filter> 202 </filter>
197 <linearGradient 203 <linearGradient
198 x1="313.12421" 204 x1="313.12421"
@@ -203,22 +209,22 @@
203 xlink:href="#linearGradient6430" 209 xlink:href="#linearGradient6430"
204 gradientUnits="userSpaceOnUse" /> 210 gradientUnits="userSpaceOnUse" />
205 <filter 211 <filter
206 height="1.2099621" 212 x="-0.049464952"
207 y="-0.10498104" 213 y="-0.10498104"
208 width="1.0989299" 214 width="1.0989299"
209 x="-0.049464952" 215 height="1.2099621"
216 color-interpolation-filters="sRGB"
210 id="filter6542"> 217 id="filter6542">
211 <feGaussianBlur 218 <feGaussianBlur
212 id="feGaussianBlur6544"
213 stdDeviation="2.6872547" 219 stdDeviation="2.6872547"
214 inkscape:collect="always" /> 220 id="feGaussianBlur6544" />
215 </filter> 221 </filter>
216 <filter 222 <filter
223 color-interpolation-filters="sRGB"
217 id="filter6596"> 224 id="filter6596">
218 <feGaussianBlur 225 <feGaussianBlur
219 id="feGaussianBlur6598"
220 stdDeviation="1.7274814" 226 stdDeviation="1.7274814"
221 inkscape:collect="always" /> 227 id="feGaussianBlur6598" />
222 </filter> 228 </filter>
223 <linearGradient 229 <linearGradient
224 x1="180" 230 x1="180"
@@ -229,114 +235,116 @@
229 xlink:href="#linearGradient3218" 235 xlink:href="#linearGradient3218"
230 gradientUnits="userSpaceOnUse" /> 236 gradientUnits="userSpaceOnUse" />
231 <filter 237 <filter
238 color-interpolation-filters="sRGB"
232 id="filter6626"> 239 id="filter6626">
233 <feBlend 240 <feBlend
234 id="feBlend6628"
235 in2="BackgroundImage" 241 in2="BackgroundImage"
236 mode="multiply" 242 mode="multiply"
237 inkscape:collect="always" /> 243 id="feBlend6628" />
238 </filter> 244 </filter>
239 </defs> 245 </defs>
240 <path 246 <path
241 d="M 192.86534,56.061481 C 192.36173,56.001958 177.04791,71.601258 169.88288,78.655471 C 176.27757,76.632509 187.258,72.858149 188.75784,73.035772 C 190.25845,73.213382 198.81453,79.323493 203.90158,82.70395 C 200.45634,74.408167 193.36963,56.121106 192.86534,56.061481 z M 256.56564,75.679414 C 256.19703,75.470177 226.37543,82.344843 212.67149,85.374045 C 220.32408,85.916589 233.75821,86.605813 234.85605,87.228257 C 235.95576,87.851868 236.78146,95.293021 237.53092,99.511345 C 243.45051,92.092902 256.93475,75.888665 256.56564,75.679414 z M 125.42293,59.592937 C 124.97638,59.705437 130.08281,78.06997 132.18928,86.449319 C 134.88117,82.633972 139.1244,75.81667 140.45346,75.481547 C 141.78428,75.14601 154.86419,77.615692 162.3432,78.86324 C 150.84856,72.862022 125.86977,59.480312 125.42293,59.592937 z M 290.22827,111.27313 C 290.13546,110.99458 257.1852,106.5389 242.18642,104.38604 C 248.17919,107.28669 258.97529,112.18749 259.25143,113.01669 C 259.52792,113.84738 252.26311,119.75777 248.38968,123.20613 C 261.40772,119.49699 290.32106,111.5521 290.22827,111.27313 z M 125.48113,90.005528 C 110.30347,88.587271 77.076206,85.20923 76.857612,85.45104 C 76.63901,85.692911 100.20589,99.814697 110.77468,106.3235 C 108.73772,102.17566 104.66761,94.929258 105.31915,94.208612 C 105.96936,93.48931 118.45677,91.365927 125.48113,90.005528 z M 247.14367,128.41486 C 249.1807,132.56293 253.25058,139.80912 252.59919,140.52974 C 251.94886,141.24904 239.46162,143.37243 232.43729,144.7328 C 247.61504,146.15105 280.8422,149.52911 281.06077,149.2873 C 281.27943,149.04544 257.71247,134.92365 247.14367,128.41486 z M 107.57689,111.87714 C 94.559095,115.58622 65.645568,123.53114 65.738468,123.81028 C 65.83118,124.08875 98.781509,128.54433 113.78023,130.6972 C 107.78763,127.79653 96.991334,122.89566 96.715376,122.06653 C 96.438807,121.23574 103.70368,115.32544 107.57689,111.87714 z M 225.72916,148.289 C 223.03722,152.10435 218.79412,158.92166 217.46494,159.2568 C 216.13407,159.59235 203.05422,157.12265 195.57518,155.87511 C 207.06981,161.87632 232.0487,175.2581 232.49567,175.14539 C 232.94189,175.03294 227.83555,156.66839 225.72916,148.289 z M 118.43579,135.57189 C 112.51623,142.99034 99.032017,159.19458 99.401191,159.40382 C 99.769581,159.61299 129.59124,152.73839 143.29535,149.70918 C 135.64251,149.16662 122.20862,148.4774 121.11055,147.85492 C 120.01096,147.23135 119.18522,139.79024 118.43579,135.57189 z M 186.08383,156.42778 C 179.68914,158.45076 168.70875,162.2251 167.2089,162.04747 C 165.70846,161.86983 157.15205,155.75978 152.06515,152.37921 C 155.51037,160.67499 162.59724,178.96218 163.10148,179.02172 C 163.6049,179.08114 178.91889,163.48205 186.08383,156.42778 z" 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"
242 transform="matrix(1,0,0,1.0406634,0,-1.2796452)" 248 transform="matrix(1,0,0,1.0406634,-58.623593,-54.026411)"
243 id="path6546" 249 id="path6546"
244 style="opacity:0.35096154;fill:url(#linearGradient6600);fill-opacity:1;filter:url(#filter6596)" /> 250 style="opacity:0.35096154;fill:url(#linearGradient6600);fill-opacity:1;filter:url(#filter6596)" />
245 <path 251 <path
246 d="M 192.86534,56.061481 C 192.36173,56.001958 177.04791,71.601258 169.88288,78.655471 C 176.27757,76.632509 187.258,72.858149 188.75784,73.035772 C 190.25845,73.213382 198.81453,79.323493 203.90158,82.70395 C 200.45634,74.408167 193.36963,56.121106 192.86534,56.061481 z M 256.56564,75.679414 C 256.19703,75.470177 226.37543,82.344843 212.67149,85.374045 C 220.32408,85.916589 233.75821,86.605813 234.85605,87.228257 C 235.95576,87.851868 236.78146,95.293021 237.53092,99.511345 C 243.45051,92.092902 256.93475,75.888665 256.56564,75.679414 z M 125.42293,59.592937 C 124.97638,59.705437 130.08281,78.06997 132.18928,86.449319 C 134.88117,82.633972 139.1244,75.81667 140.45346,75.481547 C 141.78428,75.14601 154.86419,77.615692 162.3432,78.86324 C 150.84856,72.862022 125.86977,59.480312 125.42293,59.592937 z M 290.22827,111.27313 C 290.13546,110.99458 257.1852,106.5389 242.18642,104.38604 C 248.17919,107.28669 258.97529,112.18749 259.25143,113.01669 C 259.52792,113.84738 252.26311,119.75777 248.38968,123.20613 C 261.40772,119.49699 290.32106,111.5521 290.22827,111.27313 z M 125.48113,90.005528 C 110.30347,88.587271 77.076206,85.20923 76.857612,85.45104 C 76.63901,85.692911 100.20589,99.814697 110.77468,106.3235 C 108.73772,102.17566 104.66761,94.929258 105.31915,94.208612 C 105.96936,93.48931 118.45677,91.365927 125.48113,90.005528 z M 247.14367,128.41486 C 249.1807,132.56293 253.25058,139.80912 252.59919,140.52974 C 251.94886,141.24904 239.46162,143.37243 232.43729,144.7328 C 247.61504,146.15105 280.8422,149.52911 281.06077,149.2873 C 281.27943,149.04544 257.71247,134.92365 247.14367,128.41486 z M 107.57689,111.87714 C 94.559095,115.58622 65.645568,123.53114 65.738468,123.81028 C 65.83118,124.08875 98.781509,128.54433 113.78023,130.6972 C 107.78763,127.79653 96.991334,122.89566 96.715376,122.06653 C 96.438807,121.23574 103.70368,115.32544 107.57689,111.87714 z M 225.72916,148.289 C 223.03722,152.10435 218.79412,158.92166 217.46494,159.2568 C 216.13407,159.59235 203.05422,157.12265 195.57518,155.87511 C 207.06981,161.87632 232.0487,175.2581 232.49567,175.14539 C 232.94189,175.03294 227.83555,156.66839 225.72916,148.289 z M 118.43579,135.57189 C 112.51623,142.99034 99.032017,159.19458 99.401191,159.40382 C 99.769581,159.61299 129.59124,152.73839 143.29535,149.70918 C 135.64251,149.16662 122.20862,148.4774 121.11055,147.85492 C 120.01096,147.23135 119.18522,139.79024 118.43579,135.57189 z M 186.08383,156.42778 C 179.68914,158.45076 168.70875,162.2251 167.2089,162.04747 C 165.70846,161.86983 157.15205,155.75978 152.06515,152.37921 C 155.51037,160.67499 162.59724,178.96218 163.10148,179.02172 C 163.6049,179.08114 178.91889,163.48205 186.08383,156.42778 z" 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"
247 id="path3766" 253 id="path3766"
248 style="opacity:1;fill:url(#linearGradient3216);fill-opacity:1" /> 254 style="fill:url(#linearGradient3216);fill-opacity:1" />
249 <g 255 <g
250 transform="matrix(1.2433595,-5.6480692e-2,-8.5186357e-3,1.1425318,-55.4332,-219.33549)" 256 transform="matrix(1.2433595,-0.05648069,-0.00851864,1.1425318,-114.05679,-272.08226)"
251 id="g3512" 257 id="g3512"
252 style="enable-background:new"> 258 style="enable-background:new">
253 <g 259 <g
254 transform="matrix(0.7599177,-1.1926916e-2,0,0.7500728,246.58115,378.18196)" 260 transform="matrix(0.7599177,-0.01192692,0,0.7500728,246.58115,378.18196)"
255 id="g3514"> 261 id="g3514">
256 <g 262 <g
257 transform="matrix(2.8294915,-0.5196682,1.922722,2.7658074,-1390.7458,-622.14861)" 263 transform="matrix(2.8294915,-0.5196682,1.922722,2.7658074,-1390.7458,-622.14861)"
258 id="g3516"> 264 id="g3516">
259 <path 265 <path
260 d="M 191.25,92.09375 C 191.04408,92.103424 190.8485,92.112778 190.65625,92.15625 L 129.21875,107.4375 L 114.875,97.78125 L 114.75,111.625 C 114.72317,115.22359 114.67135,116.89138 116.65625,118.1875 L 166.96875,152.28125 C 167.11015,152.39644 167.26105,152.49407 167.40625,152.59375 C 167.71234,152.80388 168.03774,152.99013 168.375,153.125 C 168.43585,153.14933 168.50027,153.16578 168.5625,153.1875 C 169.41417,153.51124 170.34383,153.61414 171.125,153.4375 L 243.65625,136.9375 C 244.42526,136.76361 244.89932,136.35162 245.0625,135.8125 C 245.22566,135.27339 245.08145,134.58978 244.5625,133.9375 L 195.3125,93.90625 C 194.79354,93.253937 193.99666,92.718422 193.15625,92.40625 C 192.52593,92.17214 191.86777,92.064728 191.25,92.09375 z" 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"
261 transform="matrix(0.3165905,8.4742567e-2,-0.2518713,0.3747611,270.47662,187.97058)" 267 transform="matrix(0.3165905,0.08474257,-0.2518713,0.3747611,270.47662,187.97058)"
262 id="path5539" 268 id="path5539"
263 style="opacity:0.5;fill:#000000;fill-opacity:1;filter:url(#filter6542)" /> 269 style="opacity:0.5;fill:#000000;fill-opacity:1;filter:url(#filter6542)" />
264 <path 270 <path
265 d="M 281.53626,237.15326 L 309.04792,236.5462 C 309.33518,236.5462 309.59444,236.6623 309.78189,236.8505 C 309.96933,237.03871 310.08496,237.29903 310.08496,237.58747 L 315.59103,256.77195 C 315.59103,257.06038 315.4754,257.32069 315.28796,257.5089 C 315.10051,257.69711 314.84125,257.81322 314.55399,257.81322 L 287.42625,257.85531 C 286.85174,257.85531 286.38922,257.3909 286.38922,256.81404 L 280.49923,238.19453 C 280.49923,237.61766 280.96175,237.15326 281.53626,237.15326 z" 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"
266 id="path3518" 272 id="path3518"
267 style="fill:#8d0000;fill-opacity:1" /> 273 style="fill:#8d0000;fill-opacity:1" />
268 <path 274 <path
269 d="M 293.04884,250.57475 L 317.14147,250.11423 C 315.07369,251.81667 313.3993,254.18879 313.41979,256.35148 L 288.81484,256.43251 C 286.0145,256.29145 290.73785,250.22017 293.04884,250.57475 z" 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"
270 id="path3520" 276 id="path3520"
271 style="fill:url(#linearGradient3605);fill-opacity:1" /> 277 style="fill:url(#linearGradient3605);fill-opacity:1" />
272 <g 278 <g
273 transform="matrix(0.4446532,4.8226295e-2,-0.1333755,0.1962764,116.26445,175.89592)" 279 transform="matrix(0.4446532,0.0482263,-0.1333755,0.1962764,116.26445,175.89592)"
274 id="g3522"> 280 id="g3522">
275 <path 281 <path
276 d="M 473.62579,276.25731 L 523.62044,263.93981" 282 d="m 473.62579,276.25731 49.99465,-12.3175"
277 id="path3524" 283 id="path3524"
278 style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3607);stroke-width:0.731525;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> 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" />
279 <path 285 <path
280 d="M 473.62579,279.2625 L 523.62044,266.945" 286 d="M 473.62579,279.2625 523.62044,266.945"
281 id="path3526" 287 id="path3526"
282 style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3609);stroke-width:0.731525;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> 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" />
283 <path 289 <path
284 d="M 473.62579,282.26769 L 523.62044,269.95019" 290 d="m 473.62579,282.26769 49.99465,-12.3175"
285 id="path3528" 291 id="path3528"
286 style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3611);stroke-width:0.731525;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> 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" />
287 <path 293 <path
288 d="M 473.62579,285.27287 L 523.62044,272.95537" 294 d="m 473.62579,285.27287 49.99465,-12.3175"
289 id="path3530" 295 id="path3530"
290 style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3613);stroke-width:0.731525;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> 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" />
291 </g> 297 </g>
292 <path 298 <path
293 d="M 297.97117,252.53831 C 301.52552,259.77574 299.81365,262.75273 299.81365,262.75273 C 302.15674,261.43854 303.80178,259.85198 304.40731,257.85976 C 306.10363,259.91709 307.68732,262.00721 311.02425,263.58697 C 311.02425,263.58697 308.17102,256.67636 306.99795,252.72547 L 297.97117,252.53831 z" 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"
294 id="path3532" 300 id="path3532"
295 style="fill:#0093d9;fill-opacity:1;stroke-width:2" /> 301 style="fill:#0093d9;fill-opacity:1;stroke-width:2" />
296 <path 302 <path
297 d="M 284.57789,231.78049 L 311.35381,231.98057 C 312.03942,231.98057 312.59137,232.53252 312.59137,233.21812 L 319.65855,249.0056 C 319.65855,249.6912 319.1066,250.24315 318.42099,250.24315 L 291.3756,249.90132 L 283.34033,233.01804 C 283.34033,232.33244 283.89228,231.78049 284.57789,231.78049 z" 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"
298 id="path3534" 304 id="path3534"
299 style="fill:url(#linearGradient6436);fill-opacity:1" /> 305 style="fill:url(#linearGradient6436);fill-opacity:1" />
300 <path 306 <path
301 d="M 280.11847,237.40712 L 283.64185,232.23159 L 291.38621,249.98696 C 288.0188,251.30318 284.32556,257.42055 287.8134,257.83795 C 286.90613,257.86075 286.55779,257.58155 286.41124,257.06853 L 279.07531,240.02171 C 278.77336,239.36777 279.20359,238.75346 280.11847,237.40712 z" 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"
302 id="path3536" 308 id="path3536"
303 style="fill:#bc0000;fill-opacity:1" /> 309 style="fill:#bc0000;fill-opacity:1" />
304 <path 310 <path
305 d="M 284.81403,231.70142 L 310.76827,231.67318 C 311.23825,231.67318 311.61659,232.05154 311.61659,232.52151 C 311.84112,239.11592 297.48249,247.99953 290.73174,248.61015 L 283.9657,232.54975 C 283.9657,232.07978 284.34405,231.70142 284.81403,231.70142 z" 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"
306 id="path3538" 312 id="path3538"
307 style="opacity:1;fill:url(#radialGradient3615);fill-opacity:1" /> 313 style="fill:url(#radialGradient3615);fill-opacity:1" />
308 <path 314 <path
309 d="M 300.57764,261.77315 C 303.1027,260.28877 303.97263,258.02948 304.52297,256.35635 C 304.65197,259.11437 310.6776,263.74511 310.02721,262.13276 C 307.93208,256.93882 307.56927,253.43259 306.81477,253.24246 C 305.71856,252.96623 300.52066,253.10078 299.04126,253.01887 C 300.12656,255.20315 300.84486,257.48247 300.57764,261.77315 z" 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"
310 id="path3540" 316 id="path3540"
311 style="opacity:0.79901961;fill:url(#radialGradient3617);fill-opacity:1;stroke-width:2" /> 317 style="opacity:0.79901961;fill:url(#radialGradient3617);fill-opacity:1;stroke-width:2" />
312 <path 318 <path
313 d="M 319.47279,249.25686 C 319.47279,249.94246 319.11267,250.24441 318.42706,250.24441 L 291.96418,250.69265 L 291.35826,249.84959 C 298.49858,249.63625 310.11914,249.64123 319.47279,249.25686 z" 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"
314 id="path3542" 320 id="path3542"
315 style="fill:#a70000;fill-opacity:1" /> 321 style="fill:#a70000;fill-opacity:1" />
316 </g> 322 </g>
317 </g> 323 </g>
318 </g> 324 </g>
319 <path 325 <path
320 d="M 73.023896,203.62637 L 76.373856,203.62637 C 79.077336,203.62637 81.722056,203.39128 83.896596,202.86234 C 88.421976,201.68691 93.593856,198.51325 93.593856,191.16685 C 93.593856,186.70023 91.654406,183.64411 89.009696,181.99852 C 86.188676,180.23538 82.427306,179.64766 78.313316,179.64766 L 61.916116,179.64766 L 61.916116,181.35203 C 67.087986,181.70466 67.205536,181.82221 67.205536,185.1134 L 67.205536,215.5588 C 67.205536,218.84999 67.087986,218.96754 61.916116,219.32017 L 61.916116,221.02454 L 79.253656,221.02454 L 79.253656,219.32017 C 73.200216,218.96754 73.023896,218.84999 73.023896,215.5588 L 73.023896,203.62637 M 73.023896,183.8792 C 73.023896,182.2336 73.670386,181.70466 77.490516,181.70466 C 83.543956,181.70466 87.246556,185.17218 87.246556,191.57824 C 87.246556,198.92465 82.427306,201.56937 77.372976,201.56937 C 73.905466,201.56937 73.023896,201.45183 73.023896,199.27729 L 73.023896,183.8792 M 131.78952,220.31743 L 131.78952,218.61306 C 127.7343,218.3192 127.38167,218.20165 127.38167,215.20432 L 127.38167,191.16685 L 126.97027,190.81422 L 117.74317,192.2835 L 117.74317,193.75278 L 119.97648,194.04664 C 121.50453,194.28173 121.85716,194.57558 121.85716,196.69135 L 121.85716,209.9149 C 121.85716,211.5605 121.68085,212.85347 121.38699,213.44118 C 120.03525,216.14466 117.21423,217.84903 114.15812,217.84903 C 110.74938,217.84903 108.22221,215.73326 108.22221,211.1491 L 108.22221,191.16685 L 107.81081,190.81422 L 98.583716,192.2835 L 98.583716,193.75278 L 100.81703,194.04664 C 102.34508,194.28173 102.69771,194.57558 102.69771,196.69135 L 102.69771,212.20698 C 102.69771,218.96568 106.69416,221.02268 111.04324,221.02268 C 116.0388,221.02268 120.09403,217.61394 121.79839,216.79115 L 122.38611,220.31743 L 131.78952,220.31743 M 140.94387,221.02268 L 143.29472,218.7306 C 145.35171,219.90603 147.82012,221.02268 152.22796,221.02268 C 160.04454,221.02268 166.86202,217.2613 166.86202,205.27196 C 166.86202,201.62815 166.09799,190.81422 155.51916,190.81422 C 151.05254,190.81422 147.58502,193.69401 145.41049,194.98698 L 145.41049,177.06173 L 144.99909,176.7091 L 135.77199,178.17838 L 135.77199,179.64766 L 138.0053,179.88275 C 139.53335,180.05906 139.88598,180.35292 139.88598,182.58623 L 139.88598,220.55251 L 140.94387,221.02268 M 145.41049,201.45183 C 145.41049,199.98255 145.52803,199.0422 145.9982,198.10186 C 147.40871,195.28084 149.87711,193.98787 153.1683,193.98787 C 155.57792,193.98787 160.74981,195.39839 160.74981,205.62459 C 160.74981,214.26397 158.10509,218.96569 152.28673,218.96569 C 149.17186,218.96569 146.87977,217.37886 145.82189,214.44029 C 145.46926,213.38241 145.41049,212.14821 145.41049,210.7377 L 145.41049,201.45183 M 182.78609,177.06173 L 182.37469,176.7091 L 173.1476,178.17838 L 173.1476,179.64766 L 175.3809,179.88275 C 176.90896,180.05906 177.26159,180.35292 177.26159,182.58623 L 177.26159,215.20432 C 177.26159,218.20165 177.08527,218.3192 172.85374,218.61306 L 172.85374,220.31743 L 187.19394,220.31743 L 187.19394,218.61306 C 183.02118,218.3192 182.78609,218.20165 182.78609,215.20432 L 182.78609,177.06173 M 192.2242,192.2835 L 192.2242,193.75278 L 194.45751,194.04664 C 195.98556,194.28173 196.33819,194.57558 196.33819,196.69135 L 196.33819,215.20432 C 196.33819,218.20165 196.16187,218.3192 191.93034,218.61306 L 191.93034,220.31743 L 206.27055,220.31743 L 206.27055,218.61306 C 202.09778,218.3192 201.8627,218.20165 201.8627,215.20432 L 201.8627,191.16685 L 201.45129,190.81422 L 192.2242,192.2835 M 199.04167,178.29592 C 196.92591,178.29592 195.45662,179.82398 195.45662,181.93975 C 195.45662,183.99674 196.92591,185.46603 199.04167,185.46603 C 201.21621,185.46603 202.56795,183.99674 202.62672,181.93975 C 202.62672,179.82398 201.21621,178.29592 199.04167,178.29592 M 226.74113,217.96657 C 219.74735,217.96657 218.10174,210.67892 218.10174,205.15442 C 218.10174,196.3975 221.56926,192.87121 225.62448,192.87121 C 228.32795,192.87121 230.03233,194.81067 231.20775,197.98432 C 231.56038,198.92466 231.91301,199.51237 233.02966,199.51237 C 234.20509,199.51237 236.49717,198.74834 236.49717,196.51504 C 236.49717,193.81156 232.61826,190.81422 226.27096,190.81422 C 215.57459,190.81422 211.98953,198.39573 211.98953,206.21231 C 211.98953,216.02711 216.80878,221.02268 225.62448,221.02268 C 229.73846,221.02268 235.26298,218.84814 236.90857,212.55961 L 235.2042,211.73681 C 233.38229,215.8508 231.03143,217.96657 226.74113,217.96657 M 260.38109,211.91313 C 260.38109,216.6736 256.73727,217.9078 254.44519,217.9078 C 250.80137,217.9078 249.03822,215.32186 249.03822,211.85435 C 249.03822,209.0921 250.3312,207.68159 253.62239,206.44739 C 255.97324,205.56582 259.08812,204.44917 260.38109,203.62637 L 260.38109,211.91313 M 265.67051,198.6308 C 265.67051,195.22207 264.90647,190.81422 256.03201,190.81422 C 249.39086,190.81422 244.1602,194.28173 244.1602,197.51415 C 244.1602,199.39483 246.33474,200.2764 247.4514,200.2764 C 248.68559,200.2764 249.03822,199.62992 249.33208,198.6308 C 250.62505,194.28173 253.03468,192.87121 255.38553,192.87121 C 257.67761,192.87121 260.38109,194.04665 260.38109,198.74835 L 260.38109,201.21674 C 258.91181,202.7448 253.21098,204.21408 248.56805,205.68336 C 244.33652,206.97633 243.10232,209.9149 243.10232,212.67715 C 243.10232,217.085 246.04089,221.02268 251.56539,221.02268 C 255.20921,220.90514 258.44164,218.7306 260.32232,217.4964 C 261.14512,219.67094 262.08546,221.02268 264.14246,221.02268 C 266.31699,221.02268 268.84416,220.3762 271.07747,219.25954 L 270.72485,217.84903 C 269.90205,218.02534 268.60908,218.14289 267.72751,217.9078 C 266.66962,217.67272 265.67051,216.55606 265.67051,212.85347 L 265.67051,198.6308 M 304.03238,200.15886 C 304.03238,194.22296 300.79995,190.81422 295.39299,190.81422 C 291.04392,190.81422 288.34043,192.92999 284.69661,195.28084 L 283.87381,190.81422 L 275.11688,192.2835 L 275.11688,193.75278 L 277.35019,194.04664 C 278.87824,194.28173 279.23087,194.57558 279.23087,196.69135 L 279.23087,215.20432 C 279.23087,218.20165 279.05456,218.3192 274.82302,218.61306 L 274.82302,220.31743 L 289.16323,220.31743 L 289.16323,218.61306 C 284.99047,218.3192 284.75538,218.20165 284.75538,215.20432 L 284.75538,201.45183 C 284.75538,199.98255 284.87292,199.15975 285.34309,198.2194 C 286.57729,195.92733 289.222,193.98787 292.33688,193.98787 C 296.33333,193.98787 298.50787,196.22118 298.50787,201.33429 L 298.50787,215.20432 C 298.50787,218.20165 298.33155,218.3192 294.10002,218.61306 L 294.10002,220.31743 L 308.44023,220.31743 L 308.44023,218.61306 C 304.26747,218.3192 304.03238,218.20165 304.03238,215.20432 L 304.03238,200.15886" 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"
321 id="text2427" 327 id="text2427"
322 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;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Utopia;-inkscape-font-specification:Utopia" /> 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" />
323 <text 329 <text
324 x="271.64307" 330 x="213.01947"
325 y="247.77698" 331 y="195.03021"
326 id="text2432" 332 id="text2432"
327 xml:space="preserve" 333 xml:space="preserve"
328 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;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"><tspan 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
329 x="271.64307" 335 x="213.01947"
330 y="247.77698" 336 y="195.03021"
331 id="tspan2434" 337 id="tspan2434"
332 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> 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>
333 <path 339 <path
334 d="M 73.023896,206.82472 L 76.373856,206.82472 C 79.077336,206.82472 81.722056,206.58963 83.896596,206.06069 C 88.421976,204.88526 93.593856,201.7116 93.593856,194.3652 C 93.593856,189.89858 91.654406,186.84246 89.009696,185.19687 C 86.188676,183.43373 82.427306,182.84601 78.313316,182.84601 L 61.916116,182.84601 L 61.916116,184.55038 C 67.087986,184.90301 67.205536,185.02056 67.205536,188.31175 L 67.205536,218.75715 C 67.205536,222.04834 67.087986,222.16589 61.916116,222.51852 L 61.916116,224.22289 L 79.253656,224.22289 L 79.253656,222.51852 C 73.200216,222.16589 73.023896,222.04834 73.023896,218.75715 L 73.023896,206.82472 M 73.023896,187.07755 C 73.023896,185.43195 73.670386,184.90301 77.490516,184.90301 C 83.543956,184.90301 87.246556,188.37053 87.246556,194.77659 C 87.246556,202.123 82.427306,204.76772 77.372976,204.76772 C 73.905466,204.76772 73.023896,204.65018 73.023896,202.47564 L 73.023896,187.07755 M 131.78952,223.51578 L 131.78952,221.81141 C 127.7343,221.51755 127.38167,221.4 127.38167,218.40267 L 127.38167,194.3652 L 126.97027,194.01257 L 117.74317,195.48185 L 117.74317,196.95113 L 119.97648,197.24499 C 121.50453,197.48008 121.85716,197.77393 121.85716,199.8897 L 121.85716,213.11325 C 121.85716,214.75885 121.68085,216.05182 121.38699,216.63953 C 120.03525,219.34301 117.21423,221.04738 114.15812,221.04738 C 110.74938,221.04738 108.22221,218.93161 108.22221,214.34745 L 108.22221,194.3652 L 107.81081,194.01257 L 98.583716,195.48185 L 98.583716,196.95113 L 100.81703,197.24499 C 102.34508,197.48008 102.69771,197.77393 102.69771,199.8897 L 102.69771,215.40533 C 102.69771,222.16403 106.69416,224.22103 111.04324,224.22103 C 116.0388,224.22103 120.09403,220.81229 121.79839,219.9895 L 122.38611,223.51578 L 131.78952,223.51578 M 140.94387,224.22103 L 143.29472,221.92895 C 145.35171,223.10438 147.82012,224.22103 152.22796,224.22103 C 160.04454,224.22103 166.86202,220.45965 166.86202,208.47031 C 166.86202,204.8265 166.09799,194.01257 155.51916,194.01257 C 151.05254,194.01257 147.58502,196.89236 145.41049,198.18533 L 145.41049,180.26008 L 144.99909,179.90745 L 135.77199,181.37673 L 135.77199,182.84601 L 138.0053,183.0811 C 139.53335,183.25741 139.88598,183.55127 139.88598,185.78458 L 139.88598,223.75086 L 140.94387,224.22103 M 145.41049,204.65018 C 145.41049,203.1809 145.52803,202.24055 145.9982,201.30021 C 147.40871,198.47919 149.87711,197.18622 153.1683,197.18622 C 155.57792,197.18622 160.74981,198.59674 160.74981,208.82294 C 160.74981,217.46232 158.10509,222.16404 152.28673,222.16404 C 149.17186,222.16404 146.87977,220.57721 145.82189,217.63864 C 145.46926,216.58076 145.41049,215.34656 145.41049,213.93605 L 145.41049,204.65018 M 182.78609,180.26008 L 182.37469,179.90745 L 173.1476,181.37673 L 173.1476,182.84601 L 175.3809,183.0811 C 176.90896,183.25741 177.26159,183.55127 177.26159,185.78458 L 177.26159,218.40267 C 177.26159,221.4 177.08527,221.51755 172.85374,221.81141 L 172.85374,223.51578 L 187.19394,223.51578 L 187.19394,221.81141 C 183.02118,221.51755 182.78609,221.4 182.78609,218.40267 L 182.78609,180.26008 M 192.2242,195.48185 L 192.2242,196.95113 L 194.45751,197.24499 C 195.98556,197.48008 196.33819,197.77393 196.33819,199.8897 L 196.33819,218.40267 C 196.33819,221.4 196.16187,221.51755 191.93034,221.81141 L 191.93034,223.51578 L 206.27055,223.51578 L 206.27055,221.81141 C 202.09778,221.51755 201.8627,221.4 201.8627,218.40267 L 201.8627,194.3652 L 201.45129,194.01257 L 192.2242,195.48185 M 199.04167,181.49427 C 196.92591,181.49427 195.45662,183.02233 195.45662,185.1381 C 195.45662,187.19509 196.92591,188.66438 199.04167,188.66438 C 201.21621,188.66438 202.56795,187.19509 202.62672,185.1381 C 202.62672,183.02233 201.21621,181.49427 199.04167,181.49427 M 226.74113,221.16492 C 219.74735,221.16492 218.10174,213.87727 218.10174,208.35277 C 218.10174,199.59585 221.56926,196.06956 225.62448,196.06956 C 228.32795,196.06956 230.03233,198.00902 231.20775,201.18267 C 231.56038,202.12301 231.91301,202.71072 233.02966,202.71072 C 234.20509,202.71072 236.49717,201.94669 236.49717,199.71339 C 236.49717,197.00991 232.61826,194.01257 226.27096,194.01257 C 215.57459,194.01257 211.98953,201.59408 211.98953,209.41066 C 211.98953,219.22546 216.80878,224.22103 225.62448,224.22103 C 229.73846,224.22103 235.26298,222.04649 236.90857,215.75796 L 235.2042,214.93516 C 233.38229,219.04915 231.03143,221.16492 226.74113,221.16492 M 260.38109,215.11148 C 260.38109,219.87195 256.73727,221.10615 254.44519,221.10615 C 250.80137,221.10615 249.03822,218.52021 249.03822,215.0527 C 249.03822,212.29045 250.3312,210.87994 253.62239,209.64574 C 255.97324,208.76417 259.08812,207.64752 260.38109,206.82472 L 260.38109,215.11148 M 265.67051,201.82915 C 265.67051,198.42042 264.90647,194.01257 256.03201,194.01257 C 249.39086,194.01257 244.1602,197.48008 244.1602,200.7125 C 244.1602,202.59318 246.33474,203.47475 247.4514,203.47475 C 248.68559,203.47475 249.03822,202.82827 249.33208,201.82915 C 250.62505,197.48008 253.03468,196.06956 255.38553,196.06956 C 257.67761,196.06956 260.38109,197.245 260.38109,201.9467 L 260.38109,204.41509 C 258.91181,205.94315 253.21098,207.41243 248.56805,208.88171 C 244.33652,210.17468 243.10232,213.11325 243.10232,215.8755 C 243.10232,220.28335 246.04089,224.22103 251.56539,224.22103 C 255.20921,224.10349 258.44164,221.92895 260.32232,220.69475 C 261.14512,222.86929 262.08546,224.22103 264.14246,224.22103 C 266.31699,224.22103 268.84416,223.57455 271.07747,222.45789 L 270.72485,221.04738 C 269.90205,221.22369 268.60908,221.34124 267.72751,221.10615 C 266.66962,220.87107 265.67051,219.75441 265.67051,216.05182 L 265.67051,201.82915 M 304.03238,203.35721 C 304.03238,197.42131 300.79995,194.01257 295.39299,194.01257 C 291.04392,194.01257 288.34043,196.12834 284.69661,198.47919 L 283.87381,194.01257 L 275.11688,195.48185 L 275.11688,196.95113 L 277.35019,197.24499 C 278.87824,197.48008 279.23087,197.77393 279.23087,199.8897 L 279.23087,218.40267 C 279.23087,221.4 279.05456,221.51755 274.82302,221.81141 L 274.82302,223.51578 L 289.16323,223.51578 L 289.16323,221.81141 C 284.99047,221.51755 284.75538,221.4 284.75538,218.40267 L 284.75538,204.65018 C 284.75538,203.1809 284.87292,202.3581 285.34309,201.41775 C 286.57729,199.12568 289.222,197.18622 292.33688,197.18622 C 296.33333,197.18622 298.50787,199.41953 298.50787,204.53264 L 298.50787,218.40267 C 298.50787,221.4 298.33155,221.51755 294.10002,221.81141 L 294.10002,223.51578 L 308.44023,223.51578 L 308.44023,221.81141 C 304.26747,221.51755 304.03238,221.4 304.03238,218.40267 L 304.03238,203.35721" 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"
335 id="path6354" 341 id="path6354"
336 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;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6426);font-family:Utopia;-inkscape-font-specification:Utopia" /> 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" />
337 <g 343 <g
344 transform="translate(-58.623593,-52.746766)"
338 id="layer1" /> 345 id="layer1" />
339 <g 346 <g
347 transform="translate(-58.623593,-52.746766)"
340 id="layer2" 348 id="layer2"
341 style="filter:url(#filter6626)" /> 349 style="filter:url(#filter6626)" />
342</svg> 350</svg>
diff --git a/SystemTap_Beginners_Guide/SystemTap_Beginners_Guide-Preface.html b/SystemTap_Beginners_Guide/SystemTap_Beginners_Guide-Preface.html
index e501a97f..330d84d1 100644
--- a/SystemTap_Beginners_Guide/SystemTap_Beginners_Guide-Preface.html
+++ b/SystemTap_Beginners_Guide/SystemTap_Beginners_Guide-Preface.html
@@ -1,29 +1,28 @@
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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>Preface</h1></div></div></div><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="index.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="pr01s02.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="preface" id="SystemTap_Beginners_Guide-Preface" lang="en-US"><div class="titlepage"><div><div><h1 class="title">Preface</h1></div></div></div><div class="para">
4 3
5 </div><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="idp35045504">1. Document Conventions</h2></div></div></div><div class="para"> 4 </div><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="idm246922603856"></a>1. Document Conventions</h2></div></div></div><div class="para">
6 This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information. 5 This manual uses several conventions to highlight certain words and phrases and draw attention to specific pieces of information.
7 </div><div class="para"> 6 </div><div class="para">
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 includes the Liberation Fonts set by default. 7 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.
9 </div><div class="section"><div class="titlepage"><div><div><h3 class="title" id="idp49732512">1.1. Typographic Conventions</h3></div></div></div><div class="para"> 8 </div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm246917943776"></a>1.1. Typographic Conventions</h3></div></div></div><div class="para">
10 Four typographic conventions are used to call attention to specific words and phrases. These conventions, and the circumstances they apply to, are as follows. 9 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 </div><div class="para"> 10 </div><div class="para">
12 <code class="literal">Mono-spaced Bold</code> 11 <code class="literal">Mono-spaced Bold</code>
13 </div><div class="para"> 12 </div><div class="para">
14 Used to highlight system input, including shell commands, file names and paths. Also used to highlight keycaps and key combinations. For example: 13 Used to highlight system input, including shell commands, file names and paths. Also used to highlight keys and key combinations. For example:
15 </div><div class="blockquote"><blockquote class="blockquote"><div class="para"> 14 </div><div class="blockquote"><blockquote class="blockquote"><div class="para">
16 To see the contents of the file <code class="filename">my_next_bestselling_novel</code> in your current working directory, enter the <code class="command">cat my_next_bestselling_novel</code> command at the shell prompt and press <span class="keycap"><strong>Enter</strong></span> to execute the command. 15 To see the contents of the file <code class="filename">my_next_bestselling_novel</code> in your current working directory, enter the <code class="command">cat my_next_bestselling_novel</code> command at the shell prompt and press <span class="keycap"><strong>Enter</strong></span> to execute the command.
17 </div></blockquote></div><div class="para"> 16 </div></blockquote></div><div class="para">
18 The above includes a file name, a shell command and a keycap, all presented in mono-spaced bold and all distinguishable thanks to context. 17 The above includes a file name, a shell command and a key, all presented in mono-spaced bold and all distinguishable thanks to context.
19 </div><div class="para"> 18 </div><div class="para">
20 Key combinations can be distinguished from keycaps by the hyphen connecting each part of a key combination. For example: 19 Key combinations can be distinguished from an individual key by the plus sign that connects each part of a key combination. For example:
21 </div><div class="blockquote"><blockquote class="blockquote"><div class="para"> 20 </div><div class="blockquote"><blockquote class="blockquote"><div class="para">
22 Press <span class="keycap"><strong>Enter</strong></span> to execute the command. 21 Press <span class="keycap"><strong>Enter</strong></span> to execute the command.
23 </div><div class="para"> 22 </div><div class="para">
24 Press <span class="keycap"><strong>Ctrl</strong></span>+<span class="keycap"><strong>Alt</strong></span>+<span class="keycap"><strong>F2</strong></span> to switch to the first virtual terminal. Press <span class="keycap"><strong>Ctrl</strong></span>+<span class="keycap"><strong>Alt</strong></span>+<span class="keycap"><strong>F1</strong></span> to return to your X-Windows session. 23 Press <span class="keycap"><strong>Ctrl</strong></span>+<span class="keycap"><strong>Alt</strong></span>+<span class="keycap"><strong>F2</strong></span> to switch to a virtual terminal.
25 </div></blockquote></div><div class="para"> 24 </div></blockquote></div><div class="para">
26 The first paragraph highlights the particular keycap to press. The second highlights two key combinations (each a set of three keycaps with each set pressed simultaneously). 25 The first example highlights a particular key to press. The second example highlights a key combination: a set of three keys pressed simultaneously.
27 </div><div class="para"> 26 </div><div class="para">
28 If source code is discussed, class names, methods, functions, variable names and returned values mentioned within a paragraph will be presented as above, in <code class="literal">mono-spaced bold</code>. For example: 27 If source code is discussed, class names, methods, functions, variable names and returned values mentioned within a paragraph will be presented as above, in <code class="literal">mono-spaced bold</code>. For example:
29 </div><div class="blockquote"><blockquote class="blockquote"><div class="para"> 28 </div><div class="blockquote"><blockquote class="blockquote"><div class="para">
@@ -31,9 +30,9 @@
31 </div></blockquote></div><div class="para"> 30 </div></blockquote></div><div class="para">
32 <span class="application"><strong>Proportional Bold</strong></span> 31 <span class="application"><strong>Proportional Bold</strong></span>
33 </div><div class="para"> 32 </div><div class="para">
34 This denotes words or phrases encountered on a system, including application names; dialog box text; labeled buttons; check-box and radio button labels; menu titles and sub-menu titles. For example: 33 This denotes words or phrases encountered on a system, including application names; dialog-box text; labeled buttons; check-box and radio-button labels; menu titles and submenu titles. For example:
35 </div><div class="blockquote"><blockquote class="blockquote"><div class="para"> 34 </div><div class="blockquote"><blockquote class="blockquote"><div class="para">
36 Choose <span class="guimenu"><strong>System</strong></span> → <span class="guisubmenu"><strong>Preferences</strong></span> → <span class="guimenuitem"><strong>Mouse</strong></span> from the main menu bar to launch <span class="application"><strong>Mouse Preferences</strong></span>. In the <span class="guilabel"><strong>Buttons</strong></span> tab, click the <span class="guilabel"><strong>Left-handed mouse</strong></span> check box and click <span class="guibutton"><strong>Close</strong></span> to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand). 35 Choose <span class="guimenu"><strong>System</strong></span> → <span class="guisubmenu"><strong>Preferences</strong></span> → <span class="guimenuitem"><strong>Mouse</strong></span> from the main menu bar to launch <span class="application"><strong>Mouse Preferences</strong></span>. In the <span class="guilabel"><strong>Buttons</strong></span> tab, select the <span class="guilabel"><strong>Left-handed mouse</strong></span> check box and click <span class="guibutton"><strong>Close</strong></span> to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand).
37 </div><div class="para"> 36 </div><div class="para">
38 To insert a special character into a <span class="application"><strong>gedit</strong></span> file, choose <span class="guimenu"><strong>Applications</strong></span> → <span class="guisubmenu"><strong>Accessories</strong></span> → <span class="guimenuitem"><strong>Character Map</strong></span> from the main menu bar. Next, choose <span class="guimenu"><strong>Search</strong></span> → <span class="guimenuitem"><strong>Find…</strong></span> from the <span class="application"><strong>Character Map</strong></span> menu bar, type the name of the character in the <span class="guilabel"><strong>Search</strong></span> field and click <span class="guibutton"><strong>Next</strong></span>. The character you sought will be highlighted in the <span class="guilabel"><strong>Character Table</strong></span>. Double-click this highlighted character to place it in the <span class="guilabel"><strong>Text to copy</strong></span> field and then click the <span class="guibutton"><strong>Copy</strong></span> button. Now switch back to your document and choose <span class="guimenu"><strong>Edit</strong></span> → <span class="guimenuitem"><strong>Paste</strong></span> from the <span class="application"><strong>gedit</strong></span> menu bar. 37 To insert a special character into a <span class="application"><strong>gedit</strong></span> file, choose <span class="guimenu"><strong>Applications</strong></span> → <span class="guisubmenu"><strong>Accessories</strong></span> → <span class="guimenuitem"><strong>Character Map</strong></span> from the main menu bar. Next, choose <span class="guimenu"><strong>Search</strong></span> → <span class="guimenuitem"><strong>Find…</strong></span> from the <span class="application"><strong>Character Map</strong></span> menu bar, type the name of the character in the <span class="guilabel"><strong>Search</strong></span> field and click <span class="guibutton"><strong>Next</strong></span>. The character you sought will be highlighted in the <span class="guilabel"><strong>Character Table</strong></span>. Double-click this highlighted character to place it in the <span class="guilabel"><strong>Text to copy</strong></span> field and then click the <span class="guibutton"><strong>Copy</strong></span> button. Now switch back to your document and choose <span class="guimenu"><strong>Edit</strong></span> → <span class="guimenuitem"><strong>Paste</strong></span> from the <span class="application"><strong>gedit</strong></span> menu bar.
39 </div></blockquote></div><div class="para"> 38 </div></blockquote></div><div class="para">
@@ -49,19 +48,19 @@
49 </div><div class="para"> 48 </div><div class="para">
50 To see the version of a currently installed package, use the <code class="command">rpm -q <em class="replaceable"><code>package</code></em></code> command. It will return a result as follows: <code class="command"><em class="replaceable"><code>package-version-release</code></em></code>. 49 To see the version of a currently installed package, use the <code class="command">rpm -q <em class="replaceable"><code>package</code></em></code> command. It will return a result as follows: <code class="command"><em class="replaceable"><code>package-version-release</code></em></code>.
51 </div></blockquote></div><div class="para"> 50 </div></blockquote></div><div class="para">
52 Note the words in bold italics above — username, domain.name, file-system, package, version and release. Each word is a placeholder, either for text you enter when issuing a command or for text displayed by the system. 51 Note the words in bold italics above: username, domain.name, file-system, package, version and release. Each word is a placeholder, either for text you enter when issuing a command or for text displayed by the system.
53 </div><div class="para"> 52 </div><div class="para">
54 Aside from standard usage for presenting the title of a work, italics denotes the first use of a new and important term. For example: 53 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 </div><div class="blockquote"><blockquote class="blockquote"><div class="para"> 54 </div><div class="blockquote"><blockquote class="blockquote"><div class="para">
56 Publican is a <em class="firstterm">DocBook</em> publishing system. 55 Publican is a <em class="firstterm">DocBook</em> publishing system.
57 </div></blockquote></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title" id="idp50742544">1.2. Pull-quote Conventions</h3></div></div></div><div class="para"> 56 </div></blockquote></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm246878025616"></a>1.2. Pull-quote Conventions</h3></div></div></div><div class="para">
58 Terminal output and source code listings are set off visually from the surrounding text. 57 Terminal output and source code listings are set off visually from the surrounding text.
59 </div><div class="para"> 58 </div><div class="para">
60 Output sent to a terminal is set in <code class="computeroutput">mono-spaced roman</code> and presented thus: 59 Output sent to a terminal is set in <code class="computeroutput">mono-spaced roman</code> and presented thus:
61 </div><pre class="screen">books Desktop documentation drafts mss photos stuff svn 60 </div><pre class="screen">books Desktop documentation drafts mss photos stuff svn
62books_tests Desktop1 downloads images notes scripts svgs</pre><div class="para"> 61books_tests Desktop1 downloads images notes scripts svgs</pre><div class="para">
63 Source-code listings are also set in <code class="computeroutput">mono-spaced roman</code> but add syntax highlighting as follows: 62 Source-code listings are also set in <code class="computeroutput">mono-spaced roman</code> but add syntax highlighting as follows:
64 </div><pre class="programlisting">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>; 63 </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>;
65 64
66<span class="perl_Keyword">import</span> javax.naming.InitialContext; 65<span class="perl_Keyword">import</span> javax.naming.InitialContext;
67 66
@@ -79,12 +78,12 @@ books_tests Desktop1 downloads images notes scripts svgs</pre><div cla
79 78
80 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>)); 79 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>));
81 } 80 }
82}</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title" id="idp30437968">1.3. Notes and Warnings</h3></div></div></div><div class="para"> 81}</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm246930165456"></a>1.3. Notes and Warnings</h3></div></div></div><div class="para">
83 Finally, we use three visual styles to draw attention to information that might otherwise be overlooked. 82 Finally, we use three visual styles to draw attention to information that might otherwise be overlooked.
84 </div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para"> 83 </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">
85 Notes are tips, shortcuts or alternative approaches to the task at hand. Ignoring a note should have no negative consequences, but you might miss out on a trick that makes your life easier. 84 Notes are tips, shortcuts or alternative approaches to the task at hand. Ignoring a note should have no negative consequences, but you might miss out on a trick that makes your life easier.
86 </div></div></div><div class="important"><div class="admonition_header"><h2>Important</h2></div><div class="admonition"><div class="para"> 85 </div></div></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">
87 Important boxes detail things that are easily missed: configuration changes that only apply to the current session, or services that need restarting before an update will apply. Ignoring a box labeled 'Important' will not cause data loss but may cause irritation and frustration. 86 Important boxes detail things that are easily missed: configuration changes that only apply to the current session, or services that need restarting before an update will apply. Ignoring a box labeled “Important” will not cause data loss but may cause irritation and frustration.
88 </div></div></div><div class="warning"><div class="admonition_header"><h2>Warning</h2></div><div class="admonition"><div class="para"> 87 </div></div></div><div xmlns:d="http://docbook.org/ns/docbook" class="warning"><div class="admonition_header"><p><strong>Warning</strong></p></div><div class="admonition"><div class="para">
89 Warnings should not be ignored. Ignoring warnings will most likely cause data loss. 88 Warnings should not be ignored. Ignoring warnings will most likely cause data loss.
90 </div></div></div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="index.html"><strong>Prev</strong>SystemTap Beginners Guide</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="pr01s02.html"><strong>Next</strong>2. We Need Feedback!</a></li></ul></body></html> 89 </div></div></div></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="index.html"><strong>Prev</strong>SystemTap Beginners Guide</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="pr01s02.html"><strong>Next</strong>2. We Need Feedback!</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/appe-Publican-Revision_History.html b/SystemTap_Beginners_Guide/appe-Publican-Revision_History.html
index 9ebdef75..11f69e2a 100644
--- a/SystemTap_Beginners_Guide/appe-Publican-Revision_History.html
+++ b/SystemTap_Beginners_Guide/appe-Publican-Revision_History.html
@@ -1,7 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>Appendix A. Revision History</h1></div></div></div><div xmlns:d="http://docbook.org/ns/docbook" class="para"><p></p>
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="references.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="ix01.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="appendix" id="appe-Publican-Revision_History" lang="en-US"><div class="titlepage"><div><div><h1 class="title">Revision History</h1></div></div></div><div class="para"> 3 <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 border="0" width="100%" 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> 4 <table border="0" summary="Simple list" class="simplelist"><tr><td>includes 5.4 minor updates and additional script "dropwatch.stp"</td></tr></table>
6 5
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">
@@ -9,4 +8,4 @@
9 8
10 </td></tr></table></div> 9 </td></tr></table></div>
11 10
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> 11 </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 f0813d89..4af1f3af 100644
--- a/SystemTap_Beginners_Guide/arrayoperators.html
+++ b/SystemTap_Beginners_Guide/arrayoperators.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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>3.5. Array Operations in SystemTap</h2></div></div></div><a id="idm246913137504" class="indexterm"></a><a id="idm246927890784" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="associativearrays.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="arrayops-readvalues.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" id="arrayoperators" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="arrayoperators">3.5. Array Operations in SystemTap</h2></div></div></div><a id="idp31035760" class="indexterm"></a><a id="idp22639312" class="indexterm"></a><div class="para">
4 This section enumerates some of the most commonly used array operations in SystemTap. 3 This section enumerates some of the most commonly used array operations in SystemTap.
5 </div><div class="section" id="arrayops-assignvalue"><div class="titlepage"><div><div><h3 class="title" id="arrayops-assignvalue">3.5.1. Assigning an Associated Value</h3></div></div></div><a id="idp29864192" class="indexterm"></a><a id="idp17298896" class="indexterm"></a><a id="idp21597904" class="indexterm"></a><div class="para"> 4 </div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="arrayops-assignvalue"></a>3.5.1. Assigning an Associated Value</h3></div></div></div><a id="idm246868947296" class="indexterm"></a><a id="idm246868945888" class="indexterm"></a><a id="idm246922899168" class="indexterm"></a><div class="para">
6 Use <code class="command">=</code> to set an associated value to indexed unique pairs, as in: 5 Use <code class="command">=</code> to set an associated value to indexed unique pairs, as in:
7 </div><pre class="screen"><em class="replaceable"><code>array_name</code></em>[<em class="replaceable"><code>index_expression</code></em>] = <em class="replaceable"><code>value</code></em></pre><div class="para"> 6 </div><pre class="screen"><em class="replaceable"><code>array_name</code></em>[<em class="replaceable"><code>index_expression</code></em>] = <em class="replaceable"><code>value</code></em></pre><div class="para">
8 <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"><code>index_expression</code></em></code> and <code class="command"><em class="replaceable"><code>value</code></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: 7 <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"><code>index_expression</code></em></code> and <code class="command"><em class="replaceable"><code>value</code></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:
9 </div><a id="idp17319440" class="indexterm"></a><a id="idp15383728" class="indexterm"></a><a id="idp21947536" class="indexterm"></a><a id="idp45670288" class="indexterm"></a><a id="idp31843520" class="indexterm"></a><a id="idp13888896" class="indexterm"></a><div class="example" id="arrays-timestampprocessname"><h6>Example 3.14. Associating Timestamps to Process Names</h6><div class="example-contents"><pre class="programlisting">foo[tid()] = gettimeofday_s()</pre></div></div><br class="example-break" /><div class="para"> 8 </div><a id="idm246923047584" class="indexterm"></a><a id="idm246927092016" class="indexterm"></a><a id="idm246924551824" class="indexterm"></a><a id="idm246920787472" class="indexterm"></a><a id="idm246873373440" class="indexterm"></a><a id="idm246928973024" class="indexterm"></a><div class="example"><a id="arrays-timestampprocessname"></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><br class="example-break" /><div class="para">
10 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 (i.e. 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. 9 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.
11 </div><div class="para"> 10 </div><div class="para">
12 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>. 11 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>.
13 </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> 12 </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 1cbb3c3d..f685e2e8 100644
--- a/SystemTap_Beginners_Guide/arrayops-aggregates.html
+++ b/SystemTap_Beginners_Guide/arrayops-aggregates.html
@@ -1,32 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>3.5.7. Computing for Statistical Aggregates</h3></div></div></div><a id="idm246927153888" class="indexterm"></a><a id="idm246920848784" class="indexterm"></a><a id="idm246881908944" class="indexterm"></a><a id="idm246881907536" class="indexterm"></a><a id="idm246917193792" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayops-conditionals.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="understanding-tapsets.html"><strong>Next</strong></a></li></ul><div class="section" id="arrayops-aggregates"><div class="titlepage"><div><div><h3 class="title" id="arrayops-aggregates">3.5.7. Computing for Statistical Aggregates</h3></div></div></div><a id="idp32314224" class="indexterm"></a><a id="idp39676864" class="indexterm"></a><a id="idp23175792" class="indexterm"></a><a id="idp23177200" class="indexterm"></a><a id="idp31572512" class="indexterm"></a><div class="para"> 3 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.
4 Statistical aggregates are used to collect statistics on numerical values where it is important to accumulate new data quickly and in large volume (i.e. storing only aggregated stream statistics). Statistical aggregates can be used in global variables or as elements in an array. 4 </div><a id="idm246917191344" class="indexterm"></a><a id="idm246928741888" class="indexterm"></a><a id="idm246873333184" class="indexterm"></a><a id="idm246873331328" class="indexterm"></a><div class="para">
5 </div><a id="idp30697904" class="indexterm"></a><a id="idp51594464" class="indexterm"></a><a id="idp51723056" class="indexterm"></a><a id="idp52170496" 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"><code>value</code></em></code>. 5 To add value to a statistical aggregate, use the operator <code class="command">&lt;&lt;&lt; <em class="replaceable"><code>value</code></em></code>.
7 </div><div class="example" id="simpleaggregates"><h6>Example 3.21. stat-aggregates.stp</h6><div class="example-contents"><pre class="programlisting">global reads 6 </div><div class="example"><a id="simpleaggregates"></a><p class="title"><strong>Example 3.21. stat-aggregates.stp</strong></p><div class="example-contents"><pre class="programlisting">global reads
8probe vfs.read 7probe vfs.read
9{ 8{
10 reads[execname()] &lt;&lt;&lt; count 9 reads[execname()] &lt;&lt;&lt; $count
11}</pre></div></div><br class="example-break" /><a id="idp48070672" class="indexterm"></a><a id="idp51958704" class="indexterm"></a><a id="idp15102640" class="indexterm"></a><a id="idm9052320" class="indexterm"></a><div class="para"> 10}</pre></div></div><br class="example-break" /><a id="idm246917987968" class="indexterm"></a><a id="idm246873151232" class="indexterm"></a><a id="idm246926768784" class="indexterm"></a><a id="idm246926766896" class="indexterm"></a><div class="para">
12 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 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. 11 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.
13 </div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para"> 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"><div class="para">
14 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. 13 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.
15 </div></div></div><a id="idp27213504" class="indexterm"></a><a id="idp50721536" class="indexterm"></a><a id="idp27606304" class="indexterm"></a><a id="idp40143520" class="indexterm"></a><a id="idp15105776" class="indexterm"></a><div class="para"> 14 </div></div></div><a id="idm246917554080" class="indexterm"></a><a id="idm246917552224" class="indexterm"></a><a id="idm246928592496" class="indexterm"></a><a id="idm246875152400" class="indexterm"></a><a id="idm246875150544" class="indexterm"></a><div class="para">
16 To extract data collected by statistical aggregates, use the syntax format <code class="command">@<em class="replaceable"><code>extractor</code></em>(<em class="replaceable"><code>variable/array index expression</code></em>)</code>. <code class="command"><em class="replaceable"><code>extractor</code></em></code> can be any of the following integer extractors: 15 To extract data collected by statistical aggregates, use the syntax format <code class="command">@<em class="replaceable"><code>extractor</code></em>(<em class="replaceable"><code>variable/array index expression</code></em>)</code>. <code class="command"><em class="replaceable"><code>extractor</code></em></code> can be any of the following integer extractors:
17 </div><div class="variablelist"><dl><dt class="varlistentry"><span class="term">count</span></dt><dd><a id="idm10151312" class="indexterm"></a><a id="idp59448320" class="indexterm"></a><a id="idp14738928" class="indexterm"></a><a id="idp63387792" class="indexterm"></a><div class="para"> 16 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">count</span></dt><dd><a id="idm246917833840" class="indexterm"></a><a id="idm246917831984" class="indexterm"></a><a id="idm246929084608" class="indexterm"></a><a id="idm246929082752" class="indexterm"></a><div class="para">
18 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>. 17 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>.
19 </div></dd><dt class="varlistentry"><span class="term">sum</span></dt><dd><a id="idm10162576" class="indexterm"></a><a id="idm10160720" class="indexterm"></a><a id="idp64033264" class="indexterm"></a><a id="idp31541808" class="indexterm"></a><div class="para"> 18 </div></dd><dt><span class="term">sum</span></dt><dd><a id="idm246873352256" class="indexterm"></a><a id="idm246873350400" class="indexterm"></a><a id="idm246875834736" class="indexterm"></a><a id="idm246875832880" class="indexterm"></a><div class="para">
20 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>. 19 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>.
21 </div></dd><dt class="varlistentry"><span class="term">min</span></dt><dd><a id="idp14997840" class="indexterm"></a><a id="idp38632288" class="indexterm"></a><a id="idp38634144" class="indexterm"></a><a id="idp20157872" class="indexterm"></a><div class="para"> 20 </div></dd><dt><span class="term">min</span></dt><dd><a id="idm246920628960" class="indexterm"></a><a id="idm246920627104" class="indexterm"></a><a id="idm246907783152" class="indexterm"></a><a id="idm246907781296" class="indexterm"></a><div class="para">
22 Returns the smallest among all the values stored in the variable/array index expression. 21 Returns the smallest among all the values stored in the variable/array index expression.
23 </div></dd><dt class="varlistentry"><span class="term">max</span></dt><dd><a id="idp21588560" class="indexterm"></a><a id="idp30575120" class="indexterm"></a><a id="idp30576976" class="indexterm"></a><a id="idp30173328" class="indexterm"></a><div class="para"> 22 </div></dd><dt><span class="term">max</span></dt><dd><a id="idm246928898832" class="indexterm"></a><a id="idm246928896976" class="indexterm"></a><a id="idm246917973792" class="indexterm"></a><a id="idm246911957600" class="indexterm"></a><div class="para">
24 Returns the largest among all the values stored in the variable/array index expression. 23 Returns the largest among all the values stored in the variable/array index expression.
25 </div></dd><dt class="varlistentry"><span class="term">avg</span></dt><dd><a id="idp50194608" class="indexterm"></a><a id="idp25242768" class="indexterm"></a><a id="idp48186608" class="indexterm"></a><a id="idp48188464" class="indexterm"></a><div class="para"> 24 </div></dd><dt><span class="term">avg</span></dt><dd><a id="idm246918189296" class="indexterm"></a><a id="idm246877757520" class="indexterm"></a><a id="idm246877755664" class="indexterm"></a><a id="idm246877989120" class="indexterm"></a><div class="para">
26 Returns the average of all values stored in the variable/array index expression. 25 Returns the average of all values stored in the variable/array index expression.
27 </div></dd></dl></div><div class="para"> 26 </div></dd></dl></div><div class="para">
28 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: 27 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:
29 </div><div class="example" id="multiplearrayindices"><h6>Example 3.22. Multiple Array Indexes</h6><div class="example-contents"><pre class="programlisting">global reads 28 </div><div class="example"><a id="multiplearrayindices"></a><p class="title"><strong>Example 3.22. Multiple Array Indexes</strong></p><div class="example-contents"><pre class="programlisting">global reads
30probe vfs.read 29probe vfs.read
31{ 30{
32 reads[execname(),pid()] &lt;&lt;&lt; 1 31 reads[execname(),pid()] &lt;&lt;&lt; 1
@@ -38,5 +37,5 @@ probe timer.s(3)
38}</pre></div></div><br class="example-break" /><div class="para"> 37}</pre></div></div><br class="example-break" /><div class="para">
39 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. 38 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.
40 </div><div class="para"> 39 </div><div class="para">
41 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 (i.e. <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. 40 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.
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> 41 </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 703d07bb..f2ee382b 100644
--- a/SystemTap_Beginners_Guide/arrayops-conditionals.html
+++ b/SystemTap_Beginners_Guide/arrayops-conditionals.html
@@ -1,8 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>3.5.6. Using Arrays in Conditional Statements</h3></div></div></div><a id="idm246876835664" class="indexterm"></a><a id="idm246920852816" class="indexterm"></a><a id="idm246920851408" class="indexterm"></a><a id="idm246920673616" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayops-deleting.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="arrayops-aggregates.html"><strong>Next</strong></a></li></ul><div class="section" id="arrayops-conditionals"><div class="titlepage"><div><div><h3 class="title" id="arrayops-conditionals">3.5.6. Using Arrays in Conditional Statements</h3></div></div></div><a id="idp34349456" class="indexterm"></a><a id="idp24410384" class="indexterm"></a><a id="idp41309920" class="indexterm"></a><a id="idp41311328" class="indexterm"></a><div class="para">
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: 3 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" id="simplevfsreadprintif"><h6>Example 3.19. vfsreads-print-if-1kb.stp</h6><div class="example-contents"><pre class="programlisting">global reads 4 </div><div class="example"><a id="simplevfsreadprintif"></a><p class="title"><strong>Example 3.19. vfsreads-print-if-1kb.stp</strong></p><div class="example-contents"><pre class="programlisting">global reads
6probe vfs.read 5probe vfs.read
7{ 6{
8 reads[execname()] ++ 7 reads[execname()] ++
@@ -18,11 +17,11 @@ probe timer.s(3)
18 printf("%s : %dB \n", count, reads[count]) 17 printf("%s : %dB \n", count, reads[count])
19}</pre></div></div><br class="example-break" /><div class="para"> 18}</pre></div></div><br class="example-break" /><div class="para">
20 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>. 19 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>.
21 </div><div class="formalpara"><h5 class="formalpara" id="idp21599504">Testing for Membership</h5><a id="idp14594512" class="indexterm"></a><a id="idp14596368" class="indexterm"></a><a id="idp41937376" class="indexterm"></a><a id="idp36657392" class="indexterm"></a><a id="idp15252096" class="indexterm"></a> 20 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">Testing for Membership</div><a id="idm246928509440" class="indexterm"></a><a id="idm246928507584" class="indexterm"></a><a id="idm246927762928" class="indexterm"></a><a id="idm246926490208" class="indexterm"></a><a id="idm246913065472" class="indexterm"></a>
22 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: 21 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:
23 </div><pre class="screen">if([<em class="replaceable"><code>index_expression</code></em>] in <em class="replaceable"><code>array_name</code></em>) <em class="replaceable"><code>statement</code></em></pre><div class="para"> 22 </div><pre class="screen">if([<em class="replaceable"><code>index_expression</code></em>] in <em class="replaceable"><code>array_name</code></em>) <em class="replaceable"><code>statement</code></em></pre><div class="para">
24 To illustrate this, consider the following example: 23 To illustrate this, consider the following example:
25 </div><div class="example" id="simplesimplevfsreadprintifmember"><h6>Example 3.20. vfsreads-stop-on-stapio2.stp</h6><div class="example-contents"><pre class="programlisting">global reads 24 </div><div class="example"><a id="simplesimplevfsreadprintifmember"></a><p class="title"><strong>Example 3.20. vfsreads-stop-on-stapio2.stp</strong></p><div class="example-contents"><pre class="programlisting">global reads
26 25
27probe vfs.read 26probe vfs.read
28{ 27{
@@ -40,4 +39,4 @@ probe timer.s(3)
40 } 39 }
41}</pre></div></div><br class="example-break" /><div class="para"> 40}</pre></div></div><br class="example-break" /><div class="para">
42 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>. 41 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>.
43 </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> 42 </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 bae00dd8..cb57788e 100644
--- a/SystemTap_Beginners_Guide/arrayops-deleting.html
+++ b/SystemTap_Beginners_Guide/arrayops-deleting.html
@@ -1,10 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>3.5.5. Clearing/Deleting Arrays and Array Elements</h3></div></div></div><a id="idm246875840176" class="indexterm"></a><a id="idm246875838768" class="indexterm"></a><a id="idm246928611616" class="indexterm"></a><a id="idm246928610208" class="indexterm"></a><a id="idm246921022592" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayops-foreach.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="arrayops-conditionals.html"><strong>Next</strong></a></li></ul><div class="section" id="arrayops-deleting"><div class="titlepage"><div><div><h3 class="title" id="arrayops-deleting">3.5.5. Clearing/Deleting Arrays and Array Elements</h3></div></div></div><a id="idp40350544" class="indexterm"></a><a id="idp40351952" class="indexterm"></a><a id="idp50007392" class="indexterm"></a><a id="idp59045584" class="indexterm"></a><a id="idp64699776" class="indexterm"></a><div class="para">
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. 3 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="idp31457632" class="indexterm"></a><a id="idp25141216" class="indexterm"></a><a id="idp61390096" class="indexterm"></a><a id="idp49027728" class="indexterm"></a><div class="para"> 4 </div><a id="idm246881943616" class="indexterm"></a><a id="idm246907841152" class="indexterm"></a><a id="idm246873559344" class="indexterm"></a><a id="idm246883014960" 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: 5 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="idp27621984" class="indexterm"></a><a id="idp22447280" class="indexterm"></a><a id="idm9806256" class="indexterm"></a><a id="idp22444912" class="indexterm"></a><div class="example" id="simplevfsreadprintnotcumulative"><h6>Example 3.18. noncumulative-vfsreads.stp</h6><div class="example-contents"><pre class="programlisting">global reads 6 </div><a id="idm246929411696" class="indexterm"></a><a id="idm246929409840" class="indexterm"></a><a id="idm246875134272" class="indexterm"></a><a id="idm246911932240" class="indexterm"></a><div class="example"><a id="simplevfsreadprintnotcumulative"></a><p class="title"><strong>Example 3.18. noncumulative-vfsreads.stp</strong></p><div class="example-contents"><pre class="programlisting">global reads
8probe vfs.read 7probe vfs.read
9{ 8{
10 reads[execname()] ++ 9 reads[execname()] ++
@@ -16,7 +15,7 @@ probe timer.s(3)
16 delete reads 15 delete reads
17}</pre></div></div><br class="example-break" /><div class="para"> 16}</pre></div></div><br class="example-break" /><div class="para">
18 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. 17 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.
19 </div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><a id="idp23209920" class="indexterm"></a><a id="idp40203328" class="indexterm"></a><a id="idp40915104" class="indexterm"></a><a id="idp14108144" class="indexterm"></a><div class="para"> 18 </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="idm246924551136" class="indexterm"></a><a id="idm246924549280" class="indexterm"></a><a id="idm246920888304" class="indexterm"></a><a id="idm246882975984" class="indexterm"></a><div class="para">
20 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: 19 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:
21 </div><pre class="screen">global reads, totalreads 20 </div><pre class="screen">global reads, totalreads
22 21
@@ -41,4 +40,4 @@ probe end
41 printf("%s : %d \n", total, totalreads[total]) 40 printf("%s : %d \n", total, totalreads[total])
42}</pre><div class="para"> 41}</pre><div class="para">
43 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. 42 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.
44 </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> 43 </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 fa4d6c7f..030b4f25 100644
--- a/SystemTap_Beginners_Guide/arrayops-foreach.html
+++ b/SystemTap_Beginners_Guide/arrayops-foreach.html
@@ -1,10 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>3.5.4. Processing Multiple Elements in an Array</h3></div></div></div><a id="idm246883062688" class="indexterm"></a><a id="idm246928950192" class="indexterm"></a><a id="idm246922761568" class="indexterm"></a><a id="idm246922760160" class="indexterm"></a><a id="idm246868998080" class="indexterm"></a><a id="idm246868996672" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayops-increment.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="arrayops-deleting.html"><strong>Next</strong></a></li></ul><div class="section" id="arrayops-foreach"><div class="titlepage"><div><div><h3 class="title" id="arrayops-foreach">3.5.4. Processing Multiple Elements in an Array</h3></div></div></div><a id="idp38183904" class="indexterm"></a><a id="idp22114048" class="indexterm"></a><a id="idp31997168" class="indexterm"></a><a id="idp51591904" class="indexterm"></a><a id="idp24211024" class="indexterm"></a><a id="idp24212432" class="indexterm"></a><div class="para">
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? 3 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="idp44314320" class="indexterm"></a><a id="idp13848928" class="indexterm"></a><a id="idp15246176" class="indexterm"></a><a id="idp40353664" class="indexterm"></a><a id="idp23377632" class="indexterm"></a><a id="idp44944688" class="indexterm"></a><a id="idp40105536" class="indexterm"></a><div class="para"> 4 </div><a id="idm246917511920" class="indexterm"></a><a id="idm246911928672" class="indexterm"></a><a id="idm246876559088" class="indexterm"></a><a id="idm246868921264" class="indexterm"></a><a id="idm246878024208" class="indexterm"></a><a id="idm246878022352" class="indexterm"></a><a id="idm246922927232" 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: 5 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="idp42344608" class="indexterm"></a><a id="idp52173056" class="indexterm"></a><a id="idp21404592" class="indexterm"></a><a id="idp59453472" class="indexterm"></a><a id="idp33667392" class="indexterm"></a><div class="example" id="simplevfsreadprint"><h6>Example 3.17. cumulative-vfsreads.stp</h6><div class="example-contents"><pre class="programlisting">global reads 6 </div><a id="idm246876083472" class="indexterm"></a><a id="idm246929082256" class="indexterm"></a><a id="idm246929080400" class="indexterm"></a><a id="idm246876579200" class="indexterm"></a><a id="idm246913061904" class="indexterm"></a><div class="example"><a id="simplevfsreadprint"></a><p class="title"><strong>Example 3.17. cumulative-vfsreads.stp</strong></p><div class="example-contents"><pre class="programlisting">global reads
8probe vfs.read 7probe vfs.read
9{ 8{
10 reads[execname()] ++ 9 reads[execname()] ++
@@ -17,7 +16,7 @@ probe timer.s(3)
17 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. 16 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.
18 </div><div class="para"> 17 </div><div class="para">
19 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. 18 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.
20 </div><a id="idp14560320" class="indexterm"></a><a id="idp52168304" class="indexterm"></a><a id="idp18043024" class="indexterm"></a><a id="idp14740576" class="indexterm"></a><a id="idp44902944" class="indexterm"></a><a id="idp33643584" class="indexterm"></a><a id="idp24309072" class="indexterm"></a><a id="idp50723264" class="indexterm"></a><div class="para"> 19 </div><a id="idm246929078528" class="indexterm"></a><a id="idm246929629776" class="indexterm"></a><a id="idm246927778848" class="indexterm"></a><a id="idm246927776992" class="indexterm"></a><a id="idm246926748464" class="indexterm"></a><a id="idm246913124608" class="indexterm"></a><a id="idm246917080576" class="indexterm"></a><a id="idm246875755824" class="indexterm"></a><div class="para">
21 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"><code>value</code></em></code> option. 20 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"><code>value</code></em></code> option.
22 </div><div class="para"> 21 </div><div class="para">
23 For example, consider the following replacement probe: 22 For example, consider the following replacement probe:
@@ -26,5 +25,5 @@ probe timer.s(3)
26 foreach (count in reads- limit 10) 25 foreach (count in reads- limit 10)
27 printf("%s : %d \n", count, reads[count]) 26 printf("%s : %d \n", count, reads[count])
28}</pre><div class="para"> 27}</pre><div class="para">
29 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 (i.e. print the first 10, starting with the highest value). 28 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).
30 </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> 29 </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 7aabc6e0..4f7e69cd 100644
--- a/SystemTap_Beginners_Guide/arrayops-increment.html
+++ b/SystemTap_Beginners_Guide/arrayops-increment.html
@@ -1,12 +1,11 @@
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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>3.5.3. Incrementing Associated Values</h3></div></div></div><a id="idm246926766544" class="indexterm"></a><a id="idm246926765136" class="indexterm"></a><a id="idm246917787680" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayops-readvalues.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="arrayops-foreach.html"><strong>Next</strong></a></li></ul><div class="section" id="arrayops-increment"><div class="titlepage"><div><div><h3 class="title" id="arrayops-increment">3.5.3. Incrementing Associated Values</h3></div></div></div><a id="idm10357120" class="indexterm"></a><a id="idp43360160" class="indexterm"></a><a id="idp43361568" class="indexterm"></a><div class="para">
4 Use <code class="command">++</code> to increment the associated value of a unique key in an array, as in: 3 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"><code>array_name</code></em>[<em class="replaceable"><code>index_expression</code></em>] ++</pre><div class="para"> 4 </div><pre class="screen"><em class="replaceable"><code>array_name</code></em>[<em class="replaceable"><code>index_expression</code></em>] ++</pre><div class="para">
6 Again, you can also use a handler function for your <code class="command"><em class="replaceable"><code>index_expression</code></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: 5 Again, you can also use a handler function for your <code class="command"><em class="replaceable"><code>index_expression</code></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="idp17223040" class="indexterm"></a><a id="idp15243104" class="indexterm"></a><a id="idp22804912" class="indexterm"></a><a id="idp53390336" class="indexterm"></a><a id="idp23153424" class="indexterm"></a><div class="example" id="simplesimplevfsread"><h6>Example 3.16. vfsreads.stp</h6><div class="example-contents"><pre class="programlisting">probe vfs.read 6 </div><a id="idm246881909472" class="indexterm"></a><a id="idm246921048288" class="indexterm"></a><a id="idm246928127008" class="indexterm"></a><a id="idm246907770384" class="indexterm"></a><a id="idm246928609232" class="indexterm"></a><div class="example"><a id="simplesimplevfsread"></a><p class="title"><strong>Example 3.16. vfsreads.stp</strong></p><div class="example-contents"><pre class="programlisting">probe vfs.read
8{ 7{
9 reads[execname()] ++ 8 reads[execname()] ++
10}</pre></div></div><br class="example-break" /><div class="para"> 9}</pre></div></div><br class="example-break" /><div class="para">
11 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> (i.e. 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. 10 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.
12 </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> 11 </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 b983a457..195e7b9e 100644
--- a/SystemTap_Beginners_Guide/arrayops-readvalues.html
+++ b/SystemTap_Beginners_Guide/arrayops-readvalues.html
@@ -1,11 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>3.5.2. Reading Values From Arrays</h3></div></div></div><a id="idm246928031056" class="indexterm"></a><a id="idm246928029648" class="indexterm"></a><a id="idm246881985072" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayoperators.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="arrayops-increment.html"><strong>Next</strong></a></li></ul><div class="section" id="arrayops-readvalues"><div class="titlepage"><div><div><h3 class="title" id="arrayops-readvalues">3.5.2. Reading Values From Arrays</h3></div></div></div><a id="idp25483008" class="indexterm"></a><a id="idp62873600" class="indexterm"></a><a id="idp63954480" class="indexterm"></a><div class="para">
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"><code>array_name</code></em>[<em class="replaceable"><code>index_expression</code></em>]</code> statement as an element in a mathematical expression. For example: 3 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"><code>array_name</code></em>[<em class="replaceable"><code>index_expression</code></em>]</code> statement as an element in a mathematical expression. For example:
5 </div><a id="idp61830224" class="indexterm"></a><a id="idp40868848" class="indexterm"></a><a id="idp37246112" class="indexterm"></a><a id="idp28309904" class="indexterm"></a><a id="idp15095008" class="indexterm"></a><a id="idp21587008" class="indexterm"></a><a id="idp36652592" class="indexterm"></a><a id="idp38184336" class="indexterm"></a><a id="idp40872224" class="indexterm"></a><a id="idp28945808" class="indexterm"></a><div class="example" id="arrayreadingvaluesfrom"><h6>Example 3.15. Using Array Values in Simple Computations</h6><div class="example-contents"><pre class="screen">delta = gettimeofday_s() - foo[tid()]</pre></div></div><br class="example-break" /><div class="para"> 4 </div><a id="idm246922845056" class="indexterm"></a><a id="idm246895706512" class="indexterm"></a><a id="idm246895673760" class="indexterm"></a><a id="idm246913095776" class="indexterm"></a><a id="idm246929876656" class="indexterm"></a><a id="idm246913183344" class="indexterm"></a><a id="idm246912183136" class="indexterm"></a><a id="idm246912181280" class="indexterm"></a><a id="idm246877800016" class="indexterm"></a><a id="idm246922933136" class="indexterm"></a><div class="example"><a id="arrayreadingvaluesfrom"></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><br class="example-break" /><div class="para">
6 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>. 5 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>.
7 </div><div class="para"> 6 </div><div class="para">
8 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. 7 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.
9 </div><a id="idp63403824" class="indexterm"></a><a id="idp63973616" class="indexterm"></a><a id="idp22033808" class="indexterm"></a><a id="idp23925328" class="indexterm"></a><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para"> 8 </div><a id="idm246914364576" class="indexterm"></a><a id="idm246871566976" class="indexterm"></a><a id="idm246877324992" class="indexterm"></a><a id="idm246929487520" 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">
10 If the <code class="command"><em class="replaceable"><code>index_expression</code></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. 9 If the <code class="command"><em class="replaceable"><code>index_expression</code></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.
11 </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> 10 </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 51200fe3..f8210054 100644
--- a/SystemTap_Beginners_Guide/associativearrays.html
+++ b/SystemTap_Beginners_Guide/associativearrays.html
@@ -1,15 +1,14 @@
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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>3.4. Associative Arrays</h2></div></div></div><a id="idm246869039056" class="indexterm"></a><a id="idm246922625696" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="commandlineargssect.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="arrayoperators.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" id="associativearrays" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="associativearrays">3.4. Associative Arrays</h2></div></div></div><a id="idp50060752" class="indexterm"></a><a id="idp35539456" class="indexterm"></a><div class="para">
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. 3 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="idp62383024" class="indexterm"></a><a id="idp50100032" class="indexterm"></a><a id="idp20724864" class="indexterm"></a><a id="idp35225952" class="indexterm"></a><a id="idp31300944" class="indexterm"></a><a id="idp17201136" class="indexterm"></a><a id="idp36391872" class="indexterm"></a><a id="idp24306688" class="indexterm"></a><div class="para"> 4 </div><a id="idm246882052976" class="indexterm"></a><a id="idm246920731952" class="indexterm"></a><a id="idm246928990560" class="indexterm"></a><a id="idm246881942256" class="indexterm"></a><a id="idm246869005232" class="indexterm"></a><a id="idm246874367584" class="indexterm"></a><a id="idm246926825600" class="indexterm"></a><a id="idm246913132560" 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: 5 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="idp65182336" class="indexterm"></a><a id="idp42205248" class="indexterm"></a><a id="idp22441440" class="indexterm"></a><pre class="screen"><em class="replaceable"><code>array_name</code></em>[<em class="replaceable"><code>index_expression</code></em>]</pre><div class="para"> 6 </div><a id="idm246912382864" class="indexterm"></a><a id="idm246917892464" class="indexterm"></a><a id="idm246927253376" class="indexterm"></a><pre class="screen"><em class="replaceable"><code>array_name</code></em>[<em class="replaceable"><code>index_expression</code></em>]</pre><div class="para">
8 Here, the <code class="command"><em class="replaceable"><code>array_name</code></em></code> is any arbitrary name the array uses. The <code class="command"><em class="replaceable"><code>index_expression</code></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 (i.e. the unique keys): <code class="command">tom</code>, <code class="command">dick</code>, and <code class="command">harry</code>. To assign them the ages (i.e. associated values) of 23, 24, and 25 respectively, we'd use the following array statements: 7 Here, the <code class="command"><em class="replaceable"><code>array_name</code></em></code> is any arbitrary name the array uses. The <code class="command"><em class="replaceable"><code>index_expression</code></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="idp28507344" class="indexterm"></a><a id="idp22631280" class="indexterm"></a><div class="example" id="arraysimplestexample"><h6>Example 3.13. Basic Array Statements</h6><div class="example-contents"><pre class="screen">foo["tom"] = 23 8 </div><a id="idm246928561792" class="indexterm"></a><a id="idm246918058176" class="indexterm"></a><div class="example"><a id="arraysimplestexample"></a><p class="title"><strong>Example 3.13. Basic Array Statements</strong></p><div class="example-contents"><pre class="screen">foo["tom"] = 23
10foo["dick"] = 24 9foo["dick"] = 24
11foo["harry"] = 25</pre></div></div><br class="example-break" /><div class="para"> 10foo["harry"] = 25</pre></div></div><br class="example-break" /><div class="para">
12 You can specify up to nine index expressons 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. 11 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.
13 </div><pre class="screen">device[pid(),execname(),uid(),ppid(),"W"] = devname</pre><div class="important"><div class="admonition_header"><h2>Important</h2></div><div class="admonition"><div class="para"> 12 </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">
14 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. 13 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.
15 </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> 14 </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 5ccc635c..7c2ddc2a 100644
--- a/SystemTap_Beginners_Guide/commandlineargssect.html
+++ b/SystemTap_Beginners_Guide/commandlineargssect.html
@@ -1,8 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>3.3.4. Command-Line Arguments</h3></div></div></div><a id="idm246926486944" class="indexterm"></a><a id="idm246927136624" class="indexterm"></a><a id="idm246927961456" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="handlerconditionalstatements.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="associativearrays.html"><strong>Next</strong></a></li></ul><div class="section" id="commandlineargssect"><div class="titlepage"><div><div><h3 class="title" id="commandlineargssect">3.3.4. Command-Line Arguments</h3></div></div></div><a id="idp20418800" class="indexterm"></a><a id="idp28170144" class="indexterm"></a><a id="idp24987040" class="indexterm"></a><div class="para"> 3 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.
4 You can also allow a SystemTap script to 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. 4 </div><div class="example"><a id="commandlineargs"></a><p class="title"><strong>Example 3.12. commandlineargs.stp</strong></p><div class="example-contents"><pre class="programlisting">probe kernel.function(@1) { }
5 </div><div class="example" id="commandlineargs"><h6>Example 3.12. commandlineargs.stp</h6><div class="example-contents"><pre class="programlisting">probe kernel.function(@1) { }
6probe kernel.function(@1).return { }</pre></div></div><br class="example-break" /><div class="para"> 5probe kernel.function(@1).return { }</pre></div></div><br class="example-break" /><div class="para">
7 <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"><code>kernel function</code></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. 6 <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"><code>kernel function</code></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.
8 </div><a id="idp40028512" class="indexterm"></a><a id="idp52287632" class="indexterm"></a><a id="idp20572064" 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> 7 </div><a id="idm246917857648" class="indexterm"></a><a id="idm246926534304" class="indexterm"></a><a id="idm246877802048" 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 15be5fef..039f3bbd 100644
--- a/SystemTap_Beginners_Guide/cross-compiling.html
+++ b/SystemTap_Beginners_Guide/cross-compiling.html
@@ -1,59 +1,48 @@
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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>2.2. Generating Instrumentation for Other Computers</h2></div></div></div><a id="idm246925959920" class="indexterm"></a><a id="idm246875250768" class="indexterm"></a><a id="idm246880504656" class="indexterm"></a><a id="idm246873746544" class="indexterm"></a><a id="idm246878065984" class="indexterm"></a><a id="idm246914242512" class="indexterm"></a><a id="idm246877654000" class="indexterm"></a><a id="idm246917572880" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="using-systemtap.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="using-usage.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" id="cross-compiling" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="cross-compiling">2.2. Generating Instrumentation for Other Computers</h2></div></div></div><a id="idp18180320" class="indexterm"></a><a id="idp18178912" class="indexterm"></a><a id="idp13857856" class="indexterm"></a><a id="idp25072560" class="indexterm"></a><a id="idp63991376" class="indexterm"></a><a id="idp44638288" class="indexterm"></a><a id="idp33262128" class="indexterm"></a><a id="idp37588672" 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). 3 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).
5 </div><div class="para"> 4 </div><div class="para">
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 RPMs that provide compilers or debug information on specific machines, which will prevent the deployment of SystemTap. 5 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>.
7 </div><div class="para"> 6 </div><div class="para">
8 To work around this, you can resort to <em class="firstterm">cross-instrumentation</em>. 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: 7 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:
9 </div><a id="idp18808464" class="indexterm"></a><a id="idp38573792" class="indexterm"></a><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 8 </div><a id="idm246871281296" class="indexterm"></a><a id="idm246877247440" class="indexterm"></a><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><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>. 9 The kernel information packages for various machines can be installed on a single <span class="emphasis"><em>host machine</em></span>.
11 </div></li><li class="listitem"><div class="para"> 10 </div></li><li class="listitem"><div class="para">
12 Each <span class="emphasis"><em>target machine</em></span> only needs one RPM to be installed to use the generated SystemTap instrumentation module: <code class="filename">systemtap-runtime</code>. 11 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.
13 </div></li></ul></div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para"> 12 </div></li></ul></div><div class="para">
14 For the sake of simplicity, we will be using the following terms throughout this section: 13 For the sake of simplicity, the following terms are used throughout this section:
15 </div><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 14 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
16 <a id="idp50800928" class="indexterm"></a> 15 <a id="idm246927320432" class="indexterm"></a> <a id="idm246914411904" 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>.
17 <a id="idp21847984" class="indexterm"></a> 16 </div></li><li class="listitem"><div class="para">
18 <span class="emphasis"><em>instrumentation module</em></span> — the kernel module built from a SystemTap script; i.e. 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>. 17 <a id="idm246907857280" class="indexterm"></a> <a id="idm246917522176" 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>.
19 </div></li><li class="listitem"><div class="para"> 18 </div></li><li class="listitem"><div class="para">
20 <a id="idp22715392" class="indexterm"></a> 19 <a id="idm246913059600" class="indexterm"></a> <a id="idm246871727296" 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.
21 <a id="idp17714112" class="indexterm"></a> 20 </div></li><li class="listitem"><div class="para">
22 <span class="emphasis"><em>host system</em></span> — the system on which you compile the instrumentation modules (from SystemTap scripts), to be loaded on <span class="emphasis"><em>target systems</em></span>. 21 <a id="idm246928051760" class="indexterm"></a> <a id="idm246875290544" 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>.
23 </div></li><li class="listitem"><div class="para"> 22 </div></li></ul></div><div class="para">
24 <a id="idp33613632" class="indexterm"></a> 23 To configure a host system and target systems, complete the following steps:
25 <a id="idp44026352" class="indexterm"></a> 24 </div><div xmlns:d="http://docbook.org/ns/docbook" class="procedure"><a id="preppingxcompile"></a><a id="idm246911923168" class="indexterm"></a><a id="idm246927632480" class="indexterm"></a><a id="idm246917564832" class="indexterm"></a><ol class="1"><li class="step"><div class="para">
26 <span class="emphasis"><em>target system</em></span> — the system for which you are building the <span class="emphasis"><em>instrumentation module</em></span> (from SystemTap scripts). 25 Install the <span class="package">systemtap-runtime</span> package on each <span class="emphasis"><em>target system</em></span>.
27 </div></li><li class="listitem"><div class="para">
28 <a id="idp17705088" class="indexterm"></a>
29 <a id="idp22440160" class="indexterm"></a>
30 <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 wish to load/run the <span class="emphasis"><em>instrumentation module</em></span>.
31 </div></li></ul></div></div></div><div class="procedure" id="preppingxcompile"><h6>Procedure 2.1. Configuring a Host System and Target Systems</h6><a id="idp30116800" class="indexterm"></a><a id="idp49285808" class="indexterm"></a><a id="idp45864592" class="indexterm"></a><ol class="1"><li class="step"><div class="para">
32 Install the <code class="filename">systemtap-runtime</code> RPM on each <span class="emphasis"><em>target system</em></span>.
33 </div></li><li class="step"><div class="para"> 26 </div></li><li class="step"><div class="para">
34 Determine the kernel running on each <span class="emphasis"><em>target system</em></span> by running <code class="command">uname -r</code> on each <span class="emphasis"><em>target system</em></span>. 27 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.
35 </div></li><li class="step"><div class="para"> 28 </div></li><li class="step"><div class="para">
36 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>. 29 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>.
37 </div></li><li class="step"><div class="para"> 30 </div></li><li class="step"><div class="para">
38 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 RPMs on the <span class="emphasis"><em>host system</em></span> by the method described in <a class="xref" href="using-systemtap.html#install-kinfo">Section 2.1.2, “Installing Required Kernel Information RPMs”</a>. If multiple <span class="emphasis"><em>target systems</em></span> use different <span class="emphasis"><em>target kernels</em></span>, you will need to repeat this step for each different kernel used on the <span class="emphasis"><em>target systems</em></span>. 31 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>.
39 </div></li></ol></div><div class="para"> 32 </div></li></ol></div><div class="para">
40 After performing <a class="xref" href="cross-compiling.html#preppingxcompile">Procedure 2.1, “Configuring a Host System and Target Systems”</a>, 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>. 33 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>.
41 </div><div class="para"> 34 </div><div class="para">
42 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): 35 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):
43 </div><pre class="screen">stap -r <em class="replaceable"><code>kernel_version</code></em> <em class="replaceable"><code>script</code></em> -m <em class="replaceable"><code>module_name</code></em></pre><div class="para"> 36 </div><pre class="screen"><code class="command">stap -r <em class="replaceable"><code>kernel_version</code></em> <em class="replaceable"><code>script</code></em> -m <em class="replaceable"><code>module_name</code></em></code></pre><div class="para">
44 Here, <code class="command"><em class="replaceable"><code>kernel_version</code></em></code> refers to the version of the <span class="emphasis"><em>target kernel</em></span> (the output of <code class="command">uname -r</code> on the target machine), <code class="command"><em class="replaceable"><code>script</code></em></code> refers to the script to be converted into an <span class="emphasis"><em>instrumentation module</em></span>, and <code class="command"><em class="replaceable"><code>module_name</code></em></code> is the desired name of the <span class="emphasis"><em>instrumentation module</em></span>. 37 Here, <em class="replaceable"><code>kernel_version</code></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"><code>script</code></em> refers to the script to be converted into the <span class="emphasis"><em>instrumentation module</em></span>, and <em class="replaceable"><code>module_name</code></em> is the desired name of the <span class="emphasis"><em>instrumentation module</em></span>.
45 </div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><a id="idp21619344" class="indexterm"></a><a id="idp21620304" class="indexterm"></a><a id="idp38813648" class="indexterm"></a><div class="para"> 38 </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="idm246911863984" class="indexterm"></a><a id="idm246869060400" class="indexterm"></a><a id="idm246869059472" class="indexterm"></a><div class="para">
46 To determine the architecture notation of a running kernel, run <code class="command">uname -m</code>. 39 To determine the architecture notation of a running kernel, you can run the following command:
47 </div></div></div><div class="para"> 40 </div><pre class="screen"><code class="command">uname -m</code></pre></div></div><div class="para">
48 Once the 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: 41 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:
49 </div><pre class="screen">staprun <em class="replaceable"><code>module_name</code></em>.ko</pre><div class="para"> 42 </div><pre class="screen"><code class="command">staprun <em class="replaceable"><code>module_name</code></em>.ko</code></pre><div class="para">
50 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: 43 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:
51 </div><div class="para"> 44 </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">
52 <code class="command">stap -r 2.6.18-92.1.10.el5 -e 'probe vfs.read {exit()}' -m simple</code> 45 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>):
53 </div><div class="para"> 46 </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">
54 This will create a module named <code class="filename">simple.ko</code>. To use the <span class="emphasis"><em>instrumentation module</em></span> <code class="filename">simple.ko</code>, 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>):
55 </div><div class="para">
56 <code class="command">staprun simple.ko</code>
57 </div><div class="important"><div class="admonition_header"><h2>Important</h2></div><div class="admonition"><div class="para">
58 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. 47 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.
59 </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> 48 </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 3c1bf16b..3e1f2b57 100644
--- a/SystemTap_Beginners_Guide/errors.html
+++ b/SystemTap_Beginners_Guide/errors.html
@@ -1,56 +1,52 @@
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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></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<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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. Run Time Errors and Warnings" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="futexcontentionsect.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="runtimeerror.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" id="errors" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 6. Understanding SystemTap Errors</h2></div></div></div><div class="toc"><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. Run Time Errors and Warnings</a></span></dt></dl></div><div class="para">
4 This chapter explains the most common errors you may encounter while using SystemTap. 3 This chapter explains the most common errors you may encounter while using SystemTap.
5 </div><div class="section" id="parsetype"><div class="titlepage"><div><div><h2 class="title" id="parsetype">6.1. Parse and Semantic Errors</h2></div></div></div><a id="idp28368352" class="indexterm"></a><a id="idp61985104" class="indexterm"></a><a id="idp60265696" class="indexterm"></a><div class="para"> 4 </div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="parsetype"></a>6.1. Parse and Semantic Errors</h2></div></div></div><a id="idm246927567376" class="indexterm"></a><a id="idm246912115056" class="indexterm"></a><a id="idm246920961584" class="indexterm"></a><div class="para">
6 These types of errors occur while SystemTap attempts to parse and translate the script into C, prior to being converted into a kernel module. For example type errors result from operations that assign invalid values to variables or arrays. 5 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 </div><div class="formalpara"><h5 class="formalpara" id="idp30579296">parse error: expected <em class="replaceable"><code>foo</code></em>, saw <em class="replaceable"><code>bar</code></em></h5><a id="idp26759520" class="indexterm"></a><a id="idp22679680" class="indexterm"></a><a id="idp30212096" class="indexterm"></a><a id="idp28794128" class="indexterm"></a><a id="idp31047760" class="indexterm"></a><a id="idp31049616" class="indexterm"></a><a id="idp44436032" class="indexterm"></a><a id="idp44437888" class="indexterm"></a><a id="idp44440032" class="indexterm"></a> 6 </div><h3><a id="idm246920902896"></a>parse error: expected <em class="replaceable"><code>foo</code></em>, saw <em class="replaceable"><code>bar</code></em></h3><a id="idm246911755328" class="indexterm"></a><a id="idm246875263856" class="indexterm"></a><a id="idm246927858688" class="indexterm"></a><a id="idm246923108848" class="indexterm"></a><a id="idm246883215680" class="indexterm"></a><a id="idm246928089424" class="indexterm"></a><a id="idm246928087536" class="indexterm"></a><a id="idm246870506720" class="indexterm"></a><a id="idm246870504576" class="indexterm"></a><div class="para">
8 The script contains a grammatical/typographical error. SystemTap detected type of construct that is incorrect, given the context of the probe. 7 The script contains a grammatical or typographical error. SystemTap detected the type of the construct that is incorrect, given the context of the probe.
9 </div><div class="para"> 8 </div><div class="para">
10 The following invalid SystemTap script is missing its probe handlers: 9 For example, the following invalid SystemTap script is missing its probe handlers:
11 </div><div class="para"> 10 </div><div class="para">
12 11
13<pre class="programlisting">probe vfs.read 12<pre class="programlisting">probe vfs.read
14probe vfs.write 13probe vfs.write
15</pre> 14</pre>
16 </div><div class="para"> 15 </div><div class="para">
17 It results in the following error message showing that the parser was expecting something other than the <code class="command">probe</code> keyword in column 1 of line 2: 16 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 </div><div class="para"> 17 </div><div class="para">
19 18
20<pre class="programlisting">parse error: expected one of '. , ( ? ! { = +=' 19<pre class="programlisting">parse error: expected one of '. , ( ? ! { = +='
21 saw: keyword at perror.stp:2:1 20 saw: keyword at perror.stp:2:1
221 parse error(s).</pre> 211 parse error(s).</pre>
23 </div><div class="formalpara"><h5 class="formalpara" id="idp18688320">parse error: embedded code in unprivileged script</h5><a id="idp18689376" class="indexterm"></a><a id="idp18691232" class="indexterm"></a><a id="idp31893776" class="indexterm"></a><a id="idp31895632" class="indexterm"></a><a id="idp31897488" class="indexterm"></a><a id="idp24960352" class="indexterm"></a> 22 </div><h3><a id="idm246912136880"></a>parse error: embedded code in unprivileged script</h3><a id="idm246912136112" class="indexterm"></a><a id="idm246929885600" class="indexterm"></a><a id="idm246929883712" class="indexterm"></a><a id="idm246929881856" class="indexterm"></a><a id="idm246929880000" class="indexterm"></a><a id="idm246928211648" class="indexterm"></a><div class="para">
24 The script contains unsafe embedded C code (blocks of code surrounded by <code class="command">%{</code> <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; as such, SystemTap warns you with this error if such constructs appear in the script. 23 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.
25 </div><a id="idp24964304" class="indexterm"></a><a id="idp18056272" class="indexterm"></a><a id="idp18058192" class="indexterm"></a><a id="idp18060080" class="indexterm"></a><div class="para"> 24 </div><a id="idm246928207872" class="indexterm"></a><a id="idm246928205984" class="indexterm"></a><a id="idm246918014288" class="indexterm"></a><a id="idm246918012400" class="indexterm"></a><div class="para">
26 If you are sure of the safety of any similar constructs in the script <span class="emphasis"><em>and</em></span> are member of <code class="command">stapdev</code> group (or have root privileges), run the script in "guru" mode by using the option <code class="command">-g</code> (i.e. <code class="command">stap -g <em class="replaceable"><code>script</code></em></code>). 25 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:
27 </div><div class="formalpara"><h5 class="formalpara" id="idp26711232">semantic error: type mismatch for identifier '<em class="replaceable"><code>foo</code></em>' ... string vs. long</h5><a id="idp26712768" class="indexterm"></a><a id="idp65398304" class="indexterm"></a><a id="idp65400192" class="indexterm"></a><a id="idp65402048" class="indexterm"></a><a id="idm2434304" class="indexterm"></a> 26 </div><pre class="screen"><code class="command">stap -g <em class="replaceable"><code>script</code></em></code></pre><h3><a id="idm246869932768"></a>semantic error: type mismatch for identifier '<em class="replaceable"><code>foo</code></em>' ... string vs. long</h3><a id="idm246869931520" class="indexterm"></a><a id="idm246869929664" class="indexterm"></a><a id="idm246869927776" class="indexterm"></a><a id="idm246928436352" class="indexterm"></a><a id="idm246928434496" class="indexterm"></a><div class="para">
28 The function <code class="command"><em class="replaceable"><code>foo</code></em></code> in the script used the wrong type (i.e. <code class="command">%s</code> or <code class="command">%d</code>). This error will present itself in <a class="xref" href="errors.html#errorvariable">Example 6.1, “error-variable.stp”</a>, because the function <code class="command">execname()</code> returns a string the format specifier should be a <code class="command">%s</code>, not <code class="command">%d</code>. 27 The function <em class="replaceable"><code>foo</code></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:
29 </div><div class="example" id="errorvariable"><h6>Example 6.1. error-variable.stp</h6><div class="example-contents"><pre class="programlisting">probe syscall.open 28 </div><pre class="programlisting">probe syscall.open
30{ 29{
31 printf ("%d(%d) open\n", execname(), pid()) 30 printf ("%d(%d) open\n", execname(), pid())
32}</pre></div></div><br class="example-break" /><div class="formalpara"><h5 class="formalpara" id="idp24415696">semantic error: unresolved type for identifier '<em class="replaceable"><code>foo</code></em>'</h5><a id="idp24417232" class="indexterm"></a><a id="idp48988000" class="indexterm"></a><a id="idp48989888" class="indexterm"></a><a id="idp48991744" class="indexterm"></a> 31}</pre><h3><a id="idm246871740880"></a>semantic error: unresolved type for identifier '<em class="replaceable"><code>foo</code></em>'</h3><a id="idm246871739632" class="indexterm"></a><a id="idm246871737776" class="indexterm"></a><a id="idm246871735888" class="indexterm"></a><a id="idm246877418256" class="indexterm"></a><div class="para">
33 The identifier (e.g. a 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. 32 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.
34 </div><div class="formalpara"><h5 class="formalpara" id="idm3923536">semantic error: Expecting symbol or array index expression</h5><a id="idm3922480" class="indexterm"></a><a id="idp50564416" class="indexterm"></a><a id="idp50566304" class="indexterm"></a><a id="idp50568160" class="indexterm"></a> 33 </div><h3><a id="idm246877415344"></a>semantic error: Expecting symbol or array index expression</h3><a id="idm246877414576" class="indexterm"></a><a id="idm246877412720" class="indexterm"></a><a id="idm246878166736" class="indexterm"></a><a id="idm246878164880" class="indexterm"></a><div class="para">
35 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: 34 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:
36 </div><div class="para"> 35 </div><pre class="programlisting">probe begin { printf("x") = 1 }
37 36</pre><h3><a id="idm246878161552"></a>while searching for arity <em class="replaceable"><code>N</code></em> function, semantic error: unresolved function call</h3><a id="idm246878160336" class="indexterm"></a><a id="idm246917477392" class="indexterm"></a><a id="idm246917475504" class="indexterm"></a><a id="idm246917473648" class="indexterm"></a><a id="idm246917471792" class="indexterm"></a><div class="para">
38<pre class="programlisting">probe begin { printf("x") = 1 } 37 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.
39</pre> 38 </div><h3><a id="idm246880221104"></a>semantic error: array locals not supported, missing global declaration?</h3><a id="idm246880220176" class="indexterm"></a><a id="idm246880218320" class="indexterm"></a><a id="idm246880216432" class="indexterm"></a><a id="idm246877424944" class="indexterm"></a><a id="idm246877423056" class="indexterm"></a><div class="para">
40 </div><div class="formalpara"><h5 class="formalpara" id="idp41044256">while searching for arity <em class="replaceable"><code>N</code></em> function, semantic error: unresolved function call</h5><a id="idp41045760" class="indexterm"></a><a id="idp49479984" class="indexterm"></a><a id="idp49481872" class="indexterm"></a><a id="idp49483728" class="indexterm"></a><a id="idp49526912" class="indexterm"></a> 39 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.
41 A function call or array index expression in the script used an invalid number of arguments/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. 40 </div><h3><a id="idm246877420464"></a>semantic error: variable '<em class="replaceable"><code>foo</code></em>' modified during 'foreach' iteration</h3><a id="idm246874529200" class="indexterm"></a><a id="idm246874527344" class="indexterm"></a><a id="idm246874525456" class="indexterm"></a><a id="idm246874523600" class="indexterm"></a><div class="para">
42 </div><div class="formalpara"><h5 class="formalpara" id="idp49529968">semantic error: array locals not supported, missing global declaration?</h5><a id="idp49531024" class="indexterm"></a><a id="idp33572480" class="indexterm"></a><a id="idp33574368" class="indexterm"></a><a id="idp33576288" class="indexterm"></a><a id="idp20560320" class="indexterm"></a> 41 The array <em class="replaceable"><code>foo</code></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.
43 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. 42 </div><h3><a id="idm246917768976"></a>semantic error: probe point mismatch at position <em class="replaceable"><code>N</code></em>, while resolving probe point <em class="replaceable"><code>foo</code></em></h3><a id="idm246917767280" class="indexterm"></a><a id="idm246917765392" class="indexterm"></a><a id="idm246868828976" class="indexterm"></a><a id="idm246868827088" class="indexterm"></a><div class="para">
44 </div><div class="formalpara"><h5 class="formalpara" id="idp20563072">semantic error: variable ’<em class="replaceable"><code>foo</code></em>’ modified during ’foreach’ iteration</h5><a id="idp48911088" class="indexterm"></a><a id="idp48912944" class="indexterm"></a><a id="idp48914832" class="indexterm"></a><a id="idp39734704" class="indexterm"></a> 43 SystemTap did not understand what the event or SystemTap function <em class="replaceable"><code>foo</code></em> refers to. This usually means that SystemTap could not find a match for <em class="replaceable"><code>foo</code></em> in the tapset library. <em class="replaceable"><code>N</code></em> refers to the line and column of the error.
45 The array <code class="literal">foo</code> is being modifed (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. 44 </div><h3><a id="idm246868822784"></a>semantic error: no match for probe point, while resolving probe point <em class="replaceable"><code>foo</code></em></h3><a id="idm246927521920" class="indexterm"></a><a id="idm246927520064" class="indexterm"></a><a id="idm246927518176" class="indexterm"></a><a id="idm246927516320" class="indexterm"></a><a id="idm246877870848" class="indexterm"></a><div class="para">
46 </div><div class="formalpara"><h5 class="formalpara" id="idp39738576">semantic error: probe point mismatch at position <em class="replaceable"><code>N</code></em>, while resolving probe point <em class="replaceable"><code>foo</code></em></h5><a id="idp34244512" class="indexterm"></a><a id="idp34246400" class="indexterm"></a><a id="idp34248320" class="indexterm"></a><a id="idp48225456" class="indexterm"></a> 45 SystemTap could not resolve the events or handler function <em class="replaceable"><code>foo</code></em> for a variety of reasons. This error occurs when the script contains the event <code class="command">kernel.function("<em class="replaceable"><code>something</code></em>")</code>, and <em class="replaceable"><code>something</code></em> does not exist. In some cases, the error could also mean the script contains an invalid kernel file name or source line number.
47 SystemTap did not understand what the event or SystemTap function <code class="computeroutput"><em class="replaceable"><code>foo</code></em></code> refers to. This usually means that SystemTap could not find a match for <code class="computeroutput"><em class="replaceable"><code>foo</code></em></code> in the tapset library. The <em class="replaceable"><code>N</code></em> refers to the line and column of the error. 46 </div><h3><a id="idm246877866544"></a>semantic error: unresolved target-symbol expression</h3><a id="idm246877865776" class="indexterm"></a><a id="idm246911941984" class="indexterm"></a><a id="idm246911940096" class="indexterm"></a><a id="idm246911938240" class="indexterm"></a><a id="idm246911936384" class="indexterm"></a><div class="para">
48 </div><div class="formalpara"><h5 class="formalpara" id="idp48230240">semantic error: no match for probe point, while resolving probe point <em class="replaceable"><code>foo</code></em></h5><a id="idm1464736" class="indexterm"></a><a id="idm1462880" class="indexterm"></a><a id="idm1460992" class="indexterm"></a><a id="idp33719280" class="indexterm"></a><a id="idp33721136" class="indexterm"></a> 47 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.
49 The events/handler function <code class="computeroutput"><em class="replaceable"><code>foo</code></em></code> could not be resolved altogether, for a variety of reasons. This error occurs when the script contains the event <code class="command">kernel.function("<em class="replaceable"><code>blah</code></em>")</code>, and <code class="command"><em class="replaceable"><code>blah</code></em></code> does not exist. In some cases, the error could also mean the script contains an invalid kernel file name or source line number. 48 </div><h3><a id="idm246883190752"></a>semantic error: libdwfl failure </h3><a id="idm246883189824" class="indexterm"></a><a id="idm246883187936" class="indexterm"></a><a id="idm246883186016" class="indexterm"></a><a id="idm246917361600" class="indexterm"></a><div class="para">
50 </div><div class="formalpara"><h5 class="formalpara" id="idm8500304">semantic error: unresolved target-symbol expression</h5><a id="idm8499248" class="indexterm"></a><a id="idm8497392" class="indexterm"></a><a id="idp31260512" class="indexterm"></a><a id="idp31262368" class="indexterm"></a><a id="idp31264224" class="indexterm"></a> 49 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.
51 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. 50 </div><h3><a id="idm246917358224"></a>semantic error: cannot find <em class="replaceable"><code>foo</code></em> debuginfo</h3><div class="para">
52 </div><div class="formalpara"><h5 class="formalpara" id="idp52951632">semantic error: libdwfl failure </h5><a id="idp52952688" class="indexterm"></a><a id="idp52954576" class="indexterm"></a><a id="idp63773824" class="indexterm"></a><a id="idp63775712" class="indexterm"></a> 51 SystemTap could not find a suitable <span class="package">kernel-debuginfo</span> package.
53 There was a problem processing the debugging information. In most cases, this error results from the installation of a <code class="filename">kernel-debuginfo</code> RPM whose version does not match the probed kernel exactly. The installed <code class="filename">kernel-debuginfo</code> RPM itself may have some consistency/correctness problems. 52 </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
54 </div><div class="formalpara"><h5 class="formalpara" id="idp32302480">semantic error: cannot find <em class="replaceable"><code>foo</code></em> debuginfo</h5>
55 SystemTap could not find a suitable <code class="filename">kernel-debuginfo</code> at all.
56 </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. Run Time Errors and Warnings</a></li></ul></body></html>
diff --git a/SystemTap_Beginners_Guide/futexcontentionsect.html b/SystemTap_Beginners_Guide/futexcontentionsect.html
index f0985fe0..995b78aa 100644
--- a/SystemTap_Beginners_Guide/futexcontentionsect.html
+++ b/SystemTap_Beginners_Guide/futexcontentionsect.html
@@ -1,12 +1,11 @@
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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>5.4. Identifying Contended User-Space Locks</h2></div></div></div><a id="idm246918019088" class="indexterm"></a><a id="idm246877409008" class="indexterm"></a><a id="idm246927966752" class="indexterm"></a><a id="idm246876105232" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="syscallsbyprocpidsect.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="errors.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" id="futexcontentionsect" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="futexcontentionsect">5.4. Identifying Contended User-Space Locks</h2></div></div></div><a id="idp38698368" class="indexterm"></a><a id="idp32964576" class="indexterm"></a><a id="idp65573232" class="indexterm"></a><a id="idp45173056" class="indexterm"></a><div class="para">
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. 3 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.
5 </div><a id="idp18118912" class="indexterm"></a><a id="idp22800736" class="indexterm"></a><a id="idp48336928" class="indexterm"></a><a id="idp26866560" class="indexterm"></a><a id="idp57794096" class="indexterm"></a><div class="para"> 4 </div><a id="idm246872896400" class="indexterm"></a><a id="idm246912264736" class="indexterm"></a><a id="idm246914032736" class="indexterm"></a><a id="idm246923079360" class="indexterm"></a><a id="idm246870443984" class="indexterm"></a><div class="para">
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. 5 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.
7 </div><a id="idp40096416" class="indexterm"></a><a id="idp26638592" class="indexterm"></a><a id="idp32777376" class="indexterm"></a><div class="para"> 6 </div><a id="idm246912992192" class="indexterm"></a><a id="idm246912417984" class="indexterm"></a><a id="idm246917881456" class="indexterm"></a><div class="para">
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. 7 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.
9 </div><div class="formalpara" id="futexcontention"><h5 class="formalpara">futexes.stp</h5> 8 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">futexes.stp</div>
10 9
11<pre class="programlisting">#! /usr/bin/env stap 10<pre class="programlisting">#! /usr/bin/env stap
12 11
@@ -36,7 +35,7 @@ probe end {
36</pre> 35</pre>
37 </div><div class="para"> 36 </div><div class="para">
38 <a class="xref" href="futexcontentionsect.html#futexcontention">futexes.stp</a> needs to be manually stopped; upon exit, it prints the following information: 37 <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 class="itemizedlist"><ul><li class="listitem"><div class="para"> 38 </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 39 Name and ID of the process responsible for a contention
41 </div></li><li class="listitem"><div class="para"> 40 </div></li><li class="listitem"><div class="para">
42 The location of the contested lock variable 41 The location of the contested lock variable
@@ -46,9 +45,9 @@ probe end {
46 Average time of contention throughout the probe 45 Average time of contention throughout the probe
47 </div></li></ul></div><div class="para"> 46 </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). 47 <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" id="futexcontentionoutput"><h6>Example 5.19. <a class="xref" href="futexcontentionsect.html#futexcontention">futexes.stp</a> Sample Output</h6><div class="example-contents"><pre class="screen">[...] 48 </div><div class="example"><a id="futexcontentionoutput"></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">[...]
50automount[2825] lock 0x00bc7784 contended 18 times, 999931 avg us 49automount[2825] lock 0x00bc7784 contended 18 times, 999931 avg us
51synergyc[3686] lock 0x0861e96c contended 192 times, 101991 avg us 50synergyc[3686] lock 0x0861e96c contended 192 times, 101991 avg us
52synergyc[3758] lock 0x08d98744 contended 192 times, 101990 avg us 51synergyc[3758] lock 0x08d98744 contended 192 times, 101990 avg us
53synergyc[3938] lock 0x0982a8b4 contended 192 times, 101997 avg us 52synergyc[3938] lock 0x0982a8b4 contended 192 times, 101997 avg us
54[...]</pre></div></div><br class="example-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="syscallsbyprocpidsect.html"><strong>Prev</strong>5.3.6. Tracking System Call Volume Per Process</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="errors.html"><strong>Next</strong>Chapter 6. Understanding SystemTap Errors</a></li></ul></body></html> 53[...]</pre></div></div><br class="example-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="syscallsbyprocpidsect.html"><strong>Prev</strong>5.3.6. Tracking System Call Volume Per Process</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="errors.html"><strong>Next</strong>Chapter 6. Understanding SystemTap Errors</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/handlerconditionalstatements.html b/SystemTap_Beginners_Guide/handlerconditionalstatements.html
index 8b76efa1..c9dc8ad7 100644
--- a/SystemTap_Beginners_Guide/handlerconditionalstatements.html
+++ b/SystemTap_Beginners_Guide/handlerconditionalstatements.html
@@ -1,17 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>3.3.3. Conditional Statements</h3></div></div></div><a id="idm246895667344" class="indexterm"></a><a id="idm246875877632" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 Availablility" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="targetavailable.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="commandlineargssect.html"><strong>Next</strong></a></li></ul><div class="section" id="handlerconditionalstatements"><div class="titlepage"><div><div><h3 class="title" id="handlerconditionalstatements">3.3.3. Conditional Statements</h3></div></div></div><a id="idp42212112" class="indexterm"></a><a id="idp22442704" class="indexterm"></a><div class="para"> 3 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.
4 In some cases, the output of a SystemTap script may be too big. 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"> 4 </div><div class="para">
6 You can do this by using <span class="emphasis"><em>conditionals</em></span> in handlers. SystemTap accepts the following types of conditional statements: 5 Do 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><dt class="varlistentry"><span class="term">If/Else Statements</span></dt><dd><a id="idp22703744" class="indexterm"></a><a id="idp49119408" class="indexterm"></a><a id="idp59443008" class="indexterm"></a><div class="para"> 6 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">If/Else Statements</span></dt><dd><a id="idm246913303728" class="indexterm"></a><a id="idm246877410256" class="indexterm"></a><a id="idm246878013952" class="indexterm"></a><div class="para">
8 Format: 7 Format:
9 </div><pre class="programlisting">if (<em class="replaceable"><code>condition</code></em>) 8 </div><pre class="programlisting">if (<em class="replaceable"><code>condition</code></em>)
10 <em class="replaceable"><code>statement1</code></em> 9 <em class="replaceable"><code>statement1</code></em>
11else 10else
12 <em class="replaceable"><code>statement2</code></em></pre><div class="para"> 11 <em class="replaceable"><code>statement2</code></em></pre><div class="para">
13 The <code class="command"><em class="replaceable"><code>statement1</code></em></code> is executed if the <code class="command"><em class="replaceable"><code>condition</code></em></code> expression is non-zero. The <code class="command"><em class="replaceable"><code>statement2</code></em></code> is executed if the <code class="command"><em class="replaceable"><code>condition</code></em></code> expression is zero. The <code class="command">else</code> clause (<code class="command">else</code> <em class="replaceable"><code>statement2</code></em>) is optional. Both <code class="command"><em class="replaceable"><code>statement1</code></em></code> and <code class="command"><em class="replaceable"><code>statement2</code></em></code> can be statement blocks. 12 The <code class="command"><em class="replaceable"><code>statement1</code></em></code> is executed if the <code class="command"><em class="replaceable"><code>condition</code></em></code> expression is non-zero. The <code class="command"><em class="replaceable"><code>statement2</code></em></code> is executed if the <code class="command"><em class="replaceable"><code>condition</code></em></code> expression is zero. The <code class="command">else</code> clause (<code class="command">else</code> <em class="replaceable"><code>statement2</code></em>) is optional. Both <code class="command"><em class="replaceable"><code>statement1</code></em></code> and <code class="command"><em class="replaceable"><code>statement2</code></em></code> can be statement blocks.
14 </div><div class="example" id="simpleifelseexample"><h6>Example 3.11. ifelse.stp</h6><div class="example-contents"><pre class="programlisting">global countread, countnonread 13 </div><div class="example"><a id="simpleifelseexample"></a><p class="title"><strong>Example 3.11. ifelse.stp</strong></p><div class="example-contents"><pre class="programlisting">global countread, countnonread
15probe kernel.function("vfs_read"),kernel.function("vfs_write") 14probe kernel.function("vfs_read"),kernel.function("vfs_write")
16{ 15{
17 if (probefunc()=="vfs_read") 16 if (probefunc()=="vfs_read")
@@ -25,25 +24,25 @@ probe end
25 printf("VFS reads total %d\n VFS writes total %d\n", countread, countnonread) 24 printf("VFS reads total %d\n VFS writes total %d\n", countread, countnonread)
26}</pre></div></div><br class="example-break" /><div class="para"> 25}</pre></div></div><br class="example-break" /><div class="para">
27 <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>). 26 <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>).
28 </div></dd><dt class="varlistentry"><span class="term">While Loops</span></dt><dd><a id="idp63971920" class="indexterm"></a><a id="idm8760240" class="indexterm"></a><a id="idp63398544" class="indexterm"></a><div class="para"> 27 </div></dd><dt><span class="term">While Loops</span></dt><dd><a id="idm246917835264" class="indexterm"></a><a id="idm246929722832" class="indexterm"></a><a id="idm246920925504" class="indexterm"></a><div class="para">
29 Format: 28 Format:
30 </div><pre class="programlisting">while (<em class="replaceable"><code>condition</code></em>) 29 </div><pre class="programlisting">while (<em class="replaceable"><code>condition</code></em>)
31 <em class="replaceable"><code>statement</code></em></pre><div class="para"> 30 <em class="replaceable"><code>statement</code></em></pre><div class="para">
32 So long as <code class="command"><em class="replaceable"><code>condition</code></em></code> is non-zero the block of statements in <code class="command"><em class="replaceable"><code>statement</code></em></code> are executed. The <code class="command"><em class="replaceable"><code>statement</code></em></code> is often a statement block and it must change a value so <code class="command"><em class="replaceable"><code>condition</code></em></code> will eventually be zero. 31 So long as <code class="command"><em class="replaceable"><code>condition</code></em></code> is non-zero the block of statements in <code class="command"><em class="replaceable"><code>statement</code></em></code> are executed. The <code class="command"><em class="replaceable"><code>statement</code></em></code> is often a statement block and it must change a value so <code class="command"><em class="replaceable"><code>condition</code></em></code> will eventually be zero.
33 </div></dd><dt class="varlistentry"><span class="term">For Loops</span></dt><dd><a id="idp30446288" class="indexterm"></a><a id="idp58038720" class="indexterm"></a><a id="idp28171056" class="indexterm"></a><div class="para"> 32 </div></dd><dt><span class="term">For Loops</span></dt><dd><a id="idm246877366816" class="indexterm"></a><a id="idm246917497248" class="indexterm"></a><a id="idm246918105040" class="indexterm"></a><div class="para">
34 Format: 33 Format:
35 </div><pre class="programlisting">for (<em class="replaceable"><code>initialization</code></em>; <em class="replaceable"><code>conditional</code></em>; <em class="replaceable"><code>increment</code></em>) <em class="replaceable"><code>statement</code></em></pre><div class="para"> 34 </div><pre class="programlisting">for (<em class="replaceable"><code>initialization</code></em>; <em class="replaceable"><code>conditional</code></em>; <em class="replaceable"><code>increment</code></em>) <em class="replaceable"><code>statement</code></em></pre><div class="para">
36 The <code class="command">for</code> loop is simply shorthand for a while loop. The following is the equivalent <code class="command">while</code> loop: 35 The <code class="command">for</code> loop is shorthand for a while loop. The following is the equivalent <code class="command">while</code> loop:
37 </div><pre class="programlisting"><em class="replaceable"><code>initialization</code></em> 36 </div><pre class="programlisting"><em class="replaceable"><code>initialization</code></em>
38while (<em class="replaceable"><code>conditional</code></em>) { 37while (<em class="replaceable"><code>conditional</code></em>) {
39 <em class="replaceable"><code>statement</code></em> 38 <em class="replaceable"><code>statement</code></em>
40 <em class="replaceable"><code>increment</code></em> 39 <em class="replaceable"><code>increment</code></em>
41}</pre></dd></dl></div><div class="formalpara"><h5 class="formalpara" id="idp21819104">Conditional Operators</h5><a id="idp38199888" class="indexterm"></a><a id="idp21959312" class="indexterm"></a><a id="idp31033632" class="indexterm"></a> 40}</pre></dd></dl></div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">Conditional Operators</div><a id="idm246875170208" class="indexterm"></a><a id="idm246912501072" class="indexterm"></a><a id="idm246928495600" class="indexterm"></a>
42 Aside from <code class="command">==</code> ("is equal to"), you can also use the following operators in your conditional statements: 41 Aside from <code class="command">==</code> ("is equal to"), following operators can also be used in conditional statements:
43 </div><div class="variablelist"><dl><dt class="varlistentry"><span class="term">&gt;=</span></dt><dd><div class="para"> 42 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">&gt;=</span></dt><dd><div class="para">
44 Greater than or equal to 43 Greater than or equal to
45 </div></dd><dt class="varlistentry"><span class="term">&lt;=</span></dt><dd><div class="para"> 44 </div></dd><dt><span class="term">&lt;=</span></dt><dd><div class="para">
46 Less than or equal to 45 Less than or equal to
47 </div></dd><dt class="varlistentry"><span class="term">!=</span></dt><dd><div class="para"> 46 </div></dd><dt><span class="term">!=</span></dt><dd><div class="para">
48 Is not equal to 47 Is not equal to
49 </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 Availablility</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> 48 </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 0f229db4..ef35868d 100644
--- a/SystemTap_Beginners_Guide/index.html
+++ b/SystemTap_Beginners_Guide/index.html
@@ -1,11 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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.6</span></div><div><h1 class="title"><a id="idm246873842800"></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.6</p><div><h3 class="corpauthor">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"></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" id="idp12540960" lang="en-US"><div class="titlepage"><div><div class="producttitle"><span class="productname">Systemtap</span> <span class="productnumber">2.2</span></div><div><h1 id="idp12540960" class="title">SystemTap Beginners Guide</h1></div><p class="edition">Edition 2.2</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>
4 <span class="inlinemediaobject"><object data="Common_Content/images/title_logo.svg" type="image/svg+xml"> Logo</object></span>
5 4
6 </h3></div><div><div xml:lang="en-US" class="authorgroup" lang="en-US"><h3 class="corpauthor"> 5 </h3></div><div><div xml:lang="en-US" class="authorgroup" lang="en-US"><h3 class="corpauthor">
7 Red Hat, Inc. 6 Red Hat, Inc.
8 </h3><div class="author"><h3 class="author"><span class="firstname">Don</span> <span class="surname">Domingo </span></h3><div class="affiliation"><span class="orgname">Engineering Services and Operations</span> <span 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 class="orgname">Engineering Services and Operations</span> <span 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><hr /><div><div id="idp22871968" class="legalnotice"><h1 class="legalnotice">Legal Notice</h1><div class="para"> 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="idm246928404112"></a><h1 class="legalnotice">Legal Notice</h1><div class="para">
9 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. 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.
10 </div><div class="para"> 9 </div><div class="para">
11 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. 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.
@@ -13,4 +12,6 @@
13 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. 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 </div><div class="para"> 13 </div><div class="para">
15 For more details see the file COPYING in the source distribution of Linux. 14 For more details see the file COPYING in the source distribution of Linux.
16 </div></div></div></div><hr /></div><div class="toc"><dl><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#idp35045504">1. Document Conventions</a></span></dt><dd><dl><dt><span class="section"><a href="SystemTap_Beginners_Guide-Preface.html#idp49732512">1.1. Typographic Conventions</a></span></dt><dt><span class="section"><a href="SystemTap_Beginners_Guide-Preface.html#idp50742544">1.2. Pull-quote Conventions</a></span></dt><dt><span class="section"><a href="SystemTap_Beginners_Guide-Preface.html#idp30437968">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></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 RPMs</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. Run Time 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> 15 </div></div></div><div><div class="abstract"><p class="title"><strong>Abstract</strong></p><div class="para">
16 This guide provides basic instructions on how to use SystemTap to monitor different subsystems of a Linux system in finer detail.
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#idm246922603856">1. Document Conventions</a></span></dt><dd><dl><dt><span class="section"><a href="SystemTap_Beginners_Guide-Preface.html#idm246917943776">1.1. Typographic Conventions</a></span></dt><dt><span class="section"><a href="SystemTap_Beginners_Guide-Preface.html#idm246878025616">1.2. Pull-quote Conventions</a></span></dt><dt><span class="section"><a href="SystemTap_Beginners_Guide-Preface.html#idm246930165456">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 10665c28..e15bc29b 100644
--- a/SystemTap_Beginners_Guide/inodewatch2sect.html
+++ b/SystemTap_Beginners_Guide/inodewatch2sect.html
@@ -1,8 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>5.2.6. Monitoring Changes to File Attributes</h3></div></div></div><a id="idm246876619056" class="indexterm"></a><a id="idm246913084048" class="indexterm"></a><a id="idm246927280608" class="indexterm"></a><a id="idm246914331360" class="indexterm"></a><a id="idm246912779216" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="inodewatchsect.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="ioblktimesect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" id="inodewatch2sect" lang="en-US"><div class="titlepage"><div><div><h3 class="title" id="inodewatch2sect">5.2.6. Monitoring Changes to File Attributes</h3></div></div></div><a id="idp62891680" class="indexterm"></a><a id="idp32370160" class="indexterm"></a><a id="idp60289440" class="indexterm"></a><a id="idp59469392" class="indexterm"></a><a id="idp15264432" class="indexterm"></a><div class="para">
4 This section describes how to monitor if any processes are changing the attributes of a targeted file, in real time. 3 This section describes how to monitor if any processes are changing the attributes of a targeted file, in real time.
5 </div><div class="formalpara" id="inodewatch2"><h5 class="formalpara">inodewatch2.stp</h5> 4 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">inodewatch2.stp</div>
6 5
7<pre class="programlisting">#! /usr/bin/env stap 6<pre class="programlisting">#! /usr/bin/env stap
8 7
@@ -25,5 +24,5 @@ probe kernel.function("setattr_copy")!,
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>. 24 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"> 25 </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>. 26 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" id="inodewatch2output"><h6>Example 5.11. <a class="xref" href="inodewatch2sect.html#inodewatch2">inodewatch2.stp</a> Sample Output</h6><div class="example-contents"><pre class="screen">chmod(17448) inode_setattr 0x800005/6011835 100777 500 27 </div><div class="example"><a id="inodewatch2output"></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
29chmod(17449) inode_setattr 0x800005/6011835 100666 500</pre></div></div><br class="example-break" /></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> 28chmod(17449) inode_setattr 0x800005/6011835 100666 500</pre></div></div><br class="example-break" /></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 422758f7..6345b266 100644
--- a/SystemTap_Beginners_Guide/inodewatchsect.html
+++ b/SystemTap_Beginners_Guide/inodewatchsect.html
@@ -1,8 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>5.2.5. Monitoring Reads and Writes to a File</h3></div></div></div><a id="idm246871571088" class="indexterm"></a><a id="idm246927227776" class="indexterm"></a><a id="idm246913057616" class="indexterm"></a><a id="idm246918398640" class="indexterm"></a><a id="idm246883137152" class="indexterm"></a><a id="idm246927410304" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="traceio2sect.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="inodewatch2sect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" id="inodewatchsect" lang="en-US"><div class="titlepage"><div><div><h3 class="title" id="inodewatchsect">5.2.5. Monitoring Reads and Writes to a File</h3></div></div></div><a id="idp65638560" class="indexterm"></a><a id="idp27373776" class="indexterm"></a><a id="idm721872" class="indexterm"></a><a id="idp34112960" class="indexterm"></a><a id="idp44434528" class="indexterm"></a><a id="idp24227888" class="indexterm"></a><div class="para">
4 This section describes how to monitor reads from and writes to a file in real time. 3 This section describes how to monitor reads from and writes to a file in real time.
5 </div><div class="formalpara" id="inodewatch"><h5 class="formalpara">inodewatch.stp</h5> 4 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">inodewatch.stp</div>
6 5
7<pre class="programlisting">#! /usr/bin/env stap 6<pre class="programlisting">#! /usr/bin/env stap
8 7
@@ -17,19 +16,19 @@ probe vfs.write, vfs.read
17</pre> 16</pre>
18 </div><div class="para"> 17 </div><div class="para">
19 <a class="xref" href="inodewatchsect.html#inodewatch">inodewatch.stp</a> takes the following information about the file as arguments on the command line: 18 <a class="xref" href="inodewatchsect.html#inodewatch">inodewatch.stp</a> takes the following information about the file as arguments on the command line:
20 </div><a id="idp39674784" class="indexterm"></a><a id="idp20535440" class="indexterm"></a><a id="idp60220480" class="indexterm"></a><a id="idp26483088" class="indexterm"></a><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 19 </div><a id="idm246929545344" class="indexterm"></a><a id="idm246914338544" class="indexterm"></a><a id="idm246917274240" class="indexterm"></a><a id="idm246926936304" 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. 20 The file's major device number.
22 </div></li><li class="listitem"><div class="para"> 21 </div></li><li class="listitem"><div class="para">
23 The file's minor device number. 22 The file's minor device number.
24 </div></li><li class="listitem"><div class="para"> 23 </div></li><li class="listitem"><div class="para">
25 The file's <code class="command">inode</code> number. 24 The file's <code class="command">inode</code> number.
26 </div></li></ul></div><a id="idp36696560" class="indexterm"></a><a id="idp14023456" class="indexterm"></a><a id="idp52656096" class="indexterm"></a><div class="para"> 25 </div></li></ul></div><a id="idm246914278656" class="indexterm"></a><a id="idm246877965920" class="indexterm"></a><a id="idm246913070688" class="indexterm"></a><div class="para">
27 To get this information, use <code class="command">stat -c '%D %i' <em class="replaceable"><code>filename</code></em></code>, where <code class="command"><em class="replaceable"><code>filename</code></em></code> is an absolute path. 26 To get this information, use <code class="command">stat -c '%D %i' <em class="replaceable"><code>filename</code></em></code>, where <code class="command"><em class="replaceable"><code>filename</code></em></code> is an absolute path.
28 </div><div class="para"> 27 </div><div class="para">
29 For instance: if you wish 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: 28 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="idp48931696" class="indexterm"></a><a id="idp28449104" class="indexterm"></a><a id="idp32321808" class="indexterm"></a><div class="para"> 29 </div><pre class="screen">805 1078319</pre><a id="idm246917754528" class="indexterm"></a><a id="idm246928568752" class="indexterm"></a><a id="idm246876097744" 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. 30 <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"> 31 </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 (i.e. <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) : 32 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" id="inodewatchoutput"><h6>Example 5.10. <a class="xref" href="inodewatchsect.html#inodewatch">inodewatch.stp</a> Sample Output</h6><div class="example-contents"><pre class="screen">cat(16437) vfs_read 0x800005/1078319 33 </div><div class="example"><a id="inodewatchoutput"></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
35cat(16437) vfs_read 0x800005/1078319</pre></div></div><br class="example-break" /></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> 34cat(16437) vfs_read 0x800005/1078319</pre></div></div><br class="example-break" /></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-vs-others.html b/SystemTap_Beginners_Guide/intro-systemtap-vs-others.html
index b7cc8a66..653f9585 100644
--- a/SystemTap_Beginners_Guide/intro-systemtap-vs-others.html
+++ b/SystemTap_Beginners_Guide/intro-systemtap-vs-others.html
@@ -1,11 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>1.2. SystemTap Capabilities</h2></div></div></div><a id="idm246874947200" class="indexterm"></a><a id="idm246880631280" class="indexterm"></a><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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="using-systemtap.html" title="Chapter 2. Using SystemTap" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="introduction.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="using-systemtap.html"><strong>Next</strong></a></li></ul><div class="section" id="intro-systemtap-vs-others"><div class="titlepage"><div><div><h2 class="title" id="intro-systemtap-vs-others">1.2. SystemTap Capabilities</h2></div></div></div><a id="idp36385840" class="indexterm"></a><a id="idp36387248" class="indexterm"></a><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 3 <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.
4 Flexibility: 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. With this, 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"> 4 </div></li><li class="listitem"><div class="para">
6 Ease-Of-Use: as mentioned earlier, SystemTap allows users to probe kernel-space events without having to resort to instrument, recompile, install, and reboot the kernel. 5 <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"> 6 </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, which in turn will educate them further on the capabilities they can employ when writing their own SystemTap scripts. 7 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><a id="idp22301760" class="indexterm"></a><a id="idp22303168" class="indexterm"></a><div class="formalpara"><h5 class="formalpara" id="idp49679152">Limitations</h5> 8 </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
10 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 is dependent on kernel support (the Utrace mechanism) that is unavailable in many kernels. Thus, only some kernel versions support user-space probing. At present, the developmental efforts of the SystemTap community are geared towards improving SystemTap's user-space probing capabilities.
11 </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="using-systemtap.html"><strong>Next</strong>Chapter 2. Using SystemTap</a></li></ul></body></html>
diff --git a/SystemTap_Beginners_Guide/introduction.html b/SystemTap_Beginners_Guide/introduction.html
index 21d1c39d..7c47d443 100644
--- a/SystemTap_Beginners_Guide/introduction.html
+++ b/SystemTap_Beginners_Guide/introduction.html
@@ -1,17 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></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="idm246912131760" class="indexterm"></a><a id="idm246877716272" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="pr01s02.html"><strong>Prev</strong></a></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" id="introduction" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 1. Introduction</h2></div></div></div><div class="toc"><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></dl></div><a id="idp13858368" class="indexterm"></a><a id="idm4000224" class="indexterm"></a><div class="para"> 3 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 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>; however, SystemTap is designed to provide more filtering and analysis options for collected information. 4 </div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="goals"></a>1.1. Documentation Goals</h2></div></div></div><a id="idm246917582496" class="indexterm"></a><a id="idm246912120336" class="indexterm"></a><a id="idm246880282576" class="indexterm"></a><a id="idm246877457904" class="indexterm"></a><div class="para">
5 </div><div class="section" id="goals"><div class="titlepage"><div><div><h2 class="title" id="goals">1.1. Documentation Goals</h2></div></div></div><a id="idp22681296" class="indexterm"></a><a id="idp14079360" class="indexterm"></a><a id="idp44966608" class="indexterm"></a><a id="idp41017344" class="indexterm"></a><div class="para">
6 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. 5 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.
7 </div><div class="para"> 6 </div><div class="para">
8 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, allowing users to gather the same information by simply running user-written SystemTap scripts. 7 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.
9 </div><div class="para"> 8 </div><div class="para">
10 However, SystemTap was initially designed for users with intermediate to advanced knowledge of the kernel. This makes SystemTap less useful to administrators or developers with limited knowledge of and experience with the Linux kernel. Moreover, much of the existing SystemTap documentation is similarly aimed at knowledgeable and experienced users. This makes learning the tool similarly difficult. 9 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.
11 </div><div class="para"> 10 </div><div class="para">
12 To lower these barriers the SystemTap Beginners Guide was written with the following goals: 11 To lower these barriers, the SystemTap Beginners Guide was written with the following goals:
13 </div><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 12 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
14 To introduce users to SystemTap, familiarize them with its architecture, and provide setup instructions. 13 to introduce users to SystemTap, familiarize them with its architecture, and provide setup instructions;
15 </div></li><li class="listitem"><div class="para"> 14 </div></li><li class="listitem"><div class="para">
16 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. 15 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.
17 </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> 16 </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 d830cce4..1b7b52a9 100644
--- a/SystemTap_Beginners_Guide/ioblktimesect.html
+++ b/SystemTap_Beginners_Guide/ioblktimesect.html
@@ -1,12 +1,11 @@
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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>5.2.7. Periodically Print I/O Block Time</h3></div></div></div><a id="idm246924575696" class="indexterm"></a><a id="idm246913011504" class="indexterm"></a><a id="idm246920646720" class="indexterm"></a><a id="idm246918036544" class="indexterm"></a><a id="idm246917404720" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="inodewatch2sect.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="mainsect-profiling.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" id="ioblktimesect" lang="en-US"><div class="titlepage"><div><div><h3 class="title" id="ioblktimesect">5.2.7. Periodically Print I/O Block Time</h3></div></div></div><a id="idp51422880" class="indexterm"></a><a id="idm1427760" class="indexterm"></a><a id="idp45899968" class="indexterm"></a><a id="idp20858784" class="indexterm"></a><a id="idp48230592" 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. 3 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.
5 </div><div class="formalpara" id="ioblktime"><h5 class="formalpara">ioblktime.stp</h5> 4 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">ioblktime.stp</div>
6 5
7<pre class="programlisting">#! /usr/bin/env stap 6<pre class="programlisting">#! /usr/bin/env stap
8 7
9global req_time, etimes 8global req_time%[25000], etimes
10 9
11probe ioblock.request 10probe ioblock.request
12{ 11{
@@ -45,10 +44,10 @@ probe timer.s(10), end {
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>. 44 <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 </div><div class="para"> 45 </div><div class="para">
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>. 46 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 </div><div class="example" id="ioblktimeoutput"><h6>Example 5.12. <a class="xref" href="ioblktimesect.html#ioblktime">ioblktime.stp</a> Sample Output</h6><div class="example-contents"><pre class="screen"> device rw total (us) count avg (us) 47 </div><div class="example"><a id="ioblktimeoutput"></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)
49 sda W 9659 6 1609 48 sda W 9659 6 1609
50 dm-0 W 20278 6 3379 49 dm-0 W 20278 6 3379
51 dm-0 R 20524 5 4104 50 dm-0 R 20524 5 4104
52 sda R 19277 5 3855</pre></div></div><br class="example-break" /><div class="para"> 51 sda R 19277 5 3855</pre></div></div><br class="example-break" /><div class="para">
53 <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. 52 <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.
54 </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> 53 </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 0d10d5f7..3b65d433 100644
--- a/SystemTap_Beginners_Guide/iotimesect.html
+++ b/SystemTap_Beginners_Guide/iotimesect.html
@@ -1,8 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>5.2.2. Tracking I/O Time For Each File Read or Write</h3></div></div></div><a id="idm246914224016" class="indexterm"></a><a id="idm246929512688" class="indexterm"></a><a id="idm246912282288" class="indexterm"></a><a id="idm246912283376" class="indexterm"></a><a id="idm246911814368" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="mainsect-disk.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="traceiosect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" id="iotimesect" lang="en-US"><div class="titlepage"><div><div><h3 class="title" id="iotimesect">5.2.2. Tracking I/O Time For Each File Read or Write</h3></div></div></div><a id="idp58392768" class="indexterm"></a><a id="idp26310352" class="indexterm"></a><a id="idp35524800" class="indexterm"></a><a id="idp56877088" class="indexterm"></a><a id="idp36194832" class="indexterm"></a><div class="para"> 3 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 from or write to any file. This is useful if you wish to determine what files are slow to load on a given system. 4 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">iotime.stp</div>
5 </div><div class="formalpara" id="iotime"><h5 class="formalpara">iotime.stp</h5>
6 5
7<pre class="programlisting">#! /usr/bin/env stap 6<pre class="programlisting">#! /usr/bin/env stap
8 7
@@ -91,9 +90,9 @@ probe syscall.close {
91</pre> 90</pre>
92 </div><div class="para"> 91 </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. 92 <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 </div><a id="idp62746528" class="indexterm"></a><a id="idm3938304" class="indexterm"></a><a id="idp32882944" class="indexterm"></a><div class="para"> 93 </div><a id="idm246875163184" class="indexterm"></a><a id="idm246869037504" class="indexterm"></a><a id="idm246927603008" class="indexterm"></a><div class="para">
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 (e.g. <code class="command">syscall.read</code> and <code class="command">syscall.write</code>). 94 <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 </div><div class="example" id="iotimeoutput"><h6>Example 5.7. <a class="xref" href="iotimesect.html#iotime">iotime.stp</a> Sample Output</h6><div class="example-contents"><pre class="screen">[...] 95 </div><div class="example"><a id="iotimeoutput"></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">[...]
97825946 3364 (NetworkManager) access /sys/class/net/eth0/carrier read: 8190 write: 0 96825946 3364 (NetworkManager) access /sys/class/net/eth0/carrier read: 8190 write: 0
98825955 3364 (NetworkManager) iotime /sys/class/net/eth0/carrier time: 9 97825955 3364 (NetworkManager) iotime /sys/class/net/eth0/carrier time: 9
99[...] 98[...]
@@ -104,7 +103,7 @@ probe syscall.close {
1043973744 2886 (sendmail) iotime /proc/loadavg time: 11 1033973744 2886 (sendmail) iotime /proc/loadavg time: 11
105[...]</pre></div></div><br class="example-break" /><div class="para"> 104[...]</pre></div></div><br class="example-break" /><div class="para">
106 <a class="xref" href="iotimesect.html#iotimeoutput">Example 5.7, “iotime.stp Sample Output”</a> prints out the following data: 105 <a class="xref" href="iotimesect.html#iotimeoutput">Example 5.7, “iotime.stp Sample Output”</a> prints out the following data:
107 </div><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 106 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
108 A timestamp, in microseconds. 107 A timestamp, in microseconds.
109 </div></li><li class="listitem"><div class="para"> 108 </div></li><li class="listitem"><div class="para">
110 Process ID and process name. 109 Process ID and process name.
@@ -115,5 +114,5 @@ probe syscall.close {
115 </div></li></ul></div><div class="para"> 114 </div></li></ul></div><div class="para">
116 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. 115 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.
117 </div><div class="para"> 116 </div><div class="para">
118 If an <code class="computeroutput">access</code> line is not followed by an <code class="computeroutput">iotime</code> line, it simply means that the process did not read or write any data. 117 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.
119 </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> 118 </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 cbf6ab48..d2d6ce97 100644
--- a/SystemTap_Beginners_Guide/ix01.html
+++ b/SystemTap_Beginners_Guide/ix01.html
@@ -1,3 +1,2 @@
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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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="idm246876658656"></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<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="appe-Publican-Revision_History.html"><strong>Prev</strong></a></li><li class="next"></li></ul><div class="index" id="idp45722496"><div class="titlepage"><div><div><h2 class="title">Index</h2></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">Run Time 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">Run Time 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">Run Time 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 RPMs</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">Run Time 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">Run Time Errors and Warnings</a></dt><dd><dl><dt>aggregate element not found, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>aggregation overflow, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>copy fault, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>division by 0, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>MAXACTION exceeded, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>MAXNESTING exceeded, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>number of errors: N, skipped probes: M, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>pointer dereference fault, <a class="indexterm" href="runtimeerror.html">Run Time 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 (i.e. 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">Run Time 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">Run Time 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 (i.e. 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 RPMs</a></dt><dt>kernel version, determining the, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information RPMs</a></dt><dt>required packages, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information RPMs</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-vs-others.html">SystemTap Capabilities</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">Run Time 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 RPMs</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 RPMs</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-vs-others.html">SystemTap Capabilities</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">Run Time 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">Run Time 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">Run Time 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">Run Time 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 RPMs</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">Run Time 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 RPMs</a></dt><dt>RPMs required to run SystemTap, <a class="indexterm" href="using-systemtap.html#install-kinfo">Installing Required Kernel Information RPMs</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">Run Time Errors and Warnings</a></dt><dd><dl><dt>aggregate element not found, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>aggregation overflow, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>copy fault, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>division by 0, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>MAXACTION exceeded, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>MAXNESTING exceeded, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>number of errors: N, skipped probes: M, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>pointer dereference fault, <a class="indexterm" href="runtimeerror.html">Run Time 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 (i.e. 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 Availablility</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 RPMs</a></dt><dt>understainding SystemTap errors</dt><dd><dl><dt>runtime errors/warnings, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dd><dl><dt>aggregate element not found, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>aggregation overflow, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>copy fault, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>division by 0, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>MAXACTION exceeded, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>MAXNESTING exceeded, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>number of errors: N, skipped probes: M, <a class="indexterm" href="runtimeerror.html">Run Time Errors and Warnings</a></dt><dt>pointer dereference fault, <a class="indexterm" href="runtimeerror.html">Run Time 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>
diff --git a/SystemTap_Beginners_Guide/mainsect-disk.html b/SystemTap_Beginners_Guide/mainsect-disk.html
index 8bfa872f..b89420b3 100644
--- a/SystemTap_Beginners_Guide/mainsect-disk.html
+++ b/SystemTap_Beginners_Guide/mainsect-disk.html
@@ -1,10 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>5.2. Disk</h2></div></div></div><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="useful-systemtap-scripts.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="iotimesect.html"><strong>Next</strong></a></li></ul><div class="section" id="mainsect-disk"><div class="titlepage"><div><div><h2 class="title" id="mainsect-disk">5.2. Disk</h2></div></div></div><div class="para">
4 The following sections showcase scripts that monitor disk and I/O activity. 3 The following sections showcase scripts that monitor disk and I/O activity.
5 </div><div xml:lang="en-US" class="section" id="disktop" lang="en-US"><div class="titlepage"><div><div><h3 class="title" id="disktop">5.2.1. Summarizing Disk Read/Write Traffic</h3></div></div></div><a id="idp58221616" class="indexterm"></a><a id="idp38336000" class="indexterm"></a><a id="idp26299744" class="indexterm"></a><a id="idp33634544" class="indexterm"></a><a id="idp59056336" class="indexterm"></a><a id="idp17290192" class="indexterm"></a><a id="idp50185744" class="indexterm"></a><a id="idp63196544" class="indexterm"></a><div class="para"> 4 </div><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="disktop"></a>5.2.1. Summarizing Disk Read/Write Traffic</h3></div></div></div><a id="idm246876077936" class="indexterm"></a><a id="idm246927896096" class="indexterm"></a><a id="idm246873251856" class="indexterm"></a><a id="idm246877781872" class="indexterm"></a><a id="idm246917194352" class="indexterm"></a><a id="idm246927667152" class="indexterm"></a><a id="idm246873101696" class="indexterm"></a><a id="idm246926681648" class="indexterm"></a><div class="para">
6 This section describes how to identify which processes are performing the heaviest disk reads/writes to the system. 5 This section describes how to identify which processes are performing the heaviest disk reads/writes to the system.
7 </div><div class="formalpara" id="scriptdisktop"><h5 class="formalpara">disktop.stp</h5> 6 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">disktop.stp</div>
8 7
9<pre class="programlisting">#!/usr/bin/env stap 8<pre class="programlisting">#!/usr/bin/env stap
10# 9#
@@ -80,7 +79,7 @@ probe end{
80</pre> 79</pre>
81 </div><div class="para"> 80 </div><div class="para">
82 <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: 81 <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:
83 </div><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 82 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
84 <code class="computeroutput">UID</code> — user ID. A user ID of <code class="computeroutput">0</code> refers to the root user. 83 <code class="computeroutput">UID</code> — user ID. A user ID of <code class="computeroutput">0</code> refers to the root user.
85 </div></li><li class="listitem"><div class="para"> 84 </div></li><li class="listitem"><div class="para">
86 <code class="computeroutput">PID</code> — the ID of the listed process. 85 <code class="computeroutput">PID</code> — the ID of the listed process.
@@ -94,11 +93,11 @@ probe end{
94 <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. 93 <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.
95 </div></li><li class="listitem"><div class="para"> 94 </div></li><li class="listitem"><div class="para">
96 <code class="computeroutput">BYTES</code> — the amount of data read to or written from disk. 95 <code class="computeroutput">BYTES</code> — the amount of data read to or written from disk.
97 </div></li></ul></div><a id="idm3739264" class="indexterm"></a><a id="idp29159760" class="indexterm"></a><a id="idp59889408" class="indexterm"></a><div class="para"> 96 </div></li></ul></div><a id="idm246920810880" class="indexterm"></a><a id="idm246907804512" class="indexterm"></a><a id="idm246913007360" class="indexterm"></a><div class="para">
98 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. 97 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.
99 </div><a id="idp64766640" class="indexterm"></a><a id="idp29152160" class="indexterm"></a><a id="idp50016704" class="indexterm"></a><div class="para"> 98 </div><a id="idm246912910192" class="indexterm"></a><a id="idm246876588704" class="indexterm"></a><a id="idm246922733184" class="indexterm"></a><div class="para">
100 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 (e.g. <code class="command">vfs.read.return</code> and <code class="command">vfs.read.return</code>). 99 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>).
101 </div><div class="example" id="disktopoutput"><h6>Example 5.6. <a class="xref" href="mainsect-disk.html#scriptdisktop">disktop.stp</a> Sample Output</h6><div class="example-contents"><pre class="screen">[...] 100 </div><div class="example"><a id="disktopoutput"></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">[...]
102Mon Sep 29 03:38:28 2008 , Average: 19Kb/sec, Read: 7Kb, Write: 89Kb 101Mon Sep 29 03:38:28 2008 , Average: 19Kb/sec, Read: 7Kb, Write: 89Kb
103 102
104UID PID PPID CMD DEVICE T BYTES 103UID PID PPID CMD DEVICE T BYTES
@@ -110,4 +109,4 @@ Mon Sep 29 03:38:38 2008 , Average: 1Kb/sec, Read: 7Kb, Write: 1Kb
110 109
111UID PID PPID CMD DEVICE T BYTES 110UID PID PPID CMD DEVICE T BYTES
1120 2758 2757 pam_timestamp_c sda5 R 8064 1110 2758 2757 pam_timestamp_c sda5 R 8064
1130 2885 1 cupsd sda5 W 1678</pre></div></div><br class="example-break" /></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="useful-systemtap-scripts.html"><strong>Prev</strong>Chapter 5. Useful 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="iotimesect.html"><strong>Next</strong>5.2.2. Tracking I/O Time For Each File Read or Wr...</a></li></ul></body></html> 1120 2885 1 cupsd sda5 W 1678</pre></div></div><br class="example-break" /></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="useful-systemtap-scripts.html"><strong>Prev</strong>Chapter 5. Useful 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="iotimesect.html"><strong>Next</strong>5.2.2. Tracking I/O Time For Each File Read or Wr...</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/mainsect-profiling.html b/SystemTap_Beginners_Guide/mainsect-profiling.html
index 79cf5e72..9d7dc815 100644
--- a/SystemTap_Beginners_Guide/mainsect-profiling.html
+++ b/SystemTap_Beginners_Guide/mainsect-profiling.html
@@ -1,10 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>5.3. Profiling</h2></div></div></div><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="ioblktimesect.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="paracallgraph.html"><strong>Next</strong></a></li></ul><div class="section" id="mainsect-profiling"><div class="titlepage"><div><div><h2 class="title" id="mainsect-profiling">5.3. Profiling</h2></div></div></div><div class="para">
4 The following sections showcase scripts that profile kernel activity by monitoring function calls. 3 The following sections showcase scripts that profile kernel activity by monitoring function calls.
5 </div><div xml:lang="en-US" class="section" id="countcallssect" lang="en-US"><div class="titlepage"><div><div><h3 class="title" id="countcallssect">5.3.1. Counting Function Calls Made</h3></div></div></div><a id="idp27256512" class="indexterm"></a><a id="idp15269888" class="indexterm"></a><a id="idp32452944" class="indexterm"></a><a id="idp56780544" class="indexterm"></a><a id="idp50542592" class="indexterm"></a><div class="para"> 4 </div><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="countcallssect"></a>5.3.1. Counting Function Calls Made</h3></div></div></div><a id="idm246928792224" class="indexterm"></a><a id="idm246926783616" class="indexterm"></a><a id="idm246929560080" class="indexterm"></a><a id="idm246883103504" class="indexterm"></a><a id="idm246928487280" class="indexterm"></a><div class="para">
6 This section describes how to identify how many times the system called a specific kernel function in a 30-second sample. Depending on your use of wildcards, you can also use this script to target multiple kernel functions. 5 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.
7 </div><div class="formalpara" id="countcalls"><h5 class="formalpara">functioncallcount.stp</h5> 6 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">functioncallcount.stp</div>
8 7
9<pre class="programlisting">#! /usr/bin/env stap 8<pre class="programlisting">#! /usr/bin/env stap
10# The following line command will probe all the functions 9# The following line command will probe all the functions
@@ -27,9 +26,9 @@ probe end {
27</pre> 26</pre>
28 </div><div class="para"> 27 </div><div class="para">
29 <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. 28 <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.
30 </div><a id="idm2435968" class="indexterm"></a><a id="idp45873792" class="indexterm"></a><a id="idm3930928" class="indexterm"></a><div class="para"> 29 </div><a id="idm246926560512" class="indexterm"></a><a id="idm246927329984" class="indexterm"></a><a id="idm246917042560" class="indexterm"></a><div class="para">
31 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>: 30 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>:
32 </div><div class="example" id="countcallsoutput"><h6>Example 5.13. <a class="xref" href="mainsect-profiling.html#countcalls">functioncallcount.stp</a> Sample Output</h6><div class="example-contents"><pre class="screen">[...] 31 </div><div class="example"><a id="countcallsoutput"></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">[...]
33__vma_link 97 32__vma_link 97
34__vma_link_file 66 33__vma_link_file 66
35__vma_link_list 97 34__vma_link_list 97
@@ -56,4 +55,4 @@ atomic_add_negative 97
56atomic_dec_and_test 5153 55atomic_dec_and_test 5153
57atomic_inc 470 56atomic_inc 470
58atomic_inc_and_test 1 57atomic_inc_and_test 1
59[...]</pre></div></div><br class="example-break" /></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="ioblktimesect.html"><strong>Prev</strong>5.2.7. Periodically Print I/O Block Time</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="paracallgraph.html"><strong>Next</strong>5.3.2. Call Graph Tracing</a></li></ul></body></html> 58[...]</pre></div></div><br class="example-break" /></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="ioblktimesect.html"><strong>Prev</strong>5.2.7. Periodically Print I/O Block Time</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="paracallgraph.html"><strong>Next</strong>5.3.2. Call Graph Tracing</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/paracallgraph.html b/SystemTap_Beginners_Guide/paracallgraph.html
index b7d66f85..6e84e220 100644
--- a/SystemTap_Beginners_Guide/paracallgraph.html
+++ b/SystemTap_Beginners_Guide/paracallgraph.html
@@ -1,8 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>5.3.2. Call Graph Tracing</h3></div></div></div><a id="idm246869018208" class="indexterm"></a><a id="idm246877394176" class="indexterm"></a><a id="idm246926131152" class="indexterm"></a><a id="idm246917317504" class="indexterm"></a><a id="idm246914264128" class="indexterm"></a><a id="idm246880215856" class="indexterm"></a><a id="idm246913298496" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="mainsect-profiling.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="threadtimessect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" id="paracallgraph" lang="en-US"><div class="titlepage"><div><div><h3 class="title" id="paracallgraph">5.3.2. Call Graph Tracing</h3></div></div></div><a id="idp58389760" class="indexterm"></a><a id="idp48335008" class="indexterm"></a><a id="idp15004544" class="indexterm"></a><a id="idp63048096" class="indexterm"></a><a id="idp14030240" class="indexterm"></a><a id="idp22475040" class="indexterm"></a><a id="idp13009056" class="indexterm"></a><div class="para">
4 This section describes how to trace incoming and outgoing function calls. 3 This section describes how to trace incoming and outgoing function calls.
5 </div><div class="formalpara" id="scriptcallgraph"><h5 class="formalpara">para-callgraph.stp</h5> 4 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">para-callgraph.stp</div>
6 5
7<pre class="programlisting">#! /usr/bin/env stap 6<pre class="programlisting">#! /usr/bin/env stap
8 7
@@ -29,17 +28,17 @@ probe $2.return {
29probe $1.call { trace(1, $$parms) } 28probe $1.call { trace(1, $$parms) }
30probe $1.return { trace(-1, $$return) } 29probe $1.return { trace(-1, $$return) }
31</pre> 30</pre>
32 </div><a id="idp19714032" class="indexterm"></a><a id="idp24571312" class="indexterm"></a><a id="idp29475664" class="indexterm"></a><a id="idp27701856" class="indexterm"></a><div class="para"> 31 </div><a id="idm246868834304" class="indexterm"></a><a id="idm246929429904" class="indexterm"></a><a id="idm246926402544" class="indexterm"></a><a id="idm246907790352" class="indexterm"></a><div class="para">
33 <a class="xref" href="paracallgraph.html#scriptcallgraph">para-callgraph.stp</a> takes two command-line arguments: 32 <a class="xref" href="paracallgraph.html#scriptcallgraph">para-callgraph.stp</a> takes two command-line arguments:
34 </div><a id="idp63415552" class="indexterm"></a><a id="idp35346528" class="indexterm"></a><a id="idp24748960" class="indexterm"></a><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 33 </div><a id="idm246877976608" class="indexterm"></a><a id="idm246876618016" class="indexterm"></a><a id="idm246875268352" class="indexterm"></a><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
35 The function/s whose entry/exit call you'd like to trace (<code class="command">$1</code>). 34 The function/s whose entry/exit call you'd like to trace (<code class="command">$1</code>).
36 </div></li><li class="listitem"><div class="para"> 35 </div></li><li class="listitem"><div class="para">
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. 36 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.
38 </div></li></ul></div><a id="idp21183328" class="indexterm"></a><a id="idm1466112" class="indexterm"></a><a id="idp51422416" class="indexterm"></a><div class="para"> 37 </div></li></ul></div><a id="idm246913071264" class="indexterm"></a><a id="idm246917761664" class="indexterm"></a><a id="idm246875163664" class="indexterm"></a><div class="para">
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> (i.e. 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>. 38 <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>.
40 </div><div class="para"> 39 </div><div class="para">
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>: 40 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" id="paracallgraphoutput"><h6>Example 5.14. <a class="xref" href="paracallgraph.html#scriptcallgraph">para-callgraph.stp</a> Sample Output</h6><div class="example-contents"><pre class="screen">[...] 41 </div><div class="example"><a id="paracallgraphoutput"></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">[...]
43 267 gnome-terminal(2921): &lt;-do_sync_read return=0xfffffffffffffff5 42 267 gnome-terminal(2921): &lt;-do_sync_read return=0xfffffffffffffff5
44 269 gnome-terminal(2921):&lt;-vfs_read return=0xfffffffffffffff5 43 269 gnome-terminal(2921):&lt;-vfs_read return=0xfffffffffffffff5
45 0 gnome-terminal(2921):-&gt;fput file=0xffff880111eebbc0 44 0 gnome-terminal(2921):-&gt;fput file=0xffff880111eebbc0
@@ -52,4 +51,4 @@ probe $1.return { trace(-1, $$return) }
52 12 gnome-terminal(2921): -&gt;do_sync_read filp=0xffff8801116ce980 buf=0xc86504 len=0x1000 ppos=0xffff88010544df48 51 12 gnome-terminal(2921): -&gt;do_sync_read filp=0xffff8801116ce980 buf=0xc86504 len=0x1000 ppos=0xffff88010544df48
53 15 gnome-terminal(2921): &lt;-do_sync_read return=0xfffffffffffffff5 52 15 gnome-terminal(2921): &lt;-do_sync_read return=0xfffffffffffffff5
54 18 gnome-terminal(2921):&lt;-vfs_read return=0xfffffffffffffff5 53 18 gnome-terminal(2921):&lt;-vfs_read return=0xfffffffffffffff5
55 0 gnome-terminal(2921):-&gt;fput file=0xffff8801116ce980</pre></div></div><br class="example-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="mainsect-profiling.html"><strong>Prev</strong>5.3. Profiling</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="threadtimessect.html"><strong>Next</strong>5.3.3. Determining Time Spent in Kernel and User ...</a></li></ul></body></html> 54 0 gnome-terminal(2921):-&gt;fput file=0xffff8801116ce980</pre></div></div><br class="example-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="mainsect-profiling.html"><strong>Prev</strong>5.3. Profiling</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="threadtimessect.html"><strong>Next</strong>5.3.3. Determining Time Spent in Kernel and User ...</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/pr01s02.html b/SystemTap_Beginners_Guide/pr01s02.html
index bd1c1b3f..7ab3cf8c 100644
--- a/SystemTap_Beginners_Guide/pr01s02.html
+++ b/SystemTap_Beginners_Guide/pr01s02.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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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="idm246912539856"></a>2. We Need Feedback!</h2></div></div></div><a id="idm246912538864" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="SystemTap_Beginners_Guide-Preface.html"><strong>Prev</strong></a></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" id="idp39663712">2. We Need Feedback!</h2></div></div></div><a id="idp39664704" 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>. 3 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>.
5 </div><div class="para"> 4 </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> 5 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"> 6 </div><div class="para">
8 If you have a suggestion for improving the documentation, try to be as specific as possible when describing it. If you have found an error, please include the section number and some of the surrounding text so we can find it easily. 7 If you have a suggestion for improving the documentation, try to be as specific as possible when describing it. If you have found an error, please include the section number and some of the surrounding text so we can find it easily.
9 </div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="SystemTap_Beginners_Guide-Preface.html"><strong>Prev</strong>Preface</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="introduction.html"><strong>Next</strong>Chapter 1. Introduction</a></li></ul></body></html> 8 </div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="SystemTap_Beginners_Guide-Preface.html"><strong>Prev</strong>Preface</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="introduction.html"><strong>Next</strong>Chapter 1. Introduction</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/references.html b/SystemTap_Beginners_Guide/references.html
index 3a278475..316e8e2d 100644
--- a/SystemTap_Beginners_Guide/references.html
+++ b/SystemTap_Beginners_Guide/references.html
@@ -1,23 +1,22 @@
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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>Chapter 7. References</h1></div></div></div><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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. Run Time 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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="runtimeerror.html"><strong>Prev</strong></a></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" id="references" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 7. References</h2></div></div></div><div class="para"> 3 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. It is advisable that you refer to these sources in the course of writing advanced probes and tapsets. 4 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">SystemTap Wiki</span></dt><dd><div class="para">
5 </div><div class="variablelist"><dl><dt class="varlistentry"><span class="term">SystemTap Wiki</span></dt><dd><div class="para"> 5 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 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></dd><dt><span class="term">SystemTap Tutorial</span></dt><dd><div class="para">
7 </div></dd><dt class="varlistentry"><span class="term">SystemTap Tutorial</span></dt><dd><div class="para"> 7 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 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 can be found at <a href="http://sourceware.org/systemtap/tutorial/">http://sourceware.org/systemtap/tutorial/</a>. 8 </div></dd><dt><span class="term">man stapprobes</span></dt><dd><div class="para">
9 </div></dd><dt class="varlistentry"><span class="term">man stapprobes</span></dt><dd><div class="para"> 9 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 The <code class="filename">stapprobes</code> man page enumerates a variety of probe points supported by SystemTap, along with additional aliases defined by the SystemTap tapset library. The bottom 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>, etc. 10 </div></dd><dt><span class="term">man stapfuncs</span></dt><dd><div class="para">
11 </div></dd><dt class="varlistentry"><span class="term">man stapfuncs</span></dt><dd><div class="para"> 11 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 <code class="filename">stapfuncs</code> man page enumerates numerous functions supported by the SystemTap tapset library, along with the prescribed syntax for each one. Note, however, that this is not a complete list of <span class="emphasis"><em>all</em></span> supported functions; there are more undocumented functions available. 12 </div></dd><dt><span class="term">SystemTap Tapset Reference Manual</span></dt><dd><div class="para">
13 </div></dd><dt class="varlistentry"><span class="term">SystemTap Tapset Reference Manual</span></dt><dd><div class="para"> 13 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 The <em class="citetitle">SystemTap Tapset Reference Manual</em> at <a href="http://sourceware.org/systemtap/tapsets/">http://sourceware.org/systemtap/tapsets/</a> describes the individual predefined functions and probe points of the tapsets greater detail. 14 </div></dd><dt><span class="term">SystemTap Language Reference</span></dt><dd><div class="para">
15 </div></dd><dt class="varlistentry"><span class="term">SystemTap Language Reference</span></dt><dd><div class="para"> 15 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>.
16 This document 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. The <em class="citetitle">SystemTap Language Reference</em> is available to all users at <a href="http://sourceware.org/systemtap/langref/">http://sourceware.org/systemtap/langref/</a> 16 </div></dd><dt><span class="term">Tapset Developers Guide</span></dt><dd><div class="para">
17 </div></dd><dt class="varlistentry"><span class="term">Tapset Developers Guide</span></dt><dd><div class="para"> 17 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.
18 Once you have sufficient proficiency in writing SystemTap scripts, you can then try your hand out on writing your own tapsets. The <em class="citetitle">Tapset Developers Guide</em> describes how to add functions to your tapset library. 18 </div></dd><dt><span class="term">Test Suite</span></dt><dd><div class="para">
19 </div></dd><dt class="varlistentry"><span class="term">Test Suite</span></dt><dd><div class="para"> 19 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 The <code class="filename">systemtap-testsuite</code> package allows you to test the entire SystemTap toolchain without having to build from source. In addition, it also contains numerous examples of SystemTap scripts you can 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>.
21 </div><div class="para"> 20 </div><div class="para">
22 By default, the example scripts included in <code class="filename">systemtap-testsuite</code> are located in <code class="filename">/usr/share/systemtap/testsuite/systemtap.examples</code>. 21 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.
23 </div></dd></dl></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="runtimeerror.html"><strong>Prev</strong>6.2. Run Time 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> 22 </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 2b9a63de..972c26a4 100644
--- a/SystemTap_Beginners_Guide/runtimeerror.html
+++ b/SystemTap_Beginners_Guide/runtimeerror.html
@@ -1,21 +1,20 @@
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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>6.2. Runtime Errors and Warnings</h2></div></div></div><a id="idm246917354624" class="indexterm"></a><a id="idm246882061792" class="indexterm"></a><a id="idm246882060352" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>6.2. Run Time 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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="errors.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="references.html"><strong>Next</strong></a></li></ul><div class="section" id="runtimeerror"><div class="titlepage"><div><div><h2 class="title" id="runtimeerror">6.2. Run Time Errors and Warnings</h2></div></div></div><a id="idp32306288" class="indexterm"></a><a id="idp30240080" class="indexterm"></a><a id="idp30241520" 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. 3 Runtime errors and warnings occur when the SystemTap instrumentation has been installed and is collecting data on the system.
5 </div><div class="formalpara"><h5 class="formalpara" id="idp30243520">WARNING: Number of errors: <em class="replaceable"><code>N</code></em>, skipped probes: <em class="replaceable"><code>M</code></em></h5><a id="idp28622608" class="indexterm"></a><a id="idp28624464" class="indexterm"></a><a id="idp28626352" class="indexterm"></a><a id="idp26869552" class="indexterm"></a> 4 </div><h3><a id="idm246882058352"></a>WARNING: Number of errors: <em class="replaceable"><code>N</code></em>, skipped probes: <em class="replaceable"><code>M</code></em></h3><a id="idm246882056704" class="indexterm"></a><a id="idm246912297600" class="indexterm"></a><a id="idm246912295712" class="indexterm"></a><a id="idm246912293856" class="indexterm"></a><div class="para">
6 Errors and/or skipped probes occurred during this run. Both <em class="replaceable"><code>N</code></em> and <em class="replaceable"><code>M</code></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. 5 Errors and/or skipped probes occurred during this run. Both <em class="replaceable"><code>N</code></em> and <em class="replaceable"><code>M</code></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><div class="formalpara"><h5 class="formalpara" id="idp26873120">division by 0</h5><a id="idp31278256" class="indexterm"></a><a id="idp31280144" class="indexterm"></a><a id="idp31282064" class="indexterm"></a><a id="idp21513520" class="indexterm"></a><a id="idp21515408" class="indexterm"></a> 6 </div><h3><a id="idm246923060384"></a>division by 0</h3><a id="idm246923059584" class="indexterm"></a><a id="idm246923057696" class="indexterm"></a><a id="idm246923055776" class="indexterm"></a><a id="idm246923053888" class="indexterm"></a><a id="idm246870128384" class="indexterm"></a><div class="para">
8 The script code performed an invalid division. 7 The script code performed an invalid division.
9 </div><div class="formalpara"><h5 class="formalpara" id="idp21517904">aggregate element not found</h5><a id="idm10712336" class="indexterm"></a><a id="idm10710480" class="indexterm"></a><a id="idm10708592" class="indexterm"></a><a id="idp17276288" class="indexterm"></a> 8 </div><h3><a id="idm246870126048"></a>aggregate element not found</h3><a id="idm246870125280" class="indexterm"></a><a id="idm246870123424" class="indexterm"></a><a id="idm246918298992" class="indexterm"></a><a id="idm246918297136" class="indexterm"></a><div class="para">
10 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. 9 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.
11 </div><div class="formalpara"><h5 class="formalpara" id="idp17279328">aggregation overflow</h5><a id="idp17280416" class="indexterm"></a><a id="idp27233248" class="indexterm"></a><a id="idp27235168" class="indexterm"></a><a id="idp27237056" class="indexterm"></a><a id="idp39317584" class="indexterm"></a> 10 </div><h3><a id="idm246918294256"></a>aggregation overflow</h3><a id="idm246918293456" class="indexterm"></a><a id="idm246882984576" class="indexterm"></a><a id="idm246882982656" class="indexterm"></a><a id="idm246882980768" class="indexterm"></a><a id="idm246882978880" class="indexterm"></a><div class="para">
12 An array containing aggregate values contains too many distinct key pairs at this time. 11 An array containing aggregate values contains too many distinct key pairs at this time.
13 </div><div class="formalpara"><h5 class="formalpara" id="idp39320496">MAXNESTING exceeded</h5><a id="idp39321296" class="indexterm"></a><a id="idp49373008" class="indexterm"></a><a id="idp49374928" class="indexterm"></a><a id="idp49376816" class="indexterm"></a><a id="idp32436160" class="indexterm"></a> 12 </div><h3><a id="idm246929772544"></a>MAXNESTING exceeded</h3><a id="idm246929771872" class="indexterm"></a><a id="idm246929769984" class="indexterm"></a><a id="idm246929768064" class="indexterm"></a><a id="idm246873301232" class="indexterm"></a><a id="idm246873299344" class="indexterm"></a><div class="para">
14 Too many levels of function call nesting were attempted. The default nesting of function calls allowed is 10. 13 Too many levels of function call nesting were attempted. The default nesting of function calls allowed is 10.
15 </div><div class="formalpara"><h5 class="formalpara" id="idp32438784">MAXACTION exceeded</h5><a id="idp32439872" class="indexterm"></a><a id="idp29856848" class="indexterm"></a><a id="idp29858768" class="indexterm"></a><a id="idp29860656" class="indexterm"></a><a id="idp48921856" class="indexterm"></a> 14 </div><h3><a id="idm246873296880"></a>MAXACTION exceeded</h3><a id="idm246873296080" class="indexterm"></a><a id="idm246873294192" class="indexterm"></a><a id="idm246870301184" class="indexterm"></a><a id="idm246870299296" class="indexterm"></a><a id="idm246870297408" class="indexterm"></a><div class="para">
16 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. 15 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.
17 </div><div class="formalpara"><h5 class="formalpara" id="idp48924528">kernel/user string copy fault at <em class="replaceable"><code>ADDR</code></em></h5><a id="idp48925904" class="indexterm"></a><a id="idp45966160" class="indexterm"></a><a id="idp45968080" class="indexterm"></a><a id="idp45969968" class="indexterm"></a> 16 </div><h3><a id="idm246928751632"></a>kernel/user string copy fault at <em class="replaceable"><code>ADDR</code></em></h3><a id="idm246928750544" class="indexterm"></a><a id="idm246928748656" class="indexterm"></a><a id="idm246928746736" class="indexterm"></a><a id="idm246928744848" class="indexterm"></a><div class="para">
18 The probe handler attempted to copy a string from kernel or user-space at an invalid address (<em class="replaceable"><code>ADDR</code></em>). 17 The probe handler attempted to copy a string from kernel or user space at an invalid address (<em class="replaceable"><code>ADDR</code></em>).
19 </div><div class="formalpara"><h5 class="formalpara" id="idp32790160">pointer dereference fault</h5><a id="idp32791216" class="indexterm"></a><a id="idp32793072" class="indexterm"></a><a id="idp20737456" class="indexterm"></a><a id="idp20739312" class="indexterm"></a> 18 </div><h3><a id="idm246912495088"></a>pointer dereference fault</h3><a id="idm246912494160" class="indexterm"></a><a id="idm246912492304" class="indexterm"></a><a id="idm246912490416" class="indexterm"></a><a id="idm246926018096" class="indexterm"></a><div class="para">
20 There was a fault encountered during a pointer dereference operation such as a target variable evaluation. 19 There was a fault encountered during a pointer dereference operation such as a target variable evaluation.
21 </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> 20 </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 a9d49f36..ab9ce81a 100644
--- a/SystemTap_Beginners_Guide/scriptconstructions.html
+++ b/SystemTap_Beginners_Guide/scriptconstructions.html
@@ -1,12 +1,11 @@
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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>3.3. Basic SystemTap Handler Constructs</h2></div></div></div><a id="idm246875109312" class="indexterm"></a><a id="idm246875109968" class="indexterm"></a><a id="idm246913133680" class="indexterm"></a><a id="idm246920716992" class="indexterm"></a><a id="idm246921840080" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="systemtapscript-handler.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="targetvariables.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" id="scriptconstructions" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="scriptconstructions">3.3. Basic SystemTap Handler Constructs</h2></div></div></div><a id="idp21274432" class="indexterm"></a><a id="idp21272160" class="indexterm"></a><a id="idp26648464" class="indexterm"></a><a id="idp14981216" class="indexterm"></a><a id="idp53545168" class="indexterm"></a><div class="para">
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. 3 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.
5 </div><div class="section" id="variablesconstructs"><div class="titlepage"><div><div><h3 class="title" id="variablesconstructs">3.3.1. Variables</h3></div></div></div><a id="idp29097200" class="indexterm"></a><a id="idp45166960" class="indexterm"></a><a id="idp62596432" class="indexterm"></a><a id="idm5937648" class="indexterm"></a><div class="para"> 4 </div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="variablesconstructs"></a>3.3.1. Variables</h3></div></div></div><a id="idm246877655232" class="indexterm"></a><a id="idm246914128640" class="indexterm"></a><a id="idm246875111104" class="indexterm"></a><a id="idm246872276016" class="indexterm"></a><div class="para">
6 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>). 5 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>).
7 </div><a id="idp60148704" class="indexterm"></a><a id="idp65196672" class="indexterm"></a><a id="idp13473312" class="indexterm"></a><div class="para"> 6 </div><a id="idm246912367264" class="indexterm"></a><a id="idm246926099664" class="indexterm"></a><a id="idm246870019072" class="indexterm"></a><div class="para">
8 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: 7 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:
9 </div><div class="example" id="timerjiffies"><h6>Example 3.8. timer-jiffies.stp</h6><div class="example-contents"><pre class="programlisting">global count_jiffies, count_ms 8 </div><div class="example"><a id="timerjiffies"></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
10probe timer.jiffies(100) { count_jiffies ++ } 9probe timer.jiffies(100) { count_jiffies ++ }
11probe timer.ms(100) { count_ms ++ } 10probe timer.ms(100) { count_ms ++ }
12probe timer.ms(12345) 11probe timer.ms(12345)
@@ -15,10 +14,10 @@ probe timer.ms(12345)
15 printf ("jiffies:ms ratio %d:%d =&gt; CONFIG_HZ=%d\n", 14 printf ("jiffies:ms ratio %d:%d =&gt; CONFIG_HZ=%d\n",
16 count_jiffies, count_ms, hz) 15 count_jiffies, count_ms, hz)
17 exit () 16 exit ()
18}</pre></div></div><br class="example-break" /><a id="idp25252432" class="indexterm"></a><div class="para"> 17}</pre></div></div><br class="example-break" /><a id="idm246926763888" class="indexterm"></a><div class="para">
19 <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>. 18 <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>.
20 </div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para"> 19 </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 The <code class="command">++</code> notation in <a class="xref" href="scriptconstructions.html#timerjiffies">Example 3.8, “timer-jiffies.stp”</a> (i.e. <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: 20 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:
22 </div><pre class="screen">probe timer.jiffies(100) { count_jiffies ++ }</pre><div class="para"> 21 </div><pre class="screen">probe timer.jiffies(100) { count_jiffies ++ }</pre><div class="para">
23 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. 22 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.
24 </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> 23 </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 be44135f..dcbfb591 100644
--- a/SystemTap_Beginners_Guide/scripts.html
+++ b/SystemTap_Beginners_Guide/scripts.html
@@ -1,10 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>3.2. SystemTap Scripts</h2></div></div></div><a id="idm246921675264" class="indexterm"></a><a id="idm246921676720" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="understanding-how-systemtap-works.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="systemtapscript-handler.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" id="scripts" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="scripts">3.2. SystemTap Scripts</h2></div></div></div><a id="idm6439488" class="indexterm"></a><a id="idm4921472" 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. 3 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.
5 </div><a id="idm4923536" class="indexterm"></a><a id="idm4925488" class="indexterm"></a><a id="idm4927440" class="indexterm"></a><a id="idm4929392" class="indexterm"></a><a id="idm4931344" class="indexterm"></a><a id="idm4933296" class="indexterm"></a><div class="para"> 4 </div><a id="idm246921678784" class="indexterm"></a><a id="idm246921680736" class="indexterm"></a><a id="idm246921682688" class="indexterm"></a><a id="idm246921684640" class="indexterm"></a><a id="idm246921686592" class="indexterm"></a><a id="idm246921688544" class="indexterm"></a><div class="para">
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. 5 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.
7 </div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><a id="idm4937968" class="indexterm"></a><a id="idm4939824" class="indexterm"></a><a id="idm4421776" class="indexterm"></a><div class="para"> 6 </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="idm246921693216" class="indexterm"></a><a id="idm246921695184" class="indexterm"></a><a id="idm246921697152" 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. 7 An event and its corresponding handler is collectively called a <span class="emphasis"><em>probe</em></span>. A SystemTap script can have multiple probes.
9 </div><div class="para"> 8 </div><div class="para">
10 A probe's handler is commonly referred to as a <span class="emphasis"><em>probe body</em></span>. 9 A probe's handler is commonly referred to as a <span class="emphasis"><em>probe body</em></span>.
@@ -12,63 +11,63 @@
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. 11 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.
13 </div><div class="para"> 12 </div><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. 13 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.
15 </div><div class="formalpara" id="scriptformats"><h5 class="formalpara">Format</h5><a id="idm4431088" class="indexterm"></a><a id="idm4430320" class="indexterm"></a><a id="idm4432704" class="indexterm"></a><a id="idm4434608" class="indexterm"></a> 14 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">Format</div><a id="idm246921706464" class="indexterm"></a><a id="idm246921705696" class="indexterm"></a><a id="idm246921708080" class="indexterm"></a><a id="idm246921709984" class="indexterm"></a>
16 SystemTap scripts use the file extension <code class="filename">.stp</code>, and contains probes written in the following format: 15 SystemTap scripts use the file extension <code class="filename">.stp</code>, and contains probes written in the following format:
17 </div><pre class="screen">probe <em class="replaceable"><code>event</code></em> {<em class="replaceable"><code>statements</code></em>}</pre><div class="para"> 16 </div><pre class="screen">probe <em class="replaceable"><code>event</code></em> {<em class="replaceable"><code>statements</code></em>}</pre><div class="para">
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. 17 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.
19 </div><a id="idm4439680" class="indexterm"></a><a id="idp62242000" class="indexterm"></a><a id="idp62239856" class="indexterm"></a><div class="para"> 18 </div><a id="idm246921715056" class="indexterm"></a><a id="idm246921717312" class="indexterm"></a><a id="idm246921719456" class="indexterm"></a><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. 19 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.
21 </div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para"> 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"><div class="para">
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. 21 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.
23 </div></div></div><a id="idp62234464" class="indexterm"></a><a id="idp62232528" class="indexterm"></a><a id="idp62230592" class="indexterm"></a><div class="para"> 22 </div></div></div><a id="idm246921724864" class="indexterm"></a><a id="idm246921726800" class="indexterm"></a><a id="idm246921728736" class="indexterm"></a><div class="para">
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: 23 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:
25 </div><pre class="screen">function <em class="replaceable"><code>function_name</code></em>(<em class="replaceable"><code>arguments</code></em>) {<em class="replaceable"><code>statements</code></em>} 24 </div><pre class="screen">function <em class="replaceable"><code>function_name</code></em>(<em class="replaceable"><code>arguments</code></em>) {<em class="replaceable"><code>statements</code></em>}
26probe <em class="replaceable"><code>event</code></em> {<em class="replaceable"><code>function_name</code></em>(<em class="replaceable"><code>arguments</code></em>)}</pre><div class="para"> 25probe <em class="replaceable"><code>event</code></em> {<em class="replaceable"><code>function_name</code></em>(<em class="replaceable"><code>arguments</code></em>)}</pre><div class="para">
27 The <code class="command"><em class="replaceable"><code>statements</code></em></code> in <em class="replaceable"><code>function_name</code></em> are executed when the probe for <em class="replaceable"><code>event</code></em> executes. The <em class="replaceable"><code>arguments</code></em> are optional values passed into the function. 26 The <code class="command"><em class="replaceable"><code>statements</code></em></code> in <em class="replaceable"><code>function_name</code></em> are executed when the probe for <em class="replaceable"><code>event</code></em> executes. The <em class="replaceable"><code>arguments</code></em> are optional values passed into the function.
28 </div><div class="important"><div class="admonition_header"><h2>Important</h2></div><div class="admonition"><div class="para"> 27 </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">
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. 28 <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.
30 </div></div></div><div class="section" id="systemtapscript-events"><div class="titlepage"><div><div><h3 class="title" id="systemtapscript-events">3.2.1. Event</h3></div></div></div><a id="idp36369504" class="indexterm"></a><div class="para"> 29 </div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="systemtapscript-events"></a>3.2.1. Event</h3></div></div></div><a id="idm246921741648" class="indexterm"></a><div class="para">
31 SystemTap events can be broadly classified into two types: <em class="firstterm">synchronous</em> and <em class="firstterm">asynchronous</em>. 30 SystemTap events can be broadly classified into two types: <em class="firstterm">synchronous</em> and <em class="firstterm">asynchronous</em>.
32 </div><div class="formalpara"><h5 class="formalpara" id="idp36366032">Synchronous Events</h5><a id="idp36365392" class="indexterm"></a><a id="idp36363920" class="indexterm"></a> 31 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">Synchronous Events</div><a id="idm246921745760" class="indexterm"></a><a id="idm246921747232" class="indexterm"></a>
33 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. 32 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.
34 </div><a id="idp36360368" class="indexterm"></a><a id="idp36358928" class="indexterm"></a><div class="para"> 33 </div><a id="idm246921750784" class="indexterm"></a><a id="idm246921752224" class="indexterm"></a><div class="para">
35 Examples of synchronous events include: 34 Examples of synchronous events include:
36 </div><div class="variablelist"><dl><dt class="varlistentry"><span class="term">syscall.<em class="replaceable"><code>system_call</code></em></span></dt><dd><a id="idp36355360" class="indexterm"></a><a id="idm5919568" class="indexterm"></a><div class="para"> 35 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">syscall.<em class="replaceable"><code>system_call</code></em></span></dt><dd><a id="idm246921755792" class="indexterm"></a><a id="idm246921758544" class="indexterm"></a><div class="para">
37 The entry to the system call <em class="replaceable"><code>system_call</code></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. 36 The entry to the system call <em class="replaceable"><code>system_call</code></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.
38 </div></dd><dt class="varlistentry"><span class="term">vfs.<em class="replaceable"><code>file_operation</code></em></span></dt><dd><a id="idm5925776" class="indexterm"></a><a id="idm5927728" class="indexterm"></a><div class="para"> 37 </div></dd><dt><span class="term">vfs.<em class="replaceable"><code>file_operation</code></em></span></dt><dd><a id="idm246921764832" class="indexterm"></a><a id="idm246921766784" class="indexterm"></a><div class="para">
39 The entry to the <em class="replaceable"><code>file_operation</code></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"><code>file_operation</code></em> operation. 38 The entry to the <em class="replaceable"><code>file_operation</code></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"><code>file_operation</code></em> operation.
40 </div></dd><dt class="varlistentry"><span class="term">kernel.function("<em class="replaceable"><code>function</code></em>")</span></dt><dd><a id="idm5934928" class="indexterm"></a><a id="idm5937344" class="indexterm"></a><div class="para"> 39 </div></dd><dt><span class="term">kernel.function("<em class="replaceable"><code>function</code></em>")</span></dt><dd><a id="idm246921773984" class="indexterm"></a><a id="idm246921776400" class="indexterm"></a><div class="para">
41 The entry to the kernel function <em class="replaceable"><code>function</code></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; i.e. <code class="command">kernel.function("sys_open").return</code>. 40 The entry to the kernel function <em class="replaceable"><code>function</code></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>.
42 </div><a id="idp28923808" class="indexterm"></a><a id="idp28922352" class="indexterm"></a><a id="idp28921408" class="indexterm"></a><div class="para"> 41 </div><a id="idm246921783296" class="indexterm"></a><a id="idm246921784752" class="indexterm"></a><a id="idm246921785696" class="indexterm"></a><div class="para">
43 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: 42 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:
44 </div><div class="example" id="wildcards"><h6>Example 3.1. wildcards.stp</h6><div class="example-contents"><pre class="programlisting">probe kernel.function("*@net/socket.c") { } 43 </div><div class="example"><a id="wildcards"></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") { }
45probe kernel.function("*@net/socket.c").return { }</pre></div></div><br class="example-break" /><div class="para"> 44probe kernel.function("*@net/socket.c").return { }</pre></div></div><br class="example-break" /><div class="para">
46 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. 45 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.
47 </div></dd><dt class="varlistentry"><span class="term">kernel.trace("<em class="replaceable"><code>tracepoint</code></em>")</span></dt><dd><a id="idp28913600" class="indexterm"></a><a id="idp28910768" class="indexterm"></a><a id="idp28910448" class="indexterm"></a><div class="para"> 46 </div></dd><dt><span class="term">kernel.trace("<em class="replaceable"><code>tracepoint</code></em>")</span></dt><dd><a id="idm246921793504" class="indexterm"></a><a id="idm246921796336" class="indexterm"></a><a id="idm246921796656" class="indexterm"></a><div class="para">
48 The static probe for <em class="replaceable"><code>tracepoint</code></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. 47 The static probe for <em class="replaceable"><code>tracepoint</code></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.
49 </div></dd><dt class="varlistentry"><span class="term">module("<em class="replaceable"><code>module</code></em>").function("<em class="replaceable"><code>function</code></em>")</span></dt><dd><a id="idp27363472" class="indexterm"></a><a id="idp27361072" class="indexterm"></a><div class="para"> 48 </div></dd><dt><span class="term">module("<em class="replaceable"><code>module</code></em>").function("<em class="replaceable"><code>function</code></em>")</span></dt><dd><a id="idm246921802816" class="indexterm"></a><a id="idm246921805296" class="indexterm"></a><div class="para">
50 Allows you to probe functions within modules. For example: 49 Allows you to probe functions within modules. For example:
51 </div><div class="example" id="eventsmodules"><h6>Example 3.2. moduleprobe.stp</h6><div class="example-contents"><pre class="programlisting">probe module("ext3").function("*") { } 50 </div><div class="example"><a id="eventsmodules"></a><p class="title"><strong>Example 3.2. moduleprobe.stp</strong></p><div class="example-contents"><pre class="programlisting">probe module("ext3").function("*") { }
52probe module("ext3").function("*").return { }</pre></div></div><br class="example-break" /><div class="para"> 51probe module("ext3").function("*").return { }</pre></div></div><br class="example-break" /><div class="para">
53 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>). 52 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>).
54 </div><div class="para"> 53 </div><div class="para">
55 A system's kernel modules are typically located in <code class="filename">/lib/modules/<em class="replaceable"><code>kernel_version</code></em></code>, where <em class="replaceable"><code>kernel_version</code></em> refers to the currently loaded kernel version. Modules use the file name extension <code class="filename">.ko</code>. 54 A system's kernel modules are typically located in <code class="filename">/lib/modules/<em class="replaceable"><code>kernel_version</code></em></code>, where <em class="replaceable"><code>kernel_version</code></em> refers to the currently loaded kernel version. Modules use the file name extension <code class="filename">.ko</code>.
56 </div></dd></dl></div><div class="formalpara"><h5 class="formalpara" id="idp27349952">Asynchronous Events</h5><a id="idp27348832" class="indexterm"></a><a id="idp27347376" class="indexterm"></a> 55 </div></dd></dl></div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">Asynchronous Events</div><a id="idm246921817536" class="indexterm"></a><a id="idm246921818992" class="indexterm"></a>
57 <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. 56 <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.
58 </div><div class="para"> 57 </div><div class="para">
59 Examples of asynchronous events include: 58 Examples of asynchronous events include:
60 </div><div class="variablelist"><dl><dt class="varlistentry"><span class="term">begin</span></dt><dd><a id="idm7922320" class="indexterm"></a><a id="idm7922640" class="indexterm"></a><div class="para"> 59 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">begin</span></dt><dd><a id="idm246921825792" class="indexterm"></a><a id="idm246921826112" class="indexterm"></a><div class="para">
61 The startup of a SystemTap session; i.e. as soon as the SystemTap script is run. 60 The startup of a SystemTap session; that is, as soon as the SystemTap script is run.
62 </div></dd><dt class="varlistentry"><span class="term">end</span></dt><dd><a id="idm7926368" class="indexterm"></a><a id="idm7927664" class="indexterm"></a><div class="para"> 61 </div></dd><dt><span class="term">end</span></dt><dd><a id="idm246921829840" class="indexterm"></a><a id="idm246921831136" class="indexterm"></a><div class="para">
63 The end of a SystemTap session. 62 The end of a SystemTap session.
64 </div></dd><dt class="varlistentry"><span class="term">timer events</span></dt><dd><a id="idm7931632" class="indexterm"></a><a id="idm7933088" class="indexterm"></a><div class="para"> 63 </div></dd><dt><span class="term">timer events</span></dt><dd><a id="idm246921835104" class="indexterm"></a><a id="idm246921836560" class="indexterm"></a><div class="para">
65 An event that specifies a handler to be executed periodically. For example: 64 An event that specifies a handler to be executed periodically. For example:
66 </div><div class="example" id="timer"><h6>Example 3.3. timer-s.stp</h6><div class="example-contents"><pre class="programlisting">probe timer.s(4) 65 </div><div class="example"><a id="timer"></a><p class="title"><strong>Example 3.3. timer-s.stp</strong></p><div class="example-contents"><pre class="programlisting">probe timer.s(4)
67{ 66{
68 printf("hello world\n") 67 printf("hello world\n")
69}</pre></div></div><br class="example-break" /><div class="para"> 68}</pre></div></div><br class="example-break" /><div class="para">
70 <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. Note that you can also use the following timer events: 69 <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:
71 </div><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 70 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
72 <code class="command">timer.ms(<em class="replaceable"><code>milliseconds</code></em>)</code> 71 <code class="command">timer.ms(<em class="replaceable"><code>milliseconds</code></em>)</code>
73 </div></li><li class="listitem"><div class="para"> 72 </div></li><li class="listitem"><div class="para">
74 <code class="command">timer.us(<em class="replaceable"><code>microseconds</code></em>)</code> 73 <code class="command">timer.us(<em class="replaceable"><code>microseconds</code></em>)</code>
@@ -80,6 +79,6 @@ probe module("ext3").function("*").return { }</pre></div></div><br class="exampl
80 <code class="command">timer.jiffies(<em class="replaceable"><code>jiffies</code></em>)</code> 79 <code class="command">timer.jiffies(<em class="replaceable"><code>jiffies</code></em>)</code>
81 </div></li></ul></div><div class="para"> 80 </div></li></ul></div><div class="para">
82 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. 81 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.
83 </div></dd></dl></div><div class="important"><div class="admonition_header"><h2>Important</h2></div><div class="admonition"><div class="para"> 82 </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">
84 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. 83 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.
85 </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> 84 </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 837f8d81..04d956d8 100644
--- a/SystemTap_Beginners_Guide/syscallsbyprocpidsect.html
+++ b/SystemTap_Beginners_Guide/syscallsbyprocpidsect.html
@@ -1,8 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>5.3.6. Tracking System Call Volume Per Process</h3></div></div></div><a id="idm246913101264" class="indexterm"></a><a id="idm246920806208" class="indexterm"></a><a id="idm246917447568" class="indexterm"></a><a id="idm246913519088" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="topsyssect.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="futexcontentionsect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" id="syscallsbyprocpidsect" lang="en-US"><div class="titlepage"><div><div><h3 class="title" id="syscallsbyprocpidsect">5.3.6. Tracking System Call Volume Per Process</h3></div></div></div><a id="idp45906528" class="indexterm"></a><a id="idm1934848" class="indexterm"></a><a id="idp40104512" class="indexterm"></a><a id="idp29954720" 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. 3 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.
5 </div><div class="formalpara" id="syscallsbyprocpid"><h5 class="formalpara">syscalls_by_proc.stp</h5> 4 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">syscalls_by_proc.stp</div>
6 5
7<pre class="programlisting">#! /usr/bin/env stap 6<pre class="programlisting">#! /usr/bin/env stap
8 7
@@ -35,7 +34,7 @@ probe end {
35</pre> 34</pre>
36 </div><div class="para"> 35 </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. 36 <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.
38 </div><div class="example" id="syscallsbyprocpidoutput"><h6>Example 5.18. <a class="xref" href="topsyssect.html#topsys">topsys.stp</a> Sample Output</h6><div class="example-contents"><pre class="screen">Collecting data... Type Ctrl-C to exit and display results 37 </div><div class="example"><a id="syscallsbyprocpidoutput"></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
39#SysCalls Process Name 38#SysCalls Process Name
401577 multiload-apple 391577 multiload-apple
41692 synergyc 40692 synergyc
@@ -51,8 +50,8 @@ probe end {
5178 gnome-screensav 5078 gnome-screensav
5266 scim-launcher 5166 scim-launcher
53[...]</pre></div></div><br class="example-break" /><div class="para"> 52[...]</pre></div></div><br class="example-break" /><div class="para">
54 If you prefer the output to display the process IDs instead of the process names, use the following script instead. 53 To display the process IDs instead of the process names, use the following script instead.
55 </div><div class="formalpara" id="syscallsbypid"><h5 class="formalpara">syscalls_by_pid.stp</h5> 54 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">syscalls_by_pid.stp</div>
56 55
57<pre class="programlisting">#! /usr/bin/env stap 56<pre class="programlisting">#! /usr/bin/env stap
58 57
@@ -88,4 +87,4 @@ probe end {
88 </div><pre class="screen">probe timer.s(5) 87 </div><pre class="screen">probe timer.s(5)
89{ 88{
90 exit() 89 exit()
91}</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> 90}</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 b6a83610..30daab3f 100644
--- a/SystemTap_Beginners_Guide/systemtapscript-handler.html
+++ b/SystemTap_Beginners_Guide/systemtapscript-handler.html
@@ -1,27 +1,26 @@
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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>3.2.2. SystemTap Handler/Body</h3></div></div></div><a id="idm246921858192" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="scripts.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="scriptconstructions.html"><strong>Next</strong></a></li></ul><div class="section" id="systemtapscript-handler"><div class="titlepage"><div><div><h3 class="title" id="systemtapscript-handler">3.2.2. Systemtap Handler/Body</h3></div></div></div><a id="idp53544432" class="indexterm"></a><div class="para">
4 Consider the following sample script: 3 Consider the following sample script:
5 </div><div class="example" id="helloworld"><h6>Example 3.4. helloworld.stp</h6><div class="example-contents"><pre class="programlisting">probe begin 4 </div><div class="example"><a id="helloworld"></a><p class="title"><strong>Example 3.4. helloworld.stp</strong></p><div class="example-contents"><pre class="programlisting">probe begin
6{ 5{
7 printf ("hello world\n") 6 printf ("hello world\n")
8 exit () 7 exit ()
9}</pre></div></div><br class="example-break" /><div class="para"> 8}</pre></div></div><br class="example-break" /><div class="para">
10 In <a class="xref" href="systemtapscript-handler.html#helloworld">Example 3.4, “helloworld.stp”</a>, the event <code class="command">begin</code> (i.e. 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> (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.
11 </div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><a id="idm6922144" class="indexterm"></a><a id="idm6923840" class="indexterm"></a><div class="para"> 10 </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="idm246921865616" class="indexterm"></a><a id="idm246921867344" class="indexterm"></a><div class="para">
12 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 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>.
13 </div></div></div><div class="formalpara" id="printf"><h5 class="formalpara">printf ( ) Statements</h5><a id="idm6928480" class="indexterm"></a> 12 </div></div></div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">printf ( ) Statements</div><a id="idm246921871984" class="indexterm"></a>
14 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 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:
15 </div><pre class="programlisting"> printf ("<em class="replaceable"><code>format string</code></em>\n", <em class="replaceable"><code>arguments</code></em>) 14 </div><pre class="programlisting"> printf ("<em class="replaceable"><code>format string</code></em>\n", <em class="replaceable"><code>arguments</code></em>)
16</pre><a id="idm6933344" class="indexterm"></a><a id="idm6935040" class="indexterm"></a><div class="para"> 15</pre><a id="idm246921876624" class="indexterm"></a><a id="idm246921878320" class="indexterm"></a><div class="para">
17 The <em class="replaceable"><code>format string</code></em> specifies how <em class="replaceable"><code>arguments</code></em> should be printed. The format string of <a class="xref" href="systemtapscript-handler.html#helloworld">Example 3.4, “helloworld.stp”</a> simply instructs SystemTap to print <code class="command">hello world</code>, and contains no format specifiers. 16 The <em class="replaceable"><code>format string</code></em> specifies how <em class="replaceable"><code>arguments</code></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.
18 </div><a id="idp29377904" class="indexterm"></a><a id="idp29376624" class="indexterm"></a><div class="para"> 17 </div><a id="idm246921882032" class="indexterm"></a><a id="idm246921883792" class="indexterm"></a><div class="para">
19 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 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>).
20 </div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><a id="idp29372400" class="indexterm"></a><a id="idp29370224" class="indexterm"></a><a id="idp29368096" class="indexterm"></a><div class="para"> 19 </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="idm246921888016" class="indexterm"></a><a id="idm246921889520" class="indexterm"></a><a id="idm246921892320" class="indexterm"></a><div class="para">
21 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 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>.
22 </div></div></div><div class="para"> 21 </div></div></div><div class="para">
23 To illustrate this, consider the following probe example: 22 To illustrate this, consider the following probe example:
24 </div><div class="example" id="syscall-open"><h6>Example 3.5. variables-in-printf-statements.stp</h6><div class="example-contents"><pre class="programlisting">probe syscall.open 23 </div><div class="example"><a id="syscall-open"></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
25{ 24{
26 printf ("%s(%d) open\n", execname(), pid()) 25 printf ("%s(%d) open\n", execname(), pid())
27}</pre></div></div><br class="example-break" /><div class="para"> 26}</pre></div></div><br class="example-break" /><div class="para">
@@ -33,31 +32,31 @@ hald(2360) open
33df(3433) open 32df(3433) open
34df(3433) open 33df(3433) open
35df(3433) open 34df(3433) open
36hald(2360) open</pre><div class="formalpara" id="systemtapscript-functions"><h5 class="formalpara">SystemTap Functions</h5><a id="idp25426000" class="indexterm"></a><a id="idp25425104" class="indexterm"></a><a id="idp25424208" class="indexterm"></a> 35hald(2360) open</pre><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">SystemTap Functions</div><a id="idm246921903104" class="indexterm"></a><a id="idm246921904000" class="indexterm"></a><a id="idm246921904992" class="indexterm"></a>
37 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). 36 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).
38 </div><div class="para"> 37 </div><div class="para">
39 The following is a list of commonly-used SystemTap functions: 38 The following is a list of commonly-used SystemTap functions:
40 </div><div class="variablelist"><dl><dt class="varlistentry"><span class="term">tid()</span></dt><dd><a id="idp25417408" class="indexterm"></a><a id="idp25415504" class="indexterm"></a><a id="idp25413600" class="indexterm"></a><div class="para"> 39 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">tid()</span></dt><dd><a id="idm246921911280" class="indexterm"></a><a id="idm246921913184" class="indexterm"></a><a id="idm246921915088" class="indexterm"></a><div class="para">
41 The ID of the current thread. 40 The ID of the current thread.
42 </div></dd><dt class="varlistentry"><span class="term">uid()</span></dt><dd><a id="idp25409712" class="indexterm"></a><a id="idp25407504" class="indexterm"></a><div class="para"> 41 </div></dd><dt><span class="term">uid()</span></dt><dd><a id="idm246921918848" class="indexterm"></a><a id="idm246921921184" class="indexterm"></a><div class="para">
43 The ID of the current user. 42 The ID of the current user.
44 </div></dd><dt class="varlistentry"><span class="term">cpu()</span></dt><dd><a id="idp35280032" class="indexterm"></a><a id="idp35277952" class="indexterm"></a><div class="para"> 43 </div></dd><dt><span class="term">cpu()</span></dt><dd><a id="idm246921925072" class="indexterm"></a><a id="idm246921927664" class="indexterm"></a><div class="para">
45 The current CPU number. 44 The current CPU number.
46 </div></dd><dt class="varlistentry"><span class="term">gettimeofday_s()</span></dt><dd><a id="idp35273520" class="indexterm"></a><a id="idp35271424" class="indexterm"></a><div class="para"> 45 </div></dd><dt><span class="term">gettimeofday_s()</span></dt><dd><a id="idm246921931584" class="indexterm"></a><a id="idm246921934160" class="indexterm"></a><div class="para">
47 The number of seconds since UNIX epoch (January 1, 1970). 46 The number of seconds since UNIX epoch (January 1, 1970).
48 </div></dd><dt class="varlistentry"><span class="term">ctime()</span></dt><dd><a id="idp35266560" class="indexterm"></a><a id="idp35264352" class="indexterm"></a><div class="para"> 47 </div></dd><dt><span class="term">ctime()</span></dt><dd><a id="idm246921939024" class="indexterm"></a><a id="idm246921941264" class="indexterm"></a><div class="para">
49 Convert number of seconds since UNIX epoch to date. 48 Convert number of seconds since UNIX epoch to date.
50 </div></dd><dt class="varlistentry"><span class="term">pp()</span></dt><dd><a id="idp34376752" class="indexterm"></a><a id="idp34375952" class="indexterm"></a><div class="para"> 49 </div></dd><dt><span class="term">pp()</span></dt><dd><a id="idm246921946208" class="indexterm"></a><a id="idm246921948800" class="indexterm"></a><div class="para">
51 A string describing the probe point currently being handled. 50 A string describing the probe point currently being handled.
52 </div></dd><dt class="varlistentry"><span class="term">thread_indent()</span></dt><dd><a id="idp34371872" class="indexterm"></a><a id="idp34369264" class="indexterm"></a><div class="para"> 51 </div></dd><dt><span class="term">thread_indent()</span></dt><dd><a id="idm246921952864" class="indexterm"></a><a id="idm246921955008" class="indexterm"></a><div class="para">
53 This particular function is quite useful, 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. 52 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.
54 </div><div class="para"> 53 </div><div class="para">
55 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. 54 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.
56 </div><div class="para"> 55 </div><div class="para">
57 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. 56 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.
58 </div><div class="para"> 57 </div><div class="para">
59 Consider the following example on the use of <code class="command">thread_indent()</code>: 58 Consider the following example on the use of <code class="command">thread_indent()</code>:
60 </div><div class="example" id="thread_indent"><h6>Example 3.6. thread_indent.stp</h6><div class="example-contents"><pre class="programlisting">probe kernel.function("*@net/socket.c").call 59 </div><div class="example"><a id="thread_indent"></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
61{ 60{
62 printf ("%s -&gt; %s\n", thread_indent(1), probefunc()) 61 printf ("%s -&gt; %s\n", thread_indent(1), probefunc())
63} 62}
@@ -83,7 +82,7 @@ probe kernel.function("*@net/socket.c").return
834732 ftp(7223): &lt;- sys_socket 824732 ftp(7223): &lt;- sys_socket
844775 ftp(7223): &lt;- sys_socketcall</pre><div class="para"> 834775 ftp(7223): &lt;- sys_socketcall</pre><div class="para">
85 This sample output contains the following information: 84 This sample output contains the following information:
86 </div><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 85 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
87 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>). 86 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>).
88 </div></li><li class="listitem"><div class="para"> 87 </div></li><li class="listitem"><div class="para">
89 The process name (and its corresponding ID) that made the function call (included in the string from <code class="command">thread_indent()</code>). 88 The process name (and its corresponding ID) that made the function call (included in the string from <code class="command">thread_indent()</code>).
@@ -91,17 +90,17 @@ probe kernel.function("*@net/socket.c").return
91 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. 90 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.
92 </div></li><li class="listitem"><div class="para"> 91 </div></li><li class="listitem"><div class="para">
93 The name of the function called by the process. 92 The name of the function called by the process.
94 </div></li></ul></div></dd><dt class="varlistentry"><span class="term">name</span></dt><dd><a id="idp41807504" class="indexterm"></a><a id="idp41805184" class="indexterm"></a><a id="idp14145632" class="indexterm"></a><div class="para"> 93 </div></li></ul></div></dd><dt><span class="term">name</span></dt><dd><a id="idm246882946688" class="indexterm"></a><a id="idm246926803360" class="indexterm"></a><a id="idm246926804848" class="indexterm"></a><div class="para">
95 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"><code>system_call</code></em></code>. 94 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"><code>system_call</code></em></code>.
96 </div></dd><dt class="varlistentry"><span class="term">target()</span></dt><dd><a id="idp14140960" class="indexterm"></a><a id="idp52365248" class="indexterm"></a><div class="para"> 95 </div></dd><dt><span class="term">target()</span></dt><dd><a id="idm246926809808" class="indexterm"></a><a id="idm246917557280" class="indexterm"></a><div class="para">
97 Used in conjunction with <code class="command">stap <em class="replaceable"><code>script</code></em> -x <em class="replaceable"><code>process ID</code></em></code> or <code class="command">stap <em class="replaceable"><code>script</code></em> -c <em class="replaceable"><code>command</code></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: 96 Used in conjunction with <code class="command">stap <em class="replaceable"><code>script</code></em> -x <em class="replaceable"><code>process ID</code></em></code> or <code class="command">stap <em class="replaceable"><code>script</code></em> -c <em class="replaceable"><code>command</code></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:
98 </div><div class="example" id="targetexample"><h6>Example 3.7. targetexample.stp</h6><div class="example-contents"><pre class="programlisting">probe syscall.* { 97 </div><div class="example"><a id="targetexample"></a><p class="title"><strong>Example 3.7. targetexample.stp</strong></p><div class="example-contents"><pre class="programlisting">probe syscall.* {
99 if (pid() == target()) 98 if (pid() == target())
100 printf("%s/n", name) 99 printf("%s\n", name)
101}</pre></div></div><br class="example-break" /><div class="para"> 100}</pre></div></div><br class="example-break" /><div class="para">
102 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"><code>process ID</code></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. 101 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"><code>process ID</code></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.
103 </div><div class="para"> 102 </div><div class="para">
104 This has the same effect as specifying <code class="command">if (pid() == <em class="replaceable"><code>process ID</code></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 simply pass a process ID as an argument each time you wish to run the script (e.g. <code class="command">stap targetexample.stp -x <em class="replaceable"><code>process ID</code></em></code>). 103 This has the same effect as specifying <code class="command">if (pid() == <em class="replaceable"><code>process ID</code></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"><code>process ID</code></em></code>).
105 </div></dd></dl></div><div class="para"> 104 </div></dd></dl></div><div class="para">
106 For more information about supported SystemTap functions, refer to <code class="command">man stapfuncs</code>. 105 For more information about supported SystemTap functions, refer to <code class="command">man stapfuncs</code>.
107 </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> 106 </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 d495e981..537199cd 100644
--- a/SystemTap_Beginners_Guide/targetavailable.html
+++ b/SystemTap_Beginners_Guide/targetavailable.html
@@ -1,10 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>3.3.2.3. Checking Target Variable Availability</h4></div></div></div><a id="idm246873353520" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>3.3.2.3. Checking Target Variable Availablility</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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="typecasting.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="handlerconditionalstatements.html"><strong>Next</strong></a></li></ul><div class="section" id="targetavailable"><div class="titlepage"><div><div><h4 class="title" id="targetavailable">3.3.2.3. Checking Target Variable Availablility</h4></div></div></div><a id="idp33325312" 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. 3 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.
5 </div><div class="para"> 4 </div><div class="para">
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>. 5 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>.
7 </div><div class="example" id="available"><h6>Example 3.10. Testing target variable available Example</h6><div class="example-contents"><pre class="programlisting">probe vm.pagefault = kernel.function("__handle_mm_fault@mm/memory.c") ?, 6 </div><div class="example"><a id="available"></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") ?,
8 kernel.function("handle_mm_fault@mm/memory.c") ? 7 kernel.function("handle_mm_fault@mm/memory.c") ?
9{ 8{
10 name = "pagefault" 9 name = "pagefault"
@@ -12,4 +11,4 @@
12 ? $flags &amp; FAULT_FLAG_WRITE : $write_access) 11 ? $flags &amp; FAULT_FLAG_WRITE : $write_access)
13 address = $address 12 address = $address
14} 13}
15</pre></div></div><br class="example-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="typecasting.html"><strong>Prev</strong>3.3.2.2. Typecasting</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="handlerconditionalstatements.html"><strong>Next</strong>3.3.3. Conditional Statements</a></li></ul></body></html> 14</pre></div></div><br class="example-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="typecasting.html"><strong>Prev</strong>3.3.2.2. Typecasting</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="handlerconditionalstatements.html"><strong>Next</strong>3.3.3. Conditional Statements</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/targetvariables.html b/SystemTap_Beginners_Guide/targetvariables.html
index 1599d9fa..41b6f0a4 100644
--- a/SystemTap_Beginners_Guide/targetvariables.html
+++ b/SystemTap_Beginners_Guide/targetvariables.html
@@ -1,6 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>3.3.2. Target Variables</h3></div></div></div><a id="idm246929816064" class="indexterm"></a><a id="idm246917819632" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="scriptconstructions.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="typecasting.html"><strong>Next</strong></a></li></ul><div class="section" id="targetvariables"><div class="titlepage"><div><div><h3 class="title" id="targetvariables">3.3.2. Target Variables</h3></div></div></div><a id="idp21279136" class="indexterm"></a><a id="idp50692384" 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"><code>function</code></em>")</code> and <code class="command">kernel.statement("<em class="replaceable"><code>statement</code></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: 3 The probe events that map to actual locations in the code (for example <code class="command">kernel.function("<em class="replaceable"><code>function</code></em>")</code> and <code class="command">kernel.statement("<em class="replaceable"><code>statement</code></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:
5 </div><pre class="screen">stap -L 'kernel.function("vfs_read")'</pre><div class="para"> 4 </div><pre class="screen">stap -L 'kernel.function("vfs_read")'</pre><div class="para">
6 This will yield something similar to the following: 5 This will yield something similar to the following:
@@ -23,38 +22,38 @@ stap -e 'probe kernel.function("vfs_read") {
23current files_stat max_files: 386070 22current files_stat max_files: 386070
24</pre><div class="para"> 23</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. 24 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.
26 </div><div class="variablelist"><dl><dt class="varlistentry"><span class="term">kernel_char(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para"> 25 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">kernel_char(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para">
27 Obtain the character at <em class="replaceable"><code>address</code></em> from kernel memory. 26 Obtain the character at <em class="replaceable"><code>address</code></em> from kernel memory.
28 </div></dd><dt class="varlistentry"><span class="term">kernel_short(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para"> 27 </div></dd><dt><span class="term">kernel_short(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para">
29 Obtain the short at <em class="replaceable"><code>address</code></em> from kernel memory. 28 Obtain the short at <em class="replaceable"><code>address</code></em> from kernel memory.
30 </div></dd><dt class="varlistentry"><span class="term">kernel_int(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para"> 29 </div></dd><dt><span class="term">kernel_int(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para">
31 Obtain the int at <em class="replaceable"><code>address</code></em> from kernel memory. 30 Obtain the int at <em class="replaceable"><code>address</code></em> from kernel memory.
32 </div></dd><dt class="varlistentry"><span class="term">kernel_long(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para"> 31 </div></dd><dt><span class="term">kernel_long(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para">
33 Obtain the long at <em class="replaceable"><code>address</code></em> from kernel memory 32 Obtain the long at <em class="replaceable"><code>address</code></em> from kernel memory
34 </div></dd><dt class="varlistentry"><span class="term">kernel_string(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para"> 33 </div></dd><dt><span class="term">kernel_string(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para">
35 Obtain the string at <em class="replaceable"><code>address</code></em> from kernel memory. 34 Obtain the string at <em class="replaceable"><code>address</code></em> from kernel memory.
36 </div></dd><dt class="varlistentry"><span class="term">kernel_string_n(<em class="replaceable"><code>address</code></em>, <em class="replaceable"><code>n</code></em>)</span></dt><dd><div class="para"> 35 </div></dd><dt><span class="term">kernel_string_n(<em class="replaceable"><code>address</code></em>, <em class="replaceable"><code>n</code></em>)</span></dt><dd><div class="para">
37 Obtain the string at <em class="replaceable"><code>address</code></em> from the kernel memory and limits the string to <em class="replaceable"><code>n</code></em> bytes. 36 Obtain the string at <em class="replaceable"><code>address</code></em> from the kernel memory and limits the string to <em class="replaceable"><code>n</code></em> bytes.
38 </div></dd></dl></div><div class="section" id="targetprettyprinting"><div class="titlepage"><div><div><h4 class="title" id="targetprettyprinting">3.3.2.1. Pretty Printing Target Variables</h4></div></div></div><a id="idp26645376" class="indexterm"></a><div class="para"> 37 </div></dd></dl></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="targetprettyprinting"></a>3.3.2.1. Pretty Printing Target Variables</h4></div></div></div><a id="idm246871566080" class="indexterm"></a><div class="para">
39 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: 38 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:
40 </div><div class="variablelist"><dl><dt class="varlistentry"><span class="term">$$vars</span></dt><dd><div class="para"> 39 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">$$vars</span></dt><dd><div class="para">
41 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. 40 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.
42 </div></dd><dt class="varlistentry"><span class="term">$$locals</span></dt><dd><div class="para"> 41 </div></dd><dt><span class="term">$$locals</span></dt><dd><div class="para">
43 Expands to a subset of <code class="command">$$vars</code> containing only the local variables. 42 Expands to a subset of <code class="command">$$vars</code> containing only the local variables.
44 </div></dd><dt class="varlistentry"><span class="term">$$parms</span></dt><dd><div class="para"> 43 </div></dd><dt><span class="term">$$parms</span></dt><dd><div class="para">
45 Expands to a subset of <code class="command">$$vars</code> containing only the function parameters. 44 Expands to a subset of <code class="command">$$vars</code> containing only the function parameters.
46 </div></dd><dt class="varlistentry"><span class="term">$$return</span></dt><dd><div class="para"> 45 </div></dd><dt><span class="term">$$return</span></dt><dd><div class="para">
47 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. 46 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.
48 </div></dd></dl></div><div class="para"> 47 </div></dd></dl></div><div class="para">
49 Below is a command-line script that prints the values of the parameters passed into the function <code class="command">vfs_read</code>: 48 Below is a command-line script that prints the values of the parameters passed into the function <code class="command">vfs_read</code>:
50 </div><pre class="programlisting">stap -e 'probe kernel.function("vfs_read") {printf("%s\n", $$parms); exit(); }'</pre><div class="para"> 49 </div><pre class="programlisting">stap -e 'probe kernel.function("vfs_read") {printf("%s\n", $$parms); exit(); }'</pre><div class="para">
51 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: 50 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:
52 </div><pre class="programlisting">file=0xffff8800b40d4c80 buf=0x7fff634403e0 count=0x2004 pos=0xffff8800af96df48</pre><div class="para"> 51 </div><pre class="programlisting">file=0xffff8800b40d4c80 buf=0x7fff634403e0 count=0x2004 pos=0xffff8800af96df48</pre><div class="para">
53 Having the address a pointer points to may not be useful. You might be more interested in the fields of the data structure the pointer points to. You can use the 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>: 52 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>:
54 </div><pre class="programlisting">stap -e 'probe kernel.function("vfs_read") {printf("%s\n", $$parms$); exit(); }'</pre><div class="para"> 53 </div><pre class="programlisting">stap -e 'probe kernel.function("vfs_read") {printf("%s\n", $$parms$); exit(); }'</pre><div class="para">
55 The previous command line will generate something similar to the following with the fields of the data structure included in the output: 54 The previous command line will generate something similar to the following with the fields of the data structure included in the output:
56 </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"> 55 </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">
57 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: 56 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:
58 </div><pre class="programlisting">stap -e 'probe kernel.function("vfs_read") {printf("%s\n", $$parms$$); exit(); }'</pre><div class="para"> 57 </div><pre class="programlisting">stap -e 'probe kernel.function("vfs_read") {printf("%s\n", $$parms$$); exit(); }'</pre><div class="para">
59 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 represenative output from the previous command-line script, which is truncated because of the string size limit: 58 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:
60 </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> 59 </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 4d76c35f..521aa760 100644
--- a/SystemTap_Beginners_Guide/threadtimessect.html
+++ b/SystemTap_Beginners_Guide/threadtimessect.html
@@ -1,8 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>5.3.3. Determining Time Spent in Kernel and User Space</h3></div></div></div><a id="idm246868872928" class="indexterm"></a><a id="idm246895665968" class="indexterm"></a><a id="idm246913172240" class="indexterm"></a><a id="idm246929638480" class="indexterm"></a><a id="idm246912379328" class="indexterm"></a><a id="idm246928045904" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="paracallgraph.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="timeoutssect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" id="threadtimessect" lang="en-US"><div class="titlepage"><div><div><h3 class="title" id="threadtimessect">5.3.3. Determining Time Spent in Kernel and User Space</h3></div></div></div><a id="idp64768016" class="indexterm"></a><a id="idp63998688" class="indexterm"></a><a id="idp27377296" class="indexterm"></a><a id="idp36689872" class="indexterm"></a><a id="idp14278752" class="indexterm"></a><a id="idp14517056" class="indexterm"></a><div class="para">
4 This section illustrates how to determine the amount of time any given thread is spending in either kernel or user-space. 3 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="formalpara" id="threadtimes"><h5 class="formalpara">thread-times.stp</h5> 4 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">thread-times.stp</div>
6 5
7<pre class="programlisting">#! /usr/bin/env stap 6<pre class="programlisting">#! /usr/bin/env stap
8 7
@@ -40,11 +39,11 @@ probe timer.s(5), end {
40 delete tids 39 delete tids
41} 40}
42</pre> 41</pre>
43 </div><a id="idp56870896" class="indexterm"></a><a id="idp22746320" class="indexterm"></a><a id="idp40100112" class="indexterm"></a><div class="para"> 42 </div><a id="idm246880214768" class="indexterm"></a><a id="idm246921055104" class="indexterm"></a><a id="idm246926338064" class="indexterm"></a><div class="para">
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. 43 <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"> 44 </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>: 45 <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" id="threadtimesoutput"><h6>Example 5.15. <a class="xref" href="threadtimessect.html#threadtimes">thread-times.stp</a> Sample Output</h6><div class="example-contents"><pre class="screen"> tid %user %kernel (of 20002 ticks) 46 </div><div class="example"><a id="threadtimesoutput"></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)
48 0 0.00% 87.88% 47 0 0.00% 87.88%
4932169 5.24% 0.03% 4832169 5.24% 0.03%
50 9815 3.33% 0.36% 49 9815 3.33% 0.36%
@@ -64,4 +63,4 @@ probe timer.s(5), end {
64 3883 0.00% 0.00% 63 3883 0.00% 0.00%
65 3775 0.00% 0.00% 64 3775 0.00% 0.00%
66 3943 0.00% 0.00% 65 3943 0.00% 0.00%
67 3873 0.00% 0.00%</pre></div></div><br class="example-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="paracallgraph.html"><strong>Prev</strong>5.3.2. Call Graph Tracing</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="timeoutssect.html"><strong>Next</strong>5.3.4. Monitoring Polling Applications</a></li></ul></body></html> 66 3873 0.00% 0.00%</pre></div></div><br class="example-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="paracallgraph.html"><strong>Prev</strong>5.3.2. Call Graph Tracing</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="timeoutssect.html"><strong>Next</strong>5.3.4. Monitoring Polling Applications</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/timeoutssect.html b/SystemTap_Beginners_Guide/timeoutssect.html
index ab940fd5..d2b4b35d 100644
--- a/SystemTap_Beginners_Guide/timeoutssect.html
+++ b/SystemTap_Beginners_Guide/timeoutssect.html
@@ -1,8 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>5.3.4. Monitoring Polling Applications</h3></div></div></div><a id="idm246926947792" class="indexterm"></a><a id="idm246882985536" class="indexterm"></a><a id="idm246880103680" class="indexterm"></a><a id="idm246877918928" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="threadtimessect.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="topsyssect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" id="timeoutssect" lang="en-US"><div class="titlepage"><div><div><h3 class="title" id="timeoutssect">5.3.4. Monitoring Polling Applications</h3></div></div></div><a id="idp40515232" class="indexterm"></a><a id="idm1944320" class="indexterm"></a><a id="idp23930944" class="indexterm"></a><a id="idm242272" 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. 3 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.
5 </div><div class="formalpara" id="timeouts"><h5 class="formalpara">timeout.stp</h5> 4 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">timeout.stp</div>
6 5
7<pre class="programlisting">#! /usr/bin/env stap 6<pre class="programlisting">#! /usr/bin/env stap
8# Copyright (C) 2009 Red Hat, Inc. 7# Copyright (C) 2009 Red Hat, Inc.
@@ -109,7 +108,7 @@ probe timer.s(1) {
109</pre> 108</pre>
110 </div><div class="para"> 109 </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: 110 <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 </div><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 111 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
113 <code class="command">poll</code> 112 <code class="command">poll</code>
114 </div></li><li class="listitem"><div class="para"> 113 </div></li><li class="listitem"><div class="para">
115 <code class="command">select</code> 114 <code class="command">select</code>
@@ -123,7 +122,7 @@ probe timer.s(1) {
123 <code class="command">nanosleep</code> 122 <code class="command">nanosleep</code>
124 </div></li><li class="listitem"><div class="para"> 123 </div></li><li class="listitem"><div class="para">
125 <code class="command">signal</code> 124 <code class="command">signal</code>
126 </div></li></ul></div><a id="idp21216560" class="indexterm"></a><a id="idp62452096" class="indexterm"></a><a id="idp34235568" class="indexterm"></a><div class="example" id="timeoutsoutput"><h6>Example 5.16. <a class="xref" href="timeoutssect.html#timeouts">timeout.stp</a> Sample Output</h6><div class="example-contents"><pre class="screen"> uid | poll select epoll itimer futex nanosle signal| process 125 </div></li></ul></div><a id="idm246877847904" class="indexterm"></a><a id="idm246928961024" class="indexterm"></a><a id="idm246868851168" class="indexterm"></a><div class="example"><a id="timeoutsoutput"></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
12728937 | 148793 0 0 4727 37288 0 0| firefox 12628937 | 148793 0 0 4727 37288 0 0| firefox
12822945 | 0 56949 0 1 0 0 0| scim-bridge 12722945 | 0 56949 0 1 0 0 0| scim-bridge
129 0 | 0 0 0 36414 0 0 0| swapper 128 0 | 0 0 0 36414 0 0 0| swapper
@@ -145,4 +144,4 @@ probe timer.s(1) {
14529548 | 0 1440 0 0 0 0 0| httpd 14429548 | 0 1440 0 0 0 0 0| httpd
146 1862 | 0 0 0 0 0 1438 0| iscsid</pre></div></div><br class="example-break" /><div class="para"> 145 1862 | 0 0 0 0 0 1438 0| iscsid</pre></div></div><br class="example-break" /><div class="para">
147 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. 146 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.
148 </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> 147 </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 8fbddcdb..6d3642df 100644
--- a/SystemTap_Beginners_Guide/topsyssect.html
+++ b/SystemTap_Beginners_Guide/topsyssect.html
@@ -1,8 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>5.3.5. Tracking Most Frequently Used System Calls</h3></div></div></div><a id="idm246883130992" class="indexterm"></a><a id="idm246868845600" class="indexterm"></a><a id="idm246927184656" class="indexterm"></a><a id="idm246920873616" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="timeoutssect.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="syscallsbyprocpidsect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" id="topsyssect" lang="en-US"><div class="titlepage"><div><div><h3 class="title" id="topsyssect">5.3.5. Tracking Most Frequently Used System Calls</h3></div></div></div><a id="idp27487024" class="indexterm"></a><a id="idm1123712" class="indexterm"></a><a id="idp44808656" class="indexterm"></a><a id="idp15386160" 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>. 3 <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>.
5 </div><div class="formalpara" id="topsys"><h5 class="formalpara">topsys.stp</h5> 4 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">topsys.stp</div>
6 5
7<pre class="programlisting">#! /usr/bin/env stap 6<pre class="programlisting">#! /usr/bin/env stap
8# 7#
@@ -13,13 +12,13 @@
13global syscalls_count 12global syscalls_count
14 13
15probe syscall.* { 14probe syscall.* {
16 syscalls_count[name]++ 15 syscalls_count[name] &lt;&lt;&lt; 1
17} 16}
18 17
19function print_systop () { 18function print_systop () {
20 printf ("%25s %10s\n", "SYSCALL", "COUNT") 19 printf ("%25s %10s\n", "SYSCALL", "COUNT")
21 foreach (syscall in syscalls_count- limit 20) { 20 foreach (syscall in syscalls_count- limit 20) {
22 printf("%25s %10d\n", syscall, syscalls_count[syscall]) 21 printf("%25s %10d\n", syscall, @count(syscalls_count[syscall]))
23 } 22 }
24 delete syscalls_count 23 delete syscalls_count
25} 24}
@@ -31,7 +30,7 @@ probe timer.s(5) {
31</pre> 30</pre>
32 </div><div class="para"> 31 </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. 32 <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.
34 </div><a id="idp31839584" class="indexterm"></a><a id="idp33594320" class="indexterm"></a><a id="idp50217808" class="indexterm"></a><div class="example" id="topsysoutput"><h6>Example 5.17. <a class="xref" href="topsyssect.html#topsys">topsys.stp</a> Sample Output</h6><div class="example-contents"><pre class="screen">-------------------------------------------------------------- 33 </div><a id="idm246927867760" class="indexterm"></a><a id="idm246928583168" class="indexterm"></a><a id="idm246883084736" class="indexterm"></a><div class="example"><a id="topsysoutput"></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">--------------------------------------------------------------
35 SYSCALL COUNT 34 SYSCALL COUNT
36 gettimeofday 1857 35 gettimeofday 1857
37 read 1821 36 read 1821
@@ -53,4 +52,4 @@ probe timer.s(5) {
53 time 81 52 time 81
54 sigreturn 72 53 sigreturn 72
55 fstat 66 54 fstat 66
56--------------------------------------------------------------</pre></div></div><br class="example-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="timeoutssect.html"><strong>Prev</strong>5.3.4. Monitoring Polling Applications</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="syscallsbyprocpidsect.html"><strong>Next</strong>5.3.6. Tracking System Call Volume Per Process</a></li></ul></body></html> 55--------------------------------------------------------------</pre></div></div><br class="example-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="timeoutssect.html"><strong>Prev</strong>5.3.4. Monitoring Polling Applications</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="syscallsbyprocpidsect.html"><strong>Next</strong>5.3.6. Tracking System Call Volume Per Process</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/traceio2sect.html b/SystemTap_Beginners_Guide/traceio2sect.html
index 96392eb8..315fa98b 100644
--- a/SystemTap_Beginners_Guide/traceio2sect.html
+++ b/SystemTap_Beginners_Guide/traceio2sect.html
@@ -1,8 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>5.2.4. I/O Monitoring (By Device)</h3></div></div></div><a id="idm246927255200" class="indexterm"></a><a id="idm246929471584" class="indexterm"></a><a id="idm246883061568" class="indexterm"></a><a id="idm246912960896" class="indexterm"></a><a id="idm246882996240" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="traceiosect.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="inodewatchsect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" id="traceio2sect" lang="en-US"><div class="titlepage"><div><div><h3 class="title" id="traceio2sect">5.2.4. I/O Monitoring (By Device)</h3></div></div></div><a id="idp41455856" class="indexterm"></a><a id="idp49267920" class="indexterm"></a><a id="idp38194288" class="indexterm"></a><a id="idp41609904" class="indexterm"></a><a id="idp38715840" class="indexterm"></a><div class="para">
4 This section describes how to monitor I/O activity on a specific device. 3 This section describes how to monitor I/O activity on a specific device.
5 </div><div class="formalpara" id="traceio2"><h5 class="formalpara">traceio2.stp</h5> 4 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">traceio2.stp</div>
6 5
7<pre class="programlisting">#! /usr/bin/env stap 6<pre class="programlisting">#! /usr/bin/env stap
8 7
@@ -24,18 +23,18 @@ probe vfs.write, vfs.read
24 execname(), pid(), probefunc(), dev) 23 execname(), pid(), probefunc(), dev)
25} 24}
26</pre> 25</pre>
27 </div><a id="idp18030512" class="indexterm"></a><a id="idp39328496" class="indexterm"></a><a id="idm3435952" class="indexterm"></a><a id="idp49674704" class="indexterm"></a><a id="idp31863936" class="indexterm"></a><a id="idm1427040" class="indexterm"></a><div class="para"> 26 </div><a id="idm246920929968" class="indexterm"></a><a id="idm246927905008" class="indexterm"></a><a id="idm246912066752" class="indexterm"></a><a id="idm246869979344" class="indexterm"></a><a id="idm246917514560" class="indexterm"></a><a id="idm246883144272" class="indexterm"></a><div class="para">
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"><code>directory</code></em></code>, where <code class="command"><em class="replaceable"><code>directory</code></em></code> is located in the device you wish to monitor. 27 <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"><code>directory</code></em></code>, where <code class="command"><em class="replaceable"><code>directory</code></em></code> is located in the device to be monitored.
29 </div><a id="idp41841792" class="indexterm"></a><a id="idp17295520" class="indexterm"></a><a id="idp36532720" class="indexterm"></a><div class="para"> 28 </div><a id="idm246870503072" class="indexterm"></a><a id="idm246873561088" class="indexterm"></a><a id="idm246929558528" 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. 29 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"> 30 </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 (i.e. <code class="command">vfs_read</code> or <code class="command">vfs_write</code>), and the kernel device number. 31 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"> 32 </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. 33 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" id="traceio2output"><h6>Example 5.9. <a class="xref" href="traceio2sect.html#traceio2">traceio2.stp</a> Sample Output</h6><div class="example-contents"><pre class="screen">[...] 34 </div><div class="example"><a id="traceio2output"></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">[...]
36synergyc(3722) vfs_read 0x800005 35synergyc(3722) vfs_read 0x800005
37synergyc(3722) vfs_read 0x800005 36synergyc(3722) vfs_read 0x800005
38cupsd(2889) vfs_write 0x800005 37cupsd(2889) vfs_write 0x800005
39cupsd(2889) vfs_write 0x800005 38cupsd(2889) vfs_write 0x800005
40cupsd(2889) vfs_write 0x800005 39cupsd(2889) vfs_write 0x800005
41[...]</pre></div></div><br class="example-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="traceiosect.html"><strong>Prev</strong>5.2.3. Track Cumulative IO</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="inodewatchsect.html"><strong>Next</strong>5.2.5. Monitoring Reads and Writes to a File</a></li></ul></body></html> 40[...]</pre></div></div><br class="example-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="traceiosect.html"><strong>Prev</strong>5.2.3. Track Cumulative IO</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="inodewatchsect.html"><strong>Next</strong>5.2.5. Monitoring Reads and Writes to a File</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/traceiosect.html b/SystemTap_Beginners_Guide/traceiosect.html
index 459d2325..3509e67e 100644
--- a/SystemTap_Beginners_Guide/traceiosect.html
+++ b/SystemTap_Beginners_Guide/traceiosect.html
@@ -1,8 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>5.2.3. Track Cumulative IO</h3></div></div></div><a id="idm246916989888" class="indexterm"></a><a id="idm246918027920" class="indexterm"></a><a id="idm246912007056" class="indexterm"></a><a id="idm246873307312" class="indexterm"></a><a id="idm246877669696" class="indexterm"></a><a id="idm246875169248" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="iotimesect.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="traceio2sect.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="section" id="traceiosect" lang="en-US"><div class="titlepage"><div><div><h3 class="title" id="traceiosect">5.2.3. Track Cumulative IO</h3></div></div></div><a id="idp32300032" class="indexterm"></a><a id="idp22081536" class="indexterm"></a><a id="idp35047680" class="indexterm"></a><a id="idp40739360" class="indexterm"></a><a id="idp17636592" class="indexterm"></a><a id="idp48307808" class="indexterm"></a><div class="para">
4 This section describes how to track the cumulative amount of I/O to the system. 3 This section describes how to track the cumulative amount of I/O to the system.
5 </div><div class="formalpara" id="traceio"><h5 class="formalpara">traceio.stp</h5> 4 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">traceio.stp</div>
6 5
7<pre class="programlisting">#! /usr/bin/env stap 6<pre class="programlisting">#! /usr/bin/env stap
8# traceio.stp 7# traceio.stp
@@ -19,13 +18,17 @@
19global reads, writes, total_io 18global reads, writes, total_io
20 19
21probe vfs.read.return { 20probe vfs.read.return {
22 reads[pid(),execname()] += $return 21 if ($return &gt; 0) {
23 total_io[pid(),execname()] += $return 22 reads[pid(),execname()] += $return
23 total_io[pid(),execname()] += $return
24 }
24} 25}
25 26
26probe vfs.write.return { 27probe vfs.write.return {
27 writes[pid(),execname()] += $return 28 if ($return &gt; 0) {
28 total_io[pid(),execname()] += $return 29 writes[pid(),execname()] += $return
30 total_io[pid(),execname()] += $return
31 }
29} 32}
30 33
31function humanreadable(bytes) { 34function humanreadable(bytes) {
@@ -52,9 +55,9 @@ probe timer.s(1) {
52</pre> 55</pre>
53 </div><div class="para"> 56 </div><div class="para">
54 <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 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.
55 </div><a id="idp23108848" class="indexterm"></a><a id="idm9607152" class="indexterm"></a><a id="idp23730832" class="indexterm"></a><div class="para"> 58 </div><a id="idm246873303856" class="indexterm"></a><a id="idm246870461904" class="indexterm"></a><a id="idm246871118352" class="indexterm"></a><div class="para">
56 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 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>.
57 </div><div class="example" id="traceiooutput"><h6>Example 5.8. <a class="xref" href="traceiosect.html#traceio">traceio.stp</a> Sample Output</h6><div class="example-contents"><pre class="screen">[...] 60 </div><div class="example"><a id="traceiooutput"></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">[...]
58 Xorg r: 583401 KiB w: 0 KiB 61 Xorg r: 583401 KiB w: 0 KiB
59 floaters r: 96 KiB w: 7130 KiB 62 floaters r: 96 KiB w: 7130 KiB
60multiload-apple r: 538 KiB w: 537 KiB 63multiload-apple r: 538 KiB w: 537 KiB
@@ -75,4 +78,4 @@ pam_timestamp_c r: 138 KiB w: 0 KiB
75 snmpd r: 46 KiB w: 0 KiB 78 snmpd r: 46 KiB w: 0 KiB
76 pcscd r: 28 KiB w: 0 KiB 79 pcscd r: 28 KiB w: 0 KiB
77 irqbalance r: 27 KiB w: 4 KiB 80 irqbalance r: 27 KiB w: 4 KiB
78 cupsd r: 4 KiB w: 18 KiB</pre></div></div><br class="example-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="iotimesect.html"><strong>Prev</strong>5.2.2. Tracking I/O Time For Each File Read or Wr...</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="traceio2sect.html"><strong>Next</strong>5.2.4. I/O Monitoring (By Device)</a></li></ul></body></html> 81 cupsd r: 4 KiB w: 18 KiB</pre></div></div><br class="example-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="iotimesect.html"><strong>Prev</strong>5.2.2. Tracking I/O Time For Each File Read or Wr...</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="traceio2sect.html"><strong>Next</strong>5.2.4. I/O Monitoring (By Device)</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/typecasting.html b/SystemTap_Beginners_Guide/typecasting.html
index eed4e964..bedcbd26 100644
--- a/SystemTap_Beginners_Guide/typecasting.html
+++ b/SystemTap_Beginners_Guide/typecasting.html
@@ -1,11 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>3.3.2.2. Typecasting</h4></div></div></div><a id="idm246917320368" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 Availablility" /></head><body><p id="title"><a class="left" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="targetvariables.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="targetavailable.html"><strong>Next</strong></a></li></ul><div class="section" id="typecasting"><div class="titlepage"><div><div><h4 class="title" id="typecasting">3.3.2.2. Typecasting</h4></div></div></div><a id="idp31812288" 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. 3 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.
5 </div><div class="para"> 4 </div><div class="para">
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 arument 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. 5 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.
7 </div><div class="example" id="casting"><h6>Example 3.9. Casting Example</h6><div class="example-contents"><pre class="programlisting">function task_state:long (task:long) 6 </div><div class="example"><a id="casting"></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)
8{ 7{
9 return @cast(task, "task_struct", "kernel&lt;linux/sched.h&gt;")-&gt;state 8 return @cast(task, "task_struct", "kernel&lt;linux/sched.h&gt;")-&gt;state
10} 9}
11</pre></div></div><br class="example-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="targetvariables.html"><strong>Prev</strong>3.3.2. 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="targetavailable.html"><strong>Next</strong>3.3.2.3. Checking Target Variable Availablility</a></li></ul></body></html> 10</pre></div></div><br class="example-break" /></div><ul class="docnav"><li class="previous"><a accesskey="p" href="targetvariables.html"><strong>Prev</strong>3.3.2. 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="targetavailable.html"><strong>Next</strong>3.3.2.3. Checking Target Variable Availability</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/understanding-how-systemtap-works.html b/SystemTap_Beginners_Guide/understanding-how-systemtap-works.html
index 3333db7d..522d8fa1 100644
--- a/SystemTap_Beginners_Guide/understanding-how-systemtap-works.html
+++ b/SystemTap_Beginners_Guide/understanding-how-systemtap-works.html
@@ -1,14 +1,13 @@
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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></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="idm246881862336" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="using-usage.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="scripts.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" id="understanding-how-systemtap-works" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 3. Understanding How SystemTap Works</h2></div></div></div><div class="toc"><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></div><a id="idm10088640" 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. 3 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.
5 </div><a id="idm10090048" class="indexterm"></a><a id="idm10091744" class="indexterm"></a><a id="idm10095504" class="indexterm"></a><div class="para"> 4 </div><a id="idm246881863680" class="indexterm"></a><a id="idm246921644352" class="indexterm"></a><a id="idm246921647344" class="indexterm"></a><div class="para">
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. 5 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.
7 </div><a id="idm10096736" class="indexterm"></a><a id="idm10099664" class="indexterm"></a><div class="para"> 6 </div><a id="idm246921649136" class="indexterm"></a><a id="idm246921650176" class="indexterm"></a><div class="para">
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. 7 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.
9 </div><div class="section" id="understanding-architecture-tools"><div class="titlepage"><div><div><h2 class="title" id="understanding-architecture-tools">3.1. Architecture</h2></div></div></div><a id="idm10102112" class="indexterm"></a><a id="idm6421920" class="indexterm"></a><a id="idm6420960" class="indexterm"></a><div class="para"> 8 </div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="understanding-architecture-tools"></a>3.1. Architecture</h2></div></div></div><a id="idm246921654576" class="indexterm"></a><a id="idm246921656032" class="indexterm"></a><a id="idm246921657024" class="indexterm"></a><div class="para">
10 A SystemTap session begins when you run a SystemTap script. This session occurs in the following fashion: 9 A SystemTap session begins when you run a SystemTap script. This session occurs in the following fashion:
11 </div><div class="procedure" id="systemtapsession"><h6>Procedure 3.1. SystemTap Session</h6><a id="idm6423808" class="indexterm"></a><a id="idm6425344" class="indexterm"></a><a id="idm6426320" class="indexterm"></a><ol class="1"><li class="step"><div class="para"> 10 </div><div xmlns:d="http://docbook.org/ns/docbook" class="procedure"><a id="systemtapsession"></a><p class="title"><strong>Procedure 3.1. SystemTap Session</strong></p><a id="idm246921659952" class="indexterm"></a><a id="idm246921660928" class="indexterm"></a><a id="idm246921663856" class="indexterm"></a><ol class="1"><li class="step"><div class="para">
12 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. 11 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.
13 </div></li><li class="step"><div class="para"> 12 </div></li><li class="step"><div class="para">
14 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). 13 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).
@@ -20,4 +19,4 @@
20 Once the SystemTap session is terminated, the probes are disabled, and the kernel module is unloaded. 19 Once the SystemTap session is terminated, the probes are disabled, and the kernel module is unloaded.
21 </div></li></ol></div><div class="para"> 20 </div></li></ol></div><div class="para">
22 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). 21 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).
23 </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> 22 </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 a53ac45b..7265a1e4 100644
--- a/SystemTap_Beginners_Guide/understanding-tapsets.html
+++ b/SystemTap_Beginners_Guide/understanding-tapsets.html
@@ -1,11 +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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>3.6. Tapsets</h2></div></div></div><a id="idm246928952464" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="arrayops-aggregates.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="userspace-probing.html"><strong>Next</strong></a></li></ul><div class="section" id="understanding-tapsets"><div class="titlepage"><div><div><h2 class="title" id="understanding-tapsets">3.6. Tapsets</h2></div></div></div><a id="idp13753120" 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). 3 <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).
5 </div><div class="para"> 4 </div><div class="para">
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. 5 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.
7 </div><div class="para"> 6 </div><div class="para">
8 Simply put, the tapset library is an abstraction layer designed to make it easier for users to define events and functions. In a manner of speaking, 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. 7 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.
9 </div><div class="para"> 8 </div><div class="para">
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>. 9 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>.
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> 10 </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 14d4028c..e11e9556 100644
--- a/SystemTap_Beginners_Guide/useful-systemtap-scripts.html
+++ b/SystemTap_Beginners_Guide/useful-systemtap-scripts.html
@@ -1,12 +1,11 @@
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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></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="idm246918175088" class="indexterm"></a><a id="idm246918176944" class="indexterm"></a><a id="idm246918177872" class="indexterm"></a><a id="idm246918178800" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="ustack.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="mainsect-disk.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" id="useful-systemtap-scripts" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 5. Useful SystemTap Scripts</h2></div></div></div><div class="toc"><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></div><a id="idm1938528" class="indexterm"></a><a id="idm1939936" class="indexterm"></a><a id="idm1940864" class="indexterm"></a><a id="idm1941792" class="indexterm"></a><div class="para">
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. 3 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.
5 </div><div class="section" id="mainsect-network"><div class="titlepage"><div><div><h2 class="title" id="mainsect-network">5.1. Network</h2></div></div></div><div class="para"> 4 </div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="mainsect-network"></a>5.1. Network</h2></div></div></div><div class="para">
6 The following sections showcase scripts that trace network-related functions and build a profile of network activity. 5 The following sections showcase scripts that trace network-related functions and build a profile of network activity.
7 </div><div xml:lang="en-US" class="section" id="nettopsect" lang="en-US"><div class="titlepage"><div><div><h3 class="title" id="nettopsect">5.1.1. Network Profiling</h3></div></div></div><a id="idp40475696" class="indexterm"></a><a id="idp40474256" class="indexterm"></a><a id="idp40473968" class="indexterm"></a><a id="idp40471088" class="indexterm"></a><a id="idp13729776" class="indexterm"></a><div class="para"> 6 </div><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="nettopsect"></a>5.1.1. Network Profiling</h3></div></div></div><a id="idm246927849152" class="indexterm"></a><a id="idm246927850608" class="indexterm"></a><a id="idm246927852176" class="indexterm"></a><a id="idm246895709792" class="indexterm"></a><a id="idm246895711248" class="indexterm"></a><div class="para">
8 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. 7 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.
9 </div><div class="formalpara" id="nettop"><h5 class="formalpara">nettop.stp</h5> 8 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">nettop.stp</div>
10 9
11<pre class="programlisting">#! /usr/bin/env stap 10<pre class="programlisting">#! /usr/bin/env stap
12 11
@@ -57,22 +56,22 @@ probe timer.ms(5000), end, error
57 print_activity() 56 print_activity()
58} 57}
59</pre> 58</pre>
60 </div><a id="idp23122912" class="indexterm"></a><a id="idp60259712" class="indexterm"></a><a id="idp13724176" class="indexterm"></a><div class="para"> 59 </div><a id="idm246917411344" class="indexterm"></a><a id="idm246929725840" class="indexterm"></a><a id="idm246921049808" class="indexterm"></a><div class="para">
61 Note that <code class="command">function print_activity()</code> uses the following expressions: 60 Note that <code class="command">function print_activity()</code> uses the following expressions:
62 </div><pre class="screen">n_xmit ? @sum(ifxmit[pid, dev, exec, uid])/1024 : 0 61 </div><pre class="screen">n_xmit ? @sum(ifxmit[pid, dev, exec, uid])/1024 : 0
63n_recv ? @sum(ifrecv[pid, dev, exec, uid])/1024 : 0</pre><div class="para"> 62n_recv ? @sum(ifrecv[pid, dev, exec, uid])/1024 : 0</pre><div class="para">
64 These expressions are if/else conditionals. The first statement is simply a more concise way of writing the following psuedo code: 63 These expressions are if/else conditionals. The first statement is a more concise way of writing the following psuedo code:
65 </div><pre class="screen">if n_recv != 0 then 64 </div><pre class="screen">if n_recv != 0 then
66 @sum(ifrecv[pid, dev, exec, uid])/1024 65 @sum(ifrecv[pid, dev, exec, uid])/1024
67else 66else
68 0</pre><div class="para"> 67 0</pre><div class="para">
69 <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: 68 <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:
70 </div><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 69 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
71 <code class="computeroutput">PID</code> — the ID of the listed process. 70 <code class="computeroutput">PID</code> — the ID of the listed process.
72 </div></li><li class="listitem"><div class="para"> 71 </div></li><li class="listitem"><div class="para">
73 <code class="computeroutput">UID</code> — user ID. A user ID of <code class="computeroutput">0</code> refers to the root user. 72 <code class="computeroutput">UID</code> — user ID. A user ID of <code class="computeroutput">0</code> refers to the root user.
74 </div></li><li class="listitem"><div class="para"> 73 </div></li><li class="listitem"><div class="para">
75 <code class="computeroutput">DEV</code> — which ethernet device the process used to send / receive data (e.g. eth0, eth1) 74 <code class="computeroutput">DEV</code> — which ethernet device the process used to send / receive data (for example, eth0, eth1)
76 </div></li><li class="listitem"><div class="para"> 75 </div></li><li class="listitem"><div class="para">
77 <code class="computeroutput">XMIT_PK</code> — number of packets transmitted by the process 76 <code class="computeroutput">XMIT_PK</code> — number of packets transmitted by the process
78 </div></li><li class="listitem"><div class="para"> 77 </div></li><li class="listitem"><div class="para">
@@ -83,7 +82,7 @@ else
83 <code class="computeroutput">RECV_KB</code> — amount of data received by the service, in kilobytes 82 <code class="computeroutput">RECV_KB</code> — amount of data received by the service, in kilobytes
84 </div></li></ul></div><div class="para"> 83 </div></li></ul></div><div class="para">
85 <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: 84 <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:
86 </div><div class="example" id="nettopoutput"><h6>Example 5.1. <a class="xref" href="useful-systemtap-scripts.html#nettop">nettop.stp</a> Sample Output</h6><div class="example-contents"><pre class="screen">[...] 85 </div><div class="example"><a id="nettopoutput"></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">[...]
87 PID UID DEV XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND 86 PID UID DEV XMIT_PK RECV_PK XMIT_KB RECV_KB COMMAND
88 0 0 eth0 0 5 0 0 swapper 87 0 0 eth0 0 5 0 0 swapper
8911178 0 eth0 2 0 0 0 synergyc 8811178 0 eth0 2 0 0 0 synergyc
@@ -106,9 +105,9 @@ else
10611178 0 eth0 43 1 3 0 synergyc 10511178 0 eth0 43 1 3 0 synergyc
10711362 0 eth0 0 7 0 0 firefox 10611362 0 eth0 0 7 0 0 firefox
108 3897 0 eth0 0 1 0 0 multiload-apple 107 3897 0 eth0 0 1 0 0 multiload-apple
109[...]</pre></div></div><br class="example-break" /></div><div xml:lang="en-US" class="section" id="sockettracesect" lang="en-US"><div class="titlepage"><div><div><h3 class="title" id="sockettracesect">5.1.2. Tracing Functions Called in Network Socket Code</h3></div></div></div><a id="idp21187056" class="indexterm"></a><a id="idp49668464" class="indexterm"></a><a id="idm9431392" class="indexterm"></a><a id="idp32442192" class="indexterm"></a><a id="idp29947872" class="indexterm"></a><a id="idp49526016" class="indexterm"></a><a id="idp63779600" class="indexterm"></a><a id="idp31277936" class="indexterm"></a><div class="para"> 108[...]</pre></div></div><br class="example-break" /></div><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="sockettracesect"></a>5.1.2. Tracing Functions Called in Network Socket Code</h3></div></div></div><a id="idm246871109008" class="indexterm"></a><a id="idm246880238352" class="indexterm"></a><a id="idm246918104272" class="indexterm"></a><a id="idm246913399936" class="indexterm"></a><a id="idm246927078624" class="indexterm"></a><a id="idm246927410720" class="indexterm"></a><a id="idm246920810544" class="indexterm"></a><a id="idm246926743104" class="indexterm"></a><div class="para">
110 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. 109 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.
111 </div><div class="formalpara" id="sockettrace"><h5 class="formalpara">socket-trace.stp</h5> 110 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">socket-trace.stp</div>
112 111
113<pre class="programlisting">#! /usr/bin/env stap 112<pre class="programlisting">#! /usr/bin/env stap
114 113
@@ -121,7 +120,7 @@ probe kernel.function("*@net/socket.c").return {
121</pre> 120</pre>
122 </div><div class="para"> 121 </div><div class="para">
123 <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. 122 <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.
124 </div><div class="example" id="sockettraceoutput"><h6>Example 5.2. <a class="xref" href="useful-systemtap-scripts.html#sockettrace">socket-trace.stp</a> Sample Output</h6><div class="example-contents"><pre class="screen">[...] 123 </div><div class="example"><a id="sockettraceoutput"></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">[...]
1250 Xorg(3611): -&gt; sock_poll 1240 Xorg(3611): -&gt; sock_poll
1263 Xorg(3611): &lt;- sock_poll 1253 Xorg(3611): &lt;- sock_poll
1270 Xorg(3611): -&gt; sock_poll 1260 Xorg(3611): -&gt; sock_poll
@@ -142,9 +141,9 @@ probe kernel.function("*@net/socket.c").return {
14235 scim-bridge(3883): &lt;- sys_socketcall 14135 scim-bridge(3883): &lt;- sys_socketcall
143[...]</pre></div></div><br class="example-break" /><div class="para"> 142[...]</pre></div></div><br class="example-break" /><div class="para">
144 <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>. 143 <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>.
145 </div></div><div xml:lang="en-US" class="section" id="tcpconnectionssect" lang="en-US"><div class="titlepage"><div><div><h3 class="title" id="tcpconnectionssect">5.1.3. Monitoring Incoming TCP Connections</h3></div></div></div><a id="idp59107328" class="indexterm"></a><a id="idp32306816" class="indexterm"></a><a id="idp26483856" class="indexterm"></a><a id="idp25158288" class="indexterm"></a><a id="idp22705728" class="indexterm"></a><div class="para"> 144 </div></div><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="tcpconnectionssect"></a>5.1.3. Monitoring Incoming TCP Connections</h3></div></div></div><a id="idm246871570432" class="indexterm"></a><a id="idm246918299760" class="indexterm"></a><a id="idm246926647984" class="indexterm"></a><a id="idm246877713872" class="indexterm"></a><a id="idm246929547376" class="indexterm"></a><div class="para">
146 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. 145 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.
147 </div><div class="formalpara" id="tcpconnections"><h5 class="formalpara">tcp_connections.stp</h5> 146 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">tcp_connections.stp</div>
148 147
149<pre class="programlisting">#! /usr/bin/env stap 148<pre class="programlisting">#! /usr/bin/env stap
150 149
@@ -163,7 +162,7 @@ probe kernel.function("tcp_accept").return?,
163</pre> 162</pre>
164 </div><div class="para"> 163 </div><div class="para">
165 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: 164 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:
166 </div><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 165 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
167 Current <code class="command">UID</code> 166 Current <code class="command">UID</code>
168 </div></li><li class="listitem"><div class="para"> 167 </div></li><li class="listitem"><div class="para">
169 <code class="command">CMD</code> - the command accepting the connection 168 <code class="command">CMD</code> - the command accepting the connection
@@ -173,11 +172,11 @@ probe kernel.function("tcp_accept").return?,
173 Port used by the connection 172 Port used by the connection
174 </div></li><li class="listitem"><div class="para"> 173 </div></li><li class="listitem"><div class="para">
175 IP address from which the TCP connection originated 174 IP address from which the TCP connection originated
176 </div></li></ul></div><div class="example" id="tcpconnectionsoutput"><h6>Example 5.3. <a class="xref" href="useful-systemtap-scripts.html#tcpconnections">tcp_connections.stp</a> Sample Output</h6><div class="example-contents"><pre class="screen">UID CMD PID PORT IP_SOURCE 175 </div></li></ul></div><div class="example"><a id="tcpconnectionsoutput"></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
1770 sshd 3165 22 10.64.0.227 1760 sshd 3165 22 10.64.0.227
1780 sshd 3165 22 10.64.0.227</pre></div></div><br class="example-break" /></div><div xml:lang="en-US" class="section" id="tcpdumplikesect" lang="en-US"><div class="titlepage"><div><div><h3 class="title" id="tcpdumplikesect">5.1.4. Monitoring TCP Packets</h3></div></div></div><a id="idp44693264" class="indexterm"></a><a id="idp35969280" class="indexterm"></a><a id="idm1945808" class="indexterm"></a><a id="idp63046864" class="indexterm"></a><a id="idp27444448" class="indexterm"></a><div class="para"> 1770 sshd 3165 22 10.64.0.227</pre></div></div><br class="example-break" /></div><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="tcpdumplikesect"></a>5.1.4. Monitoring TCP Packets</h3></div></div></div><a id="idm246917316128" class="indexterm"></a><a id="idm246870511072" class="indexterm"></a><a id="idm246929502576" class="indexterm"></a><a id="idm246878073632" class="indexterm"></a><a id="idm246912632672" class="indexterm"></a><div class="para">
179 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. 178 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.
180 </div><div class="formalpara" id="tcpdumplike"><h5 class="formalpara">tcpdumplike.stp</h5> 179 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">tcpdumplike.stp</div>
181 180
182<pre class="programlisting"> #! /usr/bin/env stap 181<pre class="programlisting"> #! /usr/bin/env stap
183 182
@@ -189,6 +188,11 @@ probe begin, timer.s(1) {
189 printf("-----------------------------------------------------------------\n") 188 printf("-----------------------------------------------------------------\n")
190} 189}
191 190
191probe udp.recvmsg /* ,udp.sendmsg */ {
192 printf(" %15s %15s %5d %5d UDP\n",
193 saddr, daddr, sport, dport)
194}
195
192probe tcp.receive { 196probe tcp.receive {
193 printf(" %15s %15s %5d %5d %d %d %d %d %d %d\n", 197 printf(" %15s %15s %5d %5d %d %d %d %d %d %d\n",
194 saddr, daddr, sport, dport, urg, ack, psh, rst, syn, fin) 198 saddr, daddr, sport, dport, urg, ack, psh, rst, syn, fin)
@@ -196,7 +200,7 @@ probe tcp.receive {
196</pre> 200</pre>
197 </div><div class="para"> 201 </div><div class="para">
198 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: 202 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:
199 </div><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 203 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
200 Source and destination IP address (<code class="command">saddr</code>, <code class="command">daddr</code>, respectively) 204 Source and destination IP address (<code class="command">saddr</code>, <code class="command">daddr</code>, respectively)
201 </div></li><li class="listitem"><div class="para"> 205 </div></li><li class="listitem"><div class="para">
202 Source and destination ports (<code class="command">sport</code>, <code class="command">dport</code>, respectively) 206 Source and destination ports (<code class="command">sport</code>, <code class="command">dport</code>, respectively)
@@ -204,7 +208,7 @@ probe tcp.receive {
204 Packet flags 208 Packet flags
205 </div></li></ul></div><div class="para"> 209 </div></li></ul></div><div class="para">
206 To determine the flags used by the packet, <a class="xref" href="useful-systemtap-scripts.html#tcpdumplike">tcpdumplike.stp</a> uses the following functions: 210 To determine the flags used by the packet, <a class="xref" href="useful-systemtap-scripts.html#tcpdumplike">tcpdumplike.stp</a> uses the following functions:
207 </div><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 211 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
208 <code class="command">urg</code> - urgent 212 <code class="command">urg</code> - urgent
209 </div></li><li class="listitem"><div class="para"> 213 </div></li><li class="listitem"><div class="para">
210 <code class="command">ack</code> - acknowledgement 214 <code class="command">ack</code> - acknowledgement
@@ -218,7 +222,7 @@ probe tcp.receive {
218 <code class="command">fin</code> - finished 222 <code class="command">fin</code> - finished
219 </div></li></ul></div><div class="para"> 223 </div></li></ul></div><div class="para">
220 The aforementioned functions return <code class="command">1</code> or <code class="command">0</code> to specify whether the packet uses the corresponding flag. 224 The aforementioned functions return <code class="command">1</code> or <code class="command">0</code> to specify whether the packet uses the corresponding flag.
221 </div><div class="example" id="tcpdumplikeoutput"><h6>Example 5.4. <a class="xref" href="useful-systemtap-scripts.html#tcpdumplike">tcpdumplike.stp</a> Sample Output</h6><div class="example-contents"><pre class="screen">----------------------------------------------------------------- 225 </div><div class="example"><a id="tcpdumplikeoutput"></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">-----------------------------------------------------------------
222 Source IP Dest IP SPort DPort U A P R S F 226 Source IP Dest IP SPort DPort U A P R S F
223----------------------------------------------------------------- 227-----------------------------------------------------------------
224 209.85.229.147 10.0.2.15 80 20373 0 1 1 0 0 0 228 209.85.229.147 10.0.2.15 80 20373 0 1 1 0 0 0
@@ -232,10 +236,9 @@ probe tcp.receive {
232 209.85.229.147 10.0.2.15 80 21141 0 1 1 0 0 0 236 209.85.229.147 10.0.2.15 80 21141 0 1 1 0 0 0
233 209.85.229.147 10.0.2.15 80 21141 0 1 1 0 0 0 237 209.85.229.147 10.0.2.15 80 21141 0 1 1 0 0 0
234 209.85.229.118 10.0.2.15 80 63433 0 1 1 0 0 0 238 209.85.229.118 10.0.2.15 80 63433 0 1 1 0 0 0
235[...]</pre></div></div><br class="example-break" /></div><div xml:lang="en-US" class="section" id="dropwatchsect" lang="en-US"><div class="titlepage"><div><div><h3 class="title" id="dropwatchsect">5.1.5. Monitoring Network Packets Drops in Kernel</h3></div></div></div><a id="idp38171344" class="indexterm"></a><a id="idp33200576" class="indexterm"></a><a id="idp33595616" class="indexterm"></a><a id="idp31425296" class="indexterm"></a><a id="idm2925232" class="indexterm"></a><div class="para"> 239[...]</pre></div></div><br class="example-break" /></div><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h3 class="title"><a id="dropwatchsect"></a>5.1.5. Monitoring Network Packets Drops in Kernel</h3></div></div></div><a id="idm246870389328" class="indexterm"></a><a id="idm246875760144" class="indexterm"></a><a id="idm246929001024" class="indexterm"></a><a id="idm246928729152" class="indexterm"></a><a id="idm246914098768" class="indexterm"></a><div class="para">
236 <a id="idp32785376" class="indexterm"></a> 240 <a id="idm246917002288" 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.
237 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. 241 </div><div class="formalpara"><div xmlns:d="http://docbook.org/ns/docbook" class="title">dropwatch.stp</div>
238 </div><div class="formalpara" id="dropwatch"><h5 class="formalpara">dropwatch.stp</h5>
239 242
240<pre class="programlisting">#! /usr/bin/env stap 243<pre class="programlisting">#! /usr/bin/env stap
241 244
@@ -268,14 +271,14 @@ probe timer.sec(5)
268} 271}
269</pre> 272</pre>
270 </div><div class="para"> 273 </div><div class="para">
271 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: 274 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:
272 </div><pre class="programlisting">stap --all-modules dropwatch.stp</pre><div class="para"> 275 </div><pre class="programlisting">stap --all-modules dropwatch.stp</pre><div class="para">
273 On older versions of Systemtap you can use the following command to emulate the <code class="command">--all-modules</code> option: 276 On older versions of SystemTap you can use the following command to emulate the <code class="command">--all-modules</code> option:
274 </div><pre class="programlisting">stap -dkernel \ 277 </div><pre class="programlisting">stap -dkernel \
275`cat /proc/modules | awk 'BEGIN { ORS = " " } {print "-d"$1}'` \ 278`cat /proc/modules | awk 'BEGIN { ORS = " " } {print "-d"$1}'` \
276dropwatch.stp</pre><div class="para"> 279dropwatch.stp</pre><div class="para">
277 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. 280 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.
278 </div><div class="example" id="dropwatchoutput"><h6>Example 5.5. <a class="xref" href="useful-systemtap-scripts.html#dropwatch">dropwatch.stp</a> Sample Output</h6><div class="example-contents"><pre class="screen">Monitoring for dropped packets 281 </div><div class="example"><a id="dropwatchoutput"></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
279 282
2801762 packets dropped at unix_stream_recvmsg 2831762 packets dropped at unix_stream_recvmsg
2814 packets dropped at tun_do_read 2844 packets dropped at tun_do_read
@@ -295,4 +298,4 @@ Stopping dropped packet monitor
295ffffffff8149a420 t unix_dgram_poll 298ffffffff8149a420 t unix_dgram_poll
296ffffffff8149a5e0 t unix_stream_recvmsg 299ffffffff8149a5e0 t unix_stream_recvmsg
297ffffffff8149ad00 t unix_find_other 300ffffffff8149ad00 t unix_find_other
298[...]</pre></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="ustack.html"><strong>Prev</strong>4.3. User-Space Stack Backtraces</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-disk.html"><strong>Next</strong>5.2. Disk</a></li></ul></body></html> 301[...]</pre></div></div></div><ul class="docnav"><li class="previous"><a accesskey="p" href="ustack.html"><strong>Prev</strong>4.3. User-Space Stack Backtraces</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-disk.html"><strong>Next</strong>5.2. Disk</a></li></ul></body></html> \ No newline at end of file
diff --git a/SystemTap_Beginners_Guide/userspace-probing.html b/SystemTap_Beginners_Guide/userspace-probing.html
index d8876bd4..309cede9 100644
--- a/SystemTap_Beginners_Guide/userspace-probing.html
+++ b/SystemTap_Beginners_Guide/userspace-probing.html
@@ -1,35 +1,37 @@
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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></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<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="understanding-tapsets.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="utargetvariable.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" id="userspace-probing" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 4. User-Space Probing</h2></div></div></div><div class="toc"><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></div><div class="para"> 3 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.
4 SystemTap initially focused on kernel-space probing. However, 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 includes support for probing the entry into and return from a function in user-space processes, probing predefined markers in user-space code, and monitoring user-process events.
5 </div><div class="para"> 4 </div><div class="para">
6 The SystemTap user-space probing requires the utrace kernel extensions which provide an API for tracking 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>. The following command determines whether the currently running Linux kernel provides the needed utrace support: 5 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:
7 </div><pre class="screen">grep CONFIG_UTRACE /boot/config-`uname -r`</pre><div class="para"> 6 </div><pre class="screen"><code class="command">grep CONFIG_UPROBES /boot/config-`uname -r`</code></pre><div class="para">
8 If the Linux kernel support user-space probing, the following output is printed: 7 If uprobes is integrated, the output of this command is as follows:
9 </div><pre class="screen">CONFIG_UTRACE=y</pre><div class="para"> 8 </div><pre class="screen">CONFIG_UPROBES=y</pre><div class="para">
10 The SystemTap user-space probing also needs the uprobes kernel module. If the uprobes kernel module is not available, you will see an error message like the following when attempting to run a script that requires the uprobes kernel module: 9 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:
11 </div><pre class="screen">SystemTap's version of uprobes is out of date. 10 </div><pre class="screen"><code class="command">grep CONFIG_UTRACE /boot/config-`uname -r`</code></pre><div class="para">
12As root, or a member of the 'root' group, run 11 If the Linux kernel supports user-space probing, the command produces the following output:
13"make -C /usr/share/systemtap/runtime/uprobes". 12 </div><pre class="screen">CONFIG_UTRACE=y</pre><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="uevents"></a>4.1. User-Space Events</h2></div></div></div><a id="idm246873738464" class="indexterm"></a><div class="para">
14Pass 4: compilation failed. Try again with another '--vp 0001' option.</pre><div class="para"> 13 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.
15 If this occurs, you need to generate a uprobes.ko module for the kernel as directed. 14 </div><div class="para">
16 </div><div class="section" id="uevents"><div class="titlepage"><div><div><h2 class="title" id="uevents">4.1. User-Space Events</h2></div></div></div><a id="idp40865824" class="indexterm"></a><div class="para"> 15 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:
17 All user-space event probes begin with <span class="emphasis"><em>process</em></span>. The process events can be limited to a specific running process by specifying the process ID. The process events can also be limited to monitoring a particular executable by specifying the path to executable (PATH). SystemTap makes use of the <code class="command">PATH</code> environment variable, so both the name used on the command-line to start the executable and the absolute path to the executable can be used. Several of user-space probe events limit their scope to a particular executable name (PATH) because SystemTap must use debug information to statically analyzed where to places the probes, but for many user-space probes 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: 16 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">process("<em class="replaceable"><code>PATH</code></em>").function("<em class="replaceable"><code>function</code></em>")</span></dt><dd><div class="para">
18 </div><div class="variablelist"><dl><dt class="varlistentry"><span class="term">process("<em class="replaceable"><code>PATH</code></em>").function("<em class="replaceable"><code>function</code></em>")</span></dt><dd><div class="para"> 17 The entry to the user-space function <em class="replaceable"><code>function</code></em> for the executable <em class="replaceable"><code>PATH</code></em>. This event is the user-space analogue of the <code class="command">kernel.function("<em class="replaceable"><code>function</code></em>")</code> event. It allows wildcards for the function <em class="replaceable"><code>function</code></em> and <code class="literal">.return</code> suffix.
19 The entry to the user-space function <em class="replaceable"><code>function</code></em> for the executable <em class="replaceable"><code>PATH</code></em>. This event is the user-space analogue of the <code class="command">kernel.function("<em class="replaceable"><code>function</code></em>")</code> event. It allows wildcards for the function <em class="replaceable"><code>function</code></em> and <code class="command">.return</code> suffix. 18 </div></dd><dt><span class="term">process("<em class="replaceable"><code>PATH</code></em>").statement("<em class="replaceable"><code>statement</code></em>")</span></dt><dd><div class="para">
20 </div></dd><dt class="varlistentry"><span class="term">process("<em class="replaceable"><code>PATH</code></em>").statement("<em class="replaceable"><code>statement</code></em>")</span></dt><dd><div class="para">
21 The earliest instruction in the code for <em class="replaceable"><code>statement</code></em>. This is the user-space analogue of <code class="command">kernel.statement("<em class="replaceable"><code>statement</code></em>")</code>. 19 The earliest instruction in the code for <em class="replaceable"><code>statement</code></em>. This is the user-space analogue of <code class="command">kernel.statement("<em class="replaceable"><code>statement</code></em>")</code>.
22 </div></dd><dt class="varlistentry"><span class="term">process("<em class="replaceable"><code>PATH</code></em>").mark("<em class="replaceable"><code>marker</code></em>")</span></dt><dd><div class="para"> 20 </div></dd><dt><span class="term">process("<em class="replaceable"><code>PATH</code></em>").mark("<em class="replaceable"><code>marker</code></em>")</span></dt><dd><div class="para">
23 The static probe point <em class="replaceable"><code>marker</code></em> defined in <em class="replaceable"><code>PATH</code></em>. Wildcards can be used for <em class="replaceable"><code>marker</code></em> to specify mutiple marks with a single probe. The static probe points may also have numbered arguments ($1, $2, etc.) available to the probe. 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: 21 The static probe point <em class="replaceable"><code>marker</code></em> defined in <em class="replaceable"><code>PATH</code></em>. You can use wildcards for <em class="replaceable"><code>marker</code></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.
24 </div><pre class="screen">probe hotspot.gc_begin = 22 </div><div class="para">
25 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 class="varlistentry"><span class="term">process.begin</span></dt><dd><div class="para"> 23 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:
26 User-space process is created. This can be limited to a particular process ID or a full path to the executable. 24 </div><pre class="programlisting">probe hotspot.gc_begin =
27 </div></dd><dt class="varlistentry"><span class="term">process.thread.begin</span></dt><dd><div class="para"> 25 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">
28 User-space thread is created. This can be limited to a particular process ID or a full path to the executable. 26 A user-space process is created. You can limit this to a particular process ID or a full path to the executable.
29 </div></dd><dt class="varlistentry"><span class="term">process.end</span></dt><dd><div class="para"> 27 </div></dd><dt><span class="term">process.thread.begin</span></dt><dd><div class="para">
30 User-space process died. This can be limited to a particular process ID or a full path to the executable. 28 A user-space thread is created. You can limit this to a particular process ID or a full path to the executable.
31 </div></dd><dt class="varlistentry"><span class="term">process.thread.end</span></dt><dd><div class="para"> 29 </div></dd><dt><span class="term">process.end</span></dt><dd><div class="para">
32 User-space thread is destroyed. This can be limited to a particular process ID or a full path to the executable. 30 A user-space process dies. You can limit this to a particular process ID or a full path to the executable.
33 </div></dd><dt class="varlistentry"><span class="term">process.syscall</span></dt><dd><div class="para"> 31 </div></dd><dt><span class="term">process.thread.end</span></dt><dd><div class="para">
34 User-space process makes a system call. The system call number is available via $syscall context variable, and the fist six arguments are available via $arg1 through $arg6. The ".return" suffix will place the probe at the return from the system call. For the "syscall.return" the return value is available through the $return context variable. This can be limited to a particular process ID or a full path to the executable. 32 A user-space thread is destroyed. You can limit this to a particular process ID or a full path to the executable.
35 </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> 33 </div></dd><dt><span class="term">process.syscall</span></dt><dd><div class="para">
34 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.
35 </div><div class="para">
36 You can limit this to a particular process ID or a full path to the executable.
37 </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 e22318bf..3070aa9f 100644
--- a/SystemTap_Beginners_Guide/using-systemtap.html
+++ b/SystemTap_Beginners_Guide/using-systemtap.html
@@ -1,63 +1,64 @@
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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></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="idm246929650256" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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-vs-others.html" title="1.2. SystemTap Capabilities" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="intro-systemtap-vs-others.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="cross-compiling.html"><strong>Next</strong></a></li></ul><div xml:lang="en-US" class="chapter" id="using-systemtap" lang="en-US"><div class="titlepage"><div><div><h2 class="title">Chapter 2. Using SystemTap</h2></div></div></div><div class="toc"><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 RPMs</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="idp24737824" class="indexterm"></a><div class="para"> 3 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 instructs users how to install SystemTap, and provides an introduction on how to run SystemTap scripts. 4 </div><div xml:lang="en-US" class="section" lang="en-US"><div class="titlepage"><div><div><h2 class="title"><a id="using-setup"></a>2.1. Installation and Setup</h2></div></div></div><a id="idm246929655488" class="indexterm"></a><a id="idm246929656720" class="indexterm"></a><div class="para">
5 </div><div xml:lang="en-US" class="section" id="using-setup" lang="en-US"><div class="titlepage"><div><div><h2 class="title" id="using-setup">2.1. Installation and Setup</h2></div></div></div><a id="idm9236192" class="indexterm"></a><a id="idm9237648" class="indexterm"></a><div class="para"> 5 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.
6 To deploy SystemTap, you need to install the SystemTap packages along with the corresponding set of <code class="filename">-devel</code>, <code class="filename">-debuginfo</code> and <code class="filename">-debuginfo-common</code> packages for your kernel. If your system has multiple kernels installed, and you wish to use SystemTap on more than one kernel kernel, you will need to install the <code class="filename">-devel</code> and <code class="filename">-debuginfo</code> packages for <span class="emphasis"><em>each</em></span> of those kernel versions.
7 </div><div class="para"> 6 </div><div class="para">
8 These procedures will be discussed in detail in the following sections. 7 The following sections discuss the installation procedures in greater detail.
9 </div><div class="important"><div class="admonition_header"><h2>Important</h2></div><div class="admonition"><div class="para"> 8 </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 Many users confuse <code class="filename">-debuginfo</code> with <code class="filename">-debug</code>. Remember that the deployment of SystemTap requires the installation of the <code class="filename">-debuginfo</code> package of the kernel, not the <code class="filename">-debug</code> version of the kernel. 9 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 </div></div></div><div class="section" id="installproper"><div class="titlepage"><div><div><h3 class="title" id="installproper">2.1.1. Installing SystemTap</h3></div></div></div><div class="para"> 10 </div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="installproper"></a>2.1.1. Installing SystemTap</h3></div></div></div><div class="para">
12 To deploy Systemtap, you will need to to install the following RPMs: 11 To deploy SystemTap, install the following RPM packages:
13 </div><a id="idm9247248" class="indexterm"></a><a id="idm9248688" class="indexterm"></a><a id="idm9250144" class="indexterm"></a><a id="idm9251408" class="indexterm"></a><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 12 </div><a id="idm246929666656" class="indexterm"></a><a id="idm246929668112" class="indexterm"></a><a id="idm246929669216" class="indexterm"></a><a id="idm246929672112" class="indexterm"></a><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
14 <code class="filename">systemtap</code> 13 <span class="package">systemtap</span>
15 </div></li><li class="listitem"><div class="para"> 14 </div></li><li class="listitem"><div class="para">
16 <code class="filename">systemtap-runtime</code> 15 <span class="package">systemtap-runtime</span>
17 </div></li></ul></div><div class="para"> 16 </div></li></ul></div><div class="para">
18 Assuming that <code class="command">yum</code> is installed in the system, these two rpms can be installed with <code class="command">yum install systemtap systemtap-runtime</code>. Note that before you can use SystemTap, you will still need to install the required kernel information RPMs. 17 To do so, run the following command as root:
19 </div></div><div class="section" id="install-kinfo"><div class="titlepage"><div><div><h3 class="title" id="install-kinfo">2.1.2. Installing Required Kernel Information RPMs</h3></div></div></div><a id="idp44638688" class="indexterm"></a><a id="idp40070800" class="indexterm"></a><a id="idp40069872" class="indexterm"></a><a id="idp40068496" class="indexterm"></a><a id="idp40067568" class="indexterm"></a><a id="idp40065808" class="indexterm"></a><div class="para"> 18 </div><pre class="screen"><code class="command">yum install systemtap systemtap-runtime</code></pre><div class="para">
20 SystemTap needs information about the kernel in order to place instrumentation in it (i.e. probe it). This information also allows SystemTap to generate the code for the instrumentation. This information is contained in the matching <code class="filename">-devel</code>, <code class="filename">-debuginfo</code>, and <code class="filename">-debuginfo-common</code> packages for your kernel. The necessary <code class="filename">-devel</code> and <code class="filename">-debuginfo</code> packages for the ordinary "vanilla" kernel are as follows: 19 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:
21 </div><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 20 </div><pre class="screen"><code class="command">stap-prep</code></pre><div class="para">
22 <code class="filename">kernel-debuginfo</code> 21 If this command does not work, try manual installation as described below.
22 </div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="install-kinfo"></a>2.1.2. Installing Required Kernel Information Packages Manually</h3></div></div></div><a id="idm246929678784" class="indexterm"></a><a id="idm246929680208" class="indexterm"></a><a id="idm246929681408" class="indexterm"></a><a id="idm246929682336" class="indexterm"></a><a id="idm246929683312" class="indexterm"></a><a id="idm246929684784" class="indexterm"></a><div class="para">
23 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.
24 </div><div class="para">
25 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:
26 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
27 <span class="package">kernel-debuginfo</span>
23 </div></li><li class="listitem"><div class="para"> 28 </div></li><li class="listitem"><div class="para">
24 <code class="filename">kernel-debuginfo-common</code> 29 <span class="package">kernel-debuginfo-common</span>
25 </div></li><li class="listitem"><div class="para"> 30 </div></li><li class="listitem"><div class="para">
26 <code class="filename">kernel-devel</code> 31 <span class="package">kernel-devel</span>
27 </div></li></ul></div><div class="para"> 32 </div></li></ul></div><div class="para">
28 Likewise, the necessary packages for the PAE kernel would be <code class="filename">kernel-PAE-debuginfo</code>, <code class="filename">kernel-PAE-debuginfo-common</code>, and <code class="filename">kernel-PAE-devel</code>. 33 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>.
29 </div><a id="idp44641504" class="indexterm"></a><a id="idp44639616" class="indexterm"></a><a id="idp44638160" class="indexterm"></a><a id="idp60893456" class="indexterm"></a><div class="para"> 34 </div><a id="idm246917575152" class="indexterm"></a><a id="idm246917576272" class="indexterm"></a><a id="idm246917577232" class="indexterm"></a><a id="idm246873788864" class="indexterm"></a><div class="para">
30 To determine what kernel your system is currently using, use: 35 To determine what kernel your system is currently using, use:
31 </div><pre class="screen">uname -r</pre><div class="para"> 36 </div><pre class="screen">uname -r</pre><div class="para">
32 For example, if you wish to use SystemTap on kernel version <code class="filename">2.6.18-53.el5</code> on an i686 machine, then you would need to download and install the following RPMs: 37 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:
33 </div><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 38 </div><div xmlns:d="http://docbook.org/ns/docbook" class="itemizedlist"><ul><li class="listitem"><div class="para">
34 <code class="filename">kernel-debuginfo-2.6.18-53.1.13.el5.i686.rpm</code> 39 <span class="package">kernel-debuginfo-2.6.18-53.1.13.el5.i686.rpm</span>
35 </div></li><li class="listitem"><div class="para"> 40 </div></li><li class="listitem"><div class="para">
36 <code class="filename">kernel-debuginfo-common-2.6.18-53.1.13.el5.i686.rpm</code> 41 <span class="package">kernel-debuginfo-common-2.6.18-53.1.13.el5.i686.rpm</span>
37 </div></li><li class="listitem"><div class="para"> 42 </div></li><li class="listitem"><div class="para">
38 <code class="filename">kernel-devel-2.6.18-53.1.13.el5.i686.rpm</code> 43 <span class="package">kernel-devel-2.6.18-53.1.13.el5.i686.rpm</span>
39 </div></li></ul></div><div class="important"><div class="admonition_header"><h2>Important</h2></div><div class="admonition"><div class="para"> 44 </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">
40 The version, variant, and architecture of the <code class="filename">-devel</code>, <code class="filename">-debuginfo</code> and <code class="filename">-debuginfo-common</code> packages must match the kernel you wish to probe with SystemTap <span class="emphasis"><em>exactly</em></span>. 45 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>.
41 </div></div></div><div class="para"> 46 </div></div></div><div class="para">
42 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. <code class="command">debuginfo-install</code> is included with later versions of the <code class="filename">yum-utils</code> package (for example, version 1.1.10), and also requires an appropriate <code class="command">yum</code> repository from which to download and install <code class="command">-debuginfo</code>/<code class="filename">-debuginfo-common</code> packages. You can install the required <code class="filename">-devel</code>, <code class="filename">-debuginfo</code>, and <code class="filename">-debuginfo-common</code> packages for your kernel. 47 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.
43 </div><div class="para"> 48 </div><div class="para">
44 With the appropriate software repositories are enabled, install the corresponding packages for a specific kernel using <code class="command">yum</code> with the following commands: 49 When the appropriate software repositories are enabled, install the corresponding packages for a specific kernel with the following commands:
45 </div><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 50 </div><pre class="screen"><code class="command">yum install <em class="replaceable"><code>kernelname</code></em>-devel-<em class="replaceable"><code>version</code></em></code>
46 <code class="command">yum install <em class="replaceable"><code>kernelname</code></em>-devel-<em class="replaceable"><code>version</code></em></code> 51<code class="command">debuginfo-install <em class="replaceable"><code>kernelname</code></em>-<em class="replaceable"><code>version</code></em></code></pre><div class="para">
47 </div></li><li class="listitem"><div class="para"> 52 Replace <em class="replaceable"><code>kernelname</code></em> with the appropriate kernel variant name (for example, <code class="option">kernel-PAE</code>), and <em class="replaceable"><code>version</code></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:
48 <code class="command">debuginfo-install <em class="replaceable"><code>kernelname</code></em>-<em class="replaceable"><code>version</code></em></code> 53 </div><pre class="screen"><code class="command">yum install kernel-PAE-devel-2.6.18-53.1.13.el5</code>
49 </div></li></ul></div><div class="para"> 54<code class="command">debuginfo-install kernel-PAE-2.6.18-53.1.13.el5</code></pre><div class="para">
50 Replace <code class="command"><em class="replaceable"><code>kernelname</code></em></code> with the appropriate kernel variant name (for example, <code class="filename">kernel-PAE</code>), and <code class="command"><em class="replaceable"><code>version</code></em></code> with the target kernel's version. For example, to install the required kernel information packages for the <code class="command">kernel-PAE-2.6.18-53.1.13.el5</code> kernel, run: 55 Once you have manually downloaded the required packages to the machine, run the following command as root to install them:
51 </div><div class="itemizedlist"><ul><li class="listitem"><div class="para"> 56 </div><pre class="screen"><code class="command">rpm --force -ivh <em class="replaceable"><code>package_names</code></em></code></pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="testing"></a>2.1.3. Initial Testing</h3></div></div></div><a id="idm246929711104" class="indexterm"></a><a id="idm246875089536" class="indexterm"></a><a id="idm246875090464" class="indexterm"></a><div class="para">
52 <code class="command">yum install kernel-PAE-devel-2.6.18-53.1.13.el5</code> 57 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.
53 </div></li><li class="listitem"><div class="para">
54 <code class="command">debuginfo-install kernel-PAE-2.6.18-53.1.13.el5</code>
55 </div></li></ul></div><div class="para">
56 Once you have manually downloaded the required packages to the machine, install the RPMs by running <code class="command">rpm --force -ivh <em class="replaceable"><code>package_names</code></em></code>.
57 </div></div><div class="section" id="testing"><div class="titlepage"><div><div><h3 class="title" id="testing">2.1.3. Initial Testing</h3></div></div></div><a id="idp20555008" class="indexterm"></a><a id="idp20552896" class="indexterm"></a><a id="idp20551936" class="indexterm"></a><div class="para">
58 If you are currently using the kernel you wish to probe with SystemTap, you can immediately test whether the deployment was successful. If not, you will need to reboot and load the appropriate kernel.
59 </div><div class="para"> 58 </div><div class="para">
60 To start the test, run the command <code class="command">stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}'</code>. This command simply instructs SystemTap to print <code class="computeroutput">read performed</code> then exit properly once a virtual file system read is detected. If the SystemTap deployment was successful, you should get output similar to the following: 59 To start the test, run the following command:
60 </div><pre class="screen"><code class="command">stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}'</code></pre><div class="para">
61 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:
61 </div><pre class="screen">Pass 1: parsed user script and 45 library script(s) in 340usr/0sys/358real ms. 62 </div><pre class="screen">Pass 1: parsed user script and 45 library script(s) in 340usr/0sys/358real ms.
62Pass 2: analyzed script: 1 probe(s), 1 function(s), 0 embed(s), 0 global(s) in 290usr/260sys/568real ms. 63Pass 2: analyzed script: 1 probe(s), 1 function(s), 0 embed(s), 0 global(s) in 290usr/260sys/568real ms.
63Pass 3: translated to C into "/tmp/stapiArgLX/stap_e5886fa50499994e6a87aacdc43cd392_399.c" in 490usr/430sys/938real ms. 64Pass 3: translated to C into "/tmp/stapiArgLX/stap_e5886fa50499994e6a87aacdc43cd392_399.c" in 490usr/430sys/938real ms.
@@ -65,5 +66,5 @@ Pass 4: compiled C into "stap_e5886fa50499994e6a87aacdc43cd392_399.ko" in 3310us
65Pass 5: starting run. 66Pass 5: starting run.
66read performed 67read performed
67Pass 5: run completed in 10usr/40sys/73real ms.</pre><div class="para"> 68Pass 5: run completed in 10usr/40sys/73real ms.</pre><div class="para">
68 The last three lines of the output (i.e. 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). 69 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).
69 </div></div></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="cross-compiling.html"><strong>Next</strong>2.2. Generating Instrumentation for Other Compute...</a></li></ul></body></html> 70 </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 cfeb9e00..e17f7eaf 100644
--- a/SystemTap_Beginners_Guide/using-usage.html
+++ b/SystemTap_Beginners_Guide/using-usage.html
@@ -1,64 +1,61 @@
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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>2.3. Running SystemTap Scripts</h2></div></div></div><a id="idm246912074640" class="indexterm"></a><a id="idm246920814672" class="indexterm"></a><a id="idm246920813264" class="indexterm"></a><a id="idm246930144800" class="indexterm"></a><a id="idm246930143072" class="indexterm"></a><a id="idm246911889520" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="cross-compiling.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="understanding-how-systemtap-works.html"><strong>Next</strong></a></li></ul><div class="section" id="using-usage"><div class="titlepage"><div><div><h2 class="title" id="using-usage">2.3. Running SystemTap Scripts</h2></div></div></div><a id="idp17684480" class="indexterm"></a><a id="idp38841568" class="indexterm"></a><a id="idp48076080" class="indexterm"></a><a id="idp29338288" class="indexterm"></a><a id="idp59482576" class="indexterm"></a><a id="idp21846304" class="indexterm"></a><div class="para"> 3 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 scripts are run through the command <code class="command">stap</code>. <code class="command">stap</code> can run SystemTap scripts from standard input or from file. 4 </div><a id="idm246868990944" class="indexterm"></a><div class="para">
5 </div><a id="idp58022880" class="indexterm"></a><div class="para"> 5 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 Running <code class="command">stap</code> and <code class="command">staprun</code> requires elevated privileges to the system. However, not all users can be granted root access just to run SystemTap. In some cases, for instance, you may want to allow a non-privileged user to run SystemTap instrumentation on his machine. 6 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">stapdev</span></dt><dd><a id="idm246929055488" class="indexterm"></a><a id="idm246917373056" class="indexterm"></a><div class="para">
7 </div><div class="para"> 7 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 To allow ordinary users to run SystemTap without root access, add them to one of these user groups:
9 </div><div class="variablelist"><dl><dt class="varlistentry"><span class="term">stapdev</span></dt><dd><a id="idp33571040" class="indexterm"></a><a id="idp60451216" class="indexterm"></a><div class="para">
10 Members of this group can use <code class="command">stap</code> to run SystemTap scripts, or <code class="command">staprun</code> to run SystemTap instrumentation modules.
11 </div><div class="para"> 8 </div><div class="para">
12 Running <code class="command">stap</code> involves compiling SystemTap scripts into kernel modules and loading them into the kernel. This requires elevated privileges to the system, which are granted to <code class="command">stapdev</code> members. Unfortunately, such privileges also grant effective root access to <code class="command">stapdev</code> members. As such, you should only grant <code class="command">stapdev</code> group membership to users whom you can trust root access. 9 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.
13 </div></dd><dt class="varlistentry"><span class="term">stapusr</span></dt><dd><a id="idp29855248" class="indexterm"></a><a id="idm2814432" class="indexterm"></a><div class="para"> 10 </div></dd><dt><span class="term">stapusr</span></dt><dd><a id="idm246914415104" class="indexterm"></a><a id="idm246914413664" class="indexterm"></a><div class="para">
14 Members of this group can only run <code class="command">staprun</code> to run SystemTap instrumentation modules. In addition, they can only run those modules from <code class="filename">/lib/modules/<em class="replaceable"><code>kernel_version</code></em>/systemtap/</code>. Note that this directory must be owned only by the root user, and must only be writable by the root user. 11 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"><code>kernel_version</code></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"> 12 </div></dd></dl></div><div class="para">
13 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:
14 </div><pre class="screen"><code class="command">stap <em class="replaceable"><code>file_name</code></em></code></pre><a id="idm246868954640" class="indexterm"></a><a id="idm246868953232" class="indexterm"></a><a id="idm246869058224" class="indexterm"></a><div class="para">
15 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:
16 </div><pre class="screen"><code class="command">echo "probe timer.s(1) {exit()}" | stap -v -</code></pre><div class="para">
16 Below is a list of commonly used <code class="command">stap</code> options: 17 Below is a list of commonly used <code class="command">stap</code> options:
17 </div><a id="idp65181216" class="indexterm"></a><a id="idp30746304" class="indexterm"></a><div class="variablelist"><a id="idp34173936" class="indexterm"></a><dl><dt class="varlistentry"><span class="term">-v</span></dt><dd><div class="para"> 18 </div><a id="idm246930039392" class="indexterm"></a><a id="idm246930037952" class="indexterm"></a><div class="variablelist"><a id="idm246930036192" class="indexterm"></a><dl class="variablelist"><dt><span class="term">-v</span></dt><dd><div class="para">
18 Makes the output of the SystemTap session more verbose. You can repeat this option (for example, <code class="command">stap -vvv script.stp</code>) to provide more details on the script's execution. This option is particularly useful if you encounter any errors in running the script. 19 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:
19 </div><div class="para"> 20 </div><pre class="screen"><code class="command">stap -vvv script.stp</code></pre><div class="para">
20 For more information about common SystemTap script errors, refer to <a class="xref" href="errors.html">Chapter 6, <em>Understanding SystemTap Errors</em></a>. 21 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>.
21 </div></dd><dt class="varlistentry"><span class="term">-o <em class="replaceable"><code>filename</code></em></span></dt><dd><div class="para"> 22 </div></dd><dt><span class="term">-o <em class="replaceable"><code>file_name</code></em></span></dt><dd><div class="para">
22 Sends the standard output to file (<em class="replaceable"><code>filename</code></em>). 23 Sends the standard output to a file named <em class="replaceable"><code>file_name</code></em>.
23 </div></dd><dt class="varlistentry"><span class="term">-S <em class="replaceable"><code>size</code></em>,<em class="replaceable"><code>count</code></em></span></dt><dd><div class="para"> 24 </div></dd><dt><span class="term">-S <em class="replaceable"><code>size</code></em>,<em class="replaceable"><code>count</code></em></span></dt><dd><div class="para">
24 Limit files to <em class="replaceable"><code>size</code></em> megabytes and limit the the number of files kept around to <em class="replaceable"><code>count</code></em>. The file names will have a sequence number suffix. This option implements logrotate operations for SystemTap. 25 Limits the maximum size of output files to <em class="replaceable"><code>size</code></em> megabytes and the maximum number of stored files to <em class="replaceable"><code>count</code></em>. This option implements logrotate operations for SystemTap and the resulting file names have a sequence number suffix.
25 </div></dd><dt class="varlistentry"><span class="term">-x <em class="replaceable"><code>process ID</code></em></span></dt><dd><div class="para"> 26 </div></dd><dt><span class="term">-x <em class="replaceable"><code>process_id</code></em></span></dt><dd><div class="para">
26 Sets the SystemTap handler function <code class="command">target()</code> to the specified process ID. For more information about <code class="command">target()</code>, refer to <a class="xref" href="systemtapscript-handler.html#systemtapscript-functions">SystemTap Functions</a>. 27 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>.
27 </div></dd><dt class="varlistentry"><span class="term">-c '<em class="replaceable"><code>command</code></em>'</span></dt><dd><div class="para"> 28 </div></dd><dt><span class="term">-c '<em class="replaceable"><code>command</code></em>'</span></dt><dd><div class="para">
28 Sets the SystemTap handler function <code class="command">target()</code> to the specified command and runs the SystemTap instrumentation for the duration of the specified command. For more information about <code class="command">target()</code>, refer to <a class="xref" href="systemtapscript-handler.html#systemtapscript-functions">SystemTap Functions</a>. 29 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>.
29 </div></dd><dt class="varlistentry"><span class="term">-e '<em class="replaceable"><code>script</code></em>'</span></dt><dd><div class="para"> 30 </div></dd><dt><span class="term">-e '<em class="replaceable"><code>script</code></em>'</span></dt><dd><div class="para">
30 Use <code class="command"><em class="replaceable"><code>script</code></em></code> string rather than a file as input for systemtap translator. 31 Uses <em class="replaceable"><code>script</code></em> rather than a file as input for the SystemTap translator.
31 </div></dd><dt class="varlistentry"><span class="term">-F</span></dt><dd><div class="para"> 32 </div></dd><dt><span class="term">-F</span></dt><dd><div class="para">
32 Use SystemTap's Flight recorder mode and make 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>. 33 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>.
33 </div></dd></dl></div><div class="para"> 34 </div></dd></dl></div><div class="para">
34 You can also instruct <code class="command">stap</code> to run scripts from standard input using the switch <code class="command">-</code>. To illustrate: 35 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.
35 </div><a id="idm1473856" class="indexterm"></a><a id="idp29335440" class="indexterm"></a><a id="idp29336848" class="indexterm"></a><div class="example" id="stdinstap"><h6>Example 2.1. Running Scripts From Standard Input</h6><div class="example-contents"><pre class="programlisting">echo "probe timer.s(1) {exit()}" | stap -</pre></div></div><br class="example-break" /><div class="para"> 36 </div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="flight-recorder"></a>2.3.1. SystemTap Flight Recorder Mode</h3></div></div></div><a id="idm246924510816" class="indexterm"></a><div class="para">
36 <a class="xref" href="using-usage.html#stdinstap">Example 2.1, “Running Scripts From Standard Input”</a> instructs <code class="command">stap</code> to run the script passed by <code class="command">echo</code> to standard input. Any <code class="command">stap</code> options you wish to use should be inserted before the <code class="command">-</code> switch; for instance, to make the example in <a class="xref" href="using-usage.html#stdinstap">Example 2.1, “Running Scripts From Standard Input”</a> more verbose, the command would be: 37 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.
37 </div><div class="para"> 38 </div><div class="para">
38 <code class="command">echo "probe timer.s(1) {exit()}" | stap -v -</code> 39 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.
39 </div><div class="para"> 40 </div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="memory-flight-recorder"></a>2.3.1.1. In-memory Flight Recorder</h4></div></div></div><a id="idm246917220944" class="indexterm"></a><div class="para">
40 For more information about <code class="command">stap</code>, refer to <code class="command">man stap</code>. 41 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.
41 </div><div class="para"> 42 </div><div class="para">
42 To run SystemTap instrumentation (i.e. the kernel module built from SystemTap scripts during a cross-instrumentation), use <code class="command">staprun</code> instead. For more information about <code class="command">staprun</code> and cross-instrumentation, refer to <a class="xref" href="cross-compiling.html">Section 2.2, “Generating Instrumentation for Other Computers”</a>. 43 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:
43 </div><div class="note"><div class="admonition_header"><h2>Note</h2></div><div class="admonition"><div class="para"> 44 </div><pre class="screen"><code class="command">stap -F iotime.stp</code></pre><div class="para">
44 The <code class="command">stap</code> options <code class="command">-v</code> and <code class="command">-o</code> also work for <code class="command">staprun</code>. For more information about <code class="command">staprun</code>, refer to <code class="command">man staprun</code>. 45 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:
45 </div></div></div><div class="section" id="flight-recorder"><div class="titlepage"><div><div><h3 class="title" id="flight-recorder">2.3.1. SystemTap Flight Recorder Mode</h3></div></div></div><a id="idp49319056" class="indexterm"></a><div class="para">
46 SystemTap's flight recorder mode allows you to run a SystemTap script run for long periods and just focus on recent output. The flight recorder mode (the <code class="command">-F</code> option) limits the amount of output generated. There are two variations of the flight recorder mode: in-memory and file mode. In both cases the SystemTap script runs as a background process.
47 </div><div class="section" id="memory-flight-recorder"><div class="titlepage"><div><div><h4 class="title" id="memory-flight-recorder">2.3.1.1. In-memory Flight Recorder</h4></div></div></div><a id="idp44387136" class="indexterm"></a><div class="para">
48 When flight recorder mode (the <code class="command">-F</code> option) is used without a file name SystemTap uses a buffer in kernel memory to store the output of the script. The SystemTap instrumentation module will load and the probes start running, the instrumentation will then detach and be put in the background. When the interesting event occurs, you can reattach to the instrumentation and see the recent output in the memory buffer and any continuing output. The following command starts a script using the flight recorder in-memory mode:
49 </div><pre class="screen">stap -F iotime.stp</pre><div class="para">
50 Once the script starts, you will see a message like the following that provides the command to reconnect to the running script:
51 </div><pre class="screen">Disconnecting from systemtap module. 46 </div><pre class="screen">Disconnecting from systemtap module.
52To reconnect, type "staprun -A stap_5dd0073edcb1f13f7565d8c343063e68_19556"</pre><div class="para"> 47To reconnect, type "staprun -A stap_5dd0073edcb1f13f7565d8c343063e68_19556"</pre><div class="para">
53 When the interesting event occurs, you reattach to the currently running script and output the recent data in the memory buffer and get continuing output with the following command: 48 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:
54 </div><pre class="screen">staprun -A stap_5dd0073edcb1f13f7565d8c343063e68_19556</pre><div class="para"> 49 </div><pre class="screen"><code class="command">staprun -A stap_5dd0073edcb1f13f7565d8c343063e68_19556</code></pre><div class="para">
55 By default the kernel buffer is 1MB in size and it can be increased with the <code class="command">-s</code> option specifying the size in megabytes (rounded up to the next power over 2) for the buffer. For example <code class="command">-s2</code> on the SystemTap command line would specify 2MB for the buffer. 50 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.
56 </div></div><div class="section" id="file-flight-recorder"><div class="titlepage"><div><div><h4 class="title" id="file-flight-recorder">2.3.1.2. File Flight Recorder</h4></div></div></div><a id="idp15398048" class="indexterm"></a><div class="para"> 51 </div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="file-flight-recorder"></a>2.3.1.2. File Flight Recorder</h4></div></div></div><a id="idm246917260768" class="indexterm"></a><div class="para">
57 The flight recorder mode can also store data to files. The number and size of the files kept is controlled by the <code class="command">-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. The file name is specified by the <code class="command">-o</code> option followed by the name. SystemTap will add a number suffix to the file name to indicate the order of the files. The following will start SystemTap in file flight recorder mode with the output going to files named <code class="command">/tmp/iotime.log.</code><em class="replaceable"><code>[0-9]+</code></em> and each file 1MB or smaller and keeping latest two files: 52 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.
58 </div><pre class="screen">stap -F -o /tmp/pfaults.log -S 1,2 pfaults.stp</pre><div class="para"> 53 </div><div class="para">
59 The number printed by the command is the process ID. Sending a SIGTERM to the process will shutdown the SystemTap script and stop the data collection. For example if the previous command listed the 7590 as the process ID, the following command whould shutdown the systemtap script: 54 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"><code>[0-9]+</code></em></code>, each file 1MB or smaller, and keeping latest two files:
60 </div><pre class="screen">kill -s SIGTERM 7590</pre><div class="para"> 55 </div><pre class="screen"><code class="command">stap -F -o /tmp/pfaults.log -S 1,2 pfaults.stp</code></pre><div class="para">
61 Only the most recent two file generated by the script are kept and the older files are been removed. Thus, <code class="command">ls -sh /tmp/pfaults.log.*</code> shows the only two files: 56 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:
57 </div><pre class="screen"><code class="command">kill -s SIGTERM 7590</code></pre><div class="para">
58 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:
62 </div><pre class="screen">1020K /tmp/pfaults.log.5 44K /tmp/pfaults.log.6</pre><div class="para"> 59 </div><pre class="screen">1020K /tmp/pfaults.log.5 44K /tmp/pfaults.log.6</pre><div class="para">
63 One can look at the highest number file for the latest data, in this case /tmp/pfaults.log.6. 60 To examine the latest data, read the file with the highest number, in this case <code class="filename">/tmp/pfaults.log.6</code>.
64 </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> 61 </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 a9f267aa..02688f0f 100644
--- a/SystemTap_Beginners_Guide/ustack.html
+++ b/SystemTap_Beginners_Guide/ustack.html
@@ -1,15 +1,14 @@
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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>4.3. User-Space Stack Backtraces</h2></div></div></div><a id="idm246925817024" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="utargetvariable.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="useful-systemtap-scripts.html"><strong>Next</strong></a></li></ul><div class="section" id="ustack"><div class="titlepage"><div><div><h2 class="title" id="ustack">4.3. User-Space Stack Backtraces</h2></div></div></div><a id="idp37539008" class="indexterm"></a><div class="para"> 3 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="command">pp</code>) function indicates which particular event triggered the 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.
5 </div><div class="para"> 4 </div><div class="para">
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. You will need to use the <code class="command">-d <em class="replaceable"><code>executable</code></em></code> for the application executable and <code class="command">-ldd</code> for shared libraries to ensure that the needed debug information is used to produce the user-space stack backtraces. 5 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"><code>executable</code></em></code> option for executables and <code class="option">-ldd</code> for shared libraries.
7 </div><div class="para"> 6 </div><div class="para">
8 If you want to see how the function <code class="command">xmalloc</code> function is being called by the command <code class="command">ls</code>, you could use the user-space backtrack functions to provide that information. With the debuginfo for the <code class="command">ls</code> command installed the following SystemTap command will provide a backtrace each time the <code class="command">xmalloc</code> function is called: 7 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:
9 </div><pre class="screen">stap -d /bin/ls --ldd \ 8 </div><pre class="screen"><code class="command">stap -d /bin/ls --ldd \</code>
10-e 'probe process("ls").function("xmalloc") {print_usyms(ubacktrace())}' \ 9<code class="command">-e 'probe process("ls").function("xmalloc") {print_usyms(ubacktrace())}' \</code>
11-c "ls /"</pre><div class="para"> 10<code class="command">-c "ls /"</code></pre><div class="para">
12 When the SystemTap script runs will have output similar to the following: 11 When executed, this command produces output similar to the following:
13 </div><pre class="screen"> 12 </div><pre class="screen">
14bin dev lib media net proc sbin sys var 13bin dev lib media net proc sbin sys var
15boot etc lib64 misc op_session profilerc selinux tmp 14boot etc lib64 misc op_session profilerc selinux tmp
@@ -27,5 +26,5 @@ cgroup home lost+found mnt opt root srv usr
27 0x3fa441ec5d : __libc_start_main+0xfd/0x1d0 [/lib64/libc-2.12.so] 26 0x3fa441ec5d : __libc_start_main+0xfd/0x1d0 [/lib64/libc-2.12.so]
28 ... 27 ...
29</pre><div class="para"> 28</pre><div class="para">
30 For more details on the functions available for user-space stack backtraces look at the <code class="command">ucontext-symbols.stp</code> and <code class="command">ucontext-unwind.stp</code> tapsets. The descriptions of the functions in those tapsets can also be found in the <em class="citetitle">SystemTap Tapset Reference Manual</em>. 29 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>.
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> 30 </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 0b3e88f7..10a31c96 100644
--- a/SystemTap_Beginners_Guide/utargetvariable.html
+++ b/SystemTap_Beginners_Guide/utargetvariable.html
@@ -1,17 +1,18 @@
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"> 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.0.0" /><meta xmlns:d="http://docbook.org/ns/docbook" name="package" content="SystemTap-SystemTap_Beginners_Guide-2.6-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"></a>4.2. Accessing User-Space Target Variables</h2></div></div></div><a id="idm246878454816" class="indexterm"></a><div class="para">
3<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>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 name="generator" content="publican 2.8" /><meta name="package" content="Systemtap-SystemTap_Beginners_Guide-2.2-en-US-2.2-2" /><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 src="Common_Content/images/image_left.png" alt="Product Site" /></a><a class="right" href="https://fedorahosted.org/publican"><img src="Common_Content/images/image_right.png" alt="Documentation Site" /></a></p><ul class="docnav"><li class="previous"><a accesskey="p" href="userspace-probing.html"><strong>Prev</strong></a></li><li class="next"><a accesskey="n" href="ustack.html"><strong>Next</strong></a></li></ul><div class="section" id="utargetvariable"><div class="titlepage"><div><div><h2 class="title" id="utargetvariable">4.2. Accessing User-Space Target Variables</h2></div></div></div><a id="idp25071904" class="indexterm"></a><div class="para"> 3 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.
4 User-space target variables can be accessed in the same manner as described in <a class="xref" href="targetvariables.html">Section 3.3.2, “Target Variables”</a>. However, in Linux there are separate address spaces for the user and kernel code. When using "-&gt;" operator SystemTap will access the appropriate address space. 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. 4 </div><div class="para">
5 </div><div class="variablelist"><dl><dt class="varlistentry"><span class="term">user_char(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para"> 5 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.
6 Obtain the character at <em class="replaceable"><code>address</code></em> for the current user process. 6 </div><div class="variablelist"><dl class="variablelist"><dt><span class="term">user_char(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para">
7 </div></dd><dt class="varlistentry"><span class="term">user_short(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para"> 7 Obtains the character at <em class="replaceable"><code>address</code></em> for the current user process.
8 Obtain the short at <em class="replaceable"><code>address</code></em> for the current user process. 8 </div></dd><dt><span class="term">user_short(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para">
9 </div></dd><dt class="varlistentry"><span class="term">user_int(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para"> 9 Obtains the short integer at <em class="replaceable"><code>address</code></em> for the current user process.
10 Obtain the int at <em class="replaceable"><code>address</code></em> for the current user process. 10 </div></dd><dt><span class="term">user_int(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para">
11 </div></dd><dt class="varlistentry"><span class="term">user_long(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para"> 11 Obtains the integer at <em class="replaceable"><code>address</code></em> for the current user process.
12 Obtain the long at <em class="replaceable"><code>address</code></em> for the current user process. 12 </div></dd><dt><span class="term">user_long(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para">
13 </div></dd><dt class="varlistentry"><span class="term">user_string(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para"> 13 Obtains the long integer at <em class="replaceable"><code>address</code></em> for the current user process.
14 Obtain the string at <em class="replaceable"><code>address</code></em> for the current user process. 14 </div></dd><dt><span class="term">user_string(<em class="replaceable"><code>address</code></em>)</span></dt><dd><div class="para">
15 </div></dd><dt class="varlistentry"><span class="term">user_string_n(<em class="replaceable"><code>address</code></em>, <em class="replaceable"><code>n</code></em>)</span></dt><dd><div class="para"> 15 Obtains the string at <em class="replaceable"><code>address</code></em> for the current user process.
16 Obtain the string at <em class="replaceable"><code>address</code></em> for the current user process and limits the string to <em class="replaceable"><code>n</code></em> bytes. 16 </div></dd><dt><span class="term">user_string_n(<em class="replaceable"><code>address</code></em>, <em class="replaceable"><code>n</code></em>)</span></dt><dd><div class="para">
17 </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> 17 Obtains the string at <em class="replaceable"><code>address</code></em> for the current user process and limits the string to <em class="replaceable"><code>n</code></em> bytes.
18 </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