~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/perf/scripts/python/failed-syscalls-by-pid.py

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /tools/perf/scripts/python/failed-syscalls-by-pid.py (Architecture sparc) and /tools/perf/scripts/python/failed-syscalls-by-pid.py (Architecture mips)


  1 # failed system call counts, by pid                 1 # failed system call counts, by pid
  2 # (c) 2010, Tom Zanussi <tzanussi@gmail.com>         2 # (c) 2010, Tom Zanussi <tzanussi@gmail.com>
  3 # Licensed under the terms of the GNU GPL Lice      3 # Licensed under the terms of the GNU GPL License version 2
  4 #                                                   4 #
  5 # Displays system-wide failed system call tota      5 # Displays system-wide failed system call totals, broken down by pid.
  6 # If a [comm] arg is specified, only syscalls       6 # If a [comm] arg is specified, only syscalls called by [comm] are displayed.
  7                                                     7 
  8 from __future__ import print_function               8 from __future__ import print_function
  9                                                     9 
 10 import os                                          10 import os
 11 import sys                                         11 import sys
 12                                                    12 
 13 sys.path.append(os.environ['PERF_EXEC_PATH'] +     13 sys.path.append(os.environ['PERF_EXEC_PATH'] + \
 14         '/scripts/python/Perf-Trace-Util/lib/P     14         '/scripts/python/Perf-Trace-Util/lib/Perf/Trace')
 15                                                    15 
 16 from perf_trace_context import *                   16 from perf_trace_context import *
 17 from Core import *                                 17 from Core import *
 18 from Util import *                                 18 from Util import *
 19                                                    19 
 20 usage = "perf script -s syscall-counts-by-pid.     20 usage = "perf script -s syscall-counts-by-pid.py [comm|pid]\n";
 21                                                    21 
 22 for_comm = None                                    22 for_comm = None
 23 for_pid = None                                     23 for_pid = None
 24                                                    24 
 25 if len(sys.argv) > 2:                              25 if len(sys.argv) > 2:
 26         sys.exit(usage)                            26         sys.exit(usage)
 27                                                    27 
 28 if len(sys.argv) > 1:                              28 if len(sys.argv) > 1:
 29         try:                                       29         try:
 30                 for_pid = int(sys.argv[1])         30                 for_pid = int(sys.argv[1])
 31         except:                                    31         except:
 32                 for_comm = sys.argv[1]             32                 for_comm = sys.argv[1]
 33                                                    33 
 34 syscalls = autodict()                              34 syscalls = autodict()
 35                                                    35 
 36 def trace_begin():                                 36 def trace_begin():
 37         print("Press control+C to stop and sho     37         print("Press control+C to stop and show the summary")
 38                                                    38 
 39 def trace_end():                                   39 def trace_end():
 40         print_error_totals()                       40         print_error_totals()
 41                                                    41 
 42 def raw_syscalls__sys_exit(event_name, context     42 def raw_syscalls__sys_exit(event_name, context, common_cpu,
 43         common_secs, common_nsecs, common_pid,     43         common_secs, common_nsecs, common_pid, common_comm,
 44         common_callchain, id, ret):                44         common_callchain, id, ret):
 45         if (for_comm and common_comm != for_co     45         if (for_comm and common_comm != for_comm) or \
 46            (for_pid  and common_pid  != for_pi     46            (for_pid  and common_pid  != for_pid ):
 47                 return                             47                 return
 48                                                    48 
 49         if ret < 0:                                49         if ret < 0:
 50                 try:                               50                 try:
 51                         syscalls[common_comm][     51                         syscalls[common_comm][common_pid][id][ret] += 1
 52                 except TypeError:                  52                 except TypeError:
 53                         syscalls[common_comm][     53                         syscalls[common_comm][common_pid][id][ret] = 1
 54                                                    54 
 55 def syscalls__sys_exit(event_name, context, co     55 def syscalls__sys_exit(event_name, context, common_cpu,
 56         common_secs, common_nsecs, common_pid,     56         common_secs, common_nsecs, common_pid, common_comm,
 57         id, ret):                                  57         id, ret):
 58         raw_syscalls__sys_exit(**locals())         58         raw_syscalls__sys_exit(**locals())
 59                                                    59 
 60 def print_error_totals():                          60 def print_error_totals():
 61         if for_comm is not None:                   61         if for_comm is not None:
 62                 print("\nsyscall errors for %s     62                 print("\nsyscall errors for %s:\n" % (for_comm))
 63         else:                                      63         else:
 64                 print("\nsyscall errors:\n")       64                 print("\nsyscall errors:\n")
 65                                                    65 
 66         print("%-30s  %10s" % ("comm [pid]", "     66         print("%-30s  %10s" % ("comm [pid]", "count"))
 67         print("%-30s  %10s" % ("--------------     67         print("%-30s  %10s" % ("------------------------------", "----------"))
 68                                                    68 
 69         comm_keys = syscalls.keys()                69         comm_keys = syscalls.keys()
 70         for comm in comm_keys:                     70         for comm in comm_keys:
 71                 pid_keys = syscalls[comm].keys     71                 pid_keys = syscalls[comm].keys()
 72                 for pid in pid_keys:               72                 for pid in pid_keys:
 73                         print("\n%s [%d]" % (c     73                         print("\n%s [%d]" % (comm, pid))
 74                         id_keys = syscalls[com     74                         id_keys = syscalls[comm][pid].keys()
 75                         for id in id_keys:         75                         for id in id_keys:
 76                                 print("  sysca     76                                 print("  syscall: %-16s" % syscall_name(id))
 77                                 ret_keys = sys     77                                 ret_keys = syscalls[comm][pid][id].keys()
 78                                 for ret, val i     78                                 for ret, val in sorted(syscalls[comm][pid][id].items(), key = lambda kv: (kv[1], kv[0]), reverse = True):
 79                                         print(     79                                         print("    err = %-20s  %10d" % (strerror(ret), val))
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php