浏览代码

[src] add assertion for debugging

wangxiaoyao 2 年之前
父节点
当前提交
ed58f6676d
共有 4 个文件被更改,包括 10 次插入1 次删除
  1. 1 0
      src/cpu.c
  2. 5 1
      src/idle.c
  3. 3 0
      src/scheduler.c
  4. 1 0
      src/signal.c

+ 1 - 0
src/cpu.c

@@ -225,6 +225,7 @@ void rt_cpus_unlock(rt_base_t level)
 
     if (pcpu->current_thread != RT_NULL)
     {
+        RT_ASSERT(pcpu->current_thread->cpus_lock_nest > 0);
         pcpu->current_thread->cpus_lock_nest--;
 
         if (pcpu->current_thread->cpus_lock_nest == 0)

+ 5 - 1
src/idle.c

@@ -292,7 +292,11 @@ static void rt_thread_system_entry(void *parameter)
 {
     while (1)
     {
-        rt_sem_take(&system_sem, RT_WAITING_FOREVER);
+        int ret= rt_sem_take(&system_sem, RT_WAITING_FOREVER);
+        if (ret != RT_EOK)
+        {
+            RT_ASSERT(0);
+        }
         rt_defunct_execute();
     }
 }

+ 3 - 0
src/scheduler.c

@@ -666,6 +666,7 @@ void rt_scheduler_do_irq_switch(void *context)
 #endif /* RT_USING_OVERFLOW_CHECK */
                 RT_DEBUG_LOG(RT_DEBUG_SCHEDULER, ("switch in interrupt\n"));
 
+                RT_ASSERT(current_thread->cpus_lock_nest > 0);
                 current_thread->cpus_lock_nest--;
                 current_thread->scheduler_lock_nest--;
 
@@ -941,6 +942,7 @@ void rt_enter_critical(void)
     {
         rt_uint16_t lock_nest = current_thread->cpus_lock_nest;
         current_thread->cpus_lock_nest++;
+        RT_ASSERT(current_thread->cpus_lock_nest != 0);
         if (lock_nest == 0)
         {
             current_thread->scheduler_lock_nest ++;
@@ -999,6 +1001,7 @@ void rt_exit_critical(void)
 
     current_thread->critical_lock_nest --;
 
+    RT_ASSERT(current_thread->cpus_lock_nest > 0);
     current_thread->cpus_lock_nest--;
     if (current_thread->cpus_lock_nest == 0)
     {

+ 1 - 0
src/signal.c

@@ -56,6 +56,7 @@ static void _signal_entry(void *parameter)
     {
         struct rt_cpu* pcpu = rt_cpu_self();
 
+        RT_ASSERT(current_thread->cpus_lock_nest > 0);
         pcpu->current_thread->cpus_lock_nest--;
         if (pcpu->current_thread->cpus_lock_nest == 0)
         {