logo

qmk_firmware

custom branch of QMK firmware git clone https://anongit.hacktivis.me/git/qmk_firmware.git
commit: c53d02d511ef9c3b42097123749895a91536bcdd
parent cf975e2bfa9fc5315cff1eb82498e7184a87feb1
Author: David Hoelscher <infinityis@users.noreply.github.com>
Date:   Thu,  2 Jan 2025 01:11:10 -0600

Ensure timer_read() is safe to call from interrupt handlers on ARM (#24529)


Diffstat:

Mplatforms/chibios/timer.c4++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/platforms/chibios/timer.c b/platforms/chibios/timer.c @@ -99,7 +99,7 @@ uint16_t timer_read(void) { } uint32_t timer_read32(void) { - chSysLock(); + syssts_t sts = chSysGetStatusAndLockX(); uint32_t ticks = get_system_time_ticks() - ticks_offset; if (ticks < last_ticks) { // The 32-bit tick counter overflowed and wrapped around. We cannot just extend the counter to 64 bits here, @@ -114,7 +114,7 @@ uint32_t timer_read32(void) { } last_ticks = ticks; uint32_t ms_offset_copy = ms_offset; // read while still holding the lock to ensure a consistent value - chSysUnlock(); + chSysRestoreStatusX(sts); return (uint32_t)TIME_I2MS(ticks) + ms_offset_copy; }