Added syscall _kern_kernel_debugger() to enter the kernel debugger.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31965 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -161,6 +161,7 @@ extern status_t debug_get_next_demangled_argument(uint32* _cookie,
|
|||||||
extern struct thread* debug_set_debugged_thread(struct thread* thread);
|
extern struct thread* debug_set_debugged_thread(struct thread* thread);
|
||||||
extern struct thread* debug_get_debugged_thread();
|
extern struct thread* debug_get_debugged_thread();
|
||||||
|
|
||||||
|
extern status_t _user_kernel_debugger(const char *message);
|
||||||
extern void _user_debug_output(const char *userString);
|
extern void _user_debug_output(const char *userString);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -420,6 +420,7 @@ extern status_t _kern_get_port_message_info_etc(port_id port,
|
|||||||
bigtime_t timeout);
|
bigtime_t timeout);
|
||||||
|
|
||||||
// debug support functions
|
// debug support functions
|
||||||
|
extern status_t _kern_kernel_debugger(const char *message);
|
||||||
extern void _kern_debugger(const char *message);
|
extern void _kern_debugger(const char *message);
|
||||||
extern int _kern_disable_debugger(int state);
|
extern int _kern_disable_debugger(int state);
|
||||||
|
|
||||||
|
|||||||
@@ -1660,6 +1660,27 @@ debug_get_debugged_thread()
|
|||||||
// userland syscalls
|
// userland syscalls
|
||||||
|
|
||||||
|
|
||||||
|
status_t
|
||||||
|
_user_kernel_debugger(const char *userMessage)
|
||||||
|
{
|
||||||
|
if (geteuid() != 0)
|
||||||
|
return B_NOT_ALLOWED;
|
||||||
|
|
||||||
|
char message[512];
|
||||||
|
strcpy(message, "USER: ");
|
||||||
|
size_t len = strlen(message);
|
||||||
|
|
||||||
|
if (userMessage == NULL || !IS_USER_ADDRESS(userMessage)
|
||||||
|
|| user_strlcpy(message + len, userMessage, sizeof(message) - len)
|
||||||
|
< 0) {
|
||||||
|
return B_BAD_ADDRESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
kernel_debugger(message);
|
||||||
|
return B_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
_user_debug_output(const char* userString)
|
_user_debug_output(const char* userString)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user