1 |
dashley |
30 |
%$Header: /home/dashley/cvsrep/uculib01/uculib01/doc/manual/c_iov0/c_iov0.tex,v 1.29 2010/06/11 15:42:50 dashley Exp $ |
2 |
|
|
|
3 |
|
|
\chapter{Introduction and Overview} |
4 |
|
|
|
5 |
|
|
\label{ciov0} |
6 |
|
|
|
7 |
|
|
|
8 |
|
|
|
9 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
10 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
11 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
12 |
|
|
\section{License} |
13 |
|
|
\label{ciov0:slic0} |
14 |
|
|
|
15 |
|
|
TBD. |
16 |
|
|
|
17 |
|
|
|
18 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
19 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
20 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
21 |
|
|
\section{Overview of \emph{\productbasenameshort{}}} |
22 |
|
|
%Section tag: pov0 |
23 |
|
|
\label{ciov0:spov0} |
24 |
|
|
|
25 |
|
|
The \emph{\productbasenamelong{} Version \productversion{}} |
26 |
|
|
(or more compactly, |
27 |
|
|
\emph{\productbasenameshort{}-\productversion{}}) |
28 |
|
|
is an |
29 |
|
|
open-source utility library for inexpensive 8-bit, 16-bit, and 32-bit |
30 |
|
|
microcontrollers and microprocessors. |
31 |
|
|
|
32 |
|
|
The functions provided in \emph{\productbasenameshort{}} fall into these categories |
33 |
|
|
(with some classification ambiguity and overlap). |
34 |
|
|
|
35 |
|
|
\begin{itemize} |
36 |
|
|
\item Arithmetic. |
37 |
|
|
\item Bounded arithmetic. |
38 |
|
|
\item Fixed-point arithmetic. |
39 |
|
|
\item Large-operand and extended-precision arithmetic. |
40 |
|
|
\item Block memory operations. |
41 |
|
|
\item Bit-mapped set functions. |
42 |
|
|
\item Searching. |
43 |
|
|
\item Sorting. |
44 |
|
|
\item Array manipulation. |
45 |
|
|
\item Linear filters. |
46 |
|
|
\item Non-linear filters. |
47 |
|
|
\item Vertical counters. |
48 |
|
|
\item Control system components. |
49 |
|
|
\item CRC, checksums, and non-cryptographic hashes. |
50 |
|
|
\item Cryptographic hashes. |
51 |
|
|
\item Ciphers. |
52 |
|
|
\item Miscellaneous functions. |
53 |
|
|
\item Utility functions. |
54 |
|
|
\item Speed-enhanced development tool replacement functions. |
55 |
|
|
\end{itemize} |
56 |
|
|
|
57 |
|
|
\emph{\productbasenameshort{}-\productversion{}} |
58 |
|
|
is packaged as two libraries, each with |
59 |
|
|
a different purpose: |
60 |
|
|
|
61 |
|
|
\begin{itemize} |
62 |
|
|
\item The \index{general library}``general library'' contains functions not normally provided |
63 |
|
|
with development tools. The general library is described by |
64 |
|
|
every chapter in this document except Chapter \ref{csef0}. |
65 |
|
|
\item The \index{replacement library}``replacement library'' (not yet implemented |
66 |
|
|
for any platform) contains |
67 |
|
|
speed-enhanced replacements |
68 |
|
|
for functions packaged with development tools, in those cases |
69 |
|
|
where some optimization could be performed or where an alternate |
70 |
|
|
and faster algorithm is known. The replacement library is covered by |
71 |
|
|
Chapter \ref{csef0}. Functions in the replacement library |
72 |
|
|
generally are designed to boost speed at the expense of program |
73 |
|
|
memory and/or RAM\@. Use of the replacement library is optional. |
74 |
|
|
The replacement library may not exist for all platforms. |
75 |
|
|
\end{itemize} |
76 |
|
|
|
77 |
|
|
|
78 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
79 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
80 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
81 |
|
|
\section{Supported CPU Cores and CPU Core Variants} |
82 |
|
|
%Section tag: lcv0 |
83 |
|
|
\label{ciov0:sscv0} |
84 |
|
|
|
85 |
|
|
The CPU core and the development tool chain are closely tied together in terms |
86 |
|
|
of the usability of a library. A library compiled for a different CPU core |
87 |
|
|
usually won't function, but a library compiled using a different set of |
88 |
|
|
development tools may also not function (due to differences in object file formats, |
89 |
|
|
differences in calling conventions, etc.). For this reason, |
90 |
|
|
the CPU core and development tool chain are bundled together (see Table \ref{tbl:ciov0:sscv0:01}) |
91 |
|
|
and sometimes referred to only as |
92 |
|
|
``CPU core''. |
93 |
|
|
|
94 |
|
|
\begin{table} |
95 |
|
|
\caption{Supported CPU Cores and Development Tool Chains} |
96 |
|
|
\label{tbl:ciov0:sscv0:01} |
97 |
|
|
\begin{center} |
98 |
|
|
\begin{tabular}{|c|l|l|l|} |
99 |
|
|
\hline |
100 |
|
|
Integer & CPU Core & Development & Remarks \\ |
101 |
|
|
Code & & Tool Chain & \\ |
102 |
|
|
\hline |
103 |
|
|
\hline |
104 |
|
|
1 & ST STM8 & Cosmic & ST Microelectronics STM8 with \\ |
105 |
|
|
& & & Cosmic Software development tools. \\ |
106 |
|
|
\hline |
107 |
|
|
2 & Freescale CPU08 & Cosmic & Freescale CPU08 with \\ |
108 |
|
|
& & & Cosmic Software development tools. \\ |
109 |
|
|
\hline |
110 |
|
|
\end{tabular} |
111 |
|
|
\end{center} |
112 |
|
|
\end{table} |
113 |
|
|
|
114 |
|
|
Table \ref{tbl:ciov0:sscv0:01} lists the CPU cores and development |
115 |
|
|
tool chain combinations supported by |
116 |
|
|
\emph{\productbasenameshort{}-\productversion{}}\@. The |
117 |
|
|
integer codes listed in Table \ref{tbl:ciov0:sscv0:01} |
118 |
|
|
is the code returned by the |
119 |
|
|
\index{UcuMfLibVerCpuRxx()@\emph{UcuMfLibVerCpuRxx($\cdot$)}}\emph{UcuMfLibVerCpuRxx($\cdot$)} |
120 |
|
|
function (\S{}\ref{cmsc0:slvc0}, p. \pageref{cmsc0:slvc0}). |
121 |
|
|
|
122 |
|
|
\begin{table} |
123 |
|
|
\caption{CPU Core Variants for ST STM8 / Cosmic} |
124 |
|
|
\label{tbl:ciov0:sscv0:02} |
125 |
|
|
\begin{center} |
126 |
|
|
\begin{tabular}{|c|l|} |
127 |
|
|
\hline |
128 |
|
|
Variant & Description \\ |
129 |
|
|
Integer & \\ |
130 |
|
|
Code & \\ |
131 |
|
|
\hline |
132 |
|
|
\hline |
133 |
|
|
1 & Base variant. \\ |
134 |
|
|
\hline |
135 |
|
|
\end{tabular} |
136 |
|
|
\end{center} |
137 |
|
|
\end{table} |
138 |
|
|
|
139 |
|
|
Within the STM8/Cosmic CPU core / development tool combination, |
140 |
|
|
Table \ref{tbl:ciov0:sscv0:02} provides the CPU core variant codes. |
141 |
|
|
(\emph{Note:} |
142 |
|
|
at the present time, only functions for the STM8 using the Cosmic tool chain |
143 |
|
|
are implemented.) |
144 |
|
|
|
145 |
|
|
\begin{table} |
146 |
|
|
\caption{CPU Core Variants for Freescale CPU08 / Cosmic} |
147 |
|
|
\label{tbl:ciov0:sscv0:03} |
148 |
|
|
\begin{center} |
149 |
|
|
\begin{tabular}{|c|l|} |
150 |
|
|
\hline |
151 |
|
|
Variant & Description \\ |
152 |
|
|
Integer & \\ |
153 |
|
|
Code & \\ |
154 |
|
|
\hline |
155 |
|
|
\hline |
156 |
|
|
1 & Base variant. \\ |
157 |
|
|
\hline |
158 |
|
|
\end{tabular} |
159 |
|
|
\end{center} |
160 |
|
|
\end{table} |
161 |
|
|
|
162 |
|
|
Within the CPU08 / Cosmic CPU core / development tool combination, |
163 |
|
|
Table \ref{tbl:ciov0:sscv0:03} provides the CPU core variant codes. |
164 |
|
|
(\emph{Note:} at the present time, no functions for the CPU08 are |
165 |
|
|
implemented.) |
166 |
|
|
|
167 |
|
|
|
168 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
169 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
170 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
171 |
|
|
\section{Library Conventions} |
172 |
|
|
%Section tag: lcv0 |
173 |
|
|
\label{ciov0:slcv0} |
174 |
|
|
|
175 |
|
|
|
176 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
177 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
178 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
179 |
|
|
\subsection{Library Versioning} |
180 |
|
|
%Section tag: lvn0 |
181 |
|
|
\label{ciov0:slcv0:slvn0} |
182 |
|
|
|
183 |
|
|
\index{versioning (library)}Version numbers of the library are of the |
184 |
|
|
form \emph{j.m-} (example: \emph{2.5c}) where: |
185 |
|
|
|
186 |
|
|
\begin{itemize} |
187 |
|
|
\item \emph{j} is the major version number, a non-negative integer. |
188 |
|
|
This version number is returned by the |
189 |
|
|
\index{UcuMfLibVerMajRxx()@\emph{UcuMfLibVerMajRxx($\cdot$)}}\emph{UcuMfLibVerMajRxx($\cdot$)} |
190 |
|
|
function (\S{}\ref{cmsc0:slvf0}, p. \pageref{cmsc0:slvf0}). |
191 |
|
|
\item \emph{m} is the minor version number, a non-negative integer. |
192 |
|
|
This version number is returned by the |
193 |
|
|
\index{UcuMfLibVerMinMicRxx()@\emph{UcuMfLibVerMinMicRxx($\cdot$)}}\emph{UcuMfLibVerMinMicRxx($\cdot$)} |
194 |
|
|
function (\S{}\ref{cmsc0:slvm0}, p. \pageref{cmsc0:slvm0}). |
195 |
|
|
\item \emph{-} is the micro version number, a non-negative integer. The micro version number |
196 |
|
|
is represented as a letter in documentation (for example, the `c' in `2.5c'). |
197 |
|
|
This version number is returned by the |
198 |
|
|
\index{UcuMfLibVerMinMicRxx()@\emph{UcuMfLibVerMinMicRxx($\cdot$)}}\emph{UcuMfLibVerMinMicRxx($\cdot$)} |
199 |
|
|
function (\S{}\ref{cmsc0:slvm0}, p. \pageref{cmsc0:slvm0}) as an 8-bit integer. |
200 |
|
|
When represented as an integer, the correspondence is that the letter `a' is represented by 0, |
201 |
|
|
the letter `b' by 1, etc. |
202 |
|
|
\end{itemize} |
203 |
|
|
|
204 |
|
|
|
205 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
206 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
207 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
208 |
|
|
\subsection{Library Binary File Naming Conventions} |
209 |
|
|
%Section tag: lpn0 |
210 |
|
|
\label{ciov0:slcv0:slpn0} |
211 |
|
|
|
212 |
|
|
|
213 |
|
|
\index{naming conventions (library)}% |
214 |
|
|
A typical binary library file name is ``\emph{libucu\_g\_2\_5c\_1\_1.sm8}''. |
215 |
|
|
In order, the binary library file name contains the following components: |
216 |
|
|
|
217 |
|
|
\begin{itemize} |
218 |
|
|
\item The characters \emph{libucu\_} (a constant string |
219 |
|
|
to identify the library). |
220 |
|
|
\item \emph{g\_} or \emph{r\_} to indicate whether the library |
221 |
|
|
is the `general' or the `replacement' library. |
222 |
|
|
\item The version number of the library followed by an underscore |
223 |
|
|
(example: `\emph{2\_5c\_}'). |
224 |
|
|
\item The CPU core integer identifier, followed by an underscore. (This integer |
225 |
|
|
is selected from Table \ref{tbl:ciov0:sscv0:01}.) |
226 |
|
|
\item The CPU core variant integer identifier. (This integer is selected from the table |
227 |
|
|
of variants specific to the CPU core: for example, Table \ref{tbl:ciov0:sscv0:02} or |
228 |
|
|
Table \ref{tbl:ciov0:sscv0:03}.) |
229 |
|
|
\item A period followed by a filename extension traditional for the |
230 |
|
|
development tools and that CPU core and CPU core variant. |
231 |
|
|
\end{itemize} |
232 |
|
|
|
233 |
|
|
|
234 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
235 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
236 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
237 |
|
|
\subsection{Function Naming Conventions} |
238 |
|
|
%Section tag: fnc0 |
239 |
|
|
\label{ciov0:slcv0:sfnc0} |
240 |
|
|
|
241 |
|
|
A typical function name within the general library is |
242 |
|
|
`\emph{UcuLfU16FiltAFiltRxx}'. Function names within the general library |
243 |
|
|
usually consist of the following components, with some components optional: |
244 |
|
|
|
245 |
|
|
\begin{itemize} |
246 |
|
|
\item The character string `\emph{Ucu}'. |
247 |
|
|
\item Two characters representing the function family (selected from |
248 |
|
|
Table \ref{tbl:ciov0:slcv0:sfnc0:03}). |
249 |
|
|
\item The fundamental data type on which the function operates and/or returns. (\emph{U16} means |
250 |
|
|
a 16-bit unsigned integer, \emph{U16a} means an array of unsigned integers, etc.) |
251 |
|
|
\item A name for the function, indicating what it does. |
252 |
|
|
\item Qualifiers for the function. These may include input argument sizes, in the case that |
253 |
|
|
there are variants of the function that accept different input argument sizes. These |
254 |
|
|
may also include different levels of sophistication in handling invalid or sentinel |
255 |
|
|
values of inputs. |
256 |
|
|
\item The interrupt compatibility code (Table \ref{tbl:ciov0:slcv0:sfnc0:01}), capitalized. |
257 |
|
|
\item The interrupt mask modification code (Table \ref{tbl:ciov0:slcv0:sfnc0:02}), in lower case. |
258 |
|
|
\item The shared data modification code (Table \ref{tbl:ciov0:slcv0:sfnc0:02b}), in lower case. |
259 |
|
|
\end{itemize} |
260 |
|
|
|
261 |
|
|
\begin{table} |
262 |
|
|
\caption{Function Family Code} |
263 |
|
|
\label{tbl:ciov0:slcv0:sfnc0:03} |
264 |
|
|
\begin{center} |
265 |
|
|
\begin{tabular}{|l|l|} |
266 |
|
|
\hline |
267 |
|
|
Function & Meaning \\ |
268 |
|
|
Family & \\ |
269 |
|
|
Code & \\ |
270 |
|
|
\hline |
271 |
|
|
\hline |
272 |
|
|
\texttt{At} & Arithmetic function (Chapter \ref{cafn0}). \\ |
273 |
|
|
\hline |
274 |
|
|
\texttt{Ba} & Bounded arithmetic function (Chapter \ref{cbaf0}). \\ |
275 |
|
|
\hline |
276 |
|
|
\texttt{Fp} & Fixed-Point arithmetic function (Chapter \ref{cfpa0}). \\ |
277 |
|
|
\hline |
278 |
|
|
\texttt{Lo} & Large-operand/extended precision function (Chapter \ref{claf0}). \\ |
279 |
|
|
\hline |
280 |
|
|
\texttt{Bm} & Block memory function (Chapter \ref{cbmf0}). \\ |
281 |
|
|
\hline |
282 |
|
|
\texttt{Bt} & Bit-mapped set function (Chapter \ref{cbsf0}). \\ |
283 |
|
|
\hline |
284 |
|
|
\texttt{Se} & Search function (Chapter \ref{csea0}). \\ |
285 |
|
|
\hline |
286 |
|
|
\texttt{So} & Sort function (Chapter \ref{csol0}). \\ |
287 |
|
|
\hline |
288 |
|
|
\texttt{Am} & Array manipulation function (Chapter \ref{cami0}). \\ |
289 |
|
|
\hline |
290 |
|
|
\texttt{Lf} & Linear filter function (Chapter \ref{clfi0}). \\ |
291 |
|
|
\hline |
292 |
|
|
\texttt{Nf} & Non-linear filter function (Chapter \ref{cnfi0}). \\ |
293 |
|
|
\hline |
294 |
|
|
\texttt{Vc} & Vertical counter function (Chapter \ref{cvco0}). \\ |
295 |
|
|
\hline |
296 |
|
|
\texttt{Cs} & Control system component function (Chapter \ref{ccso0}). \\ |
297 |
|
|
\hline |
298 |
|
|
\texttt{Cc} & CRC/checksum/non-cryptographic hash function \\ |
299 |
|
|
& (Chapter \ref{ccrc0}). \\ |
300 |
|
|
\hline |
301 |
|
|
\texttt{Ch} & Cryptographic hash function (Chapter \ref{ccrh0}). \\ |
302 |
|
|
\hline |
303 |
|
|
\texttt{Ci} & Cipher function (Chapter \ref{ccip0}). \\ |
304 |
|
|
\hline |
305 |
|
|
\texttt{Mi} & Miscellaneous function (Chapter \ref{cmsc0}). \\ |
306 |
|
|
\hline |
307 |
|
|
\texttt{Ut} & Utility function (Chapter \ref{cnef0}). \\ |
308 |
|
|
\hline |
309 |
|
|
\end{tabular} |
310 |
|
|
\end{center} |
311 |
|
|
\end{table} |
312 |
|
|
|
313 |
|
|
\begin{table} |
314 |
|
|
\caption{Interrupt Compatibility Codes} |
315 |
|
|
\label{tbl:ciov0:slcv0:sfnc0:01} |
316 |
|
|
\begin{center} |
317 |
|
|
\begin{tabular}{|l|l|} |
318 |
|
|
\hline |
319 |
|
|
Interrupt & Meaning \\ |
320 |
|
|
Compatibility & \\ |
321 |
|
|
Code & \\ |
322 |
|
|
\hline |
323 |
|
|
\hline |
324 |
|
|
\texttt{n} & \textbf{non-ISR Usage Only} \\ |
325 |
|
|
& The function may be called from non-interrupt service \\ |
326 |
|
|
& only, and may not be called from an interrupt service \\ |
327 |
|
|
& routine. \\ |
328 |
|
|
& \\ |
329 |
|
|
& (This code gives no information about whether the data \\ |
330 |
|
|
& operated on by a function may be shared with an \\ |
331 |
|
|
& ISR, and the function documentation must be consulted \\ |
332 |
|
|
& to determine this.) \\ |
333 |
|
|
\hline |
334 |
|
|
\texttt{i} & \textbf{ISR Usage Only} \\ |
335 |
|
|
& The function may be called from interrupt service only, \\ |
336 |
|
|
& and may not be called from non-interrupt service. \\ |
337 |
|
|
\hline |
338 |
|
|
\texttt{r} & \textbf{Re-Entrant} \\ |
339 |
|
|
& The function may be called from both non-interrupt service \\ |
340 |
|
|
& and interrupt service. \\ |
341 |
|
|
\hline |
342 |
|
|
\end{tabular} |
343 |
|
|
\end{center} |
344 |
|
|
\end{table} |
345 |
|
|
|
346 |
|
|
\begin{table} |
347 |
|
|
\caption{Interrupt Mask Modification Code} |
348 |
|
|
\label{tbl:ciov0:slcv0:sfnc0:02} |
349 |
|
|
\begin{center} |
350 |
|
|
\begin{tabular}{|l|l|} |
351 |
|
|
\hline |
352 |
|
|
Interrupt & Meaning \\ |
353 |
|
|
Compatibility & \\ |
354 |
|
|
Code & \\ |
355 |
|
|
\hline |
356 |
|
|
\hline |
357 |
|
|
\texttt{x} & \textbf{Not Modified} \\ |
358 |
|
|
& The global interrupt mask is not modified. This often \\ |
359 |
|
|
& means that the function may be called with interrupts \\ |
360 |
|
|
& either disabled or enabled (consult the function \\ |
361 |
|
|
& documentation and \S{}\ref{ctbg0:sici0}). \\ |
362 |
|
|
\hline |
363 |
|
|
\texttt{c} & \textbf{Classic Critical Sections} \\ |
364 |
|
|
& \emph{Classic} critical sections (DI/EI) are used. (See \\ |
365 |
|
|
& \S{}\ref{ctbg0:sici0}.) \\ |
366 |
|
|
\hline |
367 |
|
|
\texttt{r} & \textbf{Restorative} \\ |
368 |
|
|
& The global interrupt mask is saved and restored. This \\ |
369 |
|
|
& often means that the function can be safely called with \\ |
370 |
|
|
& interrupts disabled or enabled and/or that the function \\ |
371 |
|
|
& may be part of a larger critical section that (at the \\ |
372 |
|
|
& very beginning and end) uses the classis DI/EI protocol. \\ |
373 |
|
|
& (Consult the function documentation and \S{}\ref{ctbg0:sici0}.) \\ |
374 |
|
|
\hline |
375 |
|
|
\texttt{u} & \textbf{Universally Restorative} \\ |
376 |
|
|
& Either ``x'' or ``r'' applies, but the documentation can't \\ |
377 |
|
|
& commit because it may vary from processor to processor \\ |
378 |
|
|
& (depending on the processor's instruction set). This \\ |
379 |
|
|
& often means that the function can be safely called with \\ |
380 |
|
|
& interrupts disabled or enabled and/or that the function \\ |
381 |
|
|
& may be part of a larger critical section that (at the \\ |
382 |
|
|
& very beginning and end) uses the classis DI/EI protocol. \\ |
383 |
|
|
& (Consult the function documentation and \S{}\ref{ctbg0:sici0}.) \\ |
384 |
|
|
\hline |
385 |
|
|
\end{tabular} |
386 |
|
|
\end{center} |
387 |
|
|
\end{table} |
388 |
|
|
|
389 |
|
|
\begin{table} |
390 |
|
|
\caption{Shared Data Mutual Exclusion Code} |
391 |
|
|
\label{tbl:ciov0:slcv0:sfnc0:02b} |
392 |
|
|
\begin{center} |
393 |
|
|
\begin{tabular}{|l|l|} |
394 |
|
|
\hline |
395 |
|
|
Interrupt & Meaning \\ |
396 |
|
|
Compatibility & \\ |
397 |
|
|
Code & \\ |
398 |
|
|
\hline |
399 |
|
|
\hline |
400 |
|
|
\texttt{n} & \textbf{No Protection} \\ |
401 |
|
|
& Accessed data is not protected against concurrent access \\ |
402 |
|
|
& by another thread. \\ |
403 |
|
|
\hline |
404 |
|
|
\texttt{c} & \textbf{Component Protection} \\ |
405 |
|
|
& Individual array elements are protected, but the array \\ |
406 |
|
|
& as a whole is not. \\ |
407 |
|
|
\hline |
408 |
|
|
\texttt{f} & \textbf{Full Protection} \\ |
409 |
|
|
& The full data structure is protected. \\ |
410 |
|
|
\hline |
411 |
|
|
\texttt{x} & \textbf{Not Applicable} \\ |
412 |
|
|
& There is no shared data to protect. \\ |
413 |
|
|
\hline |
414 |
|
|
\end{tabular} |
415 |
|
|
\end{center} |
416 |
|
|
\end{table} |
417 |
|
|
|
418 |
|
|
|
419 |
|
|
|
420 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
421 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
422 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
423 |
|
|
\section{Library Revision History} |
424 |
|
|
\label{ciov0:slrh0} |
425 |
|
|
|
426 |
|
|
\noindent\textbf{0.1e} (June 11, 2010) |
427 |
|
|
\begin{itemize} |
428 |
|
|
\item Addition of \emph{UcuMfCpuCcrSetRxx($\cdot$)} function. |
429 |
|
|
\end{itemize} |
430 |
|
|
|
431 |
|
|
\noindent\textbf{0.1d} (May 18, 2010) |
432 |
|
|
\begin{itemize} |
433 |
|
|
\item Addition of \emph{UcuBaS8AbsBoundedRxx($\cdot$)} function. |
434 |
|
|
\item Addition of \emph{UcuBaS16AbsBoundedRxx($\cdot$)} function. |
435 |
|
|
\item Addition of \emph{UcuBaS16DiffBoundedRxx($\cdot$)} function. |
436 |
|
|
\item Addition of \emph{UcuBtU32RotLeftNInPlaceRxx($\cdot$)} function. |
437 |
|
|
\end{itemize} |
438 |
|
|
|
439 |
|
|
\noindent\textbf{0.1c} (March, 2010) |
440 |
|
|
\begin{itemize} |
441 |
|
|
\item Initial release. |
442 |
|
|
\end{itemize} |
443 |
|
|
|
444 |
|
|
|
445 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
446 |
|
|
\noindent\begin{figure}[!b] |
447 |
|
|
\noindent\rule[-0.25in]{\textwidth}{1pt} |
448 |
|
|
\begin{tiny} |
449 |
|
|
\begin{verbatim} |
450 |
|
|
$RCSfile: c_iov0.tex,v $ |
451 |
|
|
$Source: /home/dashley/cvsrep/uculib01/uculib01/doc/manual/c_iov0/c_iov0.tex,v $ |
452 |
|
|
$Revision: 1.29 $ |
453 |
|
|
$Author: dashley $ |
454 |
|
|
$Date: 2010/06/11 15:42:50 $ |
455 |
|
|
\end{verbatim} |
456 |
|
|
\end{tiny} |
457 |
|
|
\noindent\rule[0.25in]{\textwidth}{1pt} |
458 |
|
|
\end{figure} |
459 |
|
|
|
460 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
461 |
|
|
%$Log: c_iov0.tex,v $ |
462 |
|
|
%Revision 1.29 2010/06/11 15:42:50 dashley |
463 |
|
|
%Version number bump to 0.1e. |
464 |
|
|
% |
465 |
|
|
%Revision 1.28 2010/05/18 22:25:12 dashley |
466 |
|
|
%Release date for version 0.1d added. |
467 |
|
|
% |
468 |
|
|
%Revision 1.27 2010/05/12 22:24:57 dashley |
469 |
|
|
%Addition of UcuBtU32RotLeftNInPlaceRxx() function. |
470 |
|
|
% |
471 |
|
|
%Revision 1.26 2010/05/12 21:21:02 dashley |
472 |
|
|
%Unimplemented functions removed. |
473 |
|
|
% |
474 |
|
|
%Revision 1.25 2010/04/16 19:33:37 dashley |
475 |
|
|
%Addition of UcuAtS32NegationRxx() function. |
476 |
|
|
% |
477 |
|
|
%Revision 1.24 2010/04/16 19:19:40 dashley |
478 |
|
|
%Unused absolute value function removed from documentation. |
479 |
|
|
% |
480 |
|
|
%Revision 1.23 2010/04/15 19:34:39 dashley |
481 |
|
|
%Addition of UcuAtU32S16v2MagSquaredRxx() function. |
482 |
|
|
% |
483 |
|
|
%Revision 1.22 2010/04/15 17:54:10 dashley |
484 |
|
|
%Addition of UcuBaS32AbsBoundedRxx() function. |
485 |
|
|
% |
486 |
|
|
%Revision 1.21 2010/04/15 17:34:52 dashley |
487 |
|
|
%Addition of UcuAtS32IsNegRxx() function. |
488 |
|
|
% |
489 |
|
|
%Revision 1.20 2010/04/15 17:09:38 dashley |
490 |
|
|
%Addition of UcuLoU32U64U32DivQFRxn() function. |
491 |
|
|
% |
492 |
|
|
%Revision 1.19 2010/04/15 15:56:41 dashley |
493 |
|
|
%Addition of UcuU64U32SquareInPlaceRxn() function. |
494 |
|
|
% |
495 |
|
|
%Revision 1.18 2010/04/15 14:56:28 dashley |
496 |
|
|
%Addition of UcuAtU32SqrtFRxx() function. |
497 |
|
|
% |
498 |
|
|
%Revision 1.17 2010/03/18 00:01:10 dashley |
499 |
|
|
%Functions added. |
500 |
|
|
% |
501 |
|
|
%Revision 1.16 2010/03/16 21:57:45 dashley |
502 |
|
|
%Addition of license section. |
503 |
|
|
% |
504 |
|
|
%Revision 1.15 2010/03/16 21:56:02 dashley |
505 |
|
|
%Edits and corrections. |
506 |
|
|
% |
507 |
|
|
%Revision 1.14 2010/01/31 02:00:29 dashley |
508 |
|
|
%Minor change in two-character naming code for bit-mapped set functions. |
509 |
|
|
% |
510 |
|
|
%Revision 1.13 2010/01/28 21:18:32 dashley |
511 |
|
|
%a)Chapter start quotes removed. |
512 |
|
|
%b)Aesthetic comment line added at the bottom of most files. |
513 |
|
|
% |
514 |
|
|
%Revision 1.12 2010/01/27 21:52:15 dashley |
515 |
|
|
%Edits. |
516 |
|
|
% |
517 |
|
|
%Revision 1.11 2010/01/26 22:05:21 dashley |
518 |
|
|
%Edits. |
519 |
|
|
% |
520 |
|
|
%Revision 1.10 2010/01/26 21:56:25 dashley |
521 |
|
|
%Edits. |
522 |
|
|
% |
523 |
|
|
%Revision 1.9 2010/01/26 16:16:18 dashley |
524 |
|
|
%Edits. |
525 |
|
|
% |
526 |
|
|
%Revision 1.8 2007/10/10 18:28:33 dtashley |
527 |
|
|
%Addition of UcuBmMemclrSmNu() function. |
528 |
|
|
% |
529 |
|
|
%Revision 1.7 2007/10/10 17:42:27 dtashley |
530 |
|
|
%Edits. |
531 |
|
|
% |
532 |
|
|
%Revision 1.6 2007/10/08 19:51:59 dtashley |
533 |
|
|
%Edits toward getting function documentation looking good. |
534 |
|
|
% |
535 |
|
|
%Revision 1.5 2007/10/08 18:16:33 dtashley |
536 |
|
|
%Edits. |
537 |
|
|
%End of $RCSfile: c_iov0.tex,v $. |
538 |
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
539 |
|
|
|