Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2825 → Rev 2826

/branches/tracing/kernel/generic/include/proc/task.h
98,7 → 98,6
/** Debugging stuff */
udebug_task_state_t dt_state;
call_t *debug_begin_call;
call_t *debug_go_call;
int not_stoppable_count;
 
answerbox_t kernel_box;
/branches/tracing/kernel/generic/include/proc/thread.h
206,6 → 206,7
 
/** Debugging stuff */
waitq_t go_wq;
call_t *debug_go_call;
unative_t syscall_args[6];
istate_t *uspace_state;
bool debug_stop;
/branches/tracing/kernel/generic/src/proc/task.c
174,7 → 174,6
/* Init debugging stuff */
ta->dt_state = UDEBUG_TS_INACTIVE;
ta->debug_begin_call = NULL;
ta->debug_go_call = NULL;
ta->not_stoppable_count = 0;
 
ipc_answerbox_init(&ta->kernel_box, ta);
/branches/tracing/kernel/generic/src/proc/thread.c
344,6 → 344,7
/* Init debugging stuff */
waitq_initialize(&t->go_wq);
t->debug_go_call = NULL;
t->uspace_state = NULL;
t->debug_stop = true;
 
/branches/tracing/kernel/generic/src/udebug/udebug_ipc.c
110,10 → 110,8
 
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);
 
120,12 → 118,14
ipl = interrupts_disable();
spinlock_lock(&threads_lock);
 
if (!thread_exists(t)) {
/* Verify that 't' exists and belongs to task 'ta' */
if (!thread_exists(t) || (t->task != ta)) {
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 = TASK->debug_go_call;
call = THREAD->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, TASK->debug_go_call);
ipc_answer(&TASK->answerbox, THREAD->debug_go_call);
spinlock_unlock(&TASK->lock);
interrupts_restore(ipl);