summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/kern/init_main.c11
-rw-r--r--sys/lockdoc/log.c3
2 files changed, 13 insertions, 1 deletions
diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c
index 5604495ef92..1f07a93fbbe 100644
--- a/sys/kern/init_main.c
+++ b/sys/kern/init_main.c
@@ -226,6 +226,10 @@ extern void *_binary_splash_image_end;
#include <sys/userconf.h>
+#ifdef LOCKDOC
+#include <sys/lockdoc.h>
+#endif
+
extern struct lwp lwp0;
extern time_t rootfstime;
@@ -624,6 +628,13 @@ main(void)
scdebug_init();
+#ifdef LOCKDOC
+ lockdoc_send_current_task_addr();
+ lockdoc_send_lwp_flag_offset();
+ lockdoc_send_pid_offset();
+ lockdoc_send_kernel_version();
+#endif
+
/*
* Create process 1 (init(8)). We do this now, as Unix has
* historically had init be process 1, and changing this would
diff --git a/sys/lockdoc/log.c b/sys/lockdoc/log.c
index 4fbe3d4a7fd..84aba0893f5 100644
--- a/sys/lockdoc/log.c
+++ b/sys/lockdoc/log.c
@@ -25,7 +25,8 @@ void lockdoc_send_current_task_addr(void) {
memset(&la_buffer,0,sizeof(la_buffer));
la_buffer.action = LOCKDOC_CURRENT_TASK;
- //la_buffer.ptr = (uint32_t)PCPU_PTR(curlwp); TODO Implement
+ la_buffer.ptr = (uint32_t)((uint32_t)curcpu()->ci_self + offsetof(struct cpu_info, ci_curlwp));
+
outb_(PING_CHAR,IO_PORT_LOG);
lockdoc_x86_restore_intr(flags);