1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0
3# description: ftrace - function trace with cpumask
4# requires: function:tracer
5
6if ! which nproc ; then
7  nproc() {
8    ls -d /sys/devices/system/cpu/cpu[0-9]* | wc -l
9  }
10fi
11
12NP=`nproc`
13
14if [ $NP -eq 1 ] ;then
15  echo "We can not test cpumask on UP environment"
16  exit_unresolved
17fi
18
19ORIG_CPUMASK=`cat tracing_cpumask`
20
21do_reset() {
22  echo $ORIG_CPUMASK > tracing_cpumask
23}
24
25echo 0 > tracing_on
26echo > trace
27: "Bitmask only record on CPU1"
28echo 2 > tracing_cpumask
29MASK=0x`cat tracing_cpumask`
30test `printf "%d" $MASK` -eq 2 || do_reset
31
32echo function > current_tracer
33echo 1 > tracing_on
34(echo "forked")
35echo 0 > tracing_on
36
37: "Check CPU1 events are recorded"
38grep -q -e "\[001\]" trace || do_reset
39
40: "There should be No other cpu events"
41! grep -qv -e "\[001\]" -e "^#" trace || do_reset
42
43do_reset
44