summaryrefslogtreecommitdiff
path: root/nuttx/sched/sig_unmaskpendingsignal.c
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2013-02-05 19:50:37 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2013-02-05 19:50:37 +0000
commit0d9fb476ea6f347c48a3ac8c2d98251467421203 (patch)
treee98b731e1ff4298ed906fde23198fb4d9a9d61a9 /nuttx/sched/sig_unmaskpendingsignal.c
parent70121d6ca8fd0e48f35b3ccb52e3b960e64df6c2 (diff)
downloadpx4-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.c11
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 */