aboutsummaryrefslogtreecommitdiff
path: root/src/profiling/ProfilingGuidGenerator.hpp
diff options
context:
space:
mode:
authorNarumol Prangnawarat <narumol.prangnawarat@arm.com>2019-11-15 17:38:44 +0000
committerNarumol Prangnawarat <narumol.prangnawarat@arm.com>2019-11-18 11:23:09 +0000
commitdbdd1b438815606bd423cbcfb95d51a3dd206683 (patch)
treef9a268f503b1f33a5e7e150e1ae041532bd8b94f /src/profiling/ProfilingGuidGenerator.hpp
parentaad2fe41ad5111ad4cde6dc91a794f5f8f8b16f9 (diff)
downloadarmnn-dbdd1b438815606bd423cbcfb95d51a3dd206683.tar.gz
IVGCVSW-3980 Implementation of Guid generator
* Improve implementation of Guid Generator to separate the range of Static Guid and Dynamic Guid * Unit tests to ensure non-collision Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com> Change-Id: I4ad1a75ea0b1f37155da0decafb51fc5a61e4187
Diffstat (limited to 'src/profiling/ProfilingGuidGenerator.hpp')
-rw-r--r--src/profiling/ProfilingGuidGenerator.hpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/profiling/ProfilingGuidGenerator.hpp b/src/profiling/ProfilingGuidGenerator.hpp
index ad3159f201..97de4a88e5 100644
--- a/src/profiling/ProfilingGuidGenerator.hpp
+++ b/src/profiling/ProfilingGuidGenerator.hpp
@@ -22,25 +22,28 @@ public:
ProfilingGuidGenerator() : m_Sequence(0) {}
/// Return the next random Guid in the sequence
- // NOTE: dummy implementation for the moment
inline ProfilingDynamicGuid NextGuid() override
{
- // NOTE: skipping the zero for testing purposes
- ProfilingDynamicGuid guid(++m_Sequence);
+ ProfilingDynamicGuid guid(m_Sequence);
+ m_Sequence++;
+ if (m_Sequence >= MIN_STATIC_GUID)
+ {
+ // Reset the sequence to 0 when it reaches the upper bound of dynamic guid
+ m_Sequence = 0;
+ }
return guid;
}
/// Create a ProfilingStaticGuid based on a hash of the string
- // NOTE: dummy implementation for the moment
inline ProfilingStaticGuid GenerateStaticId(const std::string& str) override
{
- uint64_t guid = static_cast<uint64_t>(m_StringHasher(str));
- return guid;
+ uint64_t staticHash = m_Hash(str) | MIN_STATIC_GUID;
+ return ProfilingStaticGuid(staticHash);
}
private:
- std::hash<std::string> m_StringHasher;
uint64_t m_Sequence;
+ std::hash<std::string> m_Hash;
};
} // namespace profiling