Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2811 → Rev 2812

/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