Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0+ or MIT
3
4EXTRA_ARGS=${@}
5
6OLDIFS="$IFS"
7IFS=$'\n'
8TEST_LIST=(
9 "-T s"
10 "-T l"
11 "-T b"
12 "-T b -M"
13 "-T m"
14 "-T m -M"
15 "-T i"
16)
17
18TEST_NAME=(
19 "spinlock"
20 "list"
21 "buffer"
22 "buffer with barrier"
23 "memcpy"
24 "memcpy with barrier"
25 "increment"
26)
27IFS="$OLDIFS"
28
29REPS=1000
30SLOW_REPS=100
31
32function do_tests()
33{
34 local i=0
35 while [ "$i" -lt "${#TEST_LIST[@]}" ]; do
36 echo "Running test ${TEST_NAME[$i]}"
37 ./param_test ${TEST_LIST[$i]} -r ${REPS} ${@} ${EXTRA_ARGS} || exit 1
38 echo "Running compare-twice test ${TEST_NAME[$i]}"
39 ./param_test_compare_twice ${TEST_LIST[$i]} -r ${REPS} ${@} ${EXTRA_ARGS} || exit 1
40 let "i++"
41 done
42}
43
44echo "Default parameters"
45do_tests
46
47echo "Loop injection: 10000 loops"
48
49OLDIFS="$IFS"
50IFS=$'\n'
51INJECT_LIST=(
52 "1"
53 "2"
54 "3"
55 "4"
56 "5"
57 "6"
58 "7"
59 "8"
60 "9"
61)
62IFS="$OLDIFS"
63
64NR_LOOPS=10000
65
66i=0
67while [ "$i" -lt "${#INJECT_LIST[@]}" ]; do
68 echo "Injecting at <${INJECT_LIST[$i]}>"
69 do_tests -${INJECT_LIST[i]} ${NR_LOOPS}
70 let "i++"
71done
72NR_LOOPS=
73
74function inject_blocking()
75{
76 OLDIFS="$IFS"
77 IFS=$'\n'
78 INJECT_LIST=(
79 "7"
80 "8"
81 "9"
82 )
83 IFS="$OLDIFS"
84
85 NR_LOOPS=-1
86
87 i=0
88 while [ "$i" -lt "${#INJECT_LIST[@]}" ]; do
89 echo "Injecting at <${INJECT_LIST[$i]}>"
90 do_tests -${INJECT_LIST[i]} -1 ${@}
91 let "i++"
92 done
93 NR_LOOPS=
94}
95
96echo "Yield injection (25%)"
97inject_blocking -m 4 -y
98
99echo "Yield injection (50%)"
100inject_blocking -m 2 -y
101
102echo "Yield injection (100%)"
103inject_blocking -m 1 -y
104
105echo "Kill injection (25%)"
106inject_blocking -m 4 -k
107
108echo "Kill injection (50%)"
109inject_blocking -m 2 -k
110
111echo "Kill injection (100%)"
112inject_blocking -m 1 -k
113
114echo "Sleep injection (1ms, 25%)"
115inject_blocking -m 4 -s 1
116
117echo "Sleep injection (1ms, 50%)"
118inject_blocking -m 2 -s 1
119
120echo "Sleep injection (1ms, 100%)"
121inject_blocking -m 1 -s 1