if (condition
)statement1
elsestatement2
statement1
is executed if the condition
expression is non-zero. The statement2
is executed if the condition
expression is zero. The else
clause (else
statement2
) is optional. Both statement1
and statement2
can be statement blocks.
global countread, countnonread probe kernel.function("vfs_read"),kernel.function("vfs_write") { if (probefunc()=="vfs_read") countread ++ else countnonread ++ } probe timer.s(5) { exit() } probe end { printf("VFS reads total %d\n VFS writes total %d\n", countread, countnonread) }
vfs_read
) and writes (vfs_write
) the system performs within a 5-second span. When run, the script increments the value of the variable countread
by 1 if the name of the function it probed matches vfs_read
(as noted by the condition if (probefunc()=="vfs_read")
); otherwise, it increments countnonread
(else {countnonread ++}
).
while (condition
)statement
condition
is non-zero the block of statements in statement
are executed. The statement
is often a statement block and it must change a value so condition
will eventually be zero.
for (initialization
;conditional
;increment
)statement
for
loop is simply shorthand for a while loop. The following is the equivalent while
loop:
initialization
while (conditional
) {statement
increment
}
==
("is equal to"), you can also use the following operators in your conditional statements: