universalisos/docs/html/libstand-reference-manual/group__stdlib.html
Fábio Coutada 7855eab092 feat(import): Complete PikeOS 5.0 ecosystem import from devvm-arch
MAJOR MILESTONE: Successfully imported complete PikeOS 5.0 ecosystem
from Virtual Machine 100 (devvm-arch) on gigabyte Proxmox server.

Import Summary:
- Source Code: 4.3GB, 63,441 files, 14,829 C/C++/H files
- Documentation: 78MB, 37+ PDF manuals covering all PikeOS aspects
- XSD Schemas: 1.8MB, 158 schema files for configuration/code generation
- Test Framework: Complete TFW infrastructure in src/tfw/

Key Components:
 Multi-architecture kernels (ARM v7/v8, PowerPC e500/e500mc/e5500, x86_64)
 Core source libraries (libstand, ssw, p4ext)
 Complete test framework with executables, includes, libraries
 37+ comprehensive PDF documentation (installation, development, platform manuals)
 158 XSD schemas for Eclipse-based code generation and configuration
 AUTOSAR/MISRA safety-critical compliance foundation
 Hardware virtualization support
 Eclipse IDE project configuration (.project, .cproject)

Documentation Categories:
- Installation & User Guides (pikeos-installation-guide.pdf, user manuals)
- Development References (kernel, driver, test framework manuals)
- API & Programming (C/C++ environments, native API extensions)
- Platform Manuals (ARM, PowerPC, x86 specific guides)
- CDK Documentation (gcc, binutils, ld, cpp internals)
- Release Notes (all components for 5.0.3)
- Specialized Topics (hardware virtualization, POSIX compliance)

Technical Achievements:
 Complete PikeOS 5.0 codebase across multiple processor architectures
 Safety-critical foundation with AUTOSAR/MISRA compliance
 Eclipse IDE integration with XSD-driven code generation pipeline
 Comprehensive test framework for validation and verification
 Complete documentation covering development, deployment, and optimization

Extraction Method:
- Source: VM 100 (devvm-arch) on gigabyte server (192.168.0.104)
- Method: Direct LVM disk mount via losetup, rsync transfer
- Size: Total 4.4GB extracted and organized

Next Phases:
- Phase 3: XSD Workflow Analysis (Day 8-10)
- Phase 4: Safety Standards Compliance Documentation (Day 11-12)
- Phase 5: Component Categorization (Day 13-14)
- Phase 6: Aurelio Brain Test (Day 15)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-06 21:01:41 +01:00

367 lines
18 KiB
HTML

