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 | */ |