summaryrefslogtreecommitdiff
path: root/ddb/db_trap.c
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2015-08-15 16:43:24 +0200
committerJustus Winter <4winter@informatik.uni-hamburg.de>2015-08-17 15:42:31 +0200
commitbdc9b8583e6336bb3a44a80f10bac8b7b369719c (patch)
tree9fe6a45b74a7ed6ecf7a2316c095f875799e5bfc /ddb/db_trap.c
parent8259090d7394b667fbca4d4b05153e980a39db6b (diff)
kern: disable the simple lock checks while debugging
* kern/lock.c (do_check_simple_locks): New variable. (check_simple_locks): Make check conditional. (check_simple_locks_{en,dis}able): New functions. * kern/lock.h (check_simple_locks_{en,dis}able): New declarations. * ddb/db_trap.c (db_task_trap): Disable simple lock checks.
Diffstat (limited to 'ddb/db_trap.c')
-rw-r--r--ddb/db_trap.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/ddb/db_trap.c b/ddb/db_trap.c
index 7e10731..cbb6bde 100644
--- a/ddb/db_trap.c
+++ b/ddb/db_trap.c
@@ -45,6 +45,7 @@
#include <ddb/db_trap.h>
#include <ddb/db_run.h>
#include <machine/db_interface.h>
+#include <kern/lock.h>
extern jmp_buf_t *db_recover;
@@ -65,6 +66,8 @@ db_task_trap(
boolean_t watchpt;
task_t task_space;
+ check_simple_locks_disable();
+
task_space = db_target_space(current_thread(), user_space);
bkpt = IS_BREAKPOINT_TRAP(type, code);
watchpt = IS_WATCHPOINT_TRAP(type, code);
@@ -97,6 +100,7 @@ db_task_trap(
db_command_loop();
}
+ check_simple_locks_enable();
db_restart_at_pc(watchpt, task_space);
}