/* * timers.stp * * Test the functionality of the various timer.* probes. */ global p global j1, j2, jmax global ms1, ms500, msmax probe begin { printf("systemtap starting probe\n") } probe timer.profile { ++p } probe timer.jiffies(1) { ++j1 } probe timer.jiffies(2) { ++j2 } probe timer.jiffies(1000000) { ++jmax } /* as long as HZ>2, ms(1) and ms(500) * will produce different counts */ probe timer.ms(1) { ++ms1 } probe timer.ms(500) { ++ms500 } probe timer.ms(1000000) { ++msmax } probe end { printf("systemtap ending probe\n") printf("p = %d\n", p) printf("j1 = %d\n", j1) printf("j2 = %d\n", j2) printf("jmax = %d\n", jmax) printf("ms1 = %d\n", ms1) printf("ms500 = %d\n", ms500) printf("msmax = %d\n", msmax) /* profile counter should be non-zero, and at * least as many as the jiffies(1) counter */ /* (fudge comparison by ~1% since start & end aren't synchronized) */ if ((p > 0) && (p*100 >= j1*99)) { printf("systemtap test success\n") } else { printf("unexpected profile count: %d profiles and %d jiffies\n", p, j1) printf("systemtap test failure\n"); } /* jiffies(1) should count more than jiffies(2), * and both should be non-zero. */ if ((j2 > 0) && (j2 < j1)) { printf("systemtap test success\n") } else { printf("unexpected jiffies count\n") printf("systemtap test failure\n"); } /* ms(1) should count more than ms(500), * and both should be non-zero. */ if ((ms500 > 0) && (ms500 < ms1)) { printf("systemtap test success\n") } else { printf("unexpected ms count\n") printf("systemtap test failure\n"); } /* both 'infinite' intervals should register zero counts */ if ((jmax == 0) && (msmax == 0)) { printf("systemtap test success\n") } else { printf("unexpected count on 'infinite' interval\n") printf("systemtap test failure\n"); } }