diff options
Diffstat (limited to 'emulator/qtools/gtrace.h')
-rw-r--r-- | emulator/qtools/gtrace.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/emulator/qtools/gtrace.h b/emulator/qtools/gtrace.h new file mode 100644 index 0000000..542adc2 --- /dev/null +++ b/emulator/qtools/gtrace.h @@ -0,0 +1,69 @@ +// Copyright 2006 The Android Open Source Project + +#ifndef GTRACE_H +#define GTRACE_H + +class Gtrace { + public: + static const int kGtraceEntriesPerBlock = 1024; + static const uint32_t kMillion = 1000000; + static const uint32_t kTicsPerSecond = 200 * kMillion; + static const int kBaseTic = 0x1000; + + struct trace_entry { + uint32_t cycle; + uint32_t event; + }; + + struct block_header { + uint32_t blockno; + uint32_t entry_width; + uint32_t block_tic; + uint32_t block_time; + uint32_t usec_cpu; + uint32_t pid; + uint32_t bug_count; + uint32_t zero_count; + }; + + struct first_header { + block_header common; + uint32_t tic; + uint32_t one; + uint32_t tics_per_second; + uint32_t trace_time; + uint32_t version; + uint32_t file_proc; + uint32_t pdate; + uint32_t ptime; + }; + + Gtrace(); + ~Gtrace(); + + void Open(const char *gtrace_file, uint32_t pdate, uint32_t ptime); + void WriteFirstHeader(uint32_t start_sec, uint32_t pid); + void AddProcedure(int filenum, int procnum, const char *proc_name); + void AddProcEntry(int filenum, int procnum, uint32_t cycle, uint32_t pid); + void AddProcExit(int filenum, int procnum, uint32_t cycle, uint32_t pid); + + private: + void AddGtraceRecord(int filenum, int procnum, uint32_t cycle, uint32_t pid, + int is_exit); + void FillFirstHeader(uint32_t start_sec, uint32_t pid, + first_header *fh); + void WriteBlockHeader(uint32_t cycle, uint32_t pid); + + const char *gtrace_file_; + char gname_file_[100]; + FILE *ftrace_; + FILE *fnames_; + uint32_t start_sec_; + uint32_t pdate_; + uint32_t ptime_; + int num_entries_; + int blockno_; + uint32_t current_pid_; +}; + +#endif // GTRACE_H |