summaryrefslogtreecommitdiff
path: root/nuttx/arch/z80/src/z8/z8_sigdeliver.c
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/arch/z80/src/z8/z8_sigdeliver.c')
-rw-r--r--nuttx/arch/z80/src/z8/z8_sigdeliver.c29
1 files changed, 14 insertions, 15 deletions
diff --git a/nuttx/arch/z80/src/z8/z8_sigdeliver.c b/nuttx/arch/z80/src/z8/z8_sigdeliver.c
index badb8a328..c5cf30aa6 100644
--- a/nuttx/arch/z80/src/z8/z8_sigdeliver.c
+++ b/nuttx/arch/z80/src/z8/z8_sigdeliver.c
@@ -1,7 +1,7 @@
/****************************************************************************
* arch/z80/src/z8/z8_sigdeliver.c
*
- * Copyright (C) 2008-2009 Gregory Nutt. All rights reserved.
+ * Copyright (C) 2008-2010 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <spudmonkey@racsa.co.cr>
*
* Redistribution and use in source and binary forms, with or without
@@ -86,10 +86,9 @@ static void z8_copystate(FAR chipreg_t *dest, FAR const chipreg_t *src)
* Name: up_sigdeliver
*
* Description:
- * This is the a signal handling trampoline. When a
- * signal action was posted. The task context was mucked
- * with and forced to branch to this location with interrupts
- * disabled.
+ * This is the a signal handling trampoline. When a signal action was
+ * posted. The task context was mucked with and forced to branch to this
+ * location with interrupts disabled.
*
****************************************************************************/
@@ -109,7 +108,7 @@ void up_sigdeliver(void)
up_ledon(LED_SIGNAL);
- dbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
+ sdbg("rtcb=%p sigdeliver=%p sigpendactionq.head=%p\n",
rtcb, rtcb->xcp.sigdeliver, rtcb->sigpendactionq.head);
ASSERT(rtcb->xcp.sigdeliver != NULL);
@@ -120,8 +119,9 @@ void up_sigdeliver(void)
regs[XCPT_IRQCTL] = rtcb->xcp.saved_irqctl;
/* Get a local copy of the sigdeliver function pointer. We do this so
- * that we can nullify the sigdeliver function point in the TCB and accept
- * more signal deliveries while processing the current pending signals.
+ * that we can nullify the sigdeliver function pointer in the TCB and
+ * accept more signal deliveries while processing the current pending
+ * signals.
*/
sigdeliver = rtcb->xcp.sigdeliver;
@@ -135,17 +135,16 @@ void up_sigdeliver(void)
sigdeliver(rtcb);
- /* Output any debug messaged BEFORE restoring errno (because they may alter
- * errno), then restore the original errno that is needed by the user logic
- * (it is probably EINTR).
+ /* Output any debug messages BEFORE restoring errno (because they may
+ * alter errno), then disable interrupts again and restore the original
+ * errno that is needed by the user logic (it is probably EINTR).
*/
- dbg("Resuming\n");
+ sdbg("Resuming\n");
+ (void)irqsave();
rtcb->pterrno = saved_errno;
- /* Then restore the correct state for this thread of
- * execution.
- */
+ /* Then restore the correct state for this thread of execution. */
up_ledoff(LED_SIGNAL);
z8_restorecontext(regs);