fedac/native: ALSA mmap + audio CPU pin + latency bench harness master
Three latency-floor improvements from the arxiv-latency paper: - audio.c: negotiate SND_PCM_ACCESS_MMAP_INTERLEAVED and dispatch the primary writei through snd_pcm_mmap_writei when available. mmap skips the kernel ring-buffer copy that writei does (~fraction of ms saved on HDA). Falls back to RW_INTERLEAVED + writei on plughw rate-conv paths and on devices that don't expose mmap access. - audio.c: pin the audio thread to the last online CPU after the existing SCHED_FIFO setup. CPU 0 services timer/USB/network IRQs; isolating audio on its own core tightens the jitter ceiling. Disable with AC_AUDIO_NO_PIN=1. - audio.c + scripts/latency.mjs: AC_LATENCY_BENCH=1 makes the audio thread time per-period writei completion intervals and emit one '[ac-latency] period_us=... min=... p50=... mean=... p99=... max=... over_period=... xruns=...' line per ~1024 periods. latency.mjs parses these from a spawned binary, journalctl tail, or log file and reports the empirical audio-side latency floor. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>