From d31a16c435e497f320ccfa880122dff963f151a7 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Thu, 23 Aug 2018 20:07:28 -0400 Subject: Organize in to an installable package --- qemu.in | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100755 qemu.in (limited to 'qemu.in') diff --git a/qemu.in b/qemu.in new file mode 100755 index 0000000..566cacf --- /dev/null +++ b/qemu.in @@ -0,0 +1,37 @@ +#!/usr/bin/env bash +shopt -s lastpipe +set -euE -o pipefail + +declare -A vcpu2cpulist +numactl=() +source "@pkgconfdir@/$1" +args+=( + -name "$1",debug-threads=on + -pidfile "@runstatedir@/qemu-$1/pid" + -vnc unix:"@runstatedir@/qemu-$1/vnc.sock" + -monitor unix:"@runstatedir@/qemu-$1/monitor.sock",server,nowait + -serial file:"/dev/stdout" + -daemonize +) + +{ + numactl "${numactl[@]}" -- qemu-system-"${system}" "${args[@]}" + + if [[ ${vcpu2cpulist+${#vcpu2cpulist[@]}} -gt 0 ]]; then + declare -A vcpu2tid + while read -r line; do + if [[ $line != ?' CPU #'*:*thread_id=* ]]; then + continue + fi + vcpu=${line#?' CPU #'}; vcpu=${vcpu%%:*} + tid=${line#thread_id=}; tid=${tid%% *} + vcpu2tid[$vcpu]=$tid + done < <(socat STDIO UNIX-CONNECT:"@runstatedir@/qemu-$1/monitor.sock" <<<'info cpus') + + for vcpu in "${!vcpu_pins[@]}"; do + taskset --cpu-list --pid -- "${vcpu2cpulist[@]}" "${vcpu2tid[$vcpu]}" + done + fi + + systemd-notify --ready +} | exec cat -- cgit v1.2.3-2-g168b