OLDCPUSET=$(taskset -p $$)
diag "Test local UST snapshots with small discard buffers"
- taskset -p 0x1 $$ 1>/dev/null 2>&1 # CPU 0 only
+ taskset -c "$(get_any_available_cpu)" -p $$ 1>/dev/null 2>&1
create_lttng_session_no_output $SESSION_NAME
enable_mmap_small_discard_ust_channel $SESSION_NAME $CHANNEL_NAME
enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
OLDCPUSET=$(taskset -p $$)
diag "Test local UST snapshots with small overwrite buffers"
- taskset -p 0x1 $$ 1>/dev/null 2>&1 # CPU 0 only
+ taskset -p "$(get_any_available_cpu)" $$ 1>/dev/null 2>&1
create_lttng_session_no_output $SESSION_NAME
enable_mmap_small_overwrite_ust_channel $SESSION_NAME $CHANNEL_NAME
enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME $CHANNEL_NAME
local snapshot_max_size
local channel_max_size_per_cpu
- IFS=" " read -r -a cpus_list <<< "$(get_exposed_cpus_list)"
+ IFS=" " read -r -a cpus_list <<< "$(get_online_cpus)"
possible_cpus=$(get_possible_cpus_count)
subbuf_size=$(getconf PAGE_SIZE)
source "$TESTDIR"/utils/utils.sh
-NUM_CPUS=$(conf_proc_count)
-
if [ ! -x "$TESTAPP_BIN" ]; then
BAIL_OUT "No UST events binary detected."
fi
function pick_random_cpuid ()
{
- local cpuid=0
-
- # On Linux pick a random available cpuid from sysfs
- if [ -d "/sys/devices/system/cpu" ]; then
- local cpuids=()
-
- for i in /sys/devices/system/cpu/cpu[0-9]*; do
- cpuids+=("${i#/sys/devices/system/cpu/cpu}")
- done
-
- cpuid=${cpuids[ $RANDOM % ${#cpuids[@]} ]}
- else
- cpuid=$((RANDOM % NUM_CPUS))
- fi
-
- echo $cpuid
+ local cpuids
+ read -r -a cpuids <<< "$(get_online_cpus)"
+ echo "${cpuids[ $RANDOM % ${#cpuids[@]} ]}"
}
function enable_lttng_channel_count_limit ()
echo
}
+# Return a space-separated string of online CPU IDs, based on
+# /sys/devices/system/cpu/online, or from 0 to nproc - 1 otherwise.
+function get_online_cpus()
+{
+ local cpus=()
+ local range_re
+ if [ -f /sys/devices/system/cpu/online ]; then
+ range_re='([0-9]+)-([0-9]+)'
+ while read -r range ; do
+ if [[ "${range}" =~ ${range_re} ]] ; then
+ mapfile -t -O "${#cpus[*]}" cpus <<< $(seq "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}")
+ else
+ cpus+=("${range}")
+ fi
+ done < <(tr ',' $'\n' < /sys/devices/system/cpu/online)
+ else
+ read -r -a cpus <<< $(seq 0 $(( $(conf_proc_count) - 1 )) )
+ fi
+ echo "${cpus[*]}"
+}
+
# Helpers for get_possible_cpus.
function get_possible_cpus_count_from_sysfs_possible_mask()
{
# value, e.g. that it could be 0.
function get_any_available_cpu()
{
- for cpu in /sys/devices/system/cpu/cpu[0-9]*; do
- echo "${cpu#/sys/devices/system/cpu/cpu}"
+ for cpu in $(get_online_cpus); do
+ echo "${cpu}"
break;
done
}