From 98985f48dda4213963270889dc131aaaa0dd28d7 Mon Sep 17 00:00:00 2001 From: Tiago Medicci Serrano Date: Thu, 10 Aug 2023 15:47:04 -0300 Subject: [PATCH] sched/semaphore: Remove restriction to use nxsem_trywait from ISR Considering that `nxsem_trywait` is non-blocking, although not recommended, it could be called from the interrupt handler. --- sched/semaphore/sem_trywait.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sched/semaphore/sem_trywait.c b/sched/semaphore/sem_trywait.c index e67038a0c25..cd5d0857efa 100644 --- a/sched/semaphore/sem_trywait.c +++ b/sched/semaphore/sem_trywait.c @@ -70,10 +70,11 @@ int nxsem_trywait(FAR sem_t *sem) irqstate_t flags; int ret; - /* This API should not be called from interrupt handlers & idleloop */ + /* This API should not be called from the idleloop */ - DEBUGASSERT(sem != NULL && up_interrupt_context() == false); - DEBUGASSERT(!OSINIT_IDLELOOP() || !sched_idletask()); + DEBUGASSERT(sem != NULL); + DEBUGASSERT(!OSINIT_IDLELOOP() || !sched_idletask() || + up_interrupt_context()); /* The following operations must be performed with interrupts disabled * because sem_post() may be called from an interrupt handler.