aboutsummaryrefslogtreecommitdiff
path: root/coverage-report/include/timebase.h.gcov.html
blob: 8d16a443e675cb30220a61db5e2ac7b184cb8506 (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
181
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html lang="en">

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>LCOV - skiboot.info - include/timebase.h</title>
  <link rel="stylesheet" type="text/css" href="../gcov.css">
</head>

<body>

  <table width="100%" border=0 cellspacing=0 cellpadding=0>
    <tr><td class="title">LCOV - code coverage report</td></tr>
    <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>

    <tr>
      <td width="100%">
        <table cellpadding=1 border=0 width="100%">
          <tr>
            <td width="10%" class="headerItem">Current view:</td>
            <td width="35%" class="headerValue"><a href="../index.html">top level</a> - <a href="index.html">include</a> - timebase.h<span style="font-size: 80%;"> (source / <a href="timebase.h.func-sort-c.html">functions</a>)</span></td>
            <td width="5%"></td>
            <td width="15%"></td>
            <td width="10%" class="headerCovTableHead">Hit</td>
            <td width="10%" class="headerCovTableHead">Total</td>
            <td width="15%" class="headerCovTableHead">Coverage</td>
          </tr>
          <tr>
            <td class="headerItem">Test:</td>
            <td class="headerValue">skiboot.info</td>
            <td></td>
            <td class="headerItem">Lines:</td>
            <td class="headerCovTableEntry">18</td>
            <td class="headerCovTableEntry">18</td>
            <td class="headerCovTableEntryHi">100.0 %</td>
          </tr>
          <tr>
            <td class="headerItem">Date:</td>
            <td class="headerValue">2022-06-13 14:57:12</td>
            <td></td>
            <td class="headerItem">Functions:</td>
            <td class="headerCovTableEntry">8</td>
            <td class="headerCovTableEntry">8</td>
            <td class="headerCovTableEntryHi">100.0 %</td>
          </tr>
          <tr>
            <td></td>
            <td></td>
            <td></td>
            <td class="headerItem">Branches:</td>
            <td class="headerCovTableEntry">0</td>
            <td class="headerCovTableEntry">0</td>
            <td class="headerCovTableEntryHi">-</td>
          </tr>
          <tr><td><img src="../glass.png" width=3 height=3 alt=""></td></tr>
        </table>
      </td>
    </tr>

    <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
  </table>

  <table cellpadding=0 cellspacing=0 border=0>
    <tr>
      <td><br></td>
    </tr>
    <tr>
      <td>
<pre class="sourceHeading">           Branch data     Line data    Source code</pre>
<pre class="source">
<a name="1"><span class="lineNum">       1 </span>                :            : // SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later</a>
<a name="2"><span class="lineNum">       2 </span>                :            : /*</a>
<a name="3"><span class="lineNum">       3 </span>                :            :  * Timebase helpers.</a>
<a name="4"><span class="lineNum">       4 </span>                :            :  *</a>
<a name="5"><span class="lineNum">       5 </span>                :            :  * Note: Only use after the TODs are in sync !</a>
<a name="6"><span class="lineNum">       6 </span>                :            :  *</a>
<a name="7"><span class="lineNum">       7 </span>                :            :  * Copyright 2013-2016 IBM Corp.</a>
<a name="8"><span class="lineNum">       8 </span>                :            :  */</a>
<a name="9"><span class="lineNum">       9 </span>                :            : </a>
<a name="10"><span class="lineNum">      10 </span>                :            : #ifndef __TIME_H</a>
<a name="11"><span class="lineNum">      11 </span>                :            : #define __TIME_H</a>
<a name="12"><span class="lineNum">      12 </span>                :            : </a>
<a name="13"><span class="lineNum">      13 </span>                :            : #include &lt;time.h&gt;</a>
<a name="14"><span class="lineNum">      14 </span>                :            : </a>
<a name="15"><span class="lineNum">      15 </span>                :            : #ifndef __TEST__</a>
<a name="16"><span class="lineNum">      16 </span>                :            : static inline unsigned long mftb(void)</a>
<a name="17"><span class="lineNum">      17 </span>                :            : {</a>
<a name="18"><span class="lineNum">      18 </span>                :            :         unsigned long tb;</a>
<a name="19"><span class="lineNum">      19 </span>                :            : </a>
<a name="20"><span class="lineNum">      20 </span>                :            :         /* We use a memory clobber to avoid this being</a>
<a name="21"><span class="lineNum">      21 </span>                :            :          * moved in the instruction stream</a>
<a name="22"><span class="lineNum">      22 </span>                :            :          */</a>
<a name="23"><span class="lineNum">      23 </span>                :            :         asm volatile(&quot;mftb %0&quot; : &quot;=r&quot;(tb) : : &quot;memory&quot;);</a>
<a name="24"><span class="lineNum">      24 </span>                :            :         return tb;</a>
<a name="25"><span class="lineNum">      25 </span>                :            : }</a>
<a name="26"><span class="lineNum">      26 </span>                :            : #endif</a>
<a name="27"><span class="lineNum">      27 </span>                :            : </a>
<a name="28"><span class="lineNum">      28 </span>                :            : enum tb_cmpval {</a>
<a name="29"><span class="lineNum">      29 </span>                :            :         TB_ABEFOREB = -1,</a>
<a name="30"><span class="lineNum">      30 </span>                :            :         TB_AEQUALB  = 0,</a>
<a name="31"><span class="lineNum">      31 </span>                :            :         TB_AAFTERB  = 1</a>
<a name="32"><span class="lineNum">      32 </span>                :            : };</a>
<a name="33"><span class="lineNum">      33 </span>                :            : </a>
<a name="34"><span class="lineNum">      34 </span>                :<span class="lineCov">          3 : static inline enum tb_cmpval tb_compare(unsigned long a,</span></a>
<a name="35"><span class="lineNum">      35 </span>                :            :                                         unsigned long b)</a>
<a name="36"><span class="lineNum">      36 </span>                :            : {</a>
<a name="37"><span class="lineNum">      37 </span>                :<span class="lineCov">          3 :         if (a == b)</span></a>
<a name="38"><span class="lineNum">      38 </span>                :<span class="lineCov">          1 :                 return TB_AEQUALB;</span></a>
<a name="39"><span class="lineNum">      39 </span>                :<span class="lineCov">          2 :         return ((long)(b - a)) &gt; 0 ? TB_ABEFOREB : TB_AAFTERB;</span></a>
<a name="40"><span class="lineNum">      40 </span>                :            : }</a>
<a name="41"><span class="lineNum">      41 </span>                :            : </a>
<a name="42"><span class="lineNum">      42 </span>                :            : /* Architected timebase */</a>
<a name="43"><span class="lineNum">      43 </span>                :            : extern unsigned long tb_hz;</a>
<a name="44"><span class="lineNum">      44 </span>                :            : </a>
<a name="45"><span class="lineNum">      45 </span>                :<span class="lineCov">          3 : static inline unsigned long secs_to_tb(unsigned long secs)</span></a>
<a name="46"><span class="lineNum">      46 </span>                :            : {</a>
<a name="47"><span class="lineNum">      47 </span>                :<span class="lineCov">          3 :         return secs * tb_hz;</span></a>
<a name="48"><span class="lineNum">      48 </span>                :            : }</a>
<a name="49"><span class="lineNum">      49 </span>                :            : </a>
<a name="50"><span class="lineNum">      50 </span>                :<span class="lineCov">       1902 : static inline unsigned long tb_to_secs(unsigned long tb)</span></a>
<a name="51"><span class="lineNum">      51 </span>                :            : {</a>
<a name="52"><span class="lineNum">      52 </span>                :<span class="lineCov">       1902 :         return tb / tb_hz;</span></a>
<a name="53"><span class="lineNum">      53 </span>                :            : }</a>
<a name="54"><span class="lineNum">      54 </span>                :            : </a>
<a name="55"><span class="lineNum">      55 </span>                :<span class="lineCov">         11 : static inline unsigned long tb_remaining_nsecs(unsigned long tb)</span></a>
<a name="56"><span class="lineNum">      56 </span>                :            : {</a>
<a name="57"><span class="lineNum">      57 </span>                :<span class="lineCov">         11 :         return tb % tb_hz;</span></a>
<a name="58"><span class="lineNum">      58 </span>                :            : }</a>
<a name="59"><span class="lineNum">      59 </span>                :            : </a>
<a name="60"><span class="lineNum">      60 </span>                :<span class="lineCov">          7 : static inline unsigned long msecs_to_tb(unsigned long msecs)</span></a>
<a name="61"><span class="lineNum">      61 </span>                :            : {</a>
<a name="62"><span class="lineNum">      62 </span>                :<span class="lineCov">          7 :         return msecs * (tb_hz / 1000);</span></a>
<a name="63"><span class="lineNum">      63 </span>                :            : }</a>
<a name="64"><span class="lineNum">      64 </span>                :            : </a>
<a name="65"><span class="lineNum">      65 </span>                :<span class="lineCov">          1 : static inline unsigned long tb_to_msecs(unsigned long tb)</span></a>
<a name="66"><span class="lineNum">      66 </span>                :            : {</a>
<a name="67"><span class="lineNum">      67 </span>                :<span class="lineCov">          1 :         return (tb * 1000) / tb_hz;</span></a>
<a name="68"><span class="lineNum">      68 </span>                :            : }</a>
<a name="69"><span class="lineNum">      69 </span>                :            : </a>
<a name="70"><span class="lineNum">      70 </span>                :<span class="lineCov">          5 : static inline unsigned long usecs_to_tb(unsigned long usecs)</span></a>
<a name="71"><span class="lineNum">      71 </span>                :            : {</a>
<a name="72"><span class="lineNum">      72 </span>                :<span class="lineCov">          5 :         return usecs * (tb_hz / 1000000);</span></a>
<a name="73"><span class="lineNum">      73 </span>                :            : }</a>
<a name="74"><span class="lineNum">      74 </span>                :            : </a>
<a name="75"><span class="lineNum">      75 </span>                :<span class="lineCov">          2 : static inline unsigned long tb_to_usecs(unsigned long tb)</span></a>
<a name="76"><span class="lineNum">      76 </span>                :            : {</a>
<a name="77"><span class="lineNum">      77 </span>                :<span class="lineCov">          2 :         return (tb * 1000000) / tb_hz;</span></a>
<a name="78"><span class="lineNum">      78 </span>                :            : }</a>
<a name="79"><span class="lineNum">      79 </span>                :            : </a>
<a name="80"><span class="lineNum">      80 </span>                :            : extern unsigned long timespec_to_tb(const struct timespec *ts);</a>
<a name="81"><span class="lineNum">      81 </span>                :            : </a>
<a name="82"><span class="lineNum">      82 </span>                :            : /* time_wait - Wait a certain number of TB ticks while polling FSP */</a>
<a name="83"><span class="lineNum">      83 </span>                :            : extern void time_wait(unsigned long duration);</a>
<a name="84"><span class="lineNum">      84 </span>                :            : extern void time_wait_nopoll(unsigned long duration);</a>
<a name="85"><span class="lineNum">      85 </span>                :            : </a>
<a name="86"><span class="lineNum">      86 </span>                :            : /* time_wait_ms - Wait a certain number of milliseconds while polling FSP */</a>
<a name="87"><span class="lineNum">      87 </span>                :            : extern void time_wait_ms(unsigned long ms);</a>
<a name="88"><span class="lineNum">      88 </span>                :            : extern void time_wait_ms_nopoll(unsigned long ms);</a>
<a name="89"><span class="lineNum">      89 </span>                :            : </a>
<a name="90"><span class="lineNum">      90 </span>                :            : /* time_wait_us - Wait a certain number of microseconds while polling FSP */</a>
<a name="91"><span class="lineNum">      91 </span>                :            : extern void time_wait_us(unsigned long us);</a>
<a name="92"><span class="lineNum">      92 </span>                :            : extern void time_wait_us_nopoll(unsigned long us);</a>
<a name="93"><span class="lineNum">      93 </span>                :            : </a>
<a name="94"><span class="lineNum">      94 </span>                :            : /* nanosleep_nopoll - variant for use from hostservices */</a>
<a name="95"><span class="lineNum">      95 </span>                :            : extern int nanosleep_nopoll(const struct timespec *req, struct timespec *rem);</a>
<a name="96"><span class="lineNum">      96 </span>                :            : #endif /* __TIME_H */</a>
</pre>
      </td>
    </tr>
  </table>
  <br>

  <table width="100%" border=0 cellspacing=0 cellpadding=0>
    <tr><td class="ruler"><img src="../glass.png" width=3 height=3 alt=""></td></tr>
    <tr><td class="versionInfo">Generated by: <a href="http://ltp.sourceforge.net/coverage/lcov.php" target="_parent">LCOV version 1.14</a></td></tr>
  </table>
  <br>

</body>
</html>