Move AllocationTrackingInfo into a header. This way it can be re-used outside
of the slab code. It is generic as it only contains the link to a tracing entry and not any application specific info. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43188 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2011, Michael Lotz <[email protected]>.
|
||||||
|
* Copyright 2011, Ingo Weinhold <[email protected]>.
|
||||||
|
*
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
#ifndef ALLOCATION_TRACKING_H
|
||||||
|
#define ALLOCATION_TRACKING_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <debug.h>
|
||||||
|
#include <tracing.h>
|
||||||
|
|
||||||
|
|
||||||
|
namespace BKernel {
|
||||||
|
|
||||||
|
class AllocationTrackingInfo {
|
||||||
|
public:
|
||||||
|
AbstractTraceEntryWithStackTrace* traceEntry;
|
||||||
|
bigtime_t traceEntryTimestamp;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void Init(AbstractTraceEntryWithStackTrace* entry)
|
||||||
|
{
|
||||||
|
traceEntry = entry;
|
||||||
|
traceEntryTimestamp = entry != NULL ? entry->Time() : -1;
|
||||||
|
// Note: this is a race condition, if the tracing buffer wrapped and
|
||||||
|
// got overwritten once, we would access an invalid trace entry
|
||||||
|
// here. Obviously this is rather unlikely.
|
||||||
|
}
|
||||||
|
|
||||||
|
void Clear()
|
||||||
|
{
|
||||||
|
traceEntry = NULL;
|
||||||
|
traceEntryTimestamp = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsInitialized() const
|
||||||
|
{
|
||||||
|
return traceEntryTimestamp != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
AbstractTraceEntryWithStackTrace* TraceEntry() const
|
||||||
|
{
|
||||||
|
return traceEntry;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IsTraceEntryValid() const
|
||||||
|
{
|
||||||
|
return tracing_is_entry_valid(traceEntry, traceEntryTimestamp);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace BKernel
|
||||||
|
|
||||||
|
|
||||||
|
using BKernel::AllocationTrackingInfo;
|
||||||
|
|
||||||
|
|
||||||
|
#endif // ALLOCATION_TRACKING_H
|
||||||
@@ -8,6 +8,7 @@
|
|||||||
#define SLAB_DEBUG_H
|
#define SLAB_DEBUG_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <AllocationTracking.h>
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
#include <slab/Slab.h>
|
#include <slab/Slab.h>
|
||||||
#include <tracing.h>
|
#include <tracing.h>
|
||||||
@@ -49,44 +50,6 @@ struct object_depot;
|
|||||||
|
|
||||||
#if SLAB_ALLOCATION_TRACKING_AVAILABLE
|
#if SLAB_ALLOCATION_TRACKING_AVAILABLE
|
||||||
|
|
||||||
class AllocationTrackingInfo {
|
|
||||||
public:
|
|
||||||
AbstractTraceEntryWithStackTrace* traceEntry;
|
|
||||||
bigtime_t traceEntryTimestamp;
|
|
||||||
|
|
||||||
public:
|
|
||||||
void Init(AbstractTraceEntryWithStackTrace* entry)
|
|
||||||
{
|
|
||||||
traceEntry = entry;
|
|
||||||
traceEntryTimestamp = entry != NULL ? entry->Time() : -1;
|
|
||||||
// Note: this is a race condition, if the tracing buffer wrapped and
|
|
||||||
// got overwritten once, we would access an invalid trace entry
|
|
||||||
// here. Obviously this is rather unlikely.
|
|
||||||
}
|
|
||||||
|
|
||||||
void Clear()
|
|
||||||
{
|
|
||||||
traceEntry = NULL;
|
|
||||||
traceEntryTimestamp = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool IsInitialized() const
|
|
||||||
{
|
|
||||||
return traceEntryTimestamp != 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
AbstractTraceEntryWithStackTrace* TraceEntry() const
|
|
||||||
{
|
|
||||||
return traceEntry;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool IsTraceEntryValid() const
|
|
||||||
{
|
|
||||||
return tracing_is_entry_valid(traceEntry, traceEntryTimestamp);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
namespace BKernel {
|
namespace BKernel {
|
||||||
|
|
||||||
class AllocationTrackingCallback {
|
class AllocationTrackingCallback {
|
||||||
|
|||||||
Reference in New Issue
Block a user