3 # Copyright (C) 2020 Jonathan Rajotte-Julien <jonathan.rajotte-julien@efficios.com>
5 # SPDX-License-Identifier: LGPL-2.1-only
7 GENERATOR_CURDIR
=$
(dirname "$0")/
8 GENERATOR_TESTDIR
=$GENERATOR_CURDIR/..
/..
/..
/
9 TESTAPP_PATH
=${TESTAPP_PATH:-"$GENERATOR_TESTDIR/utils/testapp"}
11 SYSCALL_TESTAPP_NAME
=${SYSCALL_TESTAPP_NAME:-"gen-syscall-events"}
12 SYSCALL_TESTAPP_BIN
=${SYSCALL_TESTAPP_BIN:-"$TESTAPP_PATH/$SYSCALL_TESTAPP_NAME/$SYSCALL_TESTAPP_NAME"}
14 USERSPACE_PROBE_ELF_TESTAPP_NAME
=${USERSPACE_PROBE_ELF_TESTAPP_NAME:-"userspace-probe-elf-binary"}
15 USERSPACE_PROBE_ELF_TESTAPP_BIN
=${USERSPACE_PROBE_ELF_TESTAPP_BIN:-"$TESTAPP_PATH/$USERSPACE_PROBE_ELF_TESTAPP_NAME/.libs/$USERSPACE_PROBE_ELF_TESTAPP_NAME"}
17 function generate_filter_events
20 /bin
/echo -n "$nr" > /proc
/lttng-test-filter-event
2> /dev
/null
23 function generate_syscalls
28 for i
in $
(seq 1 "$nr"); do
29 # Pass /dev/null so to generate the syscall right away.
30 $SYSCALL_TESTAPP_BIN /dev
/null
"$@"
34 function userspace_probe_testapp
39 for i
in $
(seq 1 "$nr"); do
40 $USERSPACE_PROBE_ELF_TESTAPP_BIN "$@"
44 function ust_event_generator_toggle_state
46 ust_event_generator_suspended
=$
((ust_event_generator_suspended
==0))
49 function generator_quit
54 # Note: Only one generator can be used at a time per domain type
55 function ust_event_generator_run_once_per_transition
57 # Used by the signal trap
58 ust_event_generator_suspended
=0
59 # Used by the signal trap for SIGUSR2 to end the generator
68 # Pass any of the remaining arguments to the generator.
71 trap ust_event_generator_toggle_state SIGUSR1
72 trap generator_quit SIGUSR2
74 while [ $generator_quit -ne 0 ]; do
75 if [[ $ust_event_generator_suspended -eq "1" ]]; then
77 # Reset the "run" state
80 elif [ "$run" = true
]; then
81 taskset
-c 0 "$test_app" -i "$nr_iter" -w "$nr_usec_wait" "$@"> /dev
/null
2>&1
83 if [[ -f $state_file ]]; then
84 rm -rf "$state_file" 2> /dev
/null
87 # Wait for a "suspend" to reset the run state
93 # Note: Only one generator can be used at a time per domain type
94 function ust_event_generator
96 # Used by the signal trap
97 ust_event_generator_suspended
=0
98 # Used by the signal trap for SIGUSR2 to end the generator
106 # Pass any of the remaining arguments to the generator.
109 trap ust_event_generator_toggle_state SIGUSR1
110 trap generator_quit SIGUSR2
112 while [ $generator_quit -ne 0 ]; do
113 if [[ $ust_event_generator_suspended -eq "1" ]]; then
115 # Reset the "run" state
118 taskset
-c 0 "$test_app" -i $nr_iter -w $nr_usec_wait "$@" > /dev
/null
2>&1
119 if [[ -f $state_file ]]; then
120 rm -rf "$state_file" 2> /dev
/null
126 function kernel_event_generator_toggle_state
128 kernel_event_generator_suspended
=$
((kernel_event_generator_suspended
==0))
131 function kernel_event_generator_run_once_per_transition
133 # Used by the signal trap
134 kernel_event_generator_suspended
=0
135 # Used by the signal trap for SIGUSR2 to end the generator
142 # Pass any of the remaining arguments to the generator.
146 trap kernel_event_generator_toggle_state SIGUSR1
147 trap generator_quit SIGUSR2
149 while [ $generator_quit -ne 0 ]; do
150 if [[ $kernel_event_generator_suspended -eq "1" ]]; then
154 elif [ "$run" = true
]; then
155 $generator "$nr_iter" "$@"
157 if [[ -f $state_file ]]; then
158 rm "$state_file" 2> /dev
/null
161 # Wait for a "suspend" to reset the run state
167 function kernel_event_generator
169 # Used by the signal trap
170 kernel_event_generator_suspended
=0
171 # Used by the signal trap for SIGUSR2 to end the generator
177 # Pass any of the remaining arguments to the generator.
180 trap kernel_event_generator_toggle_state SIGUSR1
181 trap generator_quit SIGUSR2
183 while [ $generator_quit -ne 0 ]; do
184 if [[ $kernel_event_generator_suspended -eq "1" ]]; then
189 if [[ -f $state_file ]]; then
190 rm "$state_file" 2> /dev
/null