if (condition) statement1 else statement2
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.
Example 3.11. ifelse.stp
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 shorthand for a while loop. The following is the equivalent while
loop:
initialization while (conditional) { statement increment }
==
("is equal to"), following operators can also be used in conditional statements: