* Some formatting cleanup.

* Removed ARM support.
* Removed PEF references.
* Added structure and constants for pre syscall tracing.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11245 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold 2005-02-04 14:37:55 +00:00
parent f6fd4d6a70
commit eafe61c06b

View File

@ -29,7 +29,7 @@ extern "C" {
----- */ ----- */
extern status_t install_default_debugger (port_id to_debugger_port); extern status_t install_default_debugger (port_id to_debugger_port);
extern port_id install_team_debugger (team_id team, port_id to_debugger_port); extern port_id install_team_debugger (team_id team, port_id to_debugger_port);
extern status_t remove_team_debugger (team_id team); extern status_t remove_team_debugger (team_id team);
extern status_t debug_thread (thread_id thread); extern status_t debug_thread (thread_id thread);
@ -62,43 +62,30 @@ typedef enum {
} db_why_stopped; } db_why_stopped;
#endif #endif
#if __arm__ /* FIXME! This is probably neither complete, nor right. Placeholder for now. */ #if __INTEL__
typedef enum { typedef enum {
B_THREAD_NOT_RUNNING, B_THREAD_NOT_RUNNING,
B_DEBUGGER_CALL, B_DEBUGGER_CALL,
B_BREAKPOINT_HIT, B_BREAKPOINT_HIT,
B_SNGLSTP,
B_NMI, B_NMI,
B_MACHINE_CHECK_EXCEPTION, B_MACHINE_CHECK_EXCEPTION,
B_SEGMENT_VIOLATION,
B_ALIGNMENT_EXCEPTION,
B_DIVIDE_ERROR,
B_OVERFLOW_EXCEPTION,
B_BOUNDS_CHECK_EXCEPTION,
B_INVALID_OPCODE_EXCEPTION,
B_SEGMENT_NOT_PRESENT,
B_STACK_FAULT,
B_GENERAL_PROTECTION_FAULT,
B_FLOATING_POINT_EXCEPTION,
B_GET_PROFILING_INFO, B_GET_PROFILING_INFO,
B_WATCHPOINT_HIT, B_WATCHPOINT_HIT,
B_SYSCALL_HIT B_SYSCALL_HIT
} db_why_stopped; } db_why_stopped;
#endif #endif
#if __INTEL__
typedef enum {
B_THREAD_NOT_RUNNING,
B_DEBUGGER_CALL,
B_BREAKPOINT_HIT,
B_SNGLSTP,
B_NMI,
B_MACHINE_CHECK_EXCEPTION,
B_SEGMENT_VIOLATION,
B_ALIGNMENT_EXCEPTION,
B_DIVIDE_ERROR,
B_OVERFLOW_EXCEPTION,
B_BOUNDS_CHECK_EXCEPTION,
B_INVALID_OPCODE_EXCEPTION,
B_SEGMENT_NOT_PRESENT,
B_STACK_FAULT,
B_GENERAL_PROTECTION_FAULT,
B_FLOATING_POINT_EXCEPTION,
B_GET_PROFILING_INFO,
B_WATCHPOINT_HIT,
B_SYSCALL_HIT
} db_why_stopped;
#endif
/* ----- /* -----
cpu state. It is arranged to be useable by the kernel, hence all the cpu state. It is arranged to be useable by the kernel, hence all the
C volatile regs are grouped at the beginning. The non-volatile ones C volatile regs are grouped at the beginning. The non-volatile ones
@ -225,31 +212,8 @@ typedef struct {
uint16 reserved5; uint16 reserved5;
} x86_cpu_state; } x86_cpu_state;
typedef struct
{
/* !!!XXX This is a placeholder and will need to be fixed */
int32 r0;
int32 r1;
int32 r2;
int32 r3;
int32 r4;
int32 r5;
int32 r6;
int32 r7; /* WR - Thumb-state work register */
int32 r8;
int32 r9; /* SB */
int32 r10; /* SL */
int32 r11; /* FP - ARM-state frame pointer */
int32 r12; /* IP - intra-procedure-call scratch pointer */
int32 r13; /* SP - stack pointer */
int32 r14; /* LR - link register */
int32 r15; /* PC */
} arm_cpu_state;
#if __INTEL__ #if __INTEL__
typedef x86_cpu_state cpu_state; typedef x86_cpu_state cpu_state;
#elif __arm__
typedef arm_cpu_state cpu_state;
#endif #endif
/* ----- /* -----
@ -356,9 +320,9 @@ typedef struct {
typedef enum typedef enum
{ {
PERFMON_USER_MODE = 0, B_PERFMON_USER_MODE = 0,
PERFMON_KERNEL_MODE, B_PERFMON_KERNEL_MODE,
PERFMON_KERNEL_AND_USER_MODE B_PERFMON_KERNEL_AND_USER_MODE
} perfmon_privilege; } perfmon_privilege;
@ -457,26 +421,18 @@ typedef union {
/* ----- /* -----
messages passed to the external debugger messages passed to the external debugger
*** DANGER WILL ROBINSON!! *** Don't change the ordering/numbering
of these messages. Doing so will break 3rd party debuggers (i.e.,
MWDebug) between releases.
----- */ ----- */
enum debugger_message { enum debugger_message {
B_THREAD_STOPPED = 0, /* thread stopped, here is its state */ B_THREAD_STOPPED = 0, /* thread stopped, here is its state */
B_TEAM_CREATED = 1, /* team was created */ B_TEAM_CREATED = 1, /* team was created */
B_TEAM_DELETED = 2, /* team was deleted */ B_TEAM_DELETED = 2, /* team was deleted */
#if __ELF__ B_IMAGE_CREATED = 3, /* image was created */
B_ELF_IMAGE_CREATED = 3, /* pe image was created */ B_IMAGE_DELETED = 4, /* image was deleted */
B_ELF_IMAGE_DELETED = 4, /* pe image was deleted */
#else
B_PEF_IMAGE_CREATED = 3, /* pef image was created */
B_PEF_IMAGE_DELETED = 4, /* pef image was deleted */
#endif
B_THREAD_CREATED = 5, /* thread was created */ B_THREAD_CREATED = 5, /* thread was created */
B_THREAD_DELETED = 6, /* thread was deleted */ B_THREAD_DELETED = 6, /* thread was deleted */
B_SYSCALL_POST = 7 /* end of syscall */ B_SYSCALL_PRE = 7, /* begin of syscall */
B_SYSCALL_POST = 8, /* end of syscall */
}; };
/* ---------- /* ----------
@ -506,12 +462,12 @@ typedef struct {
thread_id thread; /* id of thread that is loading the image */ thread_id thread; /* id of thread that is loading the image */
image_info info; /* info for the image */ image_info info; /* info for the image */
port_id nub_port; /* port to nub for this team */ port_id nub_port; /* port to nub for this team */
} db_pef_image_created_msg; } db_image_created_msg;
typedef struct { typedef struct {
team_id team; team_id team;
image_info info; /* info for the image */ image_info info; /* info for the image */
} db_pef_image_deleted_msg; } db_image_deleted_msg;
typedef struct { typedef struct {
thread_id thread; /* thread id */ thread_id thread; /* thread id */
@ -527,6 +483,14 @@ typedef struct {
thread_id thread; thread_id thread;
} db_get_profile_info_msg; } db_get_profile_info_msg;
typedef struct {
thread_id thread; /* thread id */
team_id team; /* team id */
bigtime_t start_time; /* time of syscall start */
uint32 syscall; /* the syscall number */
uint32 args[16]; /* syscall args */
} db_syscall_pre_msg;
typedef struct { typedef struct {
thread_id thread; /* thread id */ thread_id thread; /* thread id */
team_id team; /* team id */ team_id team; /* team id */
@ -535,7 +499,7 @@ typedef struct {
uint32 rethi; /* upper word of return value */ uint32 rethi; /* upper word of return value */
uint32 retlo; /* lower word of return value */ uint32 retlo; /* lower word of return value */
uint32 syscall; /* the syscall number */ uint32 syscall; /* the syscall number */
uint32 args[8]; /* syscall args */ uint32 args[16]; /* syscall args */
} db_syscall_post_msg; } db_syscall_post_msg;
/* ----- /* -----
@ -546,8 +510,8 @@ typedef union {
db_thread_stopped_msg thread_stopped; db_thread_stopped_msg thread_stopped;
db_team_created_msg team_created; db_team_created_msg team_created;
db_team_deleted_msg team_deleted; db_team_deleted_msg team_deleted;
db_pef_image_created_msg pef_image_created; db_image_created_msg image_created;
db_pef_image_deleted_msg pef_image_deleted; db_image_deleted_msg image_deleted;
db_thread_created_msg thread_created; db_thread_created_msg thread_created;
db_thread_deleted_msg thread_deleted; db_thread_deleted_msg thread_deleted;
db_get_profile_info_msg get_profile_info; db_get_profile_info_msg get_profile_info;
@ -560,12 +524,14 @@ typedef union {
* Rest are used for user-level control by debuggers * Rest are used for user-level control by debuggers
* using the debugging API. See nukernel/inc/thread.h. * using the debugging API. See nukernel/inc/thread.h.
*/ */
#define DEBUG_USER_FLAGS_MASK 0xffff0000 #define B_DEBUG_USER_FLAGS_MASK 0xffff0000
#define DEBUG_syscall_tracing_only 0x00010000 /* used by _kstrace_init_ */ #define B_DEBUG_SYSCALL_TRACING_ONLY 0x00010000
#define DEBUG_syscall_fast_trace 0x00020000 #define B_DEBUG_SYSCALL_FAST_TRACE 0x00020000
#define DEBUG_syscall_trace_through_spawns 0x00040000 #define B_DEBUG_SYSCALL_TRACE_THROUGH_SPAWNS 0x00040000
#define DEBUG_syscall_trace_whole_team 0x00080000 #define B_DEBUG_SYSCALL_TRACE_WHOLE_TEAM 0x00080000
#define B_DEBUG_SYSCALL_TRACE_PRE 0x00100000
#define B_DEBUG_SYSCALL_TRACE_POST 0x00200000
#ifdef __cplusplus #ifdef __cplusplus
} }