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