Ignore:
File:
1 edited

Legend:

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

    r5bcf1f9 r96b02eb9  
    4545#include <console/console.h>
    4646#include <console/cmd.h>
     47#include <ipc/event.h>
    4748#include <synch/mutex.h>
    4849#include <time/delay.h>
     
    187188        printf("\n");
    188189       
    189         task_kill_self(true);
    190 }
    191 
    192 /** Get istate structure of a thread.
    193  *
    194  * Get pointer to the istate structure at the bottom of the kernel stack.
    195  *
    196  * This function can be called in interrupt or user context. In interrupt
    197  * context the istate structure is created by the low-level exception
    198  * handler. In user context the istate structure is created by the
    199  * low-level syscall handler.
    200  */
    201 istate_t *istate_get(thread_t *thread)
    202 {
    203190        /*
    204          * The istate structure should be right at the bottom of the kernel
    205          * stack.
     191         * Userspace can subscribe for FAULT events to take action
     192         * whenever a thread faults. (E.g. take a dump, run a debugger).
     193         * The notification is always available, but unless Udebug is enabled,
     194         * that's all you get.
    206195         */
    207         return (istate_t *) ((uint8_t *) thread->kstack + THREAD_STACK_SIZE -
    208             sizeof(istate_t));
     196        if (event_is_subscribed(EVENT_FAULT)) {
     197                /* Notify the subscriber that a fault occurred. */
     198                event_notify_3(EVENT_FAULT, LOWER32(TASK->taskid),
     199                    UPPER32(TASK->taskid), (sysarg_t) THREAD);
     200               
     201#ifdef CONFIG_UDEBUG
     202                /* Wait for a debugging session. */
     203                udebug_thread_fault();
     204#endif
     205        }
     206       
     207        task_kill(TASK->taskid);
     208        thread_exit();
    209209}
    210210
Note: See TracChangeset for help on using the changeset viewer.