failed-syscalls.pl 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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. use lib "$ENV{'PERF_EXEC_PATH'}/scripts/perl/Perf-Trace-Util/lib";
  8. use lib "./Perf-Trace-Util/lib";
  9. use Perf::Trace::Core;
  10. use Perf::Trace::Context;
  11. use Perf::Trace::Util;
  12. my %failed_syscalls;
  13. sub raw_syscalls::sys_exit
  14. {
  15. my ($event_name, $context, $common_cpu, $common_secs, $common_nsecs,
  16. $common_pid, $common_comm,
  17. $id, $ret) = @_;
  18. if ($ret < 0) {
  19. $failed_syscalls{$common_comm}++;
  20. }
  21. }
  22. sub trace_end
  23. {
  24. printf("\nfailed syscalls by comm:\n\n");
  25. printf("%-20s %10s\n", "comm", "# errors");
  26. printf("%-20s %6s %10s\n", "--------------------", "----------");
  27. foreach my $comm (sort {$failed_syscalls{$b} <=> $failed_syscalls{$a}}
  28. keys %failed_syscalls) {
  29. printf("%-20s %10s\n", $comm, $failed_syscalls{$comm});
  30. }
  31. }