cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

failed-syscalls.pl (1176B)


      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
      8use lib "$ENV{'PERF_EXEC_PATH'}/scripts/perl/Perf-Trace-Util/lib";
      9use lib "./Perf-Trace-Util/lib";
     10use Perf::Trace::Core;
     11use Perf::Trace::Context;
     12use Perf::Trace::Util;
     13
     14my $for_comm = shift;
     15
     16my %failed_syscalls;
     17
     18sub raw_syscalls::sys_exit
     19{
     20	my ($event_name, $context, $common_cpu, $common_secs, $common_nsecs,
     21	    $common_pid, $common_comm, $common_callchain,
     22	    $id, $ret) = @_;
     23
     24	if ($ret < 0) {
     25	    $failed_syscalls{$common_comm}++;
     26	}
     27}
     28
     29sub syscalls::sys_exit
     30{
     31	raw_syscalls::sys_exit(@_)
     32}
     33
     34sub 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) {
     43	next if ($for_comm && $comm ne $for_comm);
     44
     45	printf("%-20s  %10s\n", $comm, $failed_syscalls{$comm});
     46    }
     47}