This change is a merge of the following changes: 1. Remove MultipleSessions (go/wvgerrit/16763) 2. Increase Memory Budget (go/wvgerrit/16764) 3. Fixing Possible Integer Overflow (go/wvgerrit/16765) 4. Creating Call Table (go/wvgerrit/16766) 5. Creating Call History (go/wvgerrit/16767) 6. Connecting Profiled Scope (go/wvgerrit/16768) 7. Adding Call Table Version Number (go/wvgerrit/16780) 8. Add Version Number to Call History (go/wvgerrit/16781) bug: 27157796 Change-Id: Ia3f088a1714f3f5b426fee6141daa4ea8d832cf4
45 lines
904 B
C++
45 lines
904 B
C++
// Copyright 2016 Google Inc. All Rights Reserved
|
|
|
|
#include "profiled_scope.h"
|
|
|
|
#include <sys/time.h>
|
|
|
|
#include "profiler.h"
|
|
|
|
namespace wvcdm {
|
|
namespace oemprofiler {
|
|
|
|
ProfiledScope::ProfiledScope(OEM_FUNCTION fid) :
|
|
meta_data_(),
|
|
fid_(fid),
|
|
start_time_(GetNowUS()) {
|
|
|
|
}
|
|
|
|
ProfiledScope::~ProfiledScope() {
|
|
Submit(GetNowUS());
|
|
}
|
|
|
|
void ProfiledScope::Submit(uint64_t end_time) const {
|
|
Profiler::GetTable().Write(fid_, end_time - start_time_);
|
|
|
|
Profiler::GetHistory().Write(
|
|
fid_,
|
|
start_time_,
|
|
end_time,
|
|
meta_data_.GetData(),
|
|
meta_data_.GetSize());
|
|
}
|
|
|
|
uint64_t ProfiledScope::GetNowUS() const {
|
|
struct timeval tv;
|
|
gettimeofday(&tv, NULL);
|
|
|
|
const uint64_t kSecondsToUSeconds = 1000000;
|
|
return static_cast<uint64_t>(tv.tv_sec) * kSecondsToUSeconds +
|
|
static_cast<uint64_t>(tv.tv_usec);
|
|
}
|
|
|
|
} // namespace oemprofiler
|
|
} // namespace wvcdm
|