[haiku-commits] haiku: hrev52883 - src/system/kernel

  • From: waddlesplash <waddlesplash@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 17 Feb 2019 14:38:18 -0500 (EST)

hrev52883 adds 2 changesets to branch 'master'
old head: c61fa718f28a2e7cf8aa3eb3ad27e67362c53be9
new head: c054900882e6dcc20f8fe2ff4fd9e605613923cf
overview: 
https://git.haiku-os.org/haiku/log/?qt=range&q=c054900882e6+%5Ec61fa718f28a

----------------------------------------------------------------------------

1eededf17fad: kernel: Only sanity-check interrupts in switch_sem_etc under 
KDEBUG.
  
  "are_interrupts_enabled()" is a "relatively" expensive function, so avoiding
  it makes sense. This is the same way it's done elsewhere in sem.cpp, as well
  as for mutexes and condition variables also.

c054900882e6: kernel: Sanity-check interrupts in snooze().
  
  This didn't trigger any panics on my bare-metal dev install when tested,
  but it might explain some easily-reproducible hardlocks (i.e. can't
  even drop to KDL via emergency keys) I was seeing on other machines.

                              [ Augustin Cavalier <waddlesplash@xxxxxxxxx> ]

----------------------------------------------------------------------------

2 files changed, 9 insertions(+), 1 deletion(-)
src/system/kernel/sem.cpp    | 3 ++-
src/system/kernel/thread.cpp | 7 +++++++

############################################################################

Commit:      1eededf17fadaefcec0adcfaabbe00bbbcf327fc
URL:         https://git.haiku-os.org/haiku/commit/?id=1eededf17fad
Author:      Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date:        Sun Feb 17 19:34:36 2019 UTC

kernel: Only sanity-check interrupts in switch_sem_etc under KDEBUG.

"are_interrupts_enabled()" is a "relatively" expensive function, so avoiding
it makes sense. This is the same way it's done elsewhere in sem.cpp, as well
as for mutexes and condition variables also.

----------------------------------------------------------------------------

diff --git a/src/system/kernel/sem.cpp b/src/system/kernel/sem.cpp
index eb06cbb410..841df6fe45 100644
--- a/src/system/kernel/sem.cpp
+++ b/src/system/kernel/sem.cpp
@@ -763,11 +763,12 @@ switch_sem_etc(sem_id semToBeReleased, sem_id id, int32 
count,
                return B_OK;
        if (sSemsActive == false)
                return B_NO_MORE_SEMS;
-
+#if KDEBUG
        if (!are_interrupts_enabled()) {
                panic("switch_sem_etc: called with interrupts disabled for sem "
                        "%" B_PRId32 "\n", id);
        }
+#endif
 
        if (id < 0)
                return B_BAD_SEM_ID;

############################################################################

Revision:    hrev52883
Commit:      c054900882e6dcc20f8fe2ff4fd9e605613923cf
URL:         https://git.haiku-os.org/haiku/commit/?id=c054900882e6
Author:      Augustin Cavalier <waddlesplash@xxxxxxxxx>
Date:        Sun Feb 17 19:36:16 2019 UTC

kernel: Sanity-check interrupts in snooze().

This didn't trigger any panics on my bare-metal dev install when tested,
but it might explain some easily-reproducible hardlocks (i.e. can't
even drop to KDL via emergency keys) I was seeing on other machines.

----------------------------------------------------------------------------

diff --git a/src/system/kernel/thread.cpp b/src/system/kernel/thread.cpp
index 073bbaa58a..1315338f1c 100644
--- a/src/system/kernel/thread.cpp
+++ b/src/system/kernel/thread.cpp
@@ -1373,6 +1373,13 @@ static status_t
 common_snooze_etc(bigtime_t timeout, clockid_t clockID, uint32 flags,
        bigtime_t* _remainingTime)
 {
+#if KDEBUG
+       if (!are_interrupts_enabled()) {
+               panic("common_snooze_etc(): called with interrupts disabled, 
timeout "
+                       "%" B_PRIdBIGTIME, timeout);
+       }
+#endif
+
        switch (clockID) {
                case CLOCK_REALTIME:
                        // make sure the B_TIMEOUT_REAL_TIME_BASE flag is set 
and fall


Other related posts:

  • » [haiku-commits] haiku: hrev52883 - src/system/kernel - waddlesplash