summaryrefslogtreecommitdiff
path: root/docs/RTOS/html/misraCompliance.html
blob: b6c9a0275f80648275847694749457e62aa02bda (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
<!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"/>
<title>MISRA-C:2004 Compliance Exceptions</title>
<title>CMSIS-RTOS: MISRA-C:2004 Compliance Exceptions</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="cmsis.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<script type="text/javascript" src="printComponentTabs.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
</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: 46px;">
  <td id="projectlogo"><img alt="Logo" src="CMSIS_Logo_Final.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">CMSIS-RTOS
   &#160;<span id="projectnumber">Version 1.03</span>
   </div>
   <div id="projectbrief">Real-Time Operating System: API and RTX Reference Implementation.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<div id="CMSISnav" class="tabs1">
    <ul class="tablist">
      <script type="text/javascript">
		<!--
		writeComponentTabs.call(this);
		//-->
      </script>
	  </ul>
</div>
<!-- Generated by Doxygen 1.8.6 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Usage&#160;and&#160;Description</span></a></li>
      <li><a href="modules.html"><span>Reference</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </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('misraCompliance.html','');});
</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)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></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">MISRA-C:2004 Compliance Exceptions </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>CMSIS-RTOS RTX tries to be MISRA-C compliant as much as possible. However, there are some violations in order to simplify the overall code logic and to generate more efficient code.</p>
<p>CMSIS-RTOS RTX generates the following notes, warnings and infos for MISRA-C:2004 rules:</p>
<ul>
<li>Rule 1.1, required, Rule 2.2, required: Non-ANSI reserved word or construct: '//'</li>
<li>Rule 1.2, required: Both sides have side effects</li>
<li>Rule 1.2, required: Unusual pointer cast (incompatible indirect types)</li>
<li>Rule 8.1, required: Function defined without a prototype in scope</li>
<li>Rule 11.1, required, Rule 11.3, advisory: cast from pointer to unsigned int</li>
<li>Rule 11.1, required, Rule 11.3, advisory: cast from unsigned int to pointer</li>
<li>Rule 11.4, advisory: cast from pointer to pointer</li>
<li>Rule 12.11, advisory: Overflow in computing constant for operation: 'unsigned shift left'</li>
<li>Rule 13.7, required, Rule 14.1, required: Constant value Boolean</li>
<li>Rule 14.4, required: Use of goto is deprecated</li>
<li>Rule 14.7, required: Return statement before end of function</li>
<li>Rule 16.10, required: Ignoring return value of function</li>
<li>Rule 17.2, required, Rule 17.3, required: Relational or subtract operator applied to pointers</li>
<li>Rule 19.4, required, Rule 19.10, required: Expression-like macro not parenthesized</li>
<li>Rule 19.15, required: Repeated include file</li>
</ul>
<p>CMSIS-RTOS RTX violates the following MISRA-C:2004 rules:</p>
<ul>
<li>Required Rule 8.5: object/function definition in header file</li>
<li>Required Rule 10.1: Prohibited Implicit Conversion: Non-constant argument to function</li>
<li>Required Rule 10.1: Implicit conversion of complex integer expression</li>
<li>Required Rule 10.3: Cast of complex integer expression to larger type</li>
<li>Required Rule 10.3: Cast of complex expression changes signedness</li>
<li>Required Rule 11.5: attempt to cast away const/volatile from a pointer or reference</li>
<li>Required Rule 12.4: side effects on right hand of logical operator: '&amp;&amp;'</li>
<li>Required Rule 12.4: side effects on right hand of logical operator: '||'</li>
<li>Required Rule 12.5: non-primary expression used with logical operator</li>
<li>Required Rule 14.3: null statement not in line by itself</li>
<li>Required Rule 14.8: left brace expected for while, do...while and for</li>
<li>Required Rule 14.9: left brace expected for if and else</li>
<li>Required Rule 15.3: default missing from switch statement</li>
<li>Required Rule 16.9: function identifier used without '&amp;' or parenthesized parameter list</li>
<li>Required Rule 17.4: pointer arithmetic other than array indexing used</li>
<li>Required Rule 18.4: declaration of union type or object of union type: '{...}'</li>
<li>Required Rule 19.12: Multiple use of '#/##' operators in definition of macro</li>
<li>Required Rule 20.2: Re-use of C90 identifier pattern</li>
<li>Advisory Rule 12.1: dependence placed on C's operator precedence; operators: '+' and '-'</li>
<li>Advisory Rule 12.13: increment or decrement combined with another operator</li>
<li>Advisory Rule 19.13: '#/##' operator used in macro</li>
<li>Advisory Rule 19.7: Function-like macro defined </li>
</ul>
</div></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="index.html">index</a></li><li class="navelem"><a class="el" href="rtxImplementation.html">RTX Implementation</a></li>
    <li class="footer">Generated on Wed Aug 1 2018 17:12:43 for CMSIS-RTOS by Arm Ltd. All rights reserved.
	<!--
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.6 
	-->
	</li>
  </ul>
</div>
</body>
</html>