aboutsummaryrefslogtreecommitdiffstats
path: root/emulator/qtools/gtrace.h
diff options
context:
space:
mode:
Diffstat (limited to 'emulator/qtools/gtrace.h')
-rw-r--r--emulator/qtools/gtrace.h69
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