Older kernels (e.g., RHEL6) do system call tracing via the syscalls:sys_{enter,exit} tracepoints rather than using raw_syscalls:*. Update perf python and perl scripts to fallback to syscalls:* when raw_syscalls:* isn't available.
Showing the changes to tools/perf/scripts/python (8 of 10 files). Show all
Unified · Split
| @@ -1,2 +1,3 @@ | ||
| 1 | 1 | #!/bin/bash |
| 2 | −perf record -e raw_syscalls:sys_exit $@ | |
| 2 | +(perf record -e raw_syscalls:sys_exit $@ || \ | |
| 3 | + perf record -e syscalls:sys_exit $@) 2> /dev/null | |
| @@ -1,2 +1,3 @@ | ||
| 1 | 1 | #!/bin/bash |
| 2 | −perf record -e raw_syscalls:sys_enter $@ | |
| 2 | +(perf record -e raw_syscalls:sys_enter $@ || \ | |
| 3 | + perf record -e syscalls:sys_enter $@) 2> /dev/null | |
| @@ -1,2 +1,3 @@ | ||
| 1 | 1 | #!/bin/bash |
| 2 | −perf record -e raw_syscalls:sys_enter $@ | |
| 2 | +(perf record -e raw_syscalls:sys_enter $@ || \ | |
| 3 | + perf record -e syscalls:sys_enter $@) 2> /dev/null | |
| @@ -1,2 +1,3 @@ | ||
| 1 | 1 | #!/bin/bash |
| 2 | −perf record -e raw_syscalls:sys_enter $@ | |
| 2 | +(perf record -e raw_syscalls:sys_enter $@ || \ | |
| 3 | + perf record -e syscalls:sys_enter $@) 2> /dev/null | |
| @@ -50,6 +50,11 @@ def raw_syscalls__sys_exit(event_name, context, common_cpu, · 49 unmodified lines | ||
| 50 | 50 | except TypeError: |
| 51 | 51 | syscalls[common_comm][common_pid][id][ret] = 1 |
| 52 | 52 | |
| 53 | +def syscalls__sys_exit(event_name, context, common_cpu, | |
| 54 | + common_secs, common_nsecs, common_pid, common_comm, | |
| 55 | + id, ret): | |
| 56 | + raw_syscalls__sys_exit(**locals()) | |
| 57 | + | |
| 53 | 58 | def print_error_totals(): |
| 54 | 59 | if for_comm is not None: |
| 55 | 60 | print "\nsyscall errors for %s:\n\n" % (for_comm), |
| @@ -53,6 +53,11 @@ def raw_syscalls__sys_enter(event_name, context, common_cpu, · 52 unmodified lines | ||
| 53 | 53 | except TypeError: |
| 54 | 54 | syscalls[id] = 1 |
| 55 | 55 | |
| 56 | +def syscalls__sys_enter(event_name, context, common_cpu, | |
| 57 | + common_secs, common_nsecs, common_pid, common_comm, | |
| 58 | + id, args): | |
| 59 | + raw_syscalls__sys_enter(**locals()) | |
| 60 | + | |
| 56 | 61 | def print_syscall_totals(interval): |
| 57 | 62 | while 1: |
| 58 | 63 | clear_term() |
| @@ -48,6 +48,11 @@ def raw_syscalls__sys_enter(event_name, context, common_cpu, · 47 unmodified lines | ||
| 48 | 48 | except TypeError: |
| 49 | 49 | syscalls[common_comm][common_pid][id] = 1 |
| 50 | 50 | |
| 51 | +def syscalls__sys_enter(event_name, context, common_cpu, | |
| 52 | + common_secs, common_nsecs, common_pid, common_comm, | |
| 53 | + id, args): | |
| 54 | + raw_syscalls__sys_enter(**locals()) | |
| 55 | + | |
| 51 | 56 | def print_syscall_totals(): |
| 52 | 57 | if for_comm is not None: |
| 53 | 58 | print "\nsyscall events for %s:\n\n" % (for_comm), |
| @@ -44,6 +44,11 @@ def raw_syscalls__sys_enter(event_name, context, common_cpu, · 43 unmodified lines | ||
| 44 | 44 | except TypeError: |
| 45 | 45 | syscalls[id] = 1 |
| 46 | 46 | |
| 47 | +def syscalls__sys_enter(event_name, context, common_cpu, | |
| 48 | + common_secs, common_nsecs, common_pid, common_comm, | |
| 49 | + id, args): | |
| 50 | + raw_syscalls__sys_enter(**locals()) | |
| 51 | + | |
| 47 | 52 | def print_syscall_totals(): |
| 48 | 53 | if for_comm is not None: |
| 49 | 54 | print "\nsyscall events for %s:\n\n" % (for_comm), |