diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2013-01-12 19:58:45 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2013-01-12 19:58:45 +0000 |
commit | b58281cab8add0af82167282126132b069170dd6 (patch) | |
tree | 84c6da5c61268158365bdafe58f546b34a0b8a91 /nuttx/sched/sig_queue.c | |
parent | db161f73bc2608dbb8ad8c022609198f7f0b3f95 (diff) | |
download | px4-firmware-b58281cab8add0af82167282126132b069170dd6.tar.gz px4-firmware-b58281cab8add0af82167282126132b069170dd6.tar.bz2 px4-firmware-b58281cab8add0af82167282126132b069170dd6.zip |
Fix a *critical* bug in the task exit logic. Implements SIGCHILD
git-svn-id: http://svn.code.sf.net/p/nuttx/code/trunk@5513 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/sched/sig_queue.c')
-rw-r--r-- | nuttx/sched/sig_queue.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/nuttx/sched/sig_queue.c b/nuttx/sched/sig_queue.c index dee1c798a..db404238e 100644 --- a/nuttx/sched/sig_queue.c +++ b/nuttx/sched/sig_queue.c @@ -111,6 +111,9 @@ int sigqueue (int pid, int signo, union sigval value) int sigqueue(int pid, int signo, void *sival_ptr) #endif { +#ifdef CONFIG_SCHED_HAVE_PARENT + FAR _TCB *rtcb = (FAR _TCB *)g_readytorun.head; +#endif FAR _TCB *stcb; siginfo_t info; int ret = ERROR; @@ -142,13 +145,17 @@ int sigqueue(int pid, int signo, void *sival_ptr) /* Create the siginfo structure */ - info.si_signo = signo; - info.si_code = SI_QUEUE; + info.si_signo = signo; + info.si_code = SI_QUEUE; #ifdef CONFIG_CAN_PASS_STRUCTS - info.si_value = value; + info.si_value = value; #else info.si_value.sival_ptr = sival_ptr; #endif +#ifdef CONFIG_SCHED_HAVE_PARENT + info.si_pid = rtcb->pid; + info.si_status = OK; +#endif /* Send the signal */ |