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] = { |