Changes in kernel/generic/src/udebug/udebug.c [0d21b53:9441458] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/udebug/udebug.c
r0d21b53 r9441458 69 69 mutex_initialize(&ut->lock, MUTEX_PASSIVE); 70 70 waitq_initialize(&ut->go_wq); 71 condvar_initialize(&ut->active_cv);72 71 73 72 ut->go_call = NULL; … … 447 446 waitq_wakeup(&t->udebug.go_wq, WAKEUP_FIRST); 448 447 } 449 mutex_unlock(&t->udebug.lock);450 condvar_broadcast(&t->udebug.active_cv);451 } else {452 mutex_unlock(&t->udebug.lock);453 448 } 449 mutex_unlock(&t->udebug.lock); 454 450 } 455 451 … … 460 456 } 461 457 462 /** Wait for debugger to handle a fault in this thread.463 *464 * When a thread faults and someone is subscribed to the FAULT kernel event,465 * this function is called to wait for a debugging session to give userspace466 * a chance to examine the faulting thead/task. When the debugging session467 * is over, this function returns (so that thread/task cleanup can continue).468 */469 void udebug_thread_fault(void)470 {471 udebug_stoppable_begin();472 473 /* Wait until a debugger attends to us. */474 mutex_lock(&THREAD->udebug.lock);475 while (!THREAD->udebug.active)476 condvar_wait(&THREAD->udebug.active_cv, &THREAD->udebug.lock);477 mutex_unlock(&THREAD->udebug.lock);478 479 /* Make sure the debugging session is over before proceeding. */480 mutex_lock(&THREAD->udebug.lock);481 while (THREAD->udebug.active)482 condvar_wait(&THREAD->udebug.active_cv, &THREAD->udebug.lock);483 mutex_unlock(&THREAD->udebug.lock);484 485 udebug_stoppable_end();486 }487 458 488 459 /** @}
Note:
See TracChangeset
for help on using the changeset viewer.