Browse Source

Kernel: Make Lock::lock() assert early that we're not in the scheduler

The scheduler is not allowed to take locks, so if that's happening,
we want to make that clear instead of crashing with the more general
"Interrupts disabled while trying to take Lock" error.
Andreas Kling 5 years ago
parent
commit
933a98f8fa
1 changed files with 1 additions and 1 deletions
  1. 1 1
      Kernel/Lock.cpp

+ 1 - 1
Kernel/Lock.cpp

@@ -2,12 +2,12 @@
 
 
 void Lock::lock()
 void Lock::lock()
 {
 {
+    ASSERT(!Scheduler::is_active());
     if (!are_interrupts_enabled()) {
     if (!are_interrupts_enabled()) {
         kprintf("Interrupts disabled when trying to take Lock{%s}\n", m_name);
         kprintf("Interrupts disabled when trying to take Lock{%s}\n", m_name);
         dump_backtrace();
         dump_backtrace();
         hang();
         hang();
     }
     }
-    ASSERT(!Scheduler::is_active());
     for (;;) {
     for (;;) {
         if (CAS(&m_lock, 1, 0) == 0) {
         if (CAS(&m_lock, 1, 0) == 0) {
             if (!m_holder || m_holder == current) {
             if (!m_holder || m_holder == current) {