aboutsummaryrefslogtreecommitdiffstats
path: root/os/rt
diff options
context:
space:
mode:
Diffstat (limited to 'os/rt')
-rw-r--r--os/rt/include/chsys.h4
-rw-r--r--os/rt/src/chsys.c8
2 files changed, 7 insertions, 5 deletions
diff --git a/os/rt/include/chsys.h b/os/rt/include/chsys.h
index 678770299..270772323 100644
--- a/os/rt/include/chsys.h
+++ b/os/rt/include/chsys.h
@@ -218,8 +218,8 @@ extern "C" {
void chSysInit(void);
void chSysHalt(const char *reason);
void chSysTimerHandlerI(void);
- syssts_t chSysGetAndLockX(void);
- void chSysRestoreLockX(syssts_t sts);
+ syssts_t chSysGetStatusAndLockX(void);
+ void chSysRestoreLockAndRescheduleX(syssts_t sts);
#if CH_PORT_SUPPORTS_RT
bool chSysIsCounterWithinX(rtcnt_t cnt, rtcnt_t start, rtcnt_t end);
void chSysPolledDelayX(rtcnt_t cycles);
diff --git a/os/rt/src/chsys.c b/os/rt/src/chsys.c
index 5279ef518..19964ec13 100644
--- a/os/rt/src/chsys.c
+++ b/os/rt/src/chsys.c
@@ -227,7 +227,7 @@ void chSysTimerHandlerI(void) {
*
* @xclass
*/
-syssts_t chSysGetAndLockX(void) {
+syssts_t chSysGetStatusAndLockX(void) {
syssts_t sts = port_get_irq_status();
if (port_irq_enabled(sts)) {
@@ -246,13 +246,15 @@ syssts_t chSysGetAndLockX(void) {
*
* @xclass
*/
-void chSysRestoreLockX(syssts_t sts) {
+void chSysRestoreLockAndRescheduleX(syssts_t sts) {
if (port_irq_enabled(sts)) {
if (port_is_isr_context())
chSysUnlockFromISR();
- else
+ else {
+ chSchRescheduleS();
chSysUnlock();
+ }
}
}