Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/interrupt/interrupt.c

    ra074b4f r44b7783  
    4444#include <console/console.h>
    4545#include <console/cmd.h>
    46 #include <ipc/event.h>
    47 #include <synch/mutex.h>
    48 #include <time/delay.h>
    49 #include <macros.h>
    5046#include <panic.h>
    5147#include <print.h>
     
    111107        fault_if_from_uspace(istate, "Unhandled exception %d.", n);
    112108        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_UDEBUG
    142         /* 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 #endif
    157 
    158         task_kill(task->taskid);
    159         thread_exit();
    160109}
    161110
Note: See TracChangeset for help on using the changeset viewer.