summaryrefslogtreecommitdiff
path: root/sys/lockdoc/init_data.c
blob: bce4ea7a20fcbeb087cc943008ee0283561800fe (plain)
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