浏览代码

fix(kthdd): acquire the lock only on func not null

greatbridf 2 年之前
父节点
当前提交
6107790323
共有 1 个文件被更改,包括 1 次插入3 次删除
  1. 1 3
      src/kernel/process.cpp

+ 1 - 3
src/kernel/process.cpp

@@ -166,9 +166,8 @@ void kernel_threadd_main(void)
     kthreadd_new_thd_func = _example_io_thread;
     kthreadd_new_thd_data = (void*)"data in io thread\n";
     for (;;) {
-        spin_lock(&kthreadd_lock);
-
         if (kthreadd_new_thd_func) {
+            spin_lock(&kthreadd_lock);
             int return_value = 0;
 
             void (*func)(void*) = kthreadd_new_thd_func;
@@ -187,7 +186,6 @@ void kernel_threadd_main(void)
                 for (;;) asm_hlt();
                 // TODO: syscall_exit()
             }
-        } else {
             spin_unlock(&kthreadd_lock);
         }
         asm_hlt();