From f825016e6792728ac4416b372e085bfc5b9ea2d0 Mon Sep 17 00:00:00 2001 From: Davide Mor <davide.mor@skywarder.eu> Date: Sat, 17 May 2025 15:17:49 +0200 Subject: [PATCH] [wiz5500] Extra caution measure for waitForINTn --- src/shared/drivers/WIZ5500/WIZ5500.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/shared/drivers/WIZ5500/WIZ5500.cpp b/src/shared/drivers/WIZ5500/WIZ5500.cpp index d3a9a38f3..afc31070e 100644 --- a/src/shared/drivers/WIZ5500/WIZ5500.cpp +++ b/src/shared/drivers/WIZ5500/WIZ5500.cpp @@ -135,8 +135,6 @@ void Wiz5500::handleINTn() { miosix::Scheduler::IRQfindNextThread(); } - - intn_thread = nullptr; } } @@ -445,7 +443,9 @@ TimedWaitResult Wiz5500::waitForINTn(Lock<FastMutex>& l, long long until) Unlock<FastMutex> ul(l); FastInterruptDisableLock il; + intn_thread = Thread::IRQgetCurrentThread(); + while (intn.value() != 0 && result == TimedWaitResult::NoTimeout) { long long now = getTime(); @@ -460,6 +460,10 @@ TimedWaitResult Wiz5500::waitForINTn(Lock<FastMutex>& l, long long until) result = Thread::IRQenableIrqAndTimedWait(il, until); } } + + // Set the thread pointer to null just to make sure + intn_thread = nullptr; + return result; } -- GitLab