aboutsummaryrefslogtreecommitdiff
path: root/Documentation/_profiling_utils_8hpp_source.xhtml
blob: a7ed28ca99b201c3abef4cc53b00ed83451cc15d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
<!-- Copyright (c) 2020 ARM Limited. -->
<!--                                 -->
<!-- SPDX-License-Identifier: MIT    -->
<!--                                 -->
<!-- HTML header for doxygen 1.8.13-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="robots" content="NOINDEX, NOFOLLOW" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>ArmNN: src/profiling/ProfilingUtils.hpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script><script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <img alt="ArmNN" src="Arm_NN_horizontal_blue.png" style="max-width: 10rem; margin-top: .5rem; margin-left 10px"/>
  <td style="padding-left: 0.5em;">
   <div id="projectname">
   &#160;<span id="projectnumber">20.02</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('_profiling_utils_8hpp_source.xhtml','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">ProfilingUtils.hpp</div>  </div>
</div><!--header-->
<div class="contents">
<a href="_profiling_utils_8hpp.xhtml">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment">// Copyright © 2017 Arm Ltd. All rights reserved.</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment">// SPDX-License-Identifier: MIT</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;</div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;</div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_exceptions_8hpp.xhtml">armnn/Exceptions.hpp</a>&gt;</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="_i_send_timeline_packet_8hpp.xhtml">armnn/profiling/ISendTimelinePacket.hpp</a>&gt;</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;</div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_i_counter_directory_8hpp.xhtml">ICounterDirectory.hpp</a>&quot;</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="_i_packet_buffer_8hpp.xhtml">IPacketBuffer.hpp</a>&quot;</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;</div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="preprocessor">#include &lt;boost/numeric/conversion/cast.hpp&gt;</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="preprocessor">#include &lt;algorithm&gt;</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="preprocessor">#include &lt;cstring&gt;</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#include &lt;string&gt;</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;thread&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &lt;vector&gt;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacearmnn.xhtml">armnn</a></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;{</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="keyword">namespace </span>profiling</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;{</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"><a class="line" href="structarmnn_1_1profiling_1_1_sw_trace_header.xhtml">   29</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structarmnn_1_1profiling_1_1_sw_trace_header.xhtml">SwTraceHeader</a></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;{</div><div class="line"><a name="l00031"></a><span class="lineno"><a class="line" href="structarmnn_1_1profiling_1_1_sw_trace_header.xhtml#a6ef10239265753556b4de3e19f523d75">   31</a></span>&#160;    uint8_t <a class="code" href="structarmnn_1_1profiling_1_1_sw_trace_header.xhtml#a6ef10239265753556b4de3e19f523d75">m_StreamVersion</a>;</div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="structarmnn_1_1profiling_1_1_sw_trace_header.xhtml#a52613b35e04d689d4656d739e2330df4">   32</a></span>&#160;    uint8_t <a class="code" href="structarmnn_1_1profiling_1_1_sw_trace_header.xhtml#a52613b35e04d689d4656d739e2330df4">m_PointerBytes</a>;</div><div class="line"><a name="l00033"></a><span class="lineno"><a class="line" href="structarmnn_1_1profiling_1_1_sw_trace_header.xhtml#adb7ab6ce7d5eaabe644dfc7423019dc6">   33</a></span>&#160;    uint8_t <a class="code" href="structarmnn_1_1profiling_1_1_sw_trace_header.xhtml#adb7ab6ce7d5eaabe644dfc7423019dc6">m_ThreadIdBytes</a>;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;};</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="structarmnn_1_1profiling_1_1_sw_trace_message.xhtml">   36</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structarmnn_1_1profiling_1_1_sw_trace_message.xhtml">SwTraceMessage</a></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;{</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="structarmnn_1_1profiling_1_1_sw_trace_message.xhtml#a06ba83abe49bb158c4e07578223ac084">   38</a></span>&#160;    uint32_t <a class="code" href="structarmnn_1_1profiling_1_1_sw_trace_message.xhtml#a06ba83abe49bb158c4e07578223ac084">m_Id</a>;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="structarmnn_1_1profiling_1_1_sw_trace_message.xhtml#ab13844df5477a9ab8f13069e3d8abad6">   39</a></span>&#160;    std::string <a class="code" href="structarmnn_1_1profiling_1_1_sw_trace_message.xhtml#ab13844df5477a9ab8f13069e3d8abad6">m_Name</a>;</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="structarmnn_1_1profiling_1_1_sw_trace_message.xhtml#a76824b89f32ec62fa7c74e40bd529502">   40</a></span>&#160;    std::string <a class="code" href="structarmnn_1_1profiling_1_1_sw_trace_message.xhtml#a76824b89f32ec62fa7c74e40bd529502">m_UiName</a>;</div><div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="structarmnn_1_1profiling_1_1_sw_trace_message.xhtml#a9c94f2a097b07a882c1b7fdedaaac846">   41</a></span>&#160;    std::vector&lt;char&gt; <a class="code" href="structarmnn_1_1profiling_1_1_sw_trace_message.xhtml#a9c94f2a097b07a882c1b7fdedaaac846">m_ArgTypes</a>;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="structarmnn_1_1profiling_1_1_sw_trace_message.xhtml#ab3327c5b4232f372888d41886fafb366">   42</a></span>&#160;    std::vector&lt;std::string&gt; <a class="code" href="structarmnn_1_1profiling_1_1_sw_trace_message.xhtml#ab3327c5b4232f372888d41886fafb366">m_ArgNames</a>;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;};</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="structarmnn_1_1profiling_1_1_sw_trace_char_policy.xhtml">   45</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structarmnn_1_1profiling_1_1_sw_trace_char_policy.xhtml">SwTraceCharPolicy</a></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;{</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="structarmnn_1_1profiling_1_1_sw_trace_char_policy.xhtml#ae40d551572e9ad2f848954e9e78220b6">   47</a></span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="structarmnn_1_1profiling_1_1_sw_trace_char_policy.xhtml#ae40d551572e9ad2f848954e9e78220b6">IsValidChar</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c)</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;    {</div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;        <span class="comment">// Check that the given character has ASCII 7-bit encoding</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        <span class="keywordflow">return</span> c &lt; 128;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;    }</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;};</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="structarmnn_1_1profiling_1_1_sw_trace_name_char_policy.xhtml">   54</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structarmnn_1_1profiling_1_1_sw_trace_name_char_policy.xhtml">SwTraceNameCharPolicy</a></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;{</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="structarmnn_1_1profiling_1_1_sw_trace_name_char_policy.xhtml#ae40d551572e9ad2f848954e9e78220b6">   56</a></span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="structarmnn_1_1profiling_1_1_sw_trace_name_char_policy.xhtml#ae40d551572e9ad2f848954e9e78220b6">IsValidChar</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c)</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;    {</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;        <span class="comment">// Check that the given character has ASCII 7-bit encoding, alpha-numeric and underscore only</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;        <span class="keywordflow">return</span> c &lt; 128 &amp;&amp; (std::isalnum(c) || c == <span class="charliteral">&#39;_&#39;</span>);</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;    }</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;};</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="structarmnn_1_1profiling_1_1_sw_trace_type_char_policy.xhtml">   63</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structarmnn_1_1profiling_1_1_sw_trace_type_char_policy.xhtml">SwTraceTypeCharPolicy</a></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;{</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="structarmnn_1_1profiling_1_1_sw_trace_type_char_policy.xhtml#ae40d551572e9ad2f848954e9e78220b6">   65</a></span>&#160;    <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="structarmnn_1_1profiling_1_1_sw_trace_type_char_policy.xhtml#ae40d551572e9ad2f848954e9e78220b6">IsValidChar</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c)</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;    {</div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;        <span class="comment">// Check that the given character is among the allowed ones</span></div><div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;        <span class="keywordflow">switch</span> (c)</div><div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;        {</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;        <span class="keywordflow">case</span> <span class="charliteral">&#39;@&#39;</span>:</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;        <span class="keywordflow">case</span> <span class="charliteral">&#39;t&#39;</span>:</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;        <span class="keywordflow">case</span> <span class="charliteral">&#39;i&#39;</span>:</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;        <span class="keywordflow">case</span> <span class="charliteral">&#39;I&#39;</span>:</div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;        <span class="keywordflow">case</span> <span class="charliteral">&#39;l&#39;</span>:</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;        <span class="keywordflow">case</span> <span class="charliteral">&#39;L&#39;</span>:</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;        <span class="keywordflow">case</span> <span class="charliteral">&#39;F&#39;</span>:</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;        <span class="keywordflow">case</span> <span class="charliteral">&#39;p&#39;</span>:</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        <span class="keywordflow">case</span> <span class="charliteral">&#39;s&#39;</span>:</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// Valid char</span></div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;        <span class="keywordflow">default</span>:</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;            <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Invalid char</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;        }</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;    }</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;};</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SwTracePolicy&gt;</div><div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="namespacearmnn_1_1profiling.xhtml#a88c92fd3fdbf9deb6f1606eb14818ea9">   87</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a88c92fd3fdbf9deb6f1606eb14818ea9">IsValidSwTraceString</a>(<span class="keyword">const</span> std::string&amp; s)</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;{</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <span class="comment">// Check that all the characters in the given string conform to the given policy</span></div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;    <span class="keywordflow">return</span> std::all_of(s.begin(), s.end(), [](<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> c) { <span class="keywordflow">return</span> SwTracePolicy::IsValidChar(c); });</div><div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;}</div><div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;</div><div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SwTracePolicy&gt;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="namespacearmnn_1_1profiling.xhtml#a5e25734c0aca661f0fe02479743719a1">   94</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a5e25734c0aca661f0fe02479743719a1">StringToSwTraceString</a>(<span class="keyword">const</span> std::string&amp; s, std::vector&lt;uint32_t&gt;&amp; outputBuffer)</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;{</div><div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;    <span class="comment">// Converts the given string to an SWTrace &quot;string&quot; (i.e. a string of &quot;chars&quot;), and writes it into</span></div><div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;    <span class="comment">// the given buffer including the null-terminator. It also pads it to the next uint32_t if necessary</span></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;    <span class="comment">// Clear the output buffer</span></div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    outputBuffer.clear();</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;    <span class="comment">// Check that the given string is a valid SWTrace &quot;string&quot; (i.e. a string of &quot;chars&quot;)</span></div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="keywordflow">if</span> (!IsValidSwTraceString&lt;SwTracePolicy&gt;(s))</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;    {</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;    }</div><div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;    <span class="comment">// Prepare the output buffer</span></div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;    <span class="keywordtype">size_t</span> s_size        = s.size() + 1;    <span class="comment">// The size of the string (in chars) plus the null-terminator</span></div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#aabcf5c25522e8a0542c95174056cfcac">uint32_t_size</a> = <span class="keyword">sizeof</span>(uint32_t);</div><div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;    <span class="comment">// Output buffer size = StringLength (32 bit) + amount of complete 32bit words that fit into the string</span></div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;    <span class="comment">//                      + an additional 32bit word if there are remaining chars to complete the string</span></div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;    <span class="comment">//                      (The rest of the 32bit word is then filled with the NULL terminator)</span></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;    <span class="keywordtype">size_t</span> outBufferSize = 1 + (s_size / <a class="code" href="namespacearmnn_1_1profiling.xhtml#aabcf5c25522e8a0542c95174056cfcac">uint32_t_size</a>) + (s_size % uint32_t_size != 0 ? 1 : 0);</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;    outputBuffer.resize(outBufferSize, <span class="charliteral">&#39;\0&#39;</span>);</div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;    <span class="comment">// Write the SWTrace string to the output buffer</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;    outputBuffer[0] = <a class="code" href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">boost::numeric_cast</a>&lt;uint32_t&gt;(s_size);</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;    std::memcpy(outputBuffer.data() + 1, s.data(), s_size);</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;</div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;}</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="keyword">template</span> &lt;<span class="keyword">typename</span> SwTracePolicy,</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;          <span class="keyword">typename</span> SwTraceBuffer = std::vector&lt;uint32_t&gt;&gt;</div><div class="line"><a name="l00126"></a><span class="lineno"><a class="line" href="namespacearmnn_1_1profiling.xhtml#a8c4f707828a9d965b59f4ec3414cb490">  126</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a8c4f707828a9d965b59f4ec3414cb490">ConvertDirectoryComponent</a>(<span class="keyword">const</span> std::string&amp; directoryComponent, SwTraceBuffer&amp; swTraceBuffer)</div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;{</div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;    <span class="comment">// Convert the directory component using the given policy</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    SwTraceBuffer tempSwTraceBuffer;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;    <span class="keywordtype">bool</span> result = StringToSwTraceString&lt;SwTracePolicy&gt;(directoryComponent, tempSwTraceBuffer);</div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;    <span class="keywordflow">if</span> (!result)</div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;    {</div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;        <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;    }</div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;</div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;    swTraceBuffer.insert(swTraceBuffer.end(), tempSwTraceBuffer.begin(), tempSwTraceBuffer.end());</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;}</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;uint16_t <a class="code" href="namespacearmnn_1_1profiling.xhtml#a982b094fe2faa67a3560cdaf3901d0f8">GetNextUid</a>(<span class="keywordtype">bool</span> peekOnly = <span class="keyword">false</span>);</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;std::vector&lt;uint16_t&gt; <a class="code" href="namespacearmnn_1_1profiling.xhtml#a6605c82bc625fbd40f24d35edee15fe3">GetNextCounterUids</a>(uint16_t firstUid, uint16_t cores);</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#af0cddaa4e116d294dacaaced90ca341c">WriteBytes</a>(<span class="keyword">const</span> <a class="code" href="classarmnn_1_1profiling_1_1_i_packet_buffer.xhtml">IPacketBuffer</a>&amp; packetBuffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset, <span class="keyword">const</span> <span class="keywordtype">void</span>* value, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> valueSize);</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;uint32_t <a class="code" href="namespacearmnn_1_1profiling.xhtml#a750935094e7dc62a6ce69be8688ee9fc">ConstructHeader</a>(uint32_t packetFamily, uint32_t packetId);</div><div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;</div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;uint32_t <a class="code" href="namespacearmnn_1_1profiling.xhtml#a750935094e7dc62a6ce69be8688ee9fc">ConstructHeader</a>(uint32_t packetFamily, uint32_t packetClass, uint32_t packetType);</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a79be042e55fdf16ca562f14cd15d9aa6">WriteUint64</a>(<span class="keyword">const</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a14328d977cec3abadcfd5935f04f3409">IPacketBufferPtr</a>&amp; packetBuffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset, uint64_t value);</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a3e638748a39d46e2943dfcef94dcb828">WriteUint32</a>(<span class="keyword">const</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a14328d977cec3abadcfd5935f04f3409">IPacketBufferPtr</a>&amp; packetBuffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset, uint32_t value);</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#ae5ace88c65e65ab7cf5572613601a60d">WriteUint16</a>(<span class="keyword">const</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a14328d977cec3abadcfd5935f04f3409">IPacketBufferPtr</a>&amp; packetBuffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset, uint16_t value);</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#af63b6e5ffc769286c32d55a090b1602a">WriteUint8</a>(<span class="keyword">const</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a14328d977cec3abadcfd5935f04f3409">IPacketBufferPtr</a>&amp; packetBuffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset, uint8_t value);</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#af0cddaa4e116d294dacaaced90ca341c">WriteBytes</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset, <span class="keyword">const</span> <span class="keywordtype">void</span>* value, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> valueSize);</div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;</div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a79be042e55fdf16ca562f14cd15d9aa6">WriteUint64</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset, uint64_t value);</div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a3e638748a39d46e2943dfcef94dcb828">WriteUint32</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset, uint32_t value);</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#ae5ace88c65e65ab7cf5572613601a60d">WriteUint16</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset, uint16_t value);</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#af63b6e5ffc769286c32d55a090b1602a">WriteUint8</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset, uint8_t value);</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a097646e1b460c992b553061a3436fb47">ReadBytes</a>(<span class="keyword">const</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a14328d977cec3abadcfd5935f04f3409">IPacketBufferPtr</a>&amp; packetBuffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> valueSize, uint8_t outValue[]);</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;uint64_t <a class="code" href="namespacearmnn_1_1profiling.xhtml#aa4de2b511faa41accc2c35cadf051124">ReadUint64</a>(<span class="keyword">const</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a14328d977cec3abadcfd5935f04f3409">IPacketBufferPtr</a>&amp; packetBuffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset);</div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;</div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;uint32_t <a class="code" href="namespacearmnn_1_1profiling.xhtml#ad56f4c3ea5e88279bb6ef1f31d9dc6df">ReadUint32</a>(<span class="keyword">const</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a14328d977cec3abadcfd5935f04f3409">IPacketBufferPtr</a>&amp; packetBuffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset);</div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;uint16_t <a class="code" href="namespacearmnn_1_1profiling.xhtml#a0ffb94cb0085a54a92f1c4eeaa6cf772">ReadUint16</a>(<span class="keyword">const</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a14328d977cec3abadcfd5935f04f3409">IPacketBufferPtr</a>&amp; packetBuffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset);</div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;</div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;uint8_t <a class="code" href="namespacearmnn_1_1profiling.xhtml#a74b483b652cc32f03151b10a1366d607">ReadUint8</a>(<span class="keyword">const</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a14328d977cec3abadcfd5935f04f3409">IPacketBufferPtr</a>&amp; packetBuffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset);</div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a097646e1b460c992b553061a3436fb47">ReadBytes</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> valueSize, uint8_t outValue[]);</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;uint64_t <a class="code" href="namespacearmnn_1_1profiling.xhtml#aa4de2b511faa41accc2c35cadf051124">ReadUint64</a>(<span class="keywordtype">unsigned</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset);</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;</div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;uint32_t <a class="code" href="namespacearmnn_1_1profiling.xhtml#ad56f4c3ea5e88279bb6ef1f31d9dc6df">ReadUint32</a>(<span class="keywordtype">unsigned</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset);</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;</div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;uint16_t <a class="code" href="namespacearmnn_1_1profiling.xhtml#a0ffb94cb0085a54a92f1c4eeaa6cf772">ReadUint16</a>(<span class="keywordtype">unsigned</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset);</div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;</div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;uint8_t <a class="code" href="namespacearmnn_1_1profiling.xhtml#a74b483b652cc32f03151b10a1366d607">ReadUint8</a>(<span class="keywordtype">unsigned</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> offset);</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;std::pair&lt;uint32_t, uint32_t&gt; <a class="code" href="namespacearmnn_1_1profiling.xhtml#aca8b4bad45009e1d42dc8de69a0b7e2c">CreateTimelinePacketHeader</a>(uint32_t packetFamily,</div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;                                                         uint32_t packetClass,</div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;                                                         uint32_t packetType,</div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;                                                         uint32_t streamId,</div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;                                                         uint32_t sequenceNumbered,</div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;                                                         uint32_t dataLength);</div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;</div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;std::string <a class="code" href="namespacearmnn_1_1profiling.xhtml#af38e9c5d82c9317255665a6315842166">GetSoftwareInfo</a>();</div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;std::string <a class="code" href="namespacearmnn_1_1profiling.xhtml#a1a90cae723e311b3b71272a7f5ecccbb">GetSoftwareVersion</a>();</div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;</div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;std::string <a class="code" href="namespacearmnn_1_1profiling.xhtml#a66ccd202fa7bf1e52476e61d49a45ee6">GetHardwareVersion</a>();</div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;std::string <a class="code" href="namespacearmnn_1_1profiling.xhtml#a52fbcd350a9f12a385a7c5562c1efd9a">GetProcessName</a>();</div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="namespacearmnn_1_1profiling.xhtml#acdfc0158f71b04526602ef51444da4c0">  204</a></span>&#160;<span class="keyword">enum class</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#acdfc0158f71b04526602ef51444da4c0">TimelinePacketStatus</a></div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;{</div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    <a class="code" href="namespacearmnn_1_1profiling.xhtml#acdfc0158f71b04526602ef51444da4c0aa60852f204ed8028c1c58808b746d115">Ok</a>,</div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;    <a class="code" href="namespacearmnn_1_1profiling.xhtml#acdfc0158f71b04526602ef51444da4c0a902b0d55fddef6f8d651fe1035b7d4bd">Error</a>,</div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;    <a class="code" href="classarmnn_1_1profiling_1_1_buffer_exhaustion.xhtml">BufferExhaustion</a></div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;};</div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;uint32_t <a class="code" href="namespacearmnn_1_1profiling.xhtml#af9eb13006d20d612855b0eb00bd7b1f0">CalculateSizeOfPaddedSwString</a>(<span class="keyword">const</span> std::string&amp; str);</div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;<a class="code" href="structarmnn_1_1profiling_1_1_sw_trace_message.xhtml">SwTraceMessage</a> <a class="code" href="namespacearmnn_1_1profiling.xhtml#aaa7e58f376ab96ad3fb6dbd16074a5cb">ReadSwTraceMessage</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; offset);</div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;<a class="code" href="namespacearmnn_1_1profiling.xhtml#acdfc0158f71b04526602ef51444da4c0">TimelinePacketStatus</a> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a3583b5fbfe555acc552a63458e665939">WriteTimelineLabelBinaryPacket</a>(uint64_t profilingGuid,</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;                                                    <span class="keyword">const</span> std::string&amp; label,</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;                                                    <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* buffer,</div><div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160;                                                    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bufferSize,</div><div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;                                                    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; numberOfBytesWritten);</div><div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;</div><div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160;<a class="code" href="namespacearmnn_1_1profiling.xhtml#acdfc0158f71b04526602ef51444da4c0">TimelinePacketStatus</a> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a27d1c992711722739250e2bbd9ce7ede">WriteTimelineEntityBinary</a>(uint64_t profilingGuid,</div><div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;                                               <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* buffer,</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;                                               <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bufferSize,</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;                                               <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; numberOfBytesWritten);</div><div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;</div><div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;<a class="code" href="namespacearmnn_1_1profiling.xhtml#acdfc0158f71b04526602ef51444da4c0">TimelinePacketStatus</a> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a2af6f2d1806265a2c84ca05ea8a62fb8">WriteTimelineRelationshipBinary</a>(<a class="code" href="namespacearmnn_1_1profiling.xhtml#ab805f5aa9f101e7f6d971daba044c3c2">ProfilingRelationshipType</a> relationshipType,</div><div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;                                                     uint64_t relationshipGuid,</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;                                                     uint64_t headGuid,</div><div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;                                                     uint64_t tailGuid,</div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;                                                     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* buffer,</div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;                                                     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bufferSize,</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;                                                     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; numberOfBytesWritten);</div><div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;</div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;<a class="code" href="namespacearmnn_1_1profiling.xhtml#acdfc0158f71b04526602ef51444da4c0">TimelinePacketStatus</a> <a class="code" href="namespacearmnn_1_1profiling.xhtml#aecc8787efb41f033785074f2d362895a">WriteTimelineMessageDirectoryPackage</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* buffer,</div><div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;                                                          <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bufferSize,</div><div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;                                                          <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; numberOfBytesWritten);</div><div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;</div><div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160;<a class="code" href="namespacearmnn_1_1profiling.xhtml#acdfc0158f71b04526602ef51444da4c0">TimelinePacketStatus</a> <a class="code" href="namespacearmnn_1_1profiling.xhtml#ac42b224ad252c5c31ee01c6b77fa4737">WriteTimelineEventClassBinary</a>(uint64_t profilingGuid,</div><div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;                                                   <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* buffer,</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;                                                   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bufferSize,</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;                                                   <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; numberOfBytesWritten);</div><div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160;</div><div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;<a class="code" href="namespacearmnn_1_1profiling.xhtml#acdfc0158f71b04526602ef51444da4c0">TimelinePacketStatus</a> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a0a84cb02cb3580ed0bf872cf6b5c09ae">WriteTimelineEventBinary</a>(uint64_t timestamp,</div><div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;                                              std::thread::id threadId,</div><div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;                                              uint64_t profilingGuid,</div><div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;                                              <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* buffer,</div><div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;                                              <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bufferSize,</div><div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;                                              <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>&amp; numberOfBytesWritten);</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;std::string <a class="code" href="namespacearmnn_1_1profiling.xhtml#a6c000fcf0c62f7bc417fef72be783129">CentreAlignFormatting</a>(<span class="keyword">const</span> std::string&amp; stringToPass, <span class="keyword">const</span> <span class="keywordtype">int</span> spacingWidth);</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;<span class="keywordtype">void</span> <a class="code" href="namespacearmnn_1_1profiling.xhtml#a02f98a63d0ef3a10bb359c3ac525f330">PrintCounterDirectory</a>(<a class="code" href="classarmnn_1_1profiling_1_1_i_counter_directory.xhtml">ICounterDirectory</a>&amp; counterDirectory);</div><div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;</div><div class="line"><a name="l00254"></a><span class="lineno"><a class="line" href="classarmnn_1_1profiling_1_1_buffer_exhaustion.xhtml">  254</a></span>&#160;<span class="keyword">class </span>BufferExhaustion : <span class="keyword">public</span> <a class="code" href="classarmnn_1_1_exception.xhtml">armnn::Exception</a></div><div class="line"><a name="l00255"></a><span class="lineno">  255</span>&#160;{</div><div class="line"><a name="l00256"></a><span class="lineno">  256</span>&#160;    <span class="keyword">using</span> <a class="code" href="classarmnn_1_1_exception.xhtml#ad56b7b14f59554e891ad88b26cbf8ac3">Exception::Exception</a>;</div><div class="line"><a name="l00257"></a><span class="lineno">  257</span>&#160;};</div><div class="line"><a name="l00258"></a><span class="lineno">  258</span>&#160;</div><div class="line"><a name="l00259"></a><span class="lineno">  259</span>&#160;uint64_t <a class="code" href="namespacearmnn_1_1profiling.xhtml#a77a41a7625d3134c0cccdf11d169acb4">GetTimestamp</a>();</div><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;</div><div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;} <span class="comment">// namespace profiling</span></div><div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;</div><div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160;} <span class="comment">// namespace armnn</span></div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespacestd.xhtml">std</a></div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;{</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="namespacearmnn_utils.xhtml#a49ba5984d8cde4299d8ef15c9e556587">operator==</a>(<span class="keyword">const</span> std::vector&lt;uint8_t&gt;&amp; left, std::thread::id right);</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;} <span class="comment">// namespace std</span></div><div class="ttc" id="structarmnn_1_1profiling_1_1_sw_trace_name_char_policy_xhtml"><div class="ttname"><a href="structarmnn_1_1profiling_1_1_sw_trace_name_char_policy.xhtml">armnn::profiling::SwTraceNameCharPolicy</a></div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00054">ProfilingUtils.hpp:54</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a5e25734c0aca661f0fe02479743719a1"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a5e25734c0aca661f0fe02479743719a1">armnn::profiling::StringToSwTraceString</a></div><div class="ttdeci">bool StringToSwTraceString(const std::string &amp;s, std::vector&lt; uint32_t &gt; &amp;outputBuffer)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00094">ProfilingUtils.hpp:94</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_aecc8787efb41f033785074f2d362895a"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#aecc8787efb41f033785074f2d362895a">armnn::profiling::WriteTimelineMessageDirectoryPackage</a></div><div class="ttdeci">TimelinePacketStatus WriteTimelineMessageDirectoryPackage(unsigned char *buffer, unsigned int remainingBufferSize, unsigned int &amp;numberOfBytesWritten)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00633">ProfilingUtils.cpp:633</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a66ccd202fa7bf1e52476e61d49a45ee6"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a66ccd202fa7bf1e52476e61d49a45ee6">armnn::profiling::GetHardwareVersion</a></div><div class="ttdeci">std::string GetHardwareVersion()</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00287">ProfilingUtils.cpp:287</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_ae5ace88c65e65ab7cf5572613601a60d"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#ae5ace88c65e65ab7cf5572613601a60d">armnn::profiling::WriteUint16</a></div><div class="ttdeci">void WriteUint16(const IPacketBufferPtr &amp;packetBuffer, unsigned int offset, uint16_t value)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00126">ProfilingUtils.cpp:126</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a097646e1b460c992b553061a3436fb47"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a097646e1b460c992b553061a3436fb47">armnn::profiling::ReadBytes</a></div><div class="ttdeci">void ReadBytes(const IPacketBufferPtr &amp;packetBuffer, unsigned int offset, unsigned int valueSize, uint8_t outValue[])</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00190">ProfilingUtils.cpp:190</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a3e638748a39d46e2943dfcef94dcb828"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a3e638748a39d46e2943dfcef94dcb828">armnn::profiling::WriteUint32</a></div><div class="ttdeci">void WriteUint32(const IPacketBufferPtr &amp;packetBuffer, unsigned int offset, uint32_t value)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00119">ProfilingUtils.cpp:119</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_aa4de2b511faa41accc2c35cadf051124"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#aa4de2b511faa41accc2c35cadf051124">armnn::profiling::ReadUint64</a></div><div class="ttdeci">uint64_t ReadUint64(const IPacketBufferPtr &amp;packetBuffer, unsigned int offset)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00197">ProfilingUtils.cpp:197</a></div></div>
<div class="ttc" id="structarmnn_1_1profiling_1_1_sw_trace_header_xhtml"><div class="ttname"><a href="structarmnn_1_1profiling_1_1_sw_trace_header.xhtml">armnn::profiling::SwTraceHeader</a></div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00029">ProfilingUtils.hpp:29</a></div></div>
<div class="ttc" id="structarmnn_1_1profiling_1_1_sw_trace_message_xhtml_a06ba83abe49bb158c4e07578223ac084"><div class="ttname"><a href="structarmnn_1_1profiling_1_1_sw_trace_message.xhtml#a06ba83abe49bb158c4e07578223ac084">armnn::profiling::SwTraceMessage::m_Id</a></div><div class="ttdeci">uint32_t m_Id</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00038">ProfilingUtils.hpp:38</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_aca8b4bad45009e1d42dc8de69a0b7e2c"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#aca8b4bad45009e1d42dc8de69a0b7e2c">armnn::profiling::CreateTimelinePacketHeader</a></div><div class="ttdeci">std::pair&lt; uint32_t, uint32_t &gt; CreateTimelinePacketHeader(uint32_t packetFamily, uint32_t packetClass, uint32_t packetType, uint32_t streamId, uint32_t sequenceNumbered, uint32_t dataLength)</div><div class="ttdoc">Creates a timeline packet header. </div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00404">ProfilingUtils.cpp:404</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a52fbcd350a9f12a385a7c5562c1efd9a"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a52fbcd350a9f12a385a7c5562c1efd9a">armnn::profiling::GetProcessName</a></div><div class="ttdeci">std::string GetProcessName()</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00299">ProfilingUtils.cpp:299</a></div></div>
<div class="ttc" id="classarmnn_1_1_exception_xhtml_ad56b7b14f59554e891ad88b26cbf8ac3"><div class="ttname"><a href="classarmnn_1_1_exception.xhtml#ad56b7b14f59554e891ad88b26cbf8ac3">armnn::Exception::Exception</a></div><div class="ttdeci">Exception(const std::string &amp;message)</div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8cpp_source.xhtml#l00012">Exceptions.cpp:12</a></div></div>
<div class="ttc" id="structarmnn_1_1profiling_1_1_sw_trace_message_xhtml"><div class="ttname"><a href="structarmnn_1_1profiling_1_1_sw_trace_message.xhtml">armnn::profiling::SwTraceMessage</a></div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00036">ProfilingUtils.hpp:36</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a0ffb94cb0085a54a92f1c4eeaa6cf772"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a0ffb94cb0085a54a92f1c4eeaa6cf772">armnn::profiling::ReadUint16</a></div><div class="ttdeci">uint16_t ReadUint16(const IPacketBufferPtr &amp;packetBuffer, unsigned int offset)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00211">ProfilingUtils.cpp:211</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a74b483b652cc32f03151b10a1366d607"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a74b483b652cc32f03151b10a1366d607">armnn::profiling::ReadUint8</a></div><div class="ttdeci">uint8_t ReadUint8(const IPacketBufferPtr &amp;packetBuffer, unsigned int offset)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00218">ProfilingUtils.cpp:218</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml"><div class="ttname"><a href="namespacearmnn.xhtml">armnn</a></div><div class="ttdoc">Copyright (c) 2020 ARM Limited. </div><div class="ttdef"><b>Definition:</b> <a href="00__introduction_8dox_source.xhtml#l00025">00_introduction.dox:25</a></div></div>
<div class="ttc" id="structarmnn_1_1profiling_1_1_sw_trace_char_policy_xhtml"><div class="ttname"><a href="structarmnn_1_1profiling_1_1_sw_trace_char_policy.xhtml">armnn::profiling::SwTraceCharPolicy</a></div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00045">ProfilingUtils.hpp:45</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_af38e9c5d82c9317255665a6315842166"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#af38e9c5d82c9317255665a6315842166">armnn::profiling::GetSoftwareInfo</a></div><div class="ttdeci">std::string GetSoftwareInfo()</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00282">ProfilingUtils.cpp:282</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a2af6f2d1806265a2c84ca05ea8a62fb8"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a2af6f2d1806265a2c84ca05ea8a62fb8">armnn::profiling::WriteTimelineRelationshipBinary</a></div><div class="ttdeci">TimelinePacketStatus WriteTimelineRelationshipBinary(ProfilingRelationshipType relationshipType, uint64_t relationshipGuid, uint64_t headGuid, uint64_t tailGuid, unsigned char *buffer, unsigned int remainingBufferSize, unsigned int &amp;numberOfBytesWritten)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00560">ProfilingUtils.cpp:560</a></div></div>
<div class="ttc" id="structarmnn_1_1profiling_1_1_sw_trace_header_xhtml_adb7ab6ce7d5eaabe644dfc7423019dc6"><div class="ttname"><a href="structarmnn_1_1profiling_1_1_sw_trace_header.xhtml#adb7ab6ce7d5eaabe644dfc7423019dc6">armnn::profiling::SwTraceHeader::m_ThreadIdBytes</a></div><div class="ttdeci">uint8_t m_ThreadIdBytes</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00033">ProfilingUtils.hpp:33</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a982b094fe2faa67a3560cdaf3901d0f8"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a982b094fe2faa67a3560cdaf3901d0f8">armnn::profiling::GetNextUid</a></div><div class="ttdeci">uint16_t GetNextUid(bool peekOnly)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00054">ProfilingUtils.cpp:54</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_aaa7e58f376ab96ad3fb6dbd16074a5cb"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#aaa7e58f376ab96ad3fb6dbd16074a5cb">armnn::profiling::ReadSwTraceMessage</a></div><div class="ttdeci">SwTraceMessage ReadSwTraceMessage(const unsigned char *packetBuffer, unsigned int &amp;offset)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00320">ProfilingUtils.cpp:320</a></div></div>
<div class="ttc" id="namespacestd_xhtml"><div class="ttname"><a href="namespacestd.xhtml">std</a></div><div class="ttdef"><b>Definition:</b> <a href="_backend_id_8hpp_source.xhtml#l00147">BackendId.hpp:147</a></div></div>
<div class="ttc" id="classarmnn_1_1profiling_1_1_buffer_exhaustion_xhtml"><div class="ttname"><a href="classarmnn_1_1profiling_1_1_buffer_exhaustion.xhtml">armnn::profiling::BufferExhaustion</a></div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00254">ProfilingUtils.hpp:254</a></div></div>
<div class="ttc" id="_i_packet_buffer_8hpp_xhtml"><div class="ttname"><a href="_i_packet_buffer_8hpp.xhtml">IPacketBuffer.hpp</a></div></div>
<div class="ttc" id="namespacearmnn_utils_xhtml_a49ba5984d8cde4299d8ef15c9e556587"><div class="ttname"><a href="namespacearmnn_utils.xhtml#a49ba5984d8cde4299d8ef15c9e556587">armnnUtils::operator==</a></div><div class="ttdeci">bool operator==(const armnn::DataLayout &amp;dataLayout, const DataLayoutIndexed &amp;indexed)</div><div class="ttdoc">Equality methods. </div><div class="ttdef"><b>Definition:</b> <a href="_data_layout_indexed_8cpp_source.xhtml#l00034">DataLayoutIndexed.cpp:34</a></div></div>
<div class="ttc" id="structarmnn_1_1profiling_1_1_sw_trace_message_xhtml_ab3327c5b4232f372888d41886fafb366"><div class="ttname"><a href="structarmnn_1_1profiling_1_1_sw_trace_message.xhtml#ab3327c5b4232f372888d41886fafb366">armnn::profiling::SwTraceMessage::m_ArgNames</a></div><div class="ttdeci">std::vector&lt; std::string &gt; m_ArgNames</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00042">ProfilingUtils.hpp:42</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a88c92fd3fdbf9deb6f1606eb14818ea9"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a88c92fd3fdbf9deb6f1606eb14818ea9">armnn::profiling::IsValidSwTraceString</a></div><div class="ttdeci">bool IsValidSwTraceString(const std::string &amp;s)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00087">ProfilingUtils.hpp:87</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a6605c82bc625fbd40f24d35edee15fe3"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a6605c82bc625fbd40f24d35edee15fe3">armnn::profiling::GetNextCounterUids</a></div><div class="ttdeci">std::vector&lt; uint16_t &gt; GetNextCounterUids(uint16_t firstUid, uint16_t cores)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00074">ProfilingUtils.cpp:74</a></div></div>
<div class="ttc" id="structarmnn_1_1profiling_1_1_sw_trace_message_xhtml_a9c94f2a097b07a882c1b7fdedaaac846"><div class="ttname"><a href="structarmnn_1_1profiling_1_1_sw_trace_message.xhtml#a9c94f2a097b07a882c1b7fdedaaac846">armnn::profiling::SwTraceMessage::m_ArgTypes</a></div><div class="ttdeci">std::vector&lt; char &gt; m_ArgTypes</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00041">ProfilingUtils.hpp:41</a></div></div>
<div class="ttc" id="classarmnn_1_1profiling_1_1_i_packet_buffer_xhtml"><div class="ttname"><a href="classarmnn_1_1profiling_1_1_i_packet_buffer.xhtml">armnn::profiling::IPacketBuffer</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_packet_buffer_8hpp_source.xhtml#l00028">IPacketBuffer.hpp:28</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_af0cddaa4e116d294dacaaced90ca341c"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#af0cddaa4e116d294dacaaced90ca341c">armnn::profiling::WriteBytes</a></div><div class="ttdeci">void WriteBytes(const IPacketBufferPtr &amp;packetBuffer, unsigned int offset, const void *value, unsigned int valueSize)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00089">ProfilingUtils.cpp:89</a></div></div>
<div class="ttc" id="structarmnn_1_1profiling_1_1_sw_trace_header_xhtml_a52613b35e04d689d4656d739e2330df4"><div class="ttname"><a href="structarmnn_1_1profiling_1_1_sw_trace_header.xhtml#a52613b35e04d689d4656d739e2330df4">armnn::profiling::SwTraceHeader::m_PointerBytes</a></div><div class="ttdeci">uint8_t m_PointerBytes</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00032">ProfilingUtils.hpp:32</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a750935094e7dc62a6ce69be8688ee9fc"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a750935094e7dc62a6ce69be8688ee9fc">armnn::profiling::ConstructHeader</a></div><div class="ttdeci">uint32_t ConstructHeader(uint32_t packetFamily, uint32_t packetId)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00096">ProfilingUtils.cpp:96</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_ab805f5aa9f101e7f6d971daba044c3c2"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#ab805f5aa9f101e7f6d971daba044c3c2">armnn::profiling::ProfilingRelationshipType</a></div><div class="ttdeci">ProfilingRelationshipType</div><div class="ttdef"><b>Definition:</b> <a href="_i_send_timeline_packet_8hpp_source.xhtml#l00019">ISendTimelinePacket.hpp:19</a></div></div>
<div class="ttc" id="namespacearmnn_xhtml_a37fa39012e90d568df7f774cd6d1e956"><div class="ttname"><a href="namespacearmnn.xhtml#a37fa39012e90d568df7f774cd6d1e956">armnn::numeric_cast</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_unsigned&lt; Source &gt;::value &amp;&amp;std::is_unsigned&lt; Dest &gt;::value, Dest &gt; numeric_cast(Source source)</div><div class="ttdef"><b>Definition:</b> <a href="_numeric_cast_8hpp_source.xhtml#l00033">NumericCast.hpp:33</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_af63b6e5ffc769286c32d55a090b1602a"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#af63b6e5ffc769286c32d55a090b1602a">armnn::profiling::WriteUint8</a></div><div class="ttdeci">void WriteUint8(const IPacketBufferPtr &amp;packetBuffer, unsigned int offset, uint8_t value)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00133">ProfilingUtils.cpp:133</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a79be042e55fdf16ca562f14cd15d9aa6"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a79be042e55fdf16ca562f14cd15d9aa6">armnn::profiling::WriteUint64</a></div><div class="ttdeci">void WriteUint64(const std::unique_ptr&lt; IPacketBuffer &gt; &amp;packetBuffer, unsigned int offset, uint64_t value)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00112">ProfilingUtils.cpp:112</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_ad56f4c3ea5e88279bb6ef1f31d9dc6df"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#ad56f4c3ea5e88279bb6ef1f31d9dc6df">armnn::profiling::ReadUint32</a></div><div class="ttdeci">uint32_t ReadUint32(const IPacketBufferPtr &amp;packetBuffer, unsigned int offset)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00204">ProfilingUtils.cpp:204</a></div></div>
<div class="ttc" id="structarmnn_1_1profiling_1_1_sw_trace_type_char_policy_xhtml_ae40d551572e9ad2f848954e9e78220b6"><div class="ttname"><a href="structarmnn_1_1profiling_1_1_sw_trace_type_char_policy.xhtml#ae40d551572e9ad2f848954e9e78220b6">armnn::profiling::SwTraceTypeCharPolicy::IsValidChar</a></div><div class="ttdeci">static bool IsValidChar(unsigned char c)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00065">ProfilingUtils.hpp:65</a></div></div>
<div class="ttc" id="structarmnn_1_1profiling_1_1_sw_trace_type_char_policy_xhtml"><div class="ttname"><a href="structarmnn_1_1profiling_1_1_sw_trace_type_char_policy.xhtml">armnn::profiling::SwTraceTypeCharPolicy</a></div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00063">ProfilingUtils.hpp:63</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a1a90cae723e311b3b71272a7f5ecccbb"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a1a90cae723e311b3b71272a7f5ecccbb">armnn::profiling::GetSoftwareVersion</a></div><div class="ttdeci">std::string GetSoftwareVersion()</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00292">ProfilingUtils.cpp:292</a></div></div>
<div class="ttc" id="structarmnn_1_1profiling_1_1_sw_trace_header_xhtml_a6ef10239265753556b4de3e19f523d75"><div class="ttname"><a href="structarmnn_1_1profiling_1_1_sw_trace_header.xhtml#a6ef10239265753556b4de3e19f523d75">armnn::profiling::SwTraceHeader::m_StreamVersion</a></div><div class="ttdeci">uint8_t m_StreamVersion</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00031">ProfilingUtils.hpp:31</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_ac42b224ad252c5c31ee01c6b77fa4737"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#ac42b224ad252c5c31ee01c6b77fa4737">armnn::profiling::WriteTimelineEventClassBinary</a></div><div class="ttdeci">TimelinePacketStatus WriteTimelineEventClassBinary(uint64_t profilingGuid, unsigned char *buffer, unsigned int remainingBufferSize, unsigned int &amp;numberOfBytesWritten)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00761">ProfilingUtils.cpp:761</a></div></div>
<div class="ttc" id="structarmnn_1_1profiling_1_1_sw_trace_message_xhtml_a76824b89f32ec62fa7c74e40bd529502"><div class="ttname"><a href="structarmnn_1_1profiling_1_1_sw_trace_message.xhtml#a76824b89f32ec62fa7c74e40bd529502">armnn::profiling::SwTraceMessage::m_UiName</a></div><div class="ttdeci">std::string m_UiName</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00040">ProfilingUtils.hpp:40</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_af9eb13006d20d612855b0eb00bd7b1f0"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#af9eb13006d20d612855b0eb00bd7b1f0">armnn::profiling::CalculateSizeOfPaddedSwString</a></div><div class="ttdeci">uint32_t CalculateSizeOfPaddedSwString(const std::string &amp;str)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00310">ProfilingUtils.cpp:310</a></div></div>
<div class="ttc" id="structarmnn_1_1profiling_1_1_sw_trace_message_xhtml_ab13844df5477a9ab8f13069e3d8abad6"><div class="ttname"><a href="structarmnn_1_1profiling_1_1_sw_trace_message.xhtml#ab13844df5477a9ab8f13069e3d8abad6">armnn::profiling::SwTraceMessage::m_Name</a></div><div class="ttdeci">std::string m_Name</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00039">ProfilingUtils.hpp:39</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_aabcf5c25522e8a0542c95174056cfcac"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#aabcf5c25522e8a0542c95174056cfcac">armnn::profiling::uint32_t_size</a></div><div class="ttdeci">uint32_t uint32_t_size</div><div class="ttdef"><b>Definition:</b> <a href="_directory_capture_command_handler_8cpp_source.xhtml#l00021">DirectoryCaptureCommandHandler.cpp:21</a></div></div>
<div class="ttc" id="classarmnn_1_1_exception_xhtml"><div class="ttname"><a href="classarmnn_1_1_exception.xhtml">armnn::Exception</a></div><div class="ttdoc">Base class for all ArmNN exceptions so that users can filter to just those. </div><div class="ttdef"><b>Definition:</b> <a href="_exceptions_8hpp_source.xhtml#l00046">Exceptions.hpp:46</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_acdfc0158f71b04526602ef51444da4c0aa60852f204ed8028c1c58808b746d115"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#acdfc0158f71b04526602ef51444da4c0aa60852f204ed8028c1c58808b746d115">armnn::profiling::TimelinePacketStatus::Ok</a></div></div>
<div class="ttc" id="_exceptions_8hpp_xhtml"><div class="ttname"><a href="_exceptions_8hpp.xhtml">Exceptions.hpp</a></div></div>
<div class="ttc" id="structarmnn_1_1profiling_1_1_sw_trace_name_char_policy_xhtml_ae40d551572e9ad2f848954e9e78220b6"><div class="ttname"><a href="structarmnn_1_1profiling_1_1_sw_trace_name_char_policy.xhtml#ae40d551572e9ad2f848954e9e78220b6">armnn::profiling::SwTraceNameCharPolicy::IsValidChar</a></div><div class="ttdeci">static bool IsValidChar(unsigned char c)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00056">ProfilingUtils.hpp:56</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a3583b5fbfe555acc552a63458e665939"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a3583b5fbfe555acc552a63458e665939">armnn::profiling::WriteTimelineLabelBinaryPacket</a></div><div class="ttdeci">TimelinePacketStatus WriteTimelineLabelBinaryPacket(uint64_t profilingGuid, const std::string &amp;label, unsigned char *buffer, unsigned int remainingBufferSize, unsigned int &amp;numberOfBytesWritten)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00454">ProfilingUtils.cpp:454</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a0a84cb02cb3580ed0bf872cf6b5c09ae"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a0a84cb02cb3580ed0bf872cf6b5c09ae">armnn::profiling::WriteTimelineEventBinary</a></div><div class="ttdeci">TimelinePacketStatus WriteTimelineEventBinary(uint64_t timestamp, std::thread::id threadId, uint64_t profilingGuid, unsigned char *buffer, unsigned int remainingBufferSize, unsigned int &amp;numberOfBytesWritten)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00805">ProfilingUtils.cpp:805</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a6c000fcf0c62f7bc417fef72be783129"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a6c000fcf0c62f7bc417fef72be783129">armnn::profiling::CentreAlignFormatting</a></div><div class="ttdeci">std::string CentreAlignFormatting(const std::string &amp;stringToPass, const int spacingWidth)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00858">ProfilingUtils.cpp:858</a></div></div>
<div class="ttc" id="_i_counter_directory_8hpp_xhtml"><div class="ttname"><a href="_i_counter_directory_8hpp.xhtml">ICounterDirectory.hpp</a></div></div>
<div class="ttc" id="_i_send_timeline_packet_8hpp_xhtml"><div class="ttname"><a href="_i_send_timeline_packet_8hpp.xhtml">ISendTimelinePacket.hpp</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a8c4f707828a9d965b59f4ec3414cb490"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a8c4f707828a9d965b59f4ec3414cb490">armnn::profiling::ConvertDirectoryComponent</a></div><div class="ttdeci">bool ConvertDirectoryComponent(const std::string &amp;directoryComponent, SwTraceBuffer &amp;swTraceBuffer)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00126">ProfilingUtils.hpp:126</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a27d1c992711722739250e2bbd9ce7ede"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a27d1c992711722739250e2bbd9ce7ede">armnn::profiling::WriteTimelineEntityBinary</a></div><div class="ttdeci">TimelinePacketStatus WriteTimelineEntityBinary(uint64_t profilingGuid, unsigned char *buffer, unsigned int remainingBufferSize, unsigned int &amp;numberOfBytesWritten)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l00517">ProfilingUtils.cpp:517</a></div></div>
<div class="ttc" id="classarmnn_1_1profiling_1_1_i_counter_directory_xhtml"><div class="ttname"><a href="classarmnn_1_1profiling_1_1_i_counter_directory.xhtml">armnn::profiling::ICounterDirectory</a></div><div class="ttdef"><b>Definition:</b> <a href="_i_counter_directory_8hpp_source.xhtml#l00139">ICounterDirectory.hpp:139</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a02f98a63d0ef3a10bb359c3ac525f330"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a02f98a63d0ef3a10bb359c3ac525f330">armnn::profiling::PrintCounterDirectory</a></div><div class="ttdeci">void PrintCounterDirectory(ICounterDirectory &amp;counterDirectory)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l01003">ProfilingUtils.cpp:1003</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_acdfc0158f71b04526602ef51444da4c0"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#acdfc0158f71b04526602ef51444da4c0">armnn::profiling::TimelinePacketStatus</a></div><div class="ttdeci">TimelinePacketStatus</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00204">ProfilingUtils.hpp:204</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_acdfc0158f71b04526602ef51444da4c0a902b0d55fddef6f8d651fe1035b7d4bd"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#acdfc0158f71b04526602ef51444da4c0a902b0d55fddef6f8d651fe1035b7d4bd">armnn::profiling::TimelinePacketStatus::Error</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a14328d977cec3abadcfd5935f04f3409"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a14328d977cec3abadcfd5935f04f3409">armnn::profiling::IPacketBufferPtr</a></div><div class="ttdeci">std::unique_ptr&lt; IPacketBuffer &gt; IPacketBufferPtr</div><div class="ttdef"><b>Definition:</b> <a href="_i_packet_buffer_8hpp_source.xhtml#l00040">IPacketBuffer.hpp:40</a></div></div>
<div class="ttc" id="namespacearmnn_1_1profiling_xhtml_a77a41a7625d3134c0cccdf11d169acb4"><div class="ttname"><a href="namespacearmnn_1_1profiling.xhtml#a77a41a7625d3134c0cccdf11d169acb4">armnn::profiling::GetTimestamp</a></div><div class="ttdeci">uint64_t GetTimestamp()</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8cpp_source.xhtml#l01050">ProfilingUtils.cpp:1050</a></div></div>
<div class="ttc" id="structarmnn_1_1profiling_1_1_sw_trace_char_policy_xhtml_ae40d551572e9ad2f848954e9e78220b6"><div class="ttname"><a href="structarmnn_1_1profiling_1_1_sw_trace_char_policy.xhtml#ae40d551572e9ad2f848954e9e78220b6">armnn::profiling::SwTraceCharPolicy::IsValidChar</a></div><div class="ttdeci">static bool IsValidChar(unsigned char c)</div><div class="ttdef"><b>Definition:</b> <a href="_profiling_utils_8hpp_source.xhtml#l00047">ProfilingUtils.hpp:47</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.xhtml">src</a></li><li class="navelem"><a class="el" href="dir_637c692f14729569dd2eac0c18e2a54a.xhtml">profiling</a></li><li class="navelem"><a class="el" href="_profiling_utils_8hpp.xhtml">ProfilingUtils.hpp</a></li>
    <li class="footer">Generated on Fri Mar 13 2020 16:09:13 for ArmNN by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>