Linux Audio

Check our new training course

Yocto / OpenEmbedded training

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