Rev 2813 | Rev 2901 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2813 | Rev 2817 | ||
---|---|---|---|
Line 95... | Line 95... | ||
95 | /** Dispatch system call */ |
95 | /** Dispatch system call */ |
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 | istate_t fake_state; |
|
100 | 101 | ||
101 | if (id < SYSCALL_END) { |
102 | if (id < SYSCALL_END) { |
- | 103 | THREAD->uspace_state = &fake_state; |
|
102 | udebug_stoppable_begin(); |
104 | udebug_stoppable_begin(); |
103 | rc = syscall_table[id](a1, a2, a3, a4, a5, a6); |
105 | rc = syscall_table[id](a1, a2, a3, a4, a5, a6); |
104 | } else { |
106 | } else { |
105 | klog_printf("TASK %llu: Unknown syscall id %llx", TASK->taskid, |
107 | klog_printf("TASK %llu: Unknown syscall id %llx", TASK->taskid, |
106 | id); |
108 | id); |
Line 111... | Line 113... | ||
111 | if (THREAD->interrupted) |
113 | if (THREAD->interrupted) |
112 | thread_exit(); |
114 | thread_exit(); |
113 | 115 | ||
114 | udebug_syscall_event(a1, a2, a3, a4, a5, a6, id, rc); |
116 | udebug_syscall_event(a1, a2, a3, a4, a5, a6, id, rc); |
115 | udebug_stoppable_end(); |
117 | udebug_stoppable_end(); |
- | 118 | THREAD->uspace_state = NULL; |
|
116 | 119 | ||
117 | return rc; |
120 | return rc; |
118 | } |
121 | } |
119 | 122 | ||
120 | syshandler_t syscall_table[SYSCALL_END] = { |
123 | syshandler_t syscall_table[SYSCALL_END] = { |