summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/rtdef.h6
-rw-r--r--src/signal.c3
2 files changed, 5 insertions, 4 deletions
diff --git a/include/rtdef.h b/include/rtdef.h
index 253333253a..2aff4afdb0 100644
--- a/include/rtdef.h
+++ b/include/rtdef.h
@@ -492,10 +492,10 @@ typedef siginfo_t rt_siginfo_t;
#define RT_THREAD_CLOSE 0x04 /**< Closed status */
#define RT_THREAD_STAT_MASK 0x0f
-#define RT_THREAD_STAT_SIGNAL 0x10
+#define RT_THREAD_STAT_SIGNAL 0x10 /**< task hold signals */
#define RT_THREAD_STAT_SIGNAL_READY (RT_THREAD_STAT_SIGNAL | RT_THREAD_READY)
-#define RT_THREAD_STAT_SIGNAL_WAIT 0x20
-#define RT_THREAD_STAT_SIGNAL_PENDING 0x40
+#define RT_THREAD_STAT_SIGNAL_WAIT 0x20 /**< task is waiting for signals */
+#define RT_THREAD_STAT_SIGNAL_PENDING 0x40 /**< signals is held and it has not been procressed */
#define RT_THREAD_STAT_SIGNAL_MASK 0xf0
/**
diff --git a/src/signal.c b/src/signal.c
index 0cab6215af..0c0f990f46 100644
--- a/src/signal.c
+++ b/src/signal.c
@@ -56,7 +56,8 @@ static void _signal_entry(void *parameter)
{
struct rt_cpu* pcpu = rt_cpu_self();
- if (--pcpu->current_thread->cpus_lock_nest == 0)
+ pcpu->current_thread->cpus_lock_nest--;
+ if (pcpu->current_thread->cpus_lock_nest == 0)
{
pcpu->current_thread->scheduler_lock_nest--;
}