Commit | Line | Data |
---|---|---|
4d161f03 TZ |
1 | # failed system call counts |
2 | # (c) 2010, Tom Zanussi <tzanussi@gmail.com> | |
3 | # Licensed under the terms of the GNU GPL License version 2 | |
4 | # | |
5 | # Displays system-wide failed system call totals | |
6 | # If a [comm] arg is specified, only syscalls called by [comm] are displayed. | |
7 | ||
8 | use lib "$ENV{'PERF_EXEC_PATH'}/scripts/perl/Perf-Trace-Util/lib"; | |
9 | use lib "./Perf-Trace-Util/lib"; | |
10 | use Perf::Trace::Core; | |
11 | use Perf::Trace::Context; | |
12 | use Perf::Trace::Util; | |
13 | ||
c3f5fd28 TZ |
14 | my $for_comm = shift; |
15 | ||
4d161f03 TZ |
16 | my %failed_syscalls; |
17 | ||
18 | sub raw_syscalls::sys_exit | |
19 | { | |
20 | my ($event_name, $context, $common_cpu, $common_secs, $common_nsecs, | |
21 | $common_pid, $common_comm, | |
22 | $id, $ret) = @_; | |
23 | ||
24 | if ($ret < 0) { | |
25 | $failed_syscalls{$common_comm}++; | |
26 | } | |
27 | } | |
28 | ||
07100877 DBO |
29 | sub syscalls::sys_exit |
30 | { | |
31 | raw_syscalls::sys_exit(@_) | |
32 | } | |
33 | ||
4d161f03 TZ |
34 | sub trace_end |
35 | { | |
36 | printf("\nfailed syscalls by comm:\n\n"); | |
37 | ||
38 | printf("%-20s %10s\n", "comm", "# errors"); | |
39 | printf("%-20s %6s %10s\n", "--------------------", "----------"); | |
40 | ||
41 | foreach my $comm (sort {$failed_syscalls{$b} <=> $failed_syscalls{$a}} | |
42 | keys %failed_syscalls) { | |
c3f5fd28 TZ |
43 | next if ($for_comm && $comm ne $for_comm); |
44 | ||
45 | printf("%-20s %10s\n", $comm, $failed_syscalls{$comm}); | |
4d161f03 TZ |
46 | } |
47 | } |