acassis commented on code in PR #17263:
URL: https://github.com/apache/nuttx/pull/17263#discussion_r2479218779
##########
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:
> No, signal can be sent from the isr, just as before. There are the
preallocated structures for that purpose.
>
> Only if it runs out of preallocated structures, it is not possible, and
the dispatch returns -EGAIN.
>
> This is similar to what also linux does.
Ok, so if you have only 2 pre-allocated structures and we use ioexpander,
button and phy_notify, the last to try to send a signal will fail, right?
I think we require more testing to avoid discovering side effects too late
--
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]