/branches/tracing/kernel/generic/src/udebug/udebug_ipc.c |
---|
110,8 → 110,10 |
klog_printf("debug_go()"); |
ta = get_lock_callee_task(phone); |
// FIXME: must save this in thread struct, not task struct!!! |
ta->debug_go_call = call; |
spinlock_unlock(&ta->lock); |
// TODO: don't lock ta |
t = (thread_t *) IPC_GET_ARG2(call->data); |
118,14 → 120,12 |
ipl = interrupts_disable(); |
spinlock_lock(&threads_lock); |
/* Verify that 't' exists and belongs to task 'ta' */ |
if (!thread_exists(t) || (t->task != ta)) { |
if (!thread_exists(t)) { |
spinlock_unlock(&threads_lock); |
interrupts_restore(ipl); |
return ENOENT; |
} |
t->debug_go_call = call; |
t->debug_stop = false; |
waitq_wakeup(&t->go_wq, WAKEUP_FIRST); |
/branches/tracing/kernel/generic/src/udebug/udebug.c |
---|
81,7 → 81,7 |
if (TASK->dt_state == UDEBUG_TS_ACTIVE) { |
klog_printf("udebug_syscall_event"); |
call = THREAD->debug_go_call; |
call = TASK->debug_go_call; |
IPC_SET_RETVAL(call->data, 0); |
IPC_SET_ARG1(call->data, UDEBUG_EVENT_SYSCALL); |
IPC_SET_ARG2(call->data, id); |
102,7 → 102,7 |
*/ |
THREAD->debug_stop = true; |
ipc_answer(&TASK->answerbox, THREAD->debug_go_call); |
ipc_answer(&TASK->answerbox, TASK->debug_go_call); |
spinlock_unlock(&TASK->lock); |
interrupts_restore(ipl); |