Blame view

lib/bust_spinlocks.c 660 Bytes
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
4
5
6
7
8
  /*
   * lib/bust_spinlocks.c
   *
   * Provides a minimal bust_spinlocks for architectures which don't have one of their own.
   *
   * bust_spinlocks() clears any spinlocks which would prevent oops, die(), BUG()
   * and panic() information from reaching the user.
   */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
9
  #include <linux/kernel.h>
dc72c32e1   Frederic Weisbecker   printk: Provide a...
10
  #include <linux/printk.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
11
12
13
14
  #include <linux/spinlock.h>
  #include <linux/tty.h>
  #include <linux/wait.h>
  #include <linux/vt_kern.h>
b61312d35   Viktor Rosendahl   oops handling: en...
15
  #include <linux/console.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
16

cefc8be82   Kirill Korotaev   [PATCH] Consolida...
17
  void __attribute__((weak)) bust_spinlocks(int yes)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
18
19
  {
  	if (yes) {
004429956   Jan Beulich   handle recursive ...
20
  		++oops_in_progress;
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
21
  	} else {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
22
23
24
  #ifdef CONFIG_VT
  		unblank_screen();
  #endif
b61312d35   Viktor Rosendahl   oops handling: en...
25
  		console_unblank();
004429956   Jan Beulich   handle recursive ...
26
27
  		if (--oops_in_progress == 0)
  			wake_up_klogd();
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
28
29
  	}
  }