2 * Copyright 2005-2009, Axel Dörfler, axeld@pinc-software.de.
3 * Distributed under the terms of the MIT License.
5 * Copyright 2001-2002, Travis Geiselbrecht. All rights reserved.
6 * Distributed under the terms of the NewOS License.
8 #ifndef _KERNEL_ARCH_DEBUG_H
9 #define _KERNEL_ARCH_DEBUG_H
12 #include <SupportDefs.h>
14 #include <arch_debug.h>
24 using BKernel::Thread
;
27 // arch_debug_get_stack_trace() flags
28 #define STACK_TRACE_KERNEL 0x01
29 #define STACK_TRACE_USER 0x02
36 status_t
arch_debug_init(kernel_args
*args
);
37 void arch_debug_stack_trace(void);
38 void *arch_debug_get_caller(void);
39 int32
arch_debug_get_stack_trace(addr_t
* returnAddresses
, int32 maxCount
,
40 int32 skipIframes
, int32 skipFrames
, uint32 flags
);
41 void* arch_debug_get_interrupt_pc(bool* _isSyscall
);
42 bool arch_debug_contains_call(Thread
*thread
, const char *symbol
,
43 addr_t start
, addr_t end
);
44 void arch_debug_save_registers(struct arch_debug_registers
* registers
);
45 void arch_debug_unset_current_thread(void);
46 void arch_debug_call_with_fault_handler(cpu_ent
* cpu
, jmp_buf jumpBuffer
,
47 void (*function
)(void*), void* parameter
);
49 bool arch_is_debug_variable_defined(const char* variableName
);
50 status_t
arch_set_debug_variable(const char* variableName
, uint64 value
);
51 status_t
arch_get_debug_variable(const char* variableName
, uint64
* value
);
53 ssize_t
arch_debug_gdb_get_registers(char* buffer
, size_t bufferSize
);
59 #endif /* _KERNEL_ARCH_DEBUG_H */