This is an automated email from the ASF dual-hosted git repository. archer pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/nuttx.git
commit a030e3c8ccbdd62e30c746eb675e76312064e63e Author: Jukka Laitinen <jukka.laiti...@tii.ae> AuthorDate: Fri Aug 29 18:55:28 2025 +0300 sched/signal/sig_dispatch.c: Simplify the nxsig_dispatch The nxsig_dispatch should just deliver the signal to either a thread by pid (tid) or to the process (group) by pid. Simplify the code so that the intent is more obvious. Signed-off-by: Jukka Laitinen <jukka.laiti...@tii.ae> --- sched/signal/sig_dispatch.c | 67 +++++++++------------------------------------ 1 file changed, 13 insertions(+), 54 deletions(-) diff --git a/sched/signal/sig_dispatch.c b/sched/signal/sig_dispatch.c index 59c98ee7c22..f65adac2bb6 100644 --- a/sched/signal/sig_dispatch.c +++ b/sched/signal/sig_dispatch.c @@ -725,70 +725,29 @@ int nxsig_tcbdispatch(FAR struct tcb_s *stcb, siginfo_t *info, int nxsig_dispatch(pid_t pid, FAR siginfo_t *info, bool thread) { #ifdef HAVE_GROUP_MEMBERS - FAR struct tcb_s *stcb; - FAR struct task_group_s *group; - - /* Get the TCB associated with the pid */ - - stcb = nxsched_get_tcb(pid); - if (stcb != NULL) + if (!thread) { - /* The task/thread associated with this PID is still active. Get its - * task group. + /* Find the group by process PID and call group signal() to send the + * signal to the correct group member. */ - group = stcb->group; + FAR struct task_group_s *group = task_getgroup(pid); + if (group != NULL) + { + return group_signal(group, info); + } } else +#endif { - /* The task/thread associated with this PID has exited. In the normal - * usage model, the PID should correspond to the PID of the task that - * created the task group. Try looking it up. - */ - - group = task_getgroup(pid); - } - - /* Did we locate the group? */ - - if (group != NULL) - { - if (thread) - { - /* Before the notification, we should validate the tid. If the - * signal is to be delivered to a thread which has exited, it is - * just dropped. - */ + /* Get the TCB associated with the thread TID */ - if (stcb != NULL) - { - return nxsig_tcbdispatch(stcb, info, false); - } - } - else + FAR struct tcb_s *stcb = nxsched_get_tcb(pid); + if (stcb != NULL) { - /* Yes.. call group_signal() to send the signal to the correct - * group member. - */ - - return group_signal(group, info); + return nxsig_tcbdispatch(stcb, info, false); } } return -ESRCH; - -#else - FAR struct tcb_s *stcb; - - /* Get the TCB associated with the pid */ - - stcb = nxsched_get_tcb(pid); - if (stcb == NULL) - { - return -ESRCH; - } - - return nxsig_tcbdispatch(stcb, info, false); - -#endif }