/branches/tracing/kernel/generic/include/udebug.h |
---|
7,10 → 7,83 |
#ifndef KERN_UDEBUG_H_ |
#define KERN_UDEBUG_H_ |
typedef enum { /* udebug_method_t */ |
/** Start debugging the recipient. |
* Causes all threads in the receiving task to stop. When they |
* are all stoped, an answer with retval 0 is generated. |
*/ |
UDEBUG_M_BEGIN = 1, |
/** Finish debugging the recipient. |
* Answers all pending GO and GUARD messages. |
*/ |
UDEBUG_M_END, |
/** Make sure the debugged task is still there. |
* This message is answered when the debugged task dies |
* or the debugging session ends. |
*/ |
UDEBUG_M_GUARD, |
/** Run a thread until a debugging event occurs. |
* This message is answered when the thread stops |
* in a debugging event. |
* |
* - ARG2 - id of the thread to run |
*/ |
UDEBUG_M_GO, |
/** Stop a thread being debugged. |
* Creates a special STOP event in the thread, causing |
* it to answer a pending GO message (if any). |
*/ |
UDEBUG_M_STOP, |
/** Read arguments of a syscall. |
* |
* - ARG2 - thread identification |
* - ARG3 - destination address in the caller's address space |
* - ARG4 - size of receiving buffer in bytes |
* |
* on answer, the kernel will set: |
* |
* - ARG1 - actual size in bytes of data read |
*/ |
UDEBUG_M_ARGS_READ, |
/** Read the list of the debugged tasks's threads. |
* |
* - ARG2 - destination address in the caller's address space |
* - ARG3 - size of receiving buffer in bytes |
* |
* The kernel fills the buffer with a series of sysarg_t values |
* (thread ids). On answer, the kernel will set: |
* |
* - ARG1 - number of bytes that were actually copied |
* - ARG2 - number of bytes of the complete data |
* |
*/ |
UDEBUG_M_THREAD_READ, |
/** Read the list of the debugged tasks's memory. |
* |
* - ARG2 - destination address in the caller's address space |
* - ARG3 - source address in the recipient's address space |
* - ARG4 - size of receiving buffer in bytes |
* |
*/ |
UDEBUG_M_MEM_READ |
} udebug_method_t; |
typedef enum { |
UDEBUG_EVENT_SYSCALL |
} udebug_event_t; |
#ifdef KERNEL |
void udebug_syscall_event(unative_t a1, unative_t a2, unative_t a3, |
unative_t a4, unative_t a5, unative_t a6, unative_t id, unative_t rc); |
void udebug_stoppable_begin(void); |
18,5 → 91,7 |
#endif |
#endif |
/** @} |
*/ |
/branches/tracing/kernel/generic/include/ipc/ipc.h |
---|
195,72 → 195,12 |
*/ |
#define IPC_M_DATA_READ 7 |
/** Start debugging the recipient. |
* Causes all threads in the receiving task to stop. When they |
* are all stoped, an answer with retval 0 is generated. |
/** Debug the recipient. |
* - ARG1 - specifies the debug method (from udebug_method_t) |
* - other arguments are specific to the debug method |
*/ |
#define IPC_M_DEBUG_BEGIN 8 |
#define IPC_M_DEBUG_ALL 8 |
/** Finish debugging the recipient. |
* Answers all pending GO and GUARD messages. |
*/ |
#define IPC_M_DEBUG_END 9 |
/** Make sure the debugged task is still there. |
* This message is answered when the debugged task dies |
* or the debugging session ends. |
*/ |
#define IPC_M_DEBUG_GUARD 10 |
/** Run a thread until a debugging event occurs. |
* This message is answered when the thread stops |
* in a debugging event. |
* |
* - ARG1 - id of the thread to run |
*/ |
#define IPC_M_DEBUG_GO 11 |
/** Stop a thread being debugged. |
* Creates a special STOP event in the thread, causing |
* it to answer a pending GO message (if any). |
*/ |
#define IPC_M_DEBUG_STOP 12 |
/** Read arguments of a syscall. |
* |
* - ARG1 - thread identification |
* - ARG2 - destination address in the caller's address space |
* - ARG3 - size of receiving buffer in bytes |
* |
* on answer, the kernel will set: |
* |
* - ARG1 - actual size in bytes of data read |
*/ |
#define IPC_M_DEBUG_ARGS_READ 12 |
/** Read the list of the debugged tasks's threads. |
* |
* - ARG1 - destination address in the caller's address space |
* - ARG2 - size of receiving buffer in bytes |
* |
* The kernel fills the buffer with a series of sysarg_t values |
* (thread ids). On answer, the kernel will set: |
* |
* - ARG1 - number of bytes that were actually copied |
* - ARG2 - number of bytes of the complete data |
* |
*/ |
#define IPC_M_DEBUG_THREAD_READ 13 |
/** Read the list of the debugged tasks's memory. |
* |
* - ARG1 - destination address in the caller's address space |
* - ARG2 - source address in the recipient's address space |
* - ARG3 - size of receiving buffer in bytes |
* |
*/ |
#define IPC_M_DEBUG_MEM_READ 14 |
/* Well-known methods */ |
#define IPC_M_LAST_SYSTEM 511 |
#define IPC_M_PING 512 |