jlaitine commented on code in PR #17263:
URL: https://github.com/apache/nuttx/pull/17263#discussion_r2479243349
##########
sched/signal/sig_dispatch.c:
##########
@@ -364,11 +364,10 @@ static irqstate_t nxsig_alloc_dyn_pending(irqstate_t
flags)
bool alloc_signal = sq_empty(&g_sigpendingsignal);
bool alloc_sigact = sq_empty(&g_sigpendingaction);
- /* Signals are not dispatched from the idle task */
+ /* We can't do memory allocations in idle task or interrupt */
- DEBUGASSERT(!sched_idletask());
-
- if (alloc_signal || alloc_sigact)
+ if ((alloc_signal || alloc_sigact) &&
+ !sched_idletask() && !up_interrupt_context())
Review Comment:
I am sorry, but I don't quite understand your concern.
This PR does nothing to change that behaviour. Only thing which this does is
that it fixes the DEBUGASSERT into proper error handling. You can't do memory
allocations from isr before or after this PR. Sending signals from the ISR has
always worked on the preallocated structures only.
If you rely heavily on sending signals from isr, you just have to allocate
enough structures for that purpose. But why on earth would you do such thing...
about any other thing to do is better, like scheduling a work in workqueue,
posting a semaphore...
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]