aboutsummaryrefslogtreecommitdiff
path: root/coverage-report/core/console-log.c.gcov.html
blob: 428887d82777960c2d5dfb2182e85b71906598b8 (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
<!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 - core/console-log.c</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">core</a> - console-log.c<span style="font-size: 80%;"> (source / <a href="console-log.c.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">21</td>
            <td class="headerCovTableEntry">21</td>
            <td class="headerCovTableEntryHi">100.0 %</td>
          </tr>
          <tr>
            <td class="headerItem">Date:</td>
            <td class="headerValue">2023-06-06 19:00:36</td>
            <td></td>
            <td class="headerItem">Functions:</td>
            <td class="headerCovTableEntry">3</td>
            <td class="headerCovTableEntry">3</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>                :            :  * Console Log routines</a>
<a name="4"><span class="lineNum">       4 </span>                :            :  * Wraps libc and console lower level functions</a>
<a name="5"><span class="lineNum">       5 </span>                :            :  * does fancy-schmancy things like timestamps and priorities</a>
<a name="6"><span class="lineNum">       6 </span>                :            :  * Doesn't make waffles.</a>
<a name="7"><span class="lineNum">       7 </span>                :            :  *</a>
<a name="8"><span class="lineNum">       8 </span>                :            :  * Copyright 2013-2018 IBM Corp.</a>
<a name="9"><span class="lineNum">       9 </span>                :            :  */</a>
<a name="10"><span class="lineNum">      10 </span>                :            : </a>
<a name="11"><span class="lineNum">      11 </span>                :            : #include &quot;skiboot.h&quot;</a>
<a name="12"><span class="lineNum">      12 </span>                :            : #include &quot;unistd.h&quot;</a>
<a name="13"><span class="lineNum">      13 </span>                :            : #include &quot;stdio.h&quot;</a>
<a name="14"><span class="lineNum">      14 </span>                :            : #include &quot;console.h&quot;</a>
<a name="15"><span class="lineNum">      15 </span>                :            : #include &quot;timebase.h&quot;</a>
<a name="16"><span class="lineNum">      16 </span>                :            : #include &lt;debug_descriptor.h&gt;</a>
<a name="17"><span class="lineNum">      17 </span>                :            : </a>
<a name="18"><span class="lineNum">      18 </span>                :<span class="lineCov">         13 : static int vprlog(int log_level, const char *fmt, va_list ap)</span></a>
<a name="19"><span class="lineNum">      19 </span>                :            : {</a>
<a name="20"><span class="lineNum">      20 </span>                :            :         int count;</a>
<a name="21"><span class="lineNum">      21 </span>                :            :         char buffer[320];</a>
<a name="22"><span class="lineNum">      22 </span>                :<span class="lineCov">         13 :         bool flush_to_drivers = true;</span></a>
<a name="23"><span class="lineNum">      23 </span>                :<span class="lineCov">         13 :         unsigned long tb = mftb();</span></a>
<a name="24"><span class="lineNum">      24 </span>                :            : </a>
<a name="25"><span class="lineNum">      25 </span>                :            :         /* It's safe to return 0 when we &quot;did&quot; something here</a>
<a name="26"><span class="lineNum">      26 </span>                :            :          * as only printf cares about how much we wrote, and</a>
<a name="27"><span class="lineNum">      27 </span>                :            :          * if you change log_level to below PR_PRINTF then you</a>
<a name="28"><span class="lineNum">      28 </span>                :            :          * get everything you deserve.</a>
<a name="29"><span class="lineNum">      29 </span>                :            :          * By default, only PR_DEBUG and higher are stored in memory.</a>
<a name="30"><span class="lineNum">      30 </span>                :            :          * PR_TRACE and PR_INSANE are for those having a bad day.</a>
<a name="31"><span class="lineNum">      31 </span>                :            :          */</a>
<a name="32"><span class="lineNum">      32 </span>                :<span class="lineCov">         13 :         if (log_level &gt; (debug_descriptor.console_log_levels &gt;&gt; 4))</span></a>
<a name="33"><span class="lineNum">      33 </span>                :<span class="lineCov">          2 :                 return 0;</span></a>
<a name="34"><span class="lineNum">      34 </span>                :            : </a>
<a name="35"><span class="lineNum">      35 </span>                :<span class="lineCov">         11 :         count = snprintf(buffer, sizeof(buffer), &quot;[%5lu.%09lu,%d] &quot;,</span></a>
<a name="36"><span class="lineNum">      36 </span>                :            :                          tb_to_secs(tb), tb_remaining_nsecs(tb), log_level);</a>
<a name="37"><span class="lineNum">      37 </span>                :<span class="lineCov">         11 :         count+= vsnprintf(buffer+count, sizeof(buffer)-count, fmt, ap);</span></a>
<a name="38"><span class="lineNum">      38 </span>                :            : </a>
<a name="39"><span class="lineNum">      39 </span>                :<span class="lineCov">         11 :         if (log_level &gt; (debug_descriptor.console_log_levels &amp; 0x0f))</span></a>
<a name="40"><span class="lineNum">      40 </span>                :<span class="lineCov">          2 :                 flush_to_drivers = false;</span></a>
<a name="41"><span class="lineNum">      41 </span>                :            : </a>
<a name="42"><span class="lineNum">      42 </span>                :<span class="lineCov">         11 :         console_write(flush_to_drivers, buffer, count);</span></a>
<a name="43"><span class="lineNum">      43 </span>                :            : </a>
<a name="44"><span class="lineNum">      44 </span>                :<span class="lineCov">         11 :         return count;</span></a>
<a name="45"><span class="lineNum">      45 </span>                :            : }</a>
<a name="46"><span class="lineNum">      46 </span>                :            : </a>
<a name="47"><span class="lineNum">      47 </span>                :            : /* we don't return anything as what on earth are we going to do</a>
<a name="48"><span class="lineNum">      48 </span>                :            :  * if we actually fail to print a log message? Print a log message about it?</a>
<a name="49"><span class="lineNum">      49 </span>                :            :  * Callers shouldn't care, prlog and friends should do something generically</a>
<a name="50"><span class="lineNum">      50 </span>                :            :  * sane in such crazy situations.</a>
<a name="51"><span class="lineNum">      51 </span>                :            :  */</a>
<a name="52"><span class="lineNum">      52 </span>                :<span class="lineCov">         10 : void _prlog(int log_level, const char* fmt, ...)</span></a>
<a name="53"><span class="lineNum">      53 </span>                :            : {</a>
<a name="54"><span class="lineNum">      54 </span>                :            :         va_list ap;</a>
<a name="55"><span class="lineNum">      55 </span>                :            : </a>
<a name="56"><span class="lineNum">      56 </span>                :<span class="lineCov">         10 :         va_start(ap, fmt);</span></a>
<a name="57"><span class="lineNum">      57 </span>                :<span class="lineCov">         10 :         vprlog(log_level, fmt, ap);</span></a>
<a name="58"><span class="lineNum">      58 </span>                :<span class="lineCov">         10 :         va_end(ap);</span></a>
<a name="59"><span class="lineNum">      59 </span>                :<span class="lineCov">         10 : }</span></a>
<a name="60"><span class="lineNum">      60 </span>                :            : </a>
<a name="61"><span class="lineNum">      61 </span>                :<span class="lineCov">          2 : int _printf(const char* fmt, ...)</span></a>
<a name="62"><span class="lineNum">      62 </span>                :            : {</a>
<a name="63"><span class="lineNum">      63 </span>                :            :         int count;</a>
<a name="64"><span class="lineNum">      64 </span>                :            :         va_list ap;</a>
<a name="65"><span class="lineNum">      65 </span>                :            : </a>
<a name="66"><span class="lineNum">      66 </span>                :<span class="lineCov">          3 :         va_start(ap, fmt);</span></a>
<a name="67"><span class="lineNum">      67 </span>                :<span class="lineCov">          3 :         count = vprlog(PR_PRINTF, fmt, ap);</span></a>
<a name="68"><span class="lineNum">      68 </span>                :<span class="lineCov">          3 :         va_end(ap);</span></a>
<a name="69"><span class="lineNum">      69 </span>                :            : </a>
<a name="70"><span class="lineNum">      70 </span>                :<span class="lineCov">          3 :         return count;</span></a>
<a name="71"><span class="lineNum">      71 </span>                :            : }</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>