diff options
| author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2010-11-02 16:41:56 +0300 | 
|---|---|---|
| committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2010-11-02 16:41:56 +0300 | 
| commit | 29c798fecb9b846b363b0a02fa662ff42fc19426 (patch) | |
| tree | e708d6aca8f098e69571780f702325b221b66694 /tools/perf/scripts/python/failed-syscalls-by-pid.py | |
| parent | cb9906229595941d632fc4022b05da4f9533856a (diff) | |
| parent | c8ddb2713c624f432fa5fe3c7ecffcdda46ea0d4 (diff) | |
| download | linux-29c798fecb9b846b363b0a02fa662ff42fc19426.tar.xz | |
Merge commit 'v2.6.37-rc1' into for-2.6.37
Diffstat (limited to 'tools/perf/scripts/python/failed-syscalls-by-pid.py')
| -rw-r--r-- | tools/perf/scripts/python/failed-syscalls-by-pid.py | 21 | 
1 files changed, 13 insertions, 8 deletions
| diff --git a/tools/perf/scripts/python/failed-syscalls-by-pid.py b/tools/perf/scripts/python/failed-syscalls-by-pid.py index 0ca02278fe69..acd7848717b3 100644 --- a/tools/perf/scripts/python/failed-syscalls-by-pid.py +++ b/tools/perf/scripts/python/failed-syscalls-by-pid.py @@ -13,21 +13,26 @@ sys.path.append(os.environ['PERF_EXEC_PATH'] + \  from perf_trace_context import *  from Core import * +from Util import * -usage = "perf trace -s syscall-counts-by-pid.py [comm]\n"; +usage = "perf trace -s syscall-counts-by-pid.py [comm|pid]\n";  for_comm = None +for_pid = None  if len(sys.argv) > 2:  	sys.exit(usage)  if len(sys.argv) > 1: -	for_comm = sys.argv[1] +	try: +		for_pid = int(sys.argv[1]) +	except: +		for_comm = sys.argv[1]  syscalls = autodict()  def trace_begin(): -	pass +	print "Press control+C to stop and show the summary"  def trace_end():  	print_error_totals() @@ -35,9 +40,9 @@ def trace_end():  def raw_syscalls__sys_exit(event_name, context, common_cpu,  	common_secs, common_nsecs, common_pid, common_comm,  	id, ret): -	if for_comm is not None: -		if common_comm != for_comm: -			return +	if (for_comm and common_comm != for_comm) or \ +	   (for_pid  and common_pid  != for_pid ): +		return  	if ret < 0:  		try: @@ -62,7 +67,7 @@ def print_error_totals():  		    print "\n%s [%d]\n" % (comm, pid),  		    id_keys = syscalls[comm][pid].keys()  		    for id in id_keys: -			    print "  syscall: %-16d\n" % (id), +			    print "  syscall: %-16s\n" % syscall_name(id),  			    ret_keys = syscalls[comm][pid][id].keys()  			    for ret, val in sorted(syscalls[comm][pid][id].iteritems(), key = lambda(k, v): (v, k),  reverse = True): -				    print "    err = %-20d  %10d\n" % (ret, val), +				    print "    err = %-20s  %10d\n" % (strerror(ret), val), | 
