Extended the profiling API. When using the variable stack trace depth
buffer format, the buffer can now also contain other events than just stack traces. ATM these are only references to the image events (created/deleted). Therefore we no longer have to flush the profiling buffer after such an event, since the debugger can exactly match the samples. Since we couldn't flush when the profiling timer hit while the thread was in the kernel, that wasn't working that well anyway. "profile -f" fails to translate stack trace addresses only very rarely, now. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27775 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -180,6 +180,18 @@ typedef enum {
|
||||
} debug_debugger_message;
|
||||
|
||||
|
||||
// profile events -- when the buffer is in variable stack depth format, a sample
|
||||
// count entry >= B_DEBUG_PROFILE_EVENT_BASE indicates a profile event
|
||||
enum {
|
||||
B_DEBUG_PROFILE_EVENT_BASE = 0x80000000,
|
||||
B_DEBUG_PROFILE_EVENT_PARAMETER_MASK = 0x0000ffff,
|
||||
// & with to get the event's parameter count
|
||||
|
||||
B_DEBUG_PROFILE_IMAGE_EVENT = 0x80010001
|
||||
// single parameter: the respective image event counter
|
||||
};
|
||||
|
||||
|
||||
// #pragma mark -
|
||||
// #pragma mark ----- messages to the debug nub thread -----
|
||||
|
||||
|
||||
@@ -96,6 +96,9 @@ struct thread_debug_info {
|
||||
int32 image_event;
|
||||
// number of the image event when the first sample was written into
|
||||
// the buffer
|
||||
int32 last_image_event;
|
||||
// number of the image event when the last sample was written into
|
||||
// the buffer
|
||||
bool variable_stack_depth;
|
||||
// record a variable number of samples per hit
|
||||
bool buffer_full;
|
||||
|
||||
Reference in New Issue
Block a user