/** * Copyright (C) ARM Limited 2010-2014. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef SESSION_DATA_H #define SESSION_DATA_H #include #include "AnnotateListener.h" #include "Config.h" #include "Counter.h" #include "FtraceDriver.h" #include "KMod.h" #include "MaliVideoDriver.h" #include "PerfDriver.h" #define PROTOCOL_VERSION 20 // Differentiates development versions (timestamp) from release versions #define PROTOCOL_DEV 1000 #define NS_PER_S 1000000000LL #define NS_PER_MS 1000000LL #define NS_PER_US 1000LL struct ImageLinkList { char* path; struct ImageLinkList *next; }; class SessionData { public: static const size_t MAX_STRING_LEN = 80; SessionData(); ~SessionData(); void initialize(); void parseSessionXML(char* xmlString); void readModel(); void readCpuInfo(); PolledDriver *usDrivers[6]; KMod kmod; PerfDriver perf; MaliVideoDriver maliVideo; FtraceDriver ftraceDriver; AnnotateListener annotateListener; char mCoreName[MAX_STRING_LEN]; struct ImageLinkList *mImages; char *mConfigurationXMLPath; char *mSessionXMLPath; char *mEventsXMLPath; char *mTargetPath; char *mAPCDir; char *mCaptureWorkingDir; char *mCaptureCommand; char *mCaptureUser; bool mWaitingOnCommand; bool mSessionIsActive; bool mLocalCapture; // halt processing of the driver data until profiling is complete or the buffer is filled bool mOneShot; bool mIsEBS; bool mSentSummary; bool mAllowCommands; int64_t mMonotonicStarted; int mBacktraceDepth; // number of MB to use for the entire collection buffer int mTotalBufferSize; int mSampleRate; int64_t mLiveRate; int mDuration; int mCores; int mPageSize; int *mCpuIds; int mMaxCpuId; // PMU Counters int mCounterOverflow; Counter mCounters[MAX_PERFORMANCE_COUNTERS]; private: // Intentionally unimplemented SessionData(const SessionData &); SessionData &operator=(const SessionData &); }; extern SessionData* gSessionData; uint64_t getTime(); int getEventKey(); int pipe_cloexec(int pipefd[2]); FILE *fopen_cloexec(const char *path, const char *mode); #endif // SESSION_DATA_H