Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2916 → Rev 2917

/branches/tracing/kernel/generic/src/udebug/udebug.c
41,6 → 41,19
#include <errno.h>
#include <arch.h>
 
static void udebug_wait_for_go(waitq_t *wq)
{
int rc;
ipl_t ipl;
 
ipl = waitq_sleep_prepare(wq);
 
wq->missed_wakeups = 0; /* Enforce blocking. */
rc = waitq_sleep_timeout_unsafe(wq, SYNCH_NO_TIMEOUT, SYNCH_FLAGS_NONE);
 
waitq_sleep_finish(wq, rc, ipl);
}
 
void udebug_stoppable_begin(void)
{
int nsc;
158,8 → 171,8
spinlock_unlock(&TASK->lock);
interrupts_restore(ipl);
 
//klog_printf("udebug_stoppable_end: waitq_sleep");
waitq_sleep(&THREAD->go_wq);
udebug_wait_for_go(&THREAD->go_wq);
 
goto restart;
/* must try again - have to lose stoppability atomically */
} else {
222,10 → 235,9
spinlock_lock(&TASK->lock);
ipc_answer(&TASK->answerbox, THREAD->debug_go_call);
spinlock_unlock(&TASK->lock);
 
interrupts_restore(ipl);
 
waitq_sleep(&THREAD->go_wq);
udebug_wait_for_go(&THREAD->go_wq);
}
 
void udebug_thread_b_event(struct thread *t)
272,8 → 284,7
 
interrupts_restore(ipl);
klog_printf("- sleep");
 
waitq_sleep(&THREAD->go_wq);
udebug_wait_for_go(&THREAD->go_wq);
}
 
void udebug_thread_e_event(void)