The handling of a full profiling buffer couldn't work for two reasons:

* We can't enable interrupts in an interrupt handler. Instead we use the
  newly introduced callback feature, which notifies the debugger right
  before returning from the interrupt.
* We didn't indicate that the profiling buffer was full and that the
  thread shouldn't be profiled ATM. Therefore it could happen that it
  was profiled while trying to notify the debugger that the profiling
  buffer was full, resulting in a deadlock. Introduce a respective flag
  in the thread debug structure.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27649 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2008-09-20 12:44:41 +00:00
parent 23884ae025
commit 78b13af677
2 changed files with 59 additions and 25 deletions
+2
View File
@@ -86,6 +86,8 @@ struct thread_debug_info {
// number of samples the buffer currently holds
int32 stack_depth;
// number of return addresses to record per timer interval
bool buffer_full;
// indicates that the sample buffer is full
union {
bigtime_t interval_left;
// when unscheduled: the time left of the current sampling