summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshaojinchun <[email protected]>2019-05-10 10:41:03 +0800
committershaojinchun <[email protected]>2019-05-11 09:35:26 +0800
commitc5249157d7b92ed29cee9df440b4a9928e1a4e4f (patch)
tree74fff0b69d8e3abd9505718e720a67dc9dc12c01
parent737d58fbb9516674939f08bd495fcba3ee2b73ba (diff)
增加signal的状态位说明及一处代码修改,以防止编译警告
-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--;
}