<!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="viewport" content="width=device-width, initial-scale=1"/>
<title>ANSI C standard library functions</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>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<!-- 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('group__stdlib.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)">
</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="summary">
<a href="#func-members">Functions</a> </div>
<div class="headertitle">
<div class="title">ANSI C standard library functions</div> </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>This section describes the subset of the ANSI C standard library (stdlib) functions included in libstand. </p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ga6d257fc3f00865d0556ed7327c312b55"><td class="memItemLeft" align="right" valign="top">unsigned long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__stdlib.html#ga6d257fc3f00865d0556ed7327c312b55">strtoul</a> (const char *nptr, char **endptr, int base)</td></tr>
<tr class="memdesc:ga6d257fc3f00865d0556ed7327c312b55"><td class="mdescLeft">&#160;</td><td class="mdescRight">A function to parse an unsigned number from a string and return it as a number. <a href="#ga6d257fc3f00865d0556ed7327c312b55">More...</a><br /></td></tr>
<tr class="separator:ga6d257fc3f00865d0556ed7327c312b55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga311071298c2fe3e5d7057f396a6acfdc"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__stdlib.html#ga311071298c2fe3e5d7057f396a6acfdc">strtol</a> (const char *nptr, char **endptr, int base)</td></tr>
<tr class="memdesc:ga311071298c2fe3e5d7057f396a6acfdc"><td class="mdescLeft">&#160;</td><td class="mdescRight">A function to parse a signed number from a string and return it as a number. The behaviour is just like strtoul, but for signed numbers. <a href="#ga311071298c2fe3e5d7057f396a6acfdc">More...</a><br /></td></tr>
<tr class="separator:ga311071298c2fe3e5d7057f396a6acfdc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae5835422eb2dfc17ea8deb3b15bcc541"><td class="memItemLeft" align="right" valign="top">unsigned long long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__stdlib.html#gae5835422eb2dfc17ea8deb3b15bcc541">strtoull</a> (const char *nptr, char **endptr, int base)</td></tr>
<tr class="memdesc:gae5835422eb2dfc17ea8deb3b15bcc541"><td class="mdescLeft">&#160;</td><td class="mdescRight">A function to parse an unsigned number from a string and return it as a number. <a href="#gae5835422eb2dfc17ea8deb3b15bcc541">More...</a><br /></td></tr>
<tr class="separator:gae5835422eb2dfc17ea8deb3b15bcc541"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gafb901aa665b7e2e3e27025ca77fecd1b"><td class="memItemLeft" align="right" valign="top">long long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__stdlib.html#gafb901aa665b7e2e3e27025ca77fecd1b">strtoll</a> (const char *nptr, char **endptr, int base)</td></tr>
<tr class="memdesc:gafb901aa665b7e2e3e27025ca77fecd1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">A function to parse a signed number from a string and return it as a number. The behaviour is just like strtoul, but for signed numbers. <a href="#gafb901aa665b7e2e3e27025ca77fecd1b">More...</a><br /></td></tr>
<tr class="separator:gafb901aa665b7e2e3e27025ca77fecd1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga67f06ab80df39f288412af11ba5592a2"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__stdlib.html#ga67f06ab80df39f288412af11ba5592a2">bsearch</a> (const void *key, const void *base, size_t nmemb, size_t size, int(*compar)(const void *a, const void *b))</td></tr>
<tr class="separator:ga67f06ab80df39f288412af11ba5592a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a id="ga6d257fc3f00865d0556ed7327c312b55"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6d257fc3f00865d0556ed7327c312b55">&#9670;&nbsp;</a></span>strtoul()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned long strtoul </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>nptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char **&#160;</td>
<td class="paramname"><em>endptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>base</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A function to parse an unsigned number from a string and return it as a number. </p>
<p>At the beginning of the string, ASCII white-space characters, i.e., SPACE or TAB, will be skipped first. Then, any number of + and - will be parsed to possibly return a negated value. Then, if the <code>base</code> is 0 or 16, a prefix of 0x or 0X will be skipped.</p>
<p>Then, any number of valid digits for the given base will be parsed. Digits are 0..9,a..z, in that order. Digits a..z have values 10..35. The case of the letters is insignificant; upper case and lower case digits are treated the same.</p>
<p>Bases of 2 through 36 are valid, and 0 means 'autodetect', which means 10 by default, unless the potential number starts with 0x or 0X, which means base 16 will be assumed, or unless the potential number starts with 0, in which case base 8 will be assumed. If the base is outside 0,2,3..36, no digit will be parsed.</p>
<p>Digits are valid if their value is strictly smaller than the assumed base.</p>
<p>If endptr is NULL, *endptr will not be written.</p>
<dl class="section return"><dt>Returns</dt><dd>The parsed unsigned number.</dd></dl>
<p>*endptr is set to point to the first non-valid digit.</p>
<p>If converting the string to a number causes an overflow or underflow, (unsigned long)-1 is returned, and *endptr is set equal to nptr.</p>
<p>If not a single digit could be parsed, 0 is returned and *endptr is set equal to nptr. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">nptr</td><td>IN: The string containing the number to be parsed </td></tr>
<tr><td class="paramname">endptr</td><td>OUT: The pointer to the first character after the parsed number. </td></tr>
<tr><td class="paramname">base</td><td>IN: The base of the number (2..36) or 0. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga311071298c2fe3e5d7057f396a6acfdc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga311071298c2fe3e5d7057f396a6acfdc">&#9670;&nbsp;</a></span>strtol()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">long strtol </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>nptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char **&#160;</td>
<td class="paramname"><em>endptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>base</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A function to parse a signed number from a string and return it as a number. The behaviour is just like strtoul, but for signed numbers. </p>
<dl class="section return"><dt>Returns</dt><dd>The parsed signed number.</dd></dl>
<p>*endptr is set to point to the first non-valid digit.</p>
<p>If converting the string to a number causes an overflow, LONG_MAX is returned. If converting causes an underflow, LONG_MIN is returned. In both cases, *endptr is set equal to nptr.</p>
<p>If not a single digit could be parsed, 0 is returned and *endptr is set equal to nptr. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">nptr</td><td>IN: The string containing the number to be parsed </td></tr>
<tr><td class="paramname">endptr</td><td>OUT: The pointer to the first character after the parsed number. </td></tr>
<tr><td class="paramname">base</td><td>IN: The base of the number (2..36) or 0. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gae5835422eb2dfc17ea8deb3b15bcc541"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae5835422eb2dfc17ea8deb3b15bcc541">&#9670;&nbsp;</a></span>strtoull()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">unsigned long long strtoull </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>nptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char **&#160;</td>
<td class="paramname"><em>endptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>base</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A function to parse an unsigned number from a string and return it as a number. </p>
<p>At the beginning of the string, ASCII white-space characters, i.e., SPACE or TAB, will be skipped first. Then, any number of + and - will be parsed to possibly return a negated value. Then, if the <code>base</code> is 0 or 16, a prefix of 0x or 0X will be skipped.</p>
<p>Then, any number of valid digits for the given base will be parsed. Digits are 0..9,a..z, in that order. Digits a..z have values 10..35. The case of the letters is insignificant; upper case and lower case digits are treated the same.</p>
<p>Bases of 2 through 36 are valid, and 0 means 'autodetect', which means 10 by default, unless the potential number starts with 0x or 0X, which means base 16 will be assumed, or unless the potential number starts with 0, in which case base 8 will be assumed. If the base is outside 0,2,3..36, no digit will be parsed.</p>
<p>Digits are valid if their value is strictly smaller than the assumed base.</p>
<p>If endptr is NULL, *endptr will not be written.</p>
<dl class="section return"><dt>Returns</dt><dd>The parsed unsigned number.</dd></dl>
<p>*endptr is set to point to the first non-valid digit.</p>
<p>If converting the string to a number causes an overflow or underflow, (unsigned long long)-1 is returned, and *endptr is set equal to nptr.</p>
<p>If not a single digit could be parsed, 0 is returned and *endptr is set equal to nptr. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">nptr</td><td>IN: The string containing the number to be parsed </td></tr>
<tr><td class="paramname">endptr</td><td>OUT: The pointer to the first character after the parsed number. </td></tr>
<tr><td class="paramname">base</td><td>IN: The base of the number (2..36) or 0. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gafb901aa665b7e2e3e27025ca77fecd1b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafb901aa665b7e2e3e27025ca77fecd1b">&#9670;&nbsp;</a></span>strtoll()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">long long strtoll </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>nptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">char **&#160;</td>
<td class="paramname"><em>endptr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>base</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>A function to parse a signed number from a string and return it as a number. The behaviour is just like strtoul, but for signed numbers. </p>
<dl class="section return"><dt>Returns</dt><dd>The parsed signed number.</dd></dl>
<p>*endptr is set to point to the first non-valid digit.</p>
<p>If converting the string to a number causes an overflow, LLONG_MAX is returned. If converting causes an underflow, LLONG_MIN is returned. In both cases, *endptr is set equal to nptr.</p>
<p>If not a single digit could be parsed, 0 is returned and *endptr is set equal to nptr. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">nptr</td><td>IN: The string containing the number to be parsed </td></tr>
<tr><td class="paramname">endptr</td><td>OUT: The pointer to the first character after the parsed number. </td></tr>
<tr><td class="paramname">base</td><td>IN: The base of the number (2..36) or 0. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ga67f06ab80df39f288412af11ba5592a2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga67f06ab80df39f288412af11ba5592a2">&#9670;&nbsp;</a></span>bsearch()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* bsearch </td>
<td>(</td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>key</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void *&#160;</td>
<td class="paramname"><em>base</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>nmemb</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">size_t&#160;</td>
<td class="paramname"><em>size</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int(*)(const void *a, const void *b)&#160;</td>
<td class="paramname"><em>compar</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Binary search.</p>
<p>Search a sorted array for an entry in O(log n) time.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">[IN]</td><td>key: Pointer to the key to search for </td></tr>
<tr><td class="paramname">[IN]</td><td>base: Base address of the array </td></tr>
<tr><td class="paramname">[IN]</td><td>nmemb: Number of elements in the array </td></tr>
<tr><td class="paramname">[IN]</td><td>size: Size of each element (in bytes) </td></tr>
<tr><td class="paramname">[IN]</td><td>compar: Comparison function: -1,0,+1 valued (like strcmp). <code>key</code> is always passed as the first object to this comparison function.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The pointer to the found array index if it was found, or NULL if the entry is not found. If multiple array elements are equal to the key, it is unspecified which element is returned by this function. </dd></dl>
</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="footer">(C) Copyright SYSGO AG</li>
</ul>
</div>
</body>
</html>