#!/bin/sh
# DF-5518 race attempt: boot rig, (re)build kmods from on-disk sources,
# plant register image, wait for the thermal _TMP hammer, then race the
# detach.  Usage: race.sh [n]  (attempt label for logs)
set -e
cd "$(dirname "$0")"
ROOT="$(cd ../../.. && pwd)"
VM="$ROOT/dfbsd-qemu/vm.sh"
N="${1:-1}"

$VM down >/dev/null 2>&1 || true
QEMU_EXTRA="-device loader,file=$(pwd)/gpio_chain.bin,addr=0x40000000,force-raw=on" \
  $VM up 300 >/dev/null

$VM run_root 'mkdir -p /root/gposrc /tmp/gpo && cp /root/gposrc/gpo_detach.c /tmp/gpo/ && cd /tmp/gpo && printf "KMOD=\tgpo_detach\nSRCS=\tgpo_detach.c\nSRCS+=\tbus_if.h device_if.h\n.include <bsd.kmod.mk>\n" > Makefile && make >/dev/null 2>&1 && cp gpo_detach.ko /root/gpo/gpo_detach.ko.new && mv /root/gpo/gpo_detach.ko.new /root/gpo/gpo_detach.ko && echo KMOD-FRESH' || {
  $VM run_root 'echo KMOD-STALE (build failed, using previous)' || true
}

$VM run_root 'kldload /root/gpo/gpoke.ko >/dev/null 2>&1; sleep 25; kldload /root/gpo/gpo_detach.ko; echo RC=$?; sleep 3; echo ALIVE; uptime' || echo "SSH-DIED"
sleep 5
echo "STATUS: $($VM status)"
$VM log 40 > "run.race.$N.log" || true
tail -10 "run.race.$N.log"
