+1 to clean this up On Wed, Nov 11, 2026 at 8:39 AM Alin Jerpelea <[email protected]> wrote:
> +1 for the cleanup > > Best regards > Alin J > > On Wed, Nov 11, 2026 at 1:05 PM Marco C. <[email protected]> wrote: > > > Hello, > > > > I would like to discuss a small breaking change, as CONTRIBUTING.md 1.13 > > asks: > > > > https://github.com/apache/nuttx/pull/21696 > > > > The PR is a draft with the "breaking change" label. It depends on > > apache/nuttx#21693 and stays a draft until that one merges. I will > > start a vote after the discussion. > > > > What the PR does > > > > It removes the BOARDIOC_SPINLOCK boardctl() command, > > CONFIG_BOARDCTL_SPINLOCK and struct boardioc_spinlock_s. Its only user > > was pthread_spin_*(), and apache/nuttx#21693 (not a breaking change) > > implements those in libc with atomics, so they no longer need a system > > call. Xiang Xiao asked for the removal in the review of #21693; it is > > in its own PR because it removes a public command. The value 0x000f > > stays unused, so the other boardctl() commands keep their numbers. The > > PR also removes the documentation page of the boardioc_spinlock > > example, which is not in nuttx-apps. > > > > Who is affected > > > > No configuration or application in nuttx and nuttx-apps master: with > > #21693, no code uses BOARDIOC_SPINLOCK, and no defconfig sets > > CONFIG_BOARDCTL_SPINLOCK. Out-of-tree code that calls > > boardctl(BOARDIOC_SPINLOCK) is affected. > > > > Quick fix > > > > An application that called boardctl(BOARDIOC_SPINLOCK) uses > > pthread_spin_lock(), pthread_spin_trylock() and pthread_spin_unlock() > > (CONFIG_PTHREAD_SPINLOCKS); kernel code uses spin_lock() and > > spin_unlock() from <nuttx/spinlock.h>. A defconfig drops > > CONFIG_BOARDCTL_SPINLOCK. > > > > The alternative > > > > Keep the command with no user in the tree. > > > > Tests > > > > The removed code has no caller, so nothing runs differently. Builds > > with -Werror of this PR together with #21693 pass (qemu-armv8a:knsh, > > bl602evb:wifi). The spin locks of #21693 pass a test program on QEMU > > (arm64 kernel, flat and SMP, rv64 kernel, armv7-m protected) and on > > real hardware: RP2350 (Pimoroni Pico Plus 2, one and two Cortex-M33 > > cores). ostest passes on QEMU and on the RP2350. > > > > Help with build and runtime logs on other real boards is welcome. > > Please send your comments here or in the PR. > > > > Best regards, > > Marco Casaroli > > >
