Subversion Repositories HelenOS

Rev

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