Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1#!/bin/bash
2# Perf event open fallback test
3# SPDX-License-Identifier: GPL-2.0
4
5skip_cnt=0
6ok_cnt=0
7err_cnt=0
8
9perf_record()
10{
11 perf record -o /dev/null "$@" -- true 1>/dev/null 2>&1
12}
13
14test_decrease_precise_ip()
15{
16 echo "Decrease precise ip test"
17
18 perf list pmu | grep -q 'cycles' || return 2
19
20 if ! perf_record -e cycles; then
21 return 2
22 fi
23
24 # It should reduce precision level down to 0 if needed.
25 if ! perf_record -e cycles:P; then
26 return 1
27 fi
28 return 0
29}
30
31test_decrease_precise_ip_complicated()
32{
33 echo "Decrease precise ip test (complicated case)"
34
35 perf list pmu | grep -q 'mem-loads-aux' || return 2
36
37 if ! perf_record -e '{mem-loads-aux:S,mem-loads:PS}'; then
38 return 1
39 fi
40 return 0
41}
42
43count_result()
44{
45 if [ "$1" -eq 2 ] ; then
46 skip_cnt=$((skip_cnt + 1))
47 return
48 fi
49 if [ "$1" -eq 0 ] ; then
50 ok_cnt=$((ok_cnt + 1))
51 return
52 fi
53 err_cnt=$((err_cnt + 1))
54}
55
56ret=0
57test_decrease_precise_ip || ret=$? ; count_result $ret ; ret=0
58test_decrease_precise_ip_complicated || ret=$? ; count_result $ret ; ret=0
59
60cleanup
61
62if [ ${err_cnt} -gt 0 ] ; then
63 exit 1
64fi
65
66if [ ${ok_cnt} -gt 0 ] ; then
67 exit 0
68fi
69
70# Skip
71exit 2