From 2c730e8a8c43daf7a6bdbb60bfbb16c9a7d41a0b Mon Sep 17 00:00:00 2001 From: Jorrit Herder Date: Thu, 14 Jul 2005 15:27:40 +0000 Subject: [PATCH] Renamed file. --- kernel/{misc.c => utility.c} | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) rename kernel/{misc.c => utility.c} (72%) diff --git a/kernel/misc.c b/kernel/utility.c similarity index 72% rename from kernel/misc.c rename to kernel/utility.c index f8bf3edd0..5835f8cc5 100755 --- a/kernel/misc.c +++ b/kernel/utility.c @@ -1,5 +1,7 @@ /* This file contains a collection of miscellaneous procedures: * panic abort MINIX due to a fatal error + * safe_lock lock the kernel, use in combination with safe_unlock + * safe_unlock unlock the kernel, but prevent breaking nested locks * alloc_bit bit map manipulation * free_bit bit map manipulation */ @@ -10,6 +12,34 @@ #include +PRIVATE int relock_count = 0; + +/*===========================================================================* + * safe_lock * + *===========================================================================*/ +PUBLIC void safe_lock(c,v) +int c; +char *v; +{ + if(!(read_cpu_flags() & X86_FLAG_I)) { + relock_count++; + } else { + intr_disable(); + } +} + +/*===========================================================================* + * safe_unlock * + *===========================================================================*/ +PUBLIC void safe_unlock(void) +{ + if(! relock_count) { + intr_enable(); + } else { + relock_count--; + } +} + /*===========================================================================* * panic * *===========================================================================*/ @@ -30,6 +60,9 @@ int n; prepare_shutdown(RBT_PANIC); } + + + /*===========================================================================* * free_bit * *===========================================================================*/