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_get_debugged_thread();
|
||||
|
||||
extern status_t _user_kernel_debugger(const char *message);
|
||||
extern void _user_debug_output(const char *userString);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -420,6 +420,7 @@ extern status_t _kern_get_port_message_info_etc(port_id port,
|
||||
bigtime_t timeout);
|
||||
|
||||
// debug support functions
|
||||
extern status_t _kern_kernel_debugger(const char *message);
|
||||
extern void _kern_debugger(const char *message);
|
||||
extern int _kern_disable_debugger(int state);
|
||||
|
||||
|
||||
@@ -1660,6 +1660,27 @@ debug_get_debugged_thread()
|
||||
// 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
|
||||
_user_debug_output(const char* userString)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user