Rev 2804 | Rev 2813 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2804 | Rev 2805 | ||
---|---|---|---|
Line 56... | Line 56... | ||
56 | ++TASK->not_stoppable_count; |
56 | ++TASK->not_stoppable_count; |
57 | spinlock_unlock(&TASK->lock); |
57 | spinlock_unlock(&TASK->lock); |
58 | } |
58 | } |
59 | } |
59 | } |
60 | 60 | ||
61 | void udebug_syscall_event(void) |
61 | void udebug_syscall_event(unative_t a1, unative_t a2, unative_t a3, |
- | 62 | unative_t a4, unative_t a5, unative_t a6, unative_t id, unative_t rc) |
|
62 | { |
63 | { |
- | 64 | call_t *call; |
|
- | 65 | ||
63 | spinlock_lock(&TASK->lock); |
66 | spinlock_lock(&TASK->lock); |
64 | /* being debugged + have go */ |
67 | /* being debugged + have go */ |
65 | if (TASK->being_debugged && !TASK->stop_request) { /* locking! */ |
68 | if (TASK->being_debugged && !TASK->stop_request) { /* locking! */ |
66 | klog_printf("udebug_syscall_event"); |
69 | klog_printf("udebug_syscall_event"); |
- | 70 | call = TASK->debug_go_call; |
|
67 | IPC_SET_RETVAL(TASK->debug_go_call->data, 0); |
71 | IPC_SET_RETVAL(call->data, 0); |
- | 72 | IPC_SET_ARG1(call->data, UDEBUG_EVENT_SYSCALL); |
|
- | 73 | IPC_SET_ARG2(call->data, id); |
|
- | 74 | IPC_SET_ARG3(call->data, rc); |
|
68 | klog_printf("udebug_syscall_event/ipc_answer"); |
75 | klog_printf("udebug_syscall_event/ipc_answer"); |
69 | 76 | ||
- | 77 | THREAD->syscall_args[0] = a1; |
|
- | 78 | THREAD->syscall_args[1] = a2; |
|
- | 79 | THREAD->syscall_args[2] = a3; |
|
- | 80 | THREAD->syscall_args[3] = a4; |
|
- | 81 | THREAD->syscall_args[4] = a5; |
|
- | 82 | THREAD->syscall_args[5] = a6; |
|
- | 83 | ||
70 | ipc_answer(&TASK->answerbox, TASK->debug_go_call); |
84 | ipc_answer(&TASK->answerbox, TASK->debug_go_call); |
71 | spinlock_unlock(&TASK->lock); |
85 | spinlock_unlock(&TASK->lock); |
72 | waitq_sleep(&THREAD->go_wq); |
86 | waitq_sleep(&THREAD->go_wq); |
73 | } else { |
87 | } else { |
74 | spinlock_unlock(&TASK->lock); |
88 | spinlock_unlock(&TASK->lock); |