if 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:Example 3.19. vfsreads-print-if-1kb.stp
global readsprobe vfs.read{ reads[execname()] ++}probe timer.s(3){ printf("=======\n") foreach (count in reads-) if (reads[count] >= 1024) printf("%s : %dkB \n", count, reads[count]/1024) else printf("%s : %dB \n", count, reads[count])}if statement in the script converts and prints it out in kB.if statements, as in:if([index_expression] in array_name) statement
Example 3.20. vfsreads-stop-on-stapio2.stp
global readsprobe vfs.read{ reads[execname()] ++}probe timer.s(3){ printf("=======\n") foreach (count in reads+) printf("%s : %d \n", count, reads[count]) if(["stapio"] in reads) { printf("stapio read detected, exiting\n") exit() }}if(["stapio"] in reads) statement instructs the script to print stapio read detected, exiting once the unique key stapio is added to the array reads.