DF-4349 / prime.sh
#!/bin/sh # DF-4349 + DF-4350 rig loader - resolves production symbol addresses from # /boot/kernel/kernel (no KASLR: nm values ARE runtime addresses) and # primes the rig. Run inside the guest as root, then drive scenarios via # sysctl -w kern.df43xx.go=N # (0=selftest 1=control 2=DF4349-A 3=DF4349-B 4=DF4350-sync # 5=forensic 6=DF4350-thread) set -e cd /root/df43xx kldstat -n df43xx_rig >/dev/null 2>&1 || kldload ./df43xx_rig.ko K=/boot/kernel/kernel sysctl -w kern.df43xx.intr=0x$(nm $K | awk '/ T adv_intr$/{print $1}') sysctl -w kern.df43xx.done=0x$(nm $K | awk '/ T adv_done$/{print $1}') sysctl -w kern.df43xx.copyq=0x$(nm $K | awk '/ T adv_copy_lram_doneq$/{print $1}') sysctl -w kern.df43xx.rl16=0x$(nm $K | awk '/ T adv_read_lram_16$/{print $1}') sysctl -w kern.df43xx.rl8=0x$(nm $K | awk '/ T adv_read_lram_8$/{print $1}') sysctl -w kern.df43xx.wl16=0x$(nm $K | awk '/ T adv_write_lram_16$/{print $1}') sysctl -w kern.df43xx.wl8=0x$(nm $K | awk '/ T adv_write_lram_8$/{print $1}') echo "production handlers resolved:" sysctl kern.df43xx.intr kern.df43xx.done kern.df43xx.copyq |