Subversion Repositories HelenOS

Rev

Rev 2801 | Rev 2805 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2801 Rev 2804
Line 96... Line 96...
96
unative_t syscall_handler(unative_t a1, unative_t a2, unative_t a3,
96
unative_t syscall_handler(unative_t a1, unative_t a2, unative_t a3,
97
    unative_t a4, unative_t a5, unative_t a6, unative_t id)
97
    unative_t a4, unative_t a5, unative_t a6, unative_t id)
98
{
98
{
99
    unative_t rc;
99
    unative_t rc;
100
 
100
 
101
    if (id < SYSCALL_END)
101
    if (id < SYSCALL_END) {
-
 
102
        udebug_stoppable_begin();
102
        rc = syscall_table[id](a1, a2, a3, a4, a5, a6);
103
        rc = syscall_table[id](a1, a2, a3, a4, a5, a6);
103
    else {
104
    } else {
104
        klog_printf("TASK %llu: Unknown syscall id %llx", TASK->taskid,
105
        klog_printf("TASK %llu: Unknown syscall id %llx", TASK->taskid,
105
            id);
106
            id);
106
        task_kill(TASK->taskid);
107
        task_kill(TASK->taskid);
107
        thread_exit();
108
        thread_exit();
108
    }
109
    }
109
       
110
       
110
    if (THREAD->interrupted)
111
    if (THREAD->interrupted)
111
        thread_exit();
112
        thread_exit();
112
 
113
 
113
    udebug_syscall_event();
114
    udebug_syscall_event();
114
    udebug_stopping_point();
115
    udebug_stoppable_end();
115
   
116
   
116
    return rc;
117
    return rc;
117
}
118
}
118
 
119
 
119
syshandler_t syscall_table[SYSCALL_END] = {
120
syshandler_t syscall_table[SYSCALL_END] = {