diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2007-03-08 18:34:11 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2007-03-08 18:34:11 +0000 |
commit | a8872bea509f507b8f595e210e49fd06d8aa0d49 (patch) | |
tree | 83f8273dcee57f28f22a6f1b01460125f8135835 /nuttx/arch/c5471/src/up_sigdeliver.c | |
parent | 77f556a36f68292909cd98a7ddeb58c3f739f324 (diff) | |
download | px4-nuttx-a8872bea509f507b8f595e210e49fd06d8aa0d49.tar.gz px4-nuttx-a8872bea509f507b8f595e210e49fd06d8aa0d49.tar.bz2 px4-nuttx-a8872bea509f507b8f595e210e49fd06d8aa0d49.zip |
Fix c5471 signal handling + deallocation bug
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@44 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/c5471/src/up_sigdeliver.c')
-rw-r--r-- | nuttx/arch/c5471/src/up_sigdeliver.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/nuttx/arch/c5471/src/up_sigdeliver.c b/nuttx/arch/c5471/src/up_sigdeliver.c index df1040314..d19881c53 100644 --- a/nuttx/arch/c5471/src/up_sigdeliver.c +++ b/nuttx/arch/c5471/src/up_sigdeliver.c @@ -81,7 +81,10 @@ void up_sigdeliver(void) sig_deliver_t sigdeliver; up_ledon(LED_SIGNAL); - ASSERT(rtcb->xcp.sigdeliver); + + dbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n", + rtcb, rtcb->xcp.sigdeliver, rtcb->sigpendactionq.head); + ASSERT(rtcb->xcp.sigdeliver != NULL); /* Save the real return state on the stack. */ @@ -99,12 +102,9 @@ void up_sigdeliver(void) sigdeliver = rtcb->xcp.sigdeliver; rtcb->xcp.sigdeliver = NULL; - /* Then enable interrupts. We should still be safe from - * any further signal handling actions until we also - * nullify tcb->xcp.sigdeliver. - */ + /* Then restore the task interrupt statat. */ - irqrestore(SVC_MODE | F_BIT); + irqrestore(regs[REG_CPSR]); /* Deliver the signals */ @@ -115,5 +115,6 @@ void up_sigdeliver(void) */ up_ledoff(LED_SIGNAL); + dbg("Resuming\n"); up_fullcontextrestore(regs); } |