Changes in kernel/generic/src/interrupt/interrupt.c [a074b4f:44b7783] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/interrupt/interrupt.c
ra074b4f r44b7783 44 44 #include <console/console.h> 45 45 #include <console/cmd.h> 46 #include <ipc/event.h>47 #include <synch/mutex.h>48 #include <time/delay.h>49 #include <macros.h>50 46 #include <panic.h> 51 47 #include <print.h> … … 111 107 fault_if_from_uspace(istate, "Unhandled exception %d.", n); 112 108 panic("Unhandled exception %d.", n); 113 }114 115 /** Terminate thread and task if exception came from userspace. */116 void fault_if_from_uspace(istate_t *istate, char *fmt, ...)117 {118 task_t *task = TASK;119 va_list args;120 121 if (!istate_from_uspace(istate))122 return;123 124 printf("Task %s (%" PRIu64 ") killed due to an exception at "125 "program counter %p.\n", task->name, task->taskid,126 istate_get_pc(istate));127 128 stack_trace_istate(istate);129 130 printf("Kill message: ");131 va_start(args, fmt);132 vprintf(fmt, args);133 va_end(args);134 printf("\n");135 136 if (event_is_subscribed(EVENT_FAULT)) {137 event_notify_3(EVENT_FAULT, LOWER32(TASK->taskid),138 UPPER32(TASK->taskid), (unative_t) THREAD);139 }140 141 #ifdef CONFIG_UDEBUG142 /* Wait until a debugger attends to us. */143 mutex_lock(&THREAD->udebug.lock);144 while (!THREAD->udebug.active)145 condvar_wait(&THREAD->udebug.active_cv, &THREAD->udebug.lock);146 mutex_unlock(&THREAD->udebug.lock);147 148 udebug_stoppable_begin();149 udebug_stoppable_end();150 151 /* Make sure the debugging session is over before proceeding. */152 mutex_lock(&THREAD->udebug.lock);153 while (THREAD->udebug.active)154 condvar_wait(&THREAD->udebug.active_cv, &THREAD->udebug.lock);155 mutex_unlock(&THREAD->udebug.lock);156 #endif157 158 task_kill(task->taskid);159 thread_exit();160 109 } 161 110
Note:
See TracChangeset
for help on using the changeset viewer.