diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2013-02-05 19:50:37 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2013-02-05 19:50:37 +0000 |
commit | 0d9fb476ea6f347c48a3ac8c2d98251467421203 (patch) | |
tree | e98b731e1ff4298ed906fde23198fb4d9a9d61a9 /nuttx/sched/sig_unmaskpendingsignal.c | |
parent | 70121d6ca8fd0e48f35b3ccb52e3b960e64df6c2 (diff) | |
download | px4-nuttx-0d9fb476ea6f347c48a3ac8c2d98251467421203.tar.gz px4-nuttx-0d9fb476ea6f347c48a3ac8c2d98251467421203.tar.bz2 px4-nuttx-0d9fb476ea6f347c48a3ac8c2d98251467421203.zip |
Moving pending signals to task group; Logic to recover some MQ resources on pthread_cacancel or task_delete; Now obeys rules for delivering signals to a process with threads
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5613 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/sched/sig_unmaskpendingsignal.c')
-rw-r--r-- | nuttx/sched/sig_unmaskpendingsignal.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/nuttx/sched/sig_unmaskpendingsignal.c b/nuttx/sched/sig_unmaskpendingsignal.c index c4d80de17..c9326e306 100644 --- a/nuttx/sched/sig_unmaskpendingsignal.c +++ b/nuttx/sched/sig_unmaskpendingsignal.c @@ -122,9 +122,14 @@ void sig_unmaskpendingsignal(void) if ((pendingsig = sig_removependingsignal(rtcb, signo)) != NULL) { - /* If there is one, then process it like a normal signal */ - - sig_received(rtcb, &pendingsig->info); + /* If there is one, then process it like a normal signal. + * Since the signal was pending, then unblocked on this + * thread, we can skip the normal group signal dispatching + * rules; there can be no other recipient for the signal + * other than this thread. + */ + + sig_tcbdispatch(rtcb, &pendingsig->info); /* Then remove it from the pending signal list */ |