From 8d533da00ac3914a76a80e4a4b5da6ee9343baa6 Mon Sep 17 00:00:00 2001
From: Emilio Corigliano <emilio.corigliano@skywarder.eu>
Date: Sun, 7 Jul 2024 22:35:54 +0200
Subject: [PATCH] [USART] Add check for rescheduling in `IRQhandleInterrupt`
---
src/shared/drivers/usart/USART.cpp | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/src/shared/drivers/usart/USART.cpp b/src/shared/drivers/usart/USART.cpp
index f5c787d6f..5efb72ea9 100644
--- a/src/shared/drivers/usart/USART.cpp
+++ b/src/shared/drivers/usart/USART.cpp
@@ -30,6 +30,7 @@
#include "arch/common/drivers/serial.h"
#include "filesystem/file_access.h"
+#include "kernel/scheduler/scheduler.h"
#include "miosix.h"
///< Pointer to serial port classes to let interrupts access the classes
@@ -368,6 +369,11 @@ void USART::IRQhandleInterrupt()
if (rxWaiting)
{
rxWaiting->IRQwakeup();
+ if (rxWaiting->IRQgetPriority() >
+ miosix::Thread::IRQgetCurrentThread()->IRQgetPriority())
+ {
+ miosix::Scheduler::IRQfindNextThread();
+ }
rxWaiting = nullptr;
}
}
--
GitLab