1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
#include <arch/x86/include/cpufunc.h>
#include <sys/lwp.h>
#include <sys/lockdoc.h>
#ifdef LOCKDOC
void lockdoc_send_current_task_addr(void) {
u_long flags;
flags = x86_read_flags();
_x86_disable_intr();
memset(&la_buffer,0,sizeof(la_buffer));
la_buffer.action = LOCKDOC_CURRENT_TASK;
la_buffer.ptr = (uint32_t)((uint32_t)curcpu()->ci_self + offsetof(struct cpu_info, ci_curlwp));
outb_(PING_CHAR,IO_PORT_LOG);
x86_write_flags(flags);
}
void lockdoc_send_lwp_flag_offset(void) {
u_long flags;
flags = x86_read_flags();
_x86_disable_intr();
memset(&la_buffer,0,sizeof(la_buffer));
la_buffer.action = LOCKDOC_LWP_FLAG_OFFSET;
la_buffer.ptr = offsetof(struct lwp, l_pflag);
outb_(PING_CHAR,IO_PORT_LOG);
x86_write_flags(flags);
}
void lockdoc_send_pid_offset(void) {
u_long flags;
flags = x86_read_flags();
_x86_disable_intr();
memset(&la_buffer,0,sizeof(la_buffer));
la_buffer.action = LOCKDOC_PID_OFFSET;
la_buffer.ptr = offsetof(struct lwp, l_lid);
outb_(PING_CHAR,IO_PORT_LOG);
x86_write_flags(flags);
}
void lockdoc_send_kernel_version(void) {
u_long flags;
flags = x86_read_flags();
_x86_disable_intr();
memset(&la_buffer,0,sizeof(la_buffer));
snprintf((char*)&la_buffer.type, LOG_CHAR_BUFFER_LEN, "%s", "notimplemented"); // TODO Implement
la_buffer.action = LOCKDOC_KERNEL_VERSION;
outb_(PING_CHAR,IO_PORT_LOG);
x86_write_flags(flags);
}
#endif
|