diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/scheduler_mp.c | 11 |
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; |
