62 lines
1.9 KiB
C++
62 lines
1.9 KiB
C++
// Copyright 2006 The Android Open Source Project
|
|
|
|
#ifndef DMTRACE_H
|
|
#define DMTRACE_H
|
|
|
|
#include <vector>
|
|
|
|
class DmTrace {
|
|
public:
|
|
struct Header {
|
|
uint32_t magic;
|
|
uint16_t version;
|
|
uint16_t offset;
|
|
uint64_t date_time;
|
|
};
|
|
|
|
DmTrace();
|
|
~DmTrace();
|
|
|
|
void open(const char *dmtrace_file, uint64_t startTime);
|
|
void close();
|
|
void addFunctionEntry(int methodId, uint32_t cycle, uint32_t pid);
|
|
void addFunctionExit(int methodId, uint32_t cycle, uint32_t pid);
|
|
void addFunction(int functionId, const char *name);
|
|
void addFunction(int functionId, const char *clazz, const char *method,
|
|
const char *sig);
|
|
void parseAndAddFunction(int functionId, const char *name);
|
|
void addThread(int threadId, const char *name);
|
|
void updateName(int threadId, const char *name);
|
|
|
|
private:
|
|
static const Header header;
|
|
|
|
struct ThreadRecord {
|
|
int id;
|
|
const char *name;
|
|
};
|
|
|
|
struct FunctionRecord {
|
|
int id;
|
|
const char *name;
|
|
};
|
|
|
|
void write2LE(FILE* fstream, unsigned short val);
|
|
void write4LE(FILE* fstream, unsigned int val);
|
|
void write8LE(FILE* fstream, unsigned long long val);
|
|
void writeHeader(FILE *fstream, uint64_t startTime);
|
|
void writeDataRecord(FILE *fstream, int threadId,
|
|
unsigned int methodVal,
|
|
unsigned int elapsedTime);
|
|
void writeKeyFile(FILE *fstream);
|
|
void writeThreads(FILE *fstream);
|
|
void writeFunctions(FILE *fstream);
|
|
|
|
FILE *fData;
|
|
FILE *fTrace;
|
|
std::vector<ThreadRecord*> *threads;
|
|
std::vector<FunctionRecord*> *functions;
|
|
};
|
|
|
|
#endif // DMTRACE_H
|