signal: Don't do schedule_sigaction when there is no action
Signed-off-by: ligd <liguiding1@xiaomi.com>
This commit is contained in:
parent
a98a599cb9
commit
0c1f63625a
@ -105,6 +105,13 @@ static int nxsig_queue_action(FAR struct tcb_s *stcb, siginfo_t *info)
|
|||||||
|
|
||||||
flags = enter_critical_section();
|
flags = enter_critical_section();
|
||||||
sq_addlast((FAR sq_entry_t *)sigq, &(stcb->sigpendactionq));
|
sq_addlast((FAR sq_entry_t *)sigq, &(stcb->sigpendactionq));
|
||||||
|
|
||||||
|
/* Then schedule execution of the signal handling action on the
|
||||||
|
* recipient's thread. SMP related handling will be done in
|
||||||
|
* up_schedule_sigaction()
|
||||||
|
*/
|
||||||
|
|
||||||
|
up_schedule_sigaction(stcb, nxsig_deliver);
|
||||||
leave_critical_section(flags);
|
leave_critical_section(flags);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -383,13 +390,6 @@ int nxsig_tcbdispatch(FAR struct tcb_s *stcb, siginfo_t *info)
|
|||||||
|
|
||||||
flags = enter_critical_section();
|
flags = enter_critical_section();
|
||||||
|
|
||||||
/* Then schedule execution of the signal handling action on the
|
|
||||||
* recipient's thread. SMP related handling will be done in
|
|
||||||
* up_schedule_sigaction()
|
|
||||||
*/
|
|
||||||
|
|
||||||
up_schedule_sigaction(stcb, nxsig_deliver);
|
|
||||||
|
|
||||||
/* Check if the task is waiting for an unmasked signal. If so, then
|
/* Check if the task is waiting for an unmasked 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…
x
Reference in New Issue
Block a user