Home | History | Annotate | Download | only in qtools
      1 // Copyright 2006 The Android Open Source Project
      2 
      3 #ifndef DMTRACE_H
      4 #define DMTRACE_H
      5 
      6 #include <vector>
      7 
      8 class DmTrace {
      9   public:
     10     struct Header {
     11         uint32_t        magic;
     12         uint16_t        version;
     13         uint16_t        offset;
     14         uint64_t        date_time;
     15     };
     16 
     17     DmTrace();
     18     ~DmTrace();
     19 
     20     void        open(const char *dmtrace_file, uint64_t startTime);
     21     void        close();
     22     void        addFunctionEntry(int methodId, uint32_t cycle, uint32_t pid);
     23     void        addFunctionExit(int methodId, uint32_t cycle, uint32_t pid);
     24     void        addFunction(int functionId, const char *name);
     25     void        addFunction(int functionId, const char *clazz, const char *method,
     26                             const char *sig);
     27     void        parseAndAddFunction(int functionId, const char *name);
     28     void        addThread(int threadId, const char *name);
     29     void        updateName(int threadId, const char *name);
     30 
     31   private:
     32     static const Header header;
     33 
     34     struct ThreadRecord {
     35         int             id;
     36         const char      *name;
     37     };
     38 
     39     struct FunctionRecord {
     40         int             id;
     41         const char      *name;
     42     };
     43 
     44     void        write2LE(FILE* fstream, unsigned short val);
     45     void        write4LE(FILE* fstream, unsigned int val);
     46     void        write8LE(FILE* fstream, unsigned long long val);
     47     void        writeHeader(FILE *fstream, uint64_t startTime);
     48     void        writeDataRecord(FILE *fstream, int threadId,
     49                                 unsigned int methodVal,
     50                                 unsigned int elapsedTime);
     51     void        writeKeyFile(FILE *fstream);
     52     void        writeThreads(FILE *fstream);
     53     void        writeFunctions(FILE *fstream);
     54 
     55     FILE        *fData;
     56     FILE        *fTrace;
     57     std::vector<ThreadRecord*> *threads;
     58     std::vector<FunctionRecord*> *functions;
     59 };
     60 
     61 #endif  // DMTRACE_H
     62