summaryrefslogtreecommitdiff
path: root/nuttx/sched/sem_wait.c
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/sched/sem_wait.c')
-rw-r--r--nuttx/sched/sem_wait.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/nuttx/sched/sem_wait.c b/nuttx/sched/sem_wait.c
index d0735d76e..9facd861f 100644
--- a/nuttx/sched/sem_wait.c
+++ b/nuttx/sched/sem_wait.c
@@ -175,9 +175,14 @@ int sem_wait(FAR sem_t *sem)
* cannot cause a context switch because we have preemption
* disabled. The task will be marked "pending" and the switch
* will occur during up_block_task() processing.
+ *
+ * NOTE that we have to restore base_priority because
+ * up_reprioritize_rtr() should set both.
*/
-
+
+ int base_priority = htcb->base_priority;
up_reprioritize_rtr(htcb, rtcb->sched_priority);
+ htcb->base_priority = base_priority;
}
#endif
/* Add the TCB to the prioritized semaphore wait queue */