signal/sig_dispatch: Signal action was not performed if TCB_FLAG_SYSCALL is set
For some reason the signal action was never performed if the receiveing task was within a system call, the pending queue inser was simply missing. This fixes the issue.
This commit is contained in:
parent
8e4d461d61
commit
0e44666828
|
@ -372,6 +372,15 @@ int nxsig_tcbdispatch(FAR struct tcb_s *stcb, siginfo_t *info)
|
||||||
if (masked == 1)
|
if (masked == 1)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_LIB_SYSCALL
|
||||||
|
/* If the thread is in syscall, schedule the sigaction here */
|
||||||
|
|
||||||
|
if ((stcb->flags & TCB_FLAG_SYSCALL) != 0)
|
||||||
|
{
|
||||||
|
nxsig_add_pendingsignal(stcb, info);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Check if the task is waiting for this pending signal. If so, then
|
/* Check if the task is waiting for this pending signal. If so, then
|
||||||
* unblock it. This must be performed in a critical section because
|
* unblock it. This must be performed in a critical section because
|
||||||
* signals can be queued from the interrupt level.
|
* signals can be queued from the interrupt level.
|
||||||
|
|
Loading…
Reference in New Issue