* Added nothrow to the new operator because otherwise the C++ compiler
will not accept if the allocator returns NULL and crashes instead (ie. not compiling in tracing would have crashed if some module tried to use it). * Added total entries count to the KDL command output. * Fixed computing the start index of the KDL command. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23460 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include <SupportDefs.h>
|
#include <SupportDefs.h>
|
||||||
|
#include <KernelExport.h>
|
||||||
|
|
||||||
|
|
||||||
#define ENABLE_TRACING 0
|
#define ENABLE_TRACING 0
|
||||||
@@ -29,7 +30,29 @@ class TraceEntry : trace_entry {
|
|||||||
|
|
||||||
void Initialized();
|
void Initialized();
|
||||||
|
|
||||||
void* operator new(size_t size);
|
void* operator new(size_t size, const std::nothrow_t&) throw();
|
||||||
|
};
|
||||||
|
|
||||||
|
class AbstractTraceEntry : public TraceEntry {
|
||||||
|
public:
|
||||||
|
AbstractTraceEntry()
|
||||||
|
:
|
||||||
|
fThread(find_thread(NULL)),
|
||||||
|
fTime(system_time())
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual void Dump()
|
||||||
|
{
|
||||||
|
kprintf("[%6ld] %Ld: ", fThread, fTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
thread_id Thread() const { return fThread; }
|
||||||
|
bigtime_t Time() const { return fTime; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
thread_id fThread;
|
||||||
|
bigtime_t fTime;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // __cplusplus
|
#endif // __cplusplus
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ TraceEntry::Initialized()
|
|||||||
|
|
||||||
|
|
||||||
void*
|
void*
|
||||||
TraceEntry::operator new(size_t size) throw()
|
TraceEntry::operator new(size_t size, const std::nothrow_t&) throw()
|
||||||
{
|
{
|
||||||
#if ENABLE_TRACING
|
#if ENABLE_TRACING
|
||||||
if (sBuffer == NULL)
|
if (sBuffer == NULL)
|
||||||
@@ -143,17 +143,19 @@ int
|
|||||||
dump_tracing(int argc, char** argv)
|
dump_tracing(int argc, char** argv)
|
||||||
{
|
{
|
||||||
int32 count = 30;
|
int32 count = 30;
|
||||||
|
if (argc == 2)
|
||||||
|
count = strtol(argv[1], NULL, 0);
|
||||||
|
|
||||||
int32 start = sEntries - count;
|
int32 start = sEntries - count;
|
||||||
|
|
||||||
if (argc == 2) {
|
if (argc == 3) {
|
||||||
count = strtol(argv[1], NULL, 0);
|
|
||||||
} else if (argc == 3) {
|
|
||||||
start = strtol(argv[1], NULL, 0);
|
start = strtol(argv[1], NULL, 0);
|
||||||
count = strtol(argv[2], NULL, 0);
|
count = strtol(argv[2], NULL, 0);
|
||||||
} else if (argc > 3) {
|
} else if (argc > 3) {
|
||||||
kprintf("usage: %s [start] [count]\n", argv[0]);
|
kprintf("usage: %s [start] [count]\n", argv[0]);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
// TODO: add pattern matching mechanism for the class name
|
||||||
|
|
||||||
if (start < 0)
|
if (start < 0)
|
||||||
start = 0;
|
start = 0;
|
||||||
@@ -173,6 +175,7 @@ dump_tracing(int argc, char** argv)
|
|||||||
kprintf("** uninitialized entry **\n");
|
kprintf("** uninitialized entry **\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
kprintf("%ld of %ld entries.\n", count, sEntries);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user