summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/scheduler_mp.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/scheduler_mp.c b/src/scheduler_mp.c
index 1a6c5ae983..7397e1071e 100644
--- a/src/scheduler_mp.c
+++ b/src/scheduler_mp.c
@@ -1255,8 +1255,15 @@ rt_uint16_t rt_critical_level(void)
current_thread = rt_cpu_self()->current_thread;
- /* the necessary memory barrier is done on irq_(dis|en)able */
- critical_lvl = RT_SCHED_CTX(current_thread).critical_lock_nest;
+ if (current_thread)
+ {
+ /* the necessary memory barrier is done on irq_(dis|en)able */
+ critical_lvl = RT_SCHED_CTX(current_thread).critical_lock_nest;
+ }
+ else
+ {
+ critical_lvl = 0;
+ }
rt_hw_local_irq_enable(level);
return critical_lvl;