diff options
Diffstat (limited to 'tools/gator/daemon/UserSpaceSource.cpp')
-rw-r--r-- | tools/gator/daemon/UserSpaceSource.cpp | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/tools/gator/daemon/UserSpaceSource.cpp b/tools/gator/daemon/UserSpaceSource.cpp index 8c328e0e0fb5..4a9b22f4b555 100644 --- a/tools/gator/daemon/UserSpaceSource.cpp +++ b/tools/gator/daemon/UserSpaceSource.cpp @@ -16,8 +16,6 @@ #include "Logging.h" #include "SessionData.h" -#define NS_PER_US 1000 - extern Child *child; UserSpaceSource::UserSpaceSource(sem_t *senderSem) : mBuffer(0, FRAME_BLOCK_COUNTER, gSessionData->mTotalBufferSize*1024*1024, senderSem) { @@ -33,16 +31,22 @@ bool UserSpaceSource::prepare() { void UserSpaceSource::run() { prctl(PR_SET_NAME, (unsigned long)&"gatord-counters", 0, 0, 0); - gSessionData->hwmon.start(); - gSessionData->fsDriver.start(); + for (int i = 0; i < ARRAY_LENGTH(gSessionData->usDrivers); ++i) { + gSessionData->usDrivers[i]->start(); + } int64_t monotonic_started = 0; while (monotonic_started <= 0) { usleep(10); - if (DriverSource::readInt64Driver("/dev/gator/started", &monotonic_started) == -1) { - logg->logError(__FILE__, __LINE__, "Error reading gator driver start time"); - handleException(); + if (gSessionData->perf.isSetup()) { + monotonic_started = gSessionData->mMonotonicStarted; + } else { + if (DriverSource::readInt64Driver("/dev/gator/started", &monotonic_started) == -1) { + logg->logError(__FILE__, __LINE__, "Error reading gator driver start time"); + handleException(); + } + gSessionData->mMonotonicStarted = monotonic_started; } } @@ -57,8 +61,9 @@ void UserSpaceSource::run() { } if (mBuffer.eventHeader(curr_time)) { - gSessionData->hwmon.read(&mBuffer); - gSessionData->fsDriver.read(&mBuffer); + for (int i = 0; i < ARRAY_LENGTH(gSessionData->usDrivers); ++i) { + gSessionData->usDrivers[i]->read(&mBuffer); + } // Only check after writing all counters so that time and corresponding counters appear in the same frame mBuffer.check(curr_time); } |