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>
302 lines
17 KiB
HTML
302 lines
17 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>OS_SCHED</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__OS__SCHED.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="#typedef-members">Typedefs</a> |
|
|
<a href="#enum-members">Enumerations</a> |
|
|
<a href="#func-members">Functions</a> </div>
|
|
<div class="headertitle">
|
|
<div class="title">OS_SCHED</div> </div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
<table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
|
|
Typedefs</h2></td></tr>
|
|
<tr class="memitem:gadd13a243a372831a92ef362c16a92fda"><td class="memItemLeft" align="right" valign="top"><a id="gadd13a243a372831a92ef362c16a92fda"></a>
|
|
typedef enum <a class="el" href="group__OS__SCHED.html#ga6f51d72f12e7a46be1d0d4088ef4dfa4">__sched_hook_id_e</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__OS__SCHED.html#gadd13a243a372831a92ef362c16a92fda">__sched_hook_id_t</a></td></tr>
|
|
<tr class="memdesc:gadd13a243a372831a92ef362c16a92fda"><td class="mdescLeft"> </td><td class="mdescRight">Scheduler hook identifier. <br /></td></tr>
|
|
<tr class="separator:gadd13a243a372831a92ef362c16a92fda"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ga386130560912629a1a317c182a426be7"><td class="memItemLeft" align="right" valign="top">typedef int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__OS__SCHED.html#ga386130560912629a1a317c182a426be7">__sched_hook_t</a>(unsigned cpu, pthread_t t_old, pthread_t t_new)</td></tr>
|
|
<tr class="memdesc:ga386130560912629a1a317c182a426be7"><td class="mdescLeft"> </td><td class="mdescRight">Data type for a scheduler hook function. <a href="#ga386130560912629a1a317c182a426be7">More...</a><br /></td></tr>
|
|
<tr class="separator:ga386130560912629a1a317c182a426be7"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
|
|
Enumerations</h2></td></tr>
|
|
<tr class="memitem:ga6f51d72f12e7a46be1d0d4088ef4dfa4"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="group__OS__SCHED.html#ga6f51d72f12e7a46be1d0d4088ef4dfa4">__sched_hook_id_e</a> { <a class="el" href="group__OS__SCHED.html#gga6f51d72f12e7a46be1d0d4088ef4dfa4af95565aa08a783e0e7e14ed66708094c">SCHED_SWITCH_HOOK</a>,
|
|
<a class="el" href="group__OS__SCHED.html#gga6f51d72f12e7a46be1d0d4088ef4dfa4a38af816fceb9942873eb80404f0d68ad">SCHED_PREEMPT_HOOK</a>
|
|
}<tr class="memdesc:ga6f51d72f12e7a46be1d0d4088ef4dfa4"><td class="mdescLeft"> </td><td class="mdescRight">Scheduler hook identifier. <a href="group__OS__SCHED.html#ga6f51d72f12e7a46be1d0d4088ef4dfa4">More...</a><br /></td></tr>
|
|
</td></tr>
|
|
<tr class="separator:ga6f51d72f12e7a46be1d0d4088ef4dfa4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table><table class="memberdecls">
|
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
|
|
Functions</h2></td></tr>
|
|
<tr class="memitem:ga5bb224a7e3484b75d66b21fbf409a487"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__OS__SCHED.html#ga386130560912629a1a317c182a426be7">__sched_hook_t</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__OS__SCHED.html#ga5bb224a7e3484b75d66b21fbf409a487">__set_sched_hook</a> (<a class="el" href="group__OS__SCHED.html#gadd13a243a372831a92ef362c16a92fda">__sched_hook_id_t</a> id, <a class="el" href="group__OS__SCHED.html#ga386130560912629a1a317c182a426be7">__sched_hook_t</a> *hook)</td></tr>
|
|
<tr class="memdesc:ga5bb224a7e3484b75d66b21fbf409a487"><td class="mdescLeft"> </td><td class="mdescRight">Install a scheduler hook. <a href="#ga5bb224a7e3484b75d66b21fbf409a487">More...</a><br /></td></tr>
|
|
<tr class="separator:ga5bb224a7e3484b75d66b21fbf409a487"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:ga03a212dbde24b0436e4a7fee378a8745"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__OS__SCHED.html#ga03a212dbde24b0436e4a7fee378a8745">__revert_sched_boost</a> (pthread_t thr)</td></tr>
|
|
<tr class="memdesc:ga03a212dbde24b0436e4a7fee378a8745"><td class="mdescLeft"> </td><td class="mdescRight">Revert scheduling parameter boost. <a href="#ga03a212dbde24b0436e4a7fee378a8745">More...</a><br /></td></tr>
|
|
<tr class="separator:ga03a212dbde24b0436e4a7fee378a8745"><td class="memSeparator" colspan="2"> </td></tr>
|
|
<tr class="memitem:gacae597ece8eee883e97feba4be3580a4"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__OS__SCHED.html#gacae597ece8eee883e97feba4be3580a4">__get_thread_schedparam</a> (pthread_t thr, int *prio, int *eff_prio, unsigned *cpu, int *state)</td></tr>
|
|
<tr class="memdesc:gacae597ece8eee883e97feba4be3580a4"><td class="mdescLeft"> </td><td class="mdescRight">Retrieve scheduling parameters of a thread. <a href="#gacae597ece8eee883e97feba4be3580a4">More...</a><br /></td></tr>
|
|
<tr class="separator:gacae597ece8eee883e97feba4be3580a4"><td class="memSeparator" colspan="2"> </td></tr>
|
|
</table>
|
|
<h2 class="groupheader">Typedef Documentation</h2>
|
|
<a id="ga386130560912629a1a317c182a426be7"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga386130560912629a1a317c182a426be7">◆ </a></span>__sched_hook_t</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">typedef int __sched_hook_t( unsigned cpu, pthread_t t_old, pthread_t t_new)</td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Data type for a scheduler hook function. </p>
|
|
<p><br />
|
|
Scheduler hook functions are called when the scheduler passes execution from one application thread to another. Depending on the hook function type, the hook may not be called for all thread switches. A hook function is called with three arguments, a logical CPU number <em>cpu</em> and two pthread_t type function arguments, the first thread identifier argument <em>t_old</em> is the previously executing (current) thread, the second argument <em>t_new</em> is the next thread to be scheduled. <br />
|
|
</p><dl class="section return"><dt>Returns</dt><dd>The return of SCHED_PREEMPT_HOOK hook functions is interpreted as a truth value influencing the scheduler decision. For other hook function types, the return value is ignored.</dd></dl>
|
|
<dl class="retval"><dt>Return values</dt><dd>
|
|
<table class="retval">
|
|
<tr><td class="paramname">!=0</td><td>The scheduler will switch from thread <em>t_old</em> to thread <em>t_new</em>. </td></tr>
|
|
<tr><td class="paramname">0</td><td>The scheduler will leave thread <em>t_old</em> as current thread, the thread's priority and scheduling quantum (if applicable) is boosted so that no further preemptions occur based on scheduling policy. The scheduling parameter boosting must be explicitly reverted by the application using <a class="el" href="group__OS__SCHED.html#ga03a212dbde24b0436e4a7fee378a8745" title="Revert scheduling parameter boost. ">__revert_sched_boost()</a>.</td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
<dl class="section note"><dt>Note</dt><dd>A scheduler hook is called in "interrupt context". It should only be used as debug or profiling instrument. The use of almost any POSIX API function is considered to be an error and leads to undefined system behavior. <br />
|
|
Scheduler hook functions must be reentrant. </dd></dl>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Enumeration Type Documentation</h2>
|
|
<a id="ga6f51d72f12e7a46be1d0d4088ef4dfa4"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga6f51d72f12e7a46be1d0d4088ef4dfa4">◆ </a></span>__sched_hook_id_e</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">enum <a class="el" href="group__OS__SCHED.html#ga6f51d72f12e7a46be1d0d4088ef4dfa4">__sched_hook_id_e</a></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Scheduler hook identifier. </p>
|
|
<table class="fieldtable">
|
|
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="gga6f51d72f12e7a46be1d0d4088ef4dfa4af95565aa08a783e0e7e14ed66708094c"></a>SCHED_SWITCH_HOOK </td><td class="fielddoc"><p>Thread switch hook, called for all thread switches. </p>
|
|
</td></tr>
|
|
<tr><td class="fieldname"><a id="gga6f51d72f12e7a46be1d0d4088ef4dfa4a38af816fceb9942873eb80404f0d68ad"></a>SCHED_PREEMPT_HOOK </td><td class="fielddoc"><p>Thread switch hook, called for thread preemption. </p>
|
|
</td></tr>
|
|
</table>
|
|
|
|
</div>
|
|
</div>
|
|
<h2 class="groupheader">Function Documentation</h2>
|
|
<a id="ga5bb224a7e3484b75d66b21fbf409a487"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga5bb224a7e3484b75d66b21fbf409a487">◆ </a></span>__set_sched_hook()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname"><a class="el" href="group__OS__SCHED.html#ga386130560912629a1a317c182a426be7">__sched_hook_t</a>* __set_sched_hook </td>
|
|
<td>(</td>
|
|
<td class="paramtype"><a class="el" href="group__OS__SCHED.html#gadd13a243a372831a92ef362c16a92fda">__sched_hook_id_t</a> </td>
|
|
<td class="paramname"><em>id</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype"><a class="el" href="group__OS__SCHED.html#ga386130560912629a1a317c182a426be7">__sched_hook_t</a> * </td>
|
|
<td class="paramname"><em>hook</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Install a scheduler hook. </p>
|
|
<p><br />
|
|
Installs function <em>hook</em> as new scheduler hook for scheduler hook function type <em>id</em>.</p>
|
|
<dl class="section return"><dt>Returns</dt><dd>If the system supports scheduler hooks, the function returns the previously installed scheduler hook, or the NULL-pointer if no hook was installed prior to the call. <br />
|
|
If the system does not support scheduler hooks, or <em>id</em> is an invalid hook function identifier, the function returns (__sched_hook_t *)-1. </dd></dl>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">id</td><td>Scheduler hook to modify. </td></tr>
|
|
<tr><td class="paramname">hook</td><td>Pointer to scheduler hook function, or NULL. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="ga03a212dbde24b0436e4a7fee378a8745"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#ga03a212dbde24b0436e4a7fee378a8745">◆ </a></span>__revert_sched_boost()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void __revert_sched_boost </td>
|
|
<td>(</td>
|
|
<td class="paramtype">pthread_t </td>
|
|
<td class="paramname"><em>thr</em></td><td>)</td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Revert scheduling parameter boost. </p>
|
|
<p><br />
|
|
Reverts scheduling parameter boosting initiated by a scheduler hook function of type SCHED_PREEMPT_HOOK for thread <em>thr</em>. The scheduling parameters of thread <em>thr</em> are restored according to the parameters most recently set by pthread_setschedparam() or pthread_setschedprio(), the thread is put at the tail of the thread list for its priority and a rescheduling request is issued. </p><dl class="section note"><dt>Note</dt><dd>No error checking is performed, calling the function with an invalid thread identifier, or a thread that has not been subject to scheduling parameter boost results in undefined behavior. </dd></dl>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">thr</td><td>Thread identifier. </td></tr>
|
|
</table>
|
|
</dd>
|
|
</dl>
|
|
|
|
</div>
|
|
</div>
|
|
<a id="gacae597ece8eee883e97feba4be3580a4"></a>
|
|
<h2 class="memtitle"><span class="permalink"><a href="#gacae597ece8eee883e97feba4be3580a4">◆ </a></span>__get_thread_schedparam()</h2>
|
|
|
|
<div class="memitem">
|
|
<div class="memproto">
|
|
<table class="memname">
|
|
<tr>
|
|
<td class="memname">void __get_thread_schedparam </td>
|
|
<td>(</td>
|
|
<td class="paramtype">pthread_t </td>
|
|
<td class="paramname"><em>thr</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int * </td>
|
|
<td class="paramname"><em>prio</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int * </td>
|
|
<td class="paramname"><em>eff_prio</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">unsigned * </td>
|
|
<td class="paramname"><em>cpu</em>, </td>
|
|
</tr>
|
|
<tr>
|
|
<td class="paramkey"></td>
|
|
<td></td>
|
|
<td class="paramtype">int * </td>
|
|
<td class="paramname"><em>state</em> </td>
|
|
</tr>
|
|
<tr>
|
|
<td></td>
|
|
<td>)</td>
|
|
<td></td><td></td>
|
|
</tr>
|
|
</table>
|
|
</div><div class="memdoc">
|
|
|
|
<p>Retrieve scheduling parameters of a thread. </p>
|
|
<p><br />
|
|
Retrieves 'snapshot' values of scheduling parameters for thread <em>thr</em> and stores data in non-NULL input arguments. The function can (and should only) be called from within a scheduler hook function.</p>
|
|
<dl class="section note"><dt>Note</dt><dd>No error checking is performed, calling the function with an invalid thread identifier results in undefined behavior. </dd></dl>
|
|
<dl class="params"><dt>Parameters</dt><dd>
|
|
<table class="params">
|
|
<tr><td class="paramname">thr</td><td>Thread identifier. </td></tr>
|
|
<tr><td class="paramname">prio</td><td>Storage for base scheduling priority. </td></tr>
|
|
<tr><td class="paramname">eff_prio</td><td>Effective Scheduling priority based on priority protocols and scheduling parameter boost. </td></tr>
|
|
<tr><td class="paramname">cpu</td><td>CPU number. </td></tr>
|
|
<tr><td class="paramname">state</td><td>Scheduling state, ready (1) or suspended (0). </td></tr>
|
|
</table>
|
|
</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>
|