aboutsummaryrefslogtreecommitdiff
path: root/src/profiling/ProfilingUtils.cpp
diff options
context:
space:
mode:
authorFinn Williams <Finn.Williams@arm.com>2019-10-22 10:30:49 +0100
committerDavid Monahan <david.monahan@arm.com>2019-11-07 12:20:47 +0000
commite63a026bd987e78bdaa5b94c3e53201b62011faa (patch)
treecad6e7dcc7107b723ecc92116a96eda80100a99e /src/profiling/ProfilingUtils.cpp
parent362e03214ceceb95ec30d530ff84e8d9efc198d7 (diff)
downloadarmnn-e63a026bd987e78bdaa5b94c3e53201b62011faa.tar.gz
IVGCVSW-3951 Create the timeline decoder
* Added ITimelineDecoder.h C interface * Added an example implementation of ITimelineDecoder.h * Added command handlers for the timeline directory and objects * Added tests for the decoder implementation * Changed ReadSwTraceMessage to take a const unsigned char* so it can be used by the directory command handler * Fixed some bugs in ProfilingUtils.cpp and related tests Change-Id: If06faf1fe0274a8f022f194a6d3527f5ce5374c6 Signed-off-by: Finn Williams <Finn.Williams@arm.com>
Diffstat (limited to 'src/profiling/ProfilingUtils.cpp')
-rw-r--r--src/profiling/ProfilingUtils.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/profiling/ProfilingUtils.cpp b/src/profiling/ProfilingUtils.cpp
index b649747df1..4dde235ecc 100644
--- a/src/profiling/ProfilingUtils.cpp
+++ b/src/profiling/ProfilingUtils.cpp
@@ -347,7 +347,7 @@ uint32_t CalculateSizeOfPaddedSwString(const std::string& str)
}
// Read TimelineMessageDirectoryPacket from given IPacketBuffer and offset
-SwTraceMessage ReadSwTraceMessage(const IPacketBufferPtr& packetBuffer, unsigned int& offset)
+SwTraceMessage ReadSwTraceMessage(const unsigned char* packetBuffer, unsigned int& offset)
{
BOOST_ASSERT(packetBuffer);
@@ -369,7 +369,7 @@ SwTraceMessage ReadSwTraceMessage(const IPacketBufferPtr& packetBuffer, unsigned
offset += uint32_t_size;
std::vector<unsigned char> swTraceStringBuffer(swTraceDeclNameLength - 1);
std::memcpy(swTraceStringBuffer.data(),
- packetBuffer->GetReadableData() + offset, swTraceStringBuffer.size());
+ packetBuffer + offset, swTraceStringBuffer.size());
swTraceMessage.name.assign(swTraceStringBuffer.begin(), swTraceStringBuffer.end()); // name
@@ -380,7 +380,7 @@ SwTraceMessage ReadSwTraceMessage(const IPacketBufferPtr& packetBuffer, unsigned
offset += uint32_t_size;
swTraceStringBuffer.resize(swTraceUINameLength - 1);
std::memcpy(swTraceStringBuffer.data(),
- packetBuffer->GetReadableData() + offset, swTraceStringBuffer.size());
+ packetBuffer + offset, swTraceStringBuffer.size());
swTraceMessage.uiName.assign(swTraceStringBuffer.begin(), swTraceStringBuffer.end()); // ui_name
@@ -391,7 +391,7 @@ SwTraceMessage ReadSwTraceMessage(const IPacketBufferPtr& packetBuffer, unsigned
offset += uint32_t_size;
swTraceStringBuffer.resize(swTraceArgTypesLength - 1);
std::memcpy(swTraceStringBuffer.data(),
- packetBuffer->GetReadableData() + offset, swTraceStringBuffer.size());
+ packetBuffer + offset, swTraceStringBuffer.size());
swTraceMessage.argTypes.assign(swTraceStringBuffer.begin(), swTraceStringBuffer.end()); // arg_types
@@ -404,7 +404,7 @@ SwTraceMessage ReadSwTraceMessage(const IPacketBufferPtr& packetBuffer, unsigned
offset += uint32_t_size;
swTraceStringBuffer.resize(swTraceArgNamesLength - 1);
std::memcpy(swTraceStringBuffer.data(),
- packetBuffer->GetReadableData() + offset, swTraceStringBuffer.size());
+ packetBuffer + offset, swTraceStringBuffer.size());
swTraceString.assign(swTraceStringBuffer.begin(), swTraceStringBuffer.end());
std::stringstream stringStream(swTraceString);
@@ -536,12 +536,11 @@ TimelinePacketStatus WriteTimelineEntityBinaryPacket(uint64_t profilingGuid,
unsigned int uint64_t_size = sizeof(uint64_t);
// Calculate the length of the data (in bytes)
- unsigned int timelineEntityPacketDataLength = uint64_t_size; // Profiling GUID
+ unsigned int timelineEntityPacketDataLength = uint32_t_size + uint64_t_size; // decl_id + Profiling GUID
// Calculate the timeline binary packet size (in bytes)
unsigned int timelineEntityPacketSize = 2 * uint32_t_size + // Header (2 words)
- uint32_t_size + // decl_Id
timelineEntityPacketDataLength; // Profiling GUID
// Check whether the timeline binary packet fits in the given buffer
@@ -744,6 +743,9 @@ TimelinePacketStatus WriteTimelineMessageDirectoryPackage(unsigned char* buffer,
WriteUint32(buffer, offset, packetHeader.second);
offset += uint32_t_size;
+ WriteUint32(buffer, offset, static_cast<uint32_t >(swTraceTimelineDirectoryMessages.size()));
+ offset += uint32_t_size;
+
for (unsigned int i = 0u; i < swTraceTimelineDirectoryMessages.size(); ++i)
{
// Write the timeline binary packet payload to the buffer