#ifndef KERNEL_UTIL_TRACING_H #define KERNEL_UTIL_TRACING_H #include #include #define ENABLE_TRACING 0 #define MAX_TRACE_SIZE 1024 * 1024 struct trace_entry { uint16 size; uint16 flags; }; #ifdef __cplusplus #include class TraceEntry : trace_entry { public: TraceEntry(); virtual ~TraceEntry(); virtual void Dump(); size_t Size() const { return size; } uint16 Flags() const { return flags; } void Initialized(); 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 #ifdef __cplusplus extern "C" #endif status_t tracing_init(void); #endif /* KERNEL_UTIL_TRACING_H */