Rev 2805 | Rev 2813 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2805 | Rev 2812 | ||
---|---|---|---|
Line 5... | Line 5... | ||
5 | */ |
5 | */ |
6 | 6 | ||
7 | #ifndef KERN_UDEBUG_H_ |
7 | #ifndef KERN_UDEBUG_H_ |
8 | #define KERN_UDEBUG_H_ |
8 | #define KERN_UDEBUG_H_ |
9 | 9 | ||
- | 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 | ||
10 | typedef enum { |
81 | typedef enum { |
11 | UDEBUG_EVENT_SYSCALL |
82 | UDEBUG_EVENT_SYSCALL |
12 | } udebug_event_t; |
83 | } udebug_event_t; |
13 | 84 | ||
- | 85 | #ifdef KERNEL |
|
- | 86 | ||
14 | void udebug_syscall_event(unative_t a1, unative_t a2, unative_t a3, |
87 | void udebug_syscall_event(unative_t a1, unative_t a2, unative_t a3, |
15 | unative_t a4, unative_t a5, unative_t a6, unative_t id, unative_t rc); |
88 | unative_t a4, unative_t a5, unative_t a6, unative_t id, unative_t rc); |
16 | void udebug_stoppable_begin(void); |
89 | void udebug_stoppable_begin(void); |
17 | void udebug_stoppable_end(void); |
90 | void udebug_stoppable_end(void); |
18 | 91 | ||
19 | #endif |
92 | #endif |
20 | 93 | ||
- | 94 | #endif |
|
- | 95 | ||
21 | /** @} |
96 | /** @} |
22 | */ |
97 | */ |