Rev 2812 | Rev 2817 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2801 | svoboda | 1 | /** @addtogroup generic |
2 | * @{ |
||
3 | */ |
||
4 | /** @file |
||
5 | */ |
||
6 | |||
7 | #ifndef KERN_UDEBUG_H_ |
||
8 | #define KERN_UDEBUG_H_ |
||
9 | |||
2812 | svoboda | 10 | typedef enum { /* udebug_method_t */ |
11 | |||
12 | /** Start debugging the recipient. |
||
13 | * Causes all threads in the receiving task to stop. When they |
||
14 | * are all stoped, an answer with retval 0 is generated. |
||
15 | */ |
||
16 | UDEBUG_M_BEGIN = 1, |
||
17 | |||
18 | /** Finish debugging the recipient. |
||
19 | * Answers all pending GO and GUARD messages. |
||
20 | */ |
||
21 | UDEBUG_M_END, |
||
22 | |||
23 | /** Make sure the debugged task is still there. |
||
24 | * This message is answered when the debugged task dies |
||
25 | * or the debugging session ends. |
||
26 | */ |
||
27 | UDEBUG_M_GUARD, |
||
28 | |||
29 | /** Run a thread until a debugging event occurs. |
||
30 | * This message is answered when the thread stops |
||
31 | * in a debugging event. |
||
32 | * |
||
33 | * - ARG2 - id of the thread to run |
||
34 | */ |
||
35 | UDEBUG_M_GO, |
||
36 | |||
37 | /** Stop a thread being debugged. |
||
38 | * Creates a special STOP event in the thread, causing |
||
39 | * it to answer a pending GO message (if any). |
||
40 | */ |
||
41 | UDEBUG_M_STOP, |
||
42 | |||
43 | /** Read arguments of a syscall. |
||
44 | * |
||
45 | * - ARG2 - thread identification |
||
46 | * - ARG3 - destination address in the caller's address space |
||
47 | * - ARG4 - size of receiving buffer in bytes |
||
48 | * |
||
49 | * on answer, the kernel will set: |
||
50 | * |
||
51 | * - ARG1 - actual size in bytes of data read |
||
52 | */ |
||
53 | UDEBUG_M_ARGS_READ, |
||
54 | |||
55 | /** Read the list of the debugged tasks's threads. |
||
56 | * |
||
57 | * - ARG2 - destination address in the caller's address space |
||
58 | * - ARG3 - size of receiving buffer in bytes |
||
59 | * |
||
60 | * The kernel fills the buffer with a series of sysarg_t values |
||
61 | * (thread ids). On answer, the kernel will set: |
||
62 | * |
||
63 | * - ARG1 - number of bytes that were actually copied |
||
64 | * - ARG2 - number of bytes of the complete data |
||
65 | * |
||
66 | */ |
||
67 | UDEBUG_M_THREAD_READ, |
||
68 | |||
69 | /** Read the list of the debugged tasks's memory. |
||
70 | * |
||
71 | * - ARG2 - destination address in the caller's address space |
||
72 | * - ARG3 - source address in the recipient's address space |
||
73 | * - ARG4 - size of receiving buffer in bytes |
||
74 | * |
||
75 | */ |
||
76 | UDEBUG_M_MEM_READ |
||
77 | |||
78 | } udebug_method_t; |
||
79 | |||
80 | |||
2805 | svoboda | 81 | typedef enum { |
82 | UDEBUG_EVENT_SYSCALL |
||
83 | } udebug_event_t; |
||
84 | |||
2812 | svoboda | 85 | #ifdef KERNEL |
86 | |||
2805 | svoboda | 87 | void udebug_syscall_event(unative_t a1, unative_t a2, unative_t a3, |
88 | unative_t a4, unative_t a5, unative_t a6, unative_t id, unative_t rc); |
||
2804 | svoboda | 89 | void udebug_stoppable_begin(void); |
90 | void udebug_stoppable_end(void); |
||
2801 | svoboda | 91 | |
92 | #endif |
||
93 | |||
2812 | svoboda | 94 | #endif |
95 | |||
2801 | svoboda | 96 | /** @} |
97 | */ |