Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Util.py
10832 views
1
# Util.py - Python extension for perf script, miscellaneous utility code
2
#
3
# Copyright (C) 2010 by Tom Zanussi <[email protected]>
4
#
5
# This software may be distributed under the terms of the GNU General
6
# Public License ("GPL") version 2 as published by the Free Software
7
# Foundation.
8
9
import errno, os
10
11
FUTEX_WAIT = 0
12
FUTEX_WAKE = 1
13
FUTEX_PRIVATE_FLAG = 128
14
FUTEX_CLOCK_REALTIME = 256
15
FUTEX_CMD_MASK = ~(FUTEX_PRIVATE_FLAG | FUTEX_CLOCK_REALTIME)
16
17
NSECS_PER_SEC = 1000000000
18
19
def avg(total, n):
20
return total / n
21
22
def nsecs(secs, nsecs):
23
return secs * NSECS_PER_SEC + nsecs
24
25
def nsecs_secs(nsecs):
26
return nsecs / NSECS_PER_SEC
27
28
def nsecs_nsecs(nsecs):
29
return nsecs % NSECS_PER_SEC
30
31
def nsecs_str(nsecs):
32
str = "%5u.%09u" % (nsecs_secs(nsecs), nsecs_nsecs(nsecs)),
33
return str
34
35
def add_stats(dict, key, value):
36
if not dict.has_key(key):
37
dict[key] = (value, value, value, 1)
38
else:
39
min, max, avg, count = dict[key]
40
if value < min:
41
min = value
42
if value > max:
43
max = value
44
avg = (avg + value) / 2
45
dict[key] = (min, max, avg, count + 1)
46
47
def clear_term():
48
print("\x1b[H\x1b[2J")
49
50
audit_package_warned = False
51
52
try:
53
import audit
54
machine_to_id = {
55
'x86_64': audit.MACH_86_64,
56
'alpha' : audit.MACH_ALPHA,
57
'ia64' : audit.MACH_IA64,
58
'ppc' : audit.MACH_PPC,
59
'ppc64' : audit.MACH_PPC64,
60
's390' : audit.MACH_S390,
61
's390x' : audit.MACH_S390X,
62
'i386' : audit.MACH_X86,
63
'i586' : audit.MACH_X86,
64
'i686' : audit.MACH_X86,
65
}
66
try:
67
machine_to_id['armeb'] = audit.MACH_ARMEB
68
except:
69
pass
70
machine_id = machine_to_id[os.uname()[4]]
71
except:
72
if not audit_package_warned:
73
audit_package_warned = True
74
print "Install the audit-libs-python package to get syscall names"
75
76
def syscall_name(id):
77
try:
78
return audit.audit_syscall_to_name(id, machine_id)
79
except:
80
return str(id)
81
82
def strerror(nr):
83
try:
84
return errno.errorcode[abs(nr)]
85
except:
86
return "Unknown %d errno" % nr
87
88