Home | History | Annotate | Download | only in qtools
      1 // Copyright 2006 The Android Open Source Project
      2 
      3 #ifndef GTRACE_H
      4 #define GTRACE_H
      5 
      6 class Gtrace {
      7  public:
      8   static const int kGtraceEntriesPerBlock = 1024;
      9   static const uint32_t kMillion = 1000000;
     10   static const uint32_t kTicsPerSecond = 200 * kMillion;
     11   static const int kBaseTic = 0x1000;
     12 
     13   struct trace_entry {
     14     uint32_t	cycle;
     15     uint32_t	event;
     16   };
     17 
     18   struct block_header {
     19     uint32_t	blockno;
     20     uint32_t	entry_width;
     21     uint32_t	block_tic;
     22     uint32_t	block_time;
     23     uint32_t	usec_cpu;
     24     uint32_t	pid;
     25     uint32_t	bug_count;
     26     uint32_t	zero_count;
     27   };
     28 
     29   struct first_header {
     30     block_header	common;
     31     uint32_t		tic;
     32     uint32_t		one;
     33     uint32_t		tics_per_second;
     34     uint32_t		trace_time;
     35     uint32_t		version;
     36     uint32_t		file_proc;
     37     uint32_t		pdate;
     38     uint32_t		ptime;
     39   };
     40 
     41   Gtrace();
     42   ~Gtrace();
     43 
     44   void		Open(const char *gtrace_file, uint32_t pdate, uint32_t ptime);
     45   void		WriteFirstHeader(uint32_t start_sec, uint32_t pid);
     46   void		AddProcedure(int filenum, int procnum, const char *proc_name);
     47   void		AddProcEntry(int filenum, int procnum, uint32_t cycle, uint32_t pid);
     48   void		AddProcExit(int filenum, int procnum, uint32_t cycle, uint32_t pid);
     49 
     50  private:
     51   void		AddGtraceRecord(int filenum, int procnum, uint32_t cycle, uint32_t pid,
     52                                 int is_exit);
     53   void		FillFirstHeader(uint32_t start_sec, uint32_t pid,
     54                                 first_header *fh);
     55   void		WriteBlockHeader(uint32_t cycle, uint32_t pid);
     56 
     57   const char	*gtrace_file_;
     58   char		gname_file_[100];
     59   FILE		*ftrace_;
     60   FILE		*fnames_;
     61   uint32_t	start_sec_;
     62   uint32_t	pdate_;
     63   uint32_t	ptime_;
     64   int		num_entries_;
     65   int		blockno_;
     66   uint32_t	current_pid_;
     67 };
     68 
     69 #endif  // GTRACE_H
     70