jerpelea opened a new pull request, #21250:
URL: https://github.com/apache/nuttx/pull/21250

   ## Summary
   
   nxsig_queue_action() runs the signal handler at once when the signal is for 
the calling thread.  It is called from nxsig_tcbdispatch(), which holds the 
critical section.  In a kernel build this happens at the end of each system 
call with a pending signal: the user handler then runs in user mode with 
interrupts disabled, and on SMP its thread holds the global critical section 
lock until the handler returns.  The other CPUs wait for the lock all that 
time, and the CPU of the handler takes no interrupt.
   
   Let nxsig_queue_action() only mark the delivery, and deliver in 
nxsig_tcbdispatch() after it leaves the critical section.  A signal that an 
interrupt queues meanwhile is delivered in the same loop.
   
   ## Impact
   
   RELEASE
   
   ## Testing
   
   CI


-- 
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]

Reply via email to