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); |