Files
moslab-code/doc/source/html/classL4_1_1Scheduler.html
2025-09-12 15:55:45 +02:00

452 lines
44 KiB
HTML

<!-- HTML header for doxygen 1.9.1-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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.15.0"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>L4Re Operating System Framework: L4::Scheduler Class Reference</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="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript" src="cookie.js"></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" />
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
<link href="l4re-awesome.css" rel="stylesheet" type="text/css"/>
</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: 56px;">
<td id="projectlogo"><img alt="Logo" src="L4Re_rgb_logo_quer_hg_h55.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">L4Re Operating System Framework
</div>
<div id="projectbrief">Interface and Usage Documentation</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.15.0 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search/",'.html');
</script>
<script type="text/javascript">
$(function() { codefold.init(); });
</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',true);
$(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">
$(function(){initNavTree('classL4_1_1Scheduler.html','',''); });
</script>
<div id="container">
<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">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div class="header">
<div class="headertitle"><div class="title">L4::Scheduler Class Reference</div></div>
</div><!--header-->
<div class="contents">
<p>C++ interface of the <a class="el" href="classL4_1_1Scheduler.html" title="C++ interface of the Scheduler kernel object, see Scheduler for the C interface.">Scheduler</a> kernel object, see <a class="el" href="group__l4__scheduler__api.html">Scheduler</a> for the C interface.
<a href="#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="scheduler_source.html">scheduler</a>&gt;</code></p>
<div id="dynsection-0" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Inheritance diagram for L4::Scheduler:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4_1_1Scheduler__inherit__graph.svg" width="471" height="951"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<div id="dynsection-1" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Collaboration diagram for L4::Scheduler:</div>
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4_1_1Scheduler__coll__graph.svg" width="471" height="951"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-pub-methods" class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:aa6de6dfa45a4dbda8e78808cc81e0945" id="r_aa6de6dfa45a4dbda8e78808cc81e0945"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#aa6de6dfa45a4dbda8e78808cc81e0945">info</a> (<a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> *cpu_max, <a class="el" href="structl4__sched__cpu__set__t.html">l4_sched_cpu_set_t</a> *cpus, <a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> *sched_classes=nullptr, <a class="el" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *utcb=<a class="el" href="group__l4__utcb__api.html#gadc099b4a59e1d99638c72c11a8c8b644">l4_utcb</a>()) const noexcept</td></tr>
<tr class="memdesc:aa6de6dfa45a4dbda8e78808cc81e0945"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get scheduler information. <br /></td></tr>
<tr class="memitem:acc86cb4df9b2aad35730b209e0c98089" id="r_acc86cb4df9b2aad35730b209e0c98089"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#acc86cb4df9b2aad35730b209e0c98089">run_thread</a> (<a class="el" href="classL4_1_1Ipc_1_1Cap.html">Ipc::Cap</a>&lt; <a class="el" href="classL4_1_1Thread.html">Thread</a> &gt; thread, <a class="el" href="structl4__sched__param__t.html">l4_sched_param_t</a> const &amp;sp)</td></tr>
<tr class="memdesc:acc86cb4df9b2aad35730b209e0c98089"><td class="mdescLeft">&#160;</td><td class="mdescRight">Run a thread on a <a class="el" href="classL4_1_1Scheduler.html" title="C++ interface of the Scheduler kernel object, see Scheduler for the C interface.">Scheduler</a>. <br /></td></tr>
<tr class="memitem:a0ab0511264542f083786e88ee1edd2e4" id="r_a0ab0511264542f083786e88ee1edd2e4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a0ab0511264542f083786e88ee1edd2e4">idle_time</a> (<a class="el" href="structl4__sched__cpu__set__t.html">l4_sched_cpu_set_t</a> const &amp;cpus, <a class="el" href="group__l4__basic__types.html#gab71da24eb7cda2c035f18b862309b101">l4_kernel_clock_t</a> *us)</td></tr>
<tr class="memdesc:a0ab0511264542f083786e88ee1edd2e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query the idle time (in µs) of a CPU. <br /></td></tr>
<tr class="memitem:a8f8565546f77600a08379306508935e4" id="r_a8f8565546f77600a08379306508935e4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="#a8f8565546f77600a08379306508935e4">is_online</a> (<a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> cpu, <a class="el" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *utcb=<a class="el" href="group__l4__utcb__api.html#gadc099b4a59e1d99638c72c11a8c8b644">l4_utcb</a>()) const noexcept</td></tr>
<tr class="memdesc:a8f8565546f77600a08379306508935e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Query if a CPU is online. <br /></td></tr>
<tr class="inherit_header pub_methods_classL4_1_1Icu"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classL4_1_1Icu')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Public Member Functions inherited from <a class="el" href="classL4_1_1Icu.html">L4::Icu</a></td></tr>
<tr class="memitem:ada7541da586ea09b925b4d90d7dc357e inherit pub_methods_classL4_1_1Icu" id="r_ada7541da586ea09b925b4d90d7dc357e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Icu.html#ada7541da586ea09b925b4d90d7dc357e">bind</a> (unsigned irqnum, <a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="structL4_1_1Triggerable.html">Triggerable</a> &gt; irq, <a class="el" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *utcb=<a class="el" href="group__l4__utcb__api.html#gadc099b4a59e1d99638c72c11a8c8b644">l4_utcb</a>()) noexcept</td></tr>
<tr class="memdesc:ada7541da586ea09b925b4d90d7dc357e inherit pub_methods_classL4_1_1Icu"><td class="mdescLeft">&#160;</td><td class="mdescRight">Bind an interrupt line of an interrupt controller to an interrupt object. <br /></td></tr>
<tr class="memitem:aa34e56cdac798b1949fcc00553386b8b inherit pub_methods_classL4_1_1Icu" id="r_aa34e56cdac798b1949fcc00553386b8b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Icu.html#aa34e56cdac798b1949fcc00553386b8b">unbind</a> (unsigned irqnum, <a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="structL4_1_1Triggerable.html">Triggerable</a> &gt; irq, <a class="el" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *utcb=<a class="el" href="group__l4__utcb__api.html#gadc099b4a59e1d99638c72c11a8c8b644">l4_utcb</a>()) noexcept</td></tr>
<tr class="memdesc:aa34e56cdac798b1949fcc00553386b8b inherit pub_methods_classL4_1_1Icu"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove binding of an interrupt line from the interrupt controller object. <br /></td></tr>
<tr class="memitem:a356cfa88076c92e121ab7760d50d5f18 inherit pub_methods_classL4_1_1Icu" id="r_a356cfa88076c92e121ab7760d50d5f18"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Icu.html#a356cfa88076c92e121ab7760d50d5f18">info</a> (<a class="el" href="structl4__icu__info__t.html">l4_icu_info_t</a> *info, <a class="el" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *utcb=<a class="el" href="group__l4__utcb__api.html#gadc099b4a59e1d99638c72c11a8c8b644">l4_utcb</a>()) noexcept</td></tr>
<tr class="memdesc:a356cfa88076c92e121ab7760d50d5f18 inherit pub_methods_classL4_1_1Icu"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get information about the ICU features. <br /></td></tr>
<tr class="memitem:a16857d27edd9799b0f2da2f244968463 inherit pub_methods_classL4_1_1Icu" id="r_a16857d27edd9799b0f2da2f244968463"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Icu.html#a16857d27edd9799b0f2da2f244968463">msi_info</a> (<a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> irqnum, <a class="el" href="group__l4__basic__types.html#gaf3331c485014bd12a9e4f9d27a55e689">l4_uint64_t</a> source, <a class="el" href="structl4__icu__msi__info__t.html">l4_icu_msi_info_t</a> *msi_info)</td></tr>
<tr class="memdesc:a16857d27edd9799b0f2da2f244968463 inherit pub_methods_classL4_1_1Icu"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get MSI info about IRQ. <br /></td></tr>
<tr class="memitem:ab58aa015a5216a0dece5d85089b42aaa inherit pub_methods_classL4_1_1Icu" id="r_ab58aa015a5216a0dece5d85089b42aaa"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Icu.html#ab58aa015a5216a0dece5d85089b42aaa">mask</a> (unsigned irqnum, <a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> *label=0, <a class="el" href="unionl4__timeout__t.html">l4_timeout_t</a> to=<a class="el" href="group__l4__timeout__api.html#gaf01c5e1475efc4f33bc7d1985f7320d3">L4_IPC_NEVER</a>, <a class="el" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *utcb=<a class="el" href="group__l4__utcb__api.html#gadc099b4a59e1d99638c72c11a8c8b644">l4_utcb</a>()) noexcept</td></tr>
<tr class="memdesc:ab58aa015a5216a0dece5d85089b42aaa inherit pub_methods_classL4_1_1Icu"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mask an IRQ line. <br /></td></tr>
<tr class="memitem:a4258b1c32fc968b66a1ce15191f51b8b inherit pub_methods_classL4_1_1Icu" id="r_a4258b1c32fc968b66a1ce15191f51b8b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Icu.html#a4258b1c32fc968b66a1ce15191f51b8b">set_mode</a> (unsigned irqnum, <a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> mode, <a class="el" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *utcb=<a class="el" href="group__l4__utcb__api.html#gadc099b4a59e1d99638c72c11a8c8b644">l4_utcb</a>()) noexcept</td></tr>
<tr class="memdesc:a4258b1c32fc968b66a1ce15191f51b8b inherit pub_methods_classL4_1_1Icu"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set interrupt mode. <br /></td></tr>
<tr class="inherit_header pub_methods_classL4_1_1Irq__eoi"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pub_methods_classL4_1_1Irq__eoi')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Public Member Functions inherited from <a class="el" href="classL4_1_1Irq__eoi.html">L4::Irq_eoi</a></td></tr>
<tr class="memitem:a2143eb2495d0135bc432efc362845483 inherit pub_methods_classL4_1_1Irq__eoi" id="r_a2143eb2495d0135bc432efc362845483"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classL4_1_1Irq__eoi.html#a2143eb2495d0135bc432efc362845483">unmask</a> (unsigned irqnum, <a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> *label=0, <a class="el" href="unionl4__timeout__t.html">l4_timeout_t</a> to=<a class="el" href="group__l4__timeout__api.html#gaf01c5e1475efc4f33bc7d1985f7320d3">L4_IPC_NEVER</a>, <a class="el" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *utcb=<a class="el" href="group__l4__utcb__api.html#gadc099b4a59e1d99638c72c11a8c8b644">l4_utcb</a>()) noexcept</td></tr>
<tr class="memdesc:a2143eb2495d0135bc432efc362845483 inherit pub_methods_classL4_1_1Irq__eoi"><td class="mdescLeft">&#160;</td><td class="mdescRight">Unmask the given interrupt line. <br /></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 id="header-inherited" class="groupheader"><a id="inherited" name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pro_types_classL4_1_1Kobject__t"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_types_classL4_1_1Kobject__t')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Protected Types inherited from <a class="el" href="classL4_1_1Kobject__t.html">L4::Kobject_t&lt; Scheduler, Icu, L4_PROTO_SCHEDULER, Type_info::Demand_t&lt; 1 &gt; &gt;</a></td></tr>
<tr class="memitem:af7df35ba5bf68ef5993e605a6b62328a inherit pro_types_classL4_1_1Kobject__t" id="r_af7df35ba5bf68ef5993e605a6b62328a"><td class="memItemLeft" align="right" valign="top">
typedef <a class="el" href="classL4_1_1Scheduler.html">Scheduler</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Class</b></td></tr>
<tr class="memdesc:af7df35ba5bf68ef5993e605a6b62328a inherit pro_types_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">The target interface type (inheriting from <a class="el" href="classL4_1_1Kobject__t.html" title="Helper class to create an L4Re interface class that is derived from a single base class.">Kobject_t</a>). <br /></td></tr>
<tr class="memitem:a0d83157994565e9c01f10006bdda2efa inherit pro_types_classL4_1_1Kobject__t" id="r_a0d83157994565e9c01f10006bdda2efa"><td class="memItemLeft" align="right" valign="top">
typedef Typeid::Iface&lt; PROTO, <a class="el" href="classL4_1_1Scheduler.html">Scheduler</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>__Iface</b></td></tr>
<tr class="memdesc:a0d83157994565e9c01f10006bdda2efa inherit pro_types_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">The interface description for the derived class. <br /></td></tr>
<tr class="memitem:afc2feec2f4a15e85286aabfa15c53e06 inherit pro_types_classL4_1_1Kobject__t" id="r_afc2feec2f4a15e85286aabfa15c53e06"><td class="memItemLeft" align="right" valign="top">
typedef Typeid::Merge_list&lt; Typeid::Iface_list&lt; <a class="el" href="classL4_1_1Kobject__t.html#a0d83157994565e9c01f10006bdda2efa">__Iface</a> &gt;, typename Icu::__Iface_list &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>__Iface_list</b></td></tr>
<tr class="memdesc:afc2feec2f4a15e85286aabfa15c53e06 inherit pro_types_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">The list of all RPC interfaces provided directly or through inheritance. <br /></td></tr>
<tr class="inherit_header pro_types_classL4_1_1Kobject__t"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_types_classL4_1_1Kobject__t')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Protected Types inherited from <a class="el" href="classL4_1_1Kobject__t.html">L4::Kobject_t&lt; Icu, Irq_eoi, L4_PROTO_IRQ, Type_info::Demand_t&lt; 1 &gt; &gt;</a></td></tr>
<tr class="memitem:af7df35ba5bf68ef5993e605a6b62328a inherit pro_types_classL4_1_1Kobject__t" id="r_af7df35ba5bf68ef5993e605a6b62328a"><td class="memItemLeft" align="right" valign="top">
typedef <a class="el" href="classL4_1_1Icu.html">Icu</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Class</b></td></tr>
<tr class="memdesc:af7df35ba5bf68ef5993e605a6b62328a inherit pro_types_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">The target interface type (inheriting from <a class="el" href="classL4_1_1Kobject__t.html" title="Helper class to create an L4Re interface class that is derived from a single base class.">Kobject_t</a>). <br /></td></tr>
<tr class="memitem:a0d83157994565e9c01f10006bdda2efa inherit pro_types_classL4_1_1Kobject__t" id="r_a0d83157994565e9c01f10006bdda2efa"><td class="memItemLeft" align="right" valign="top">
typedef Typeid::Iface&lt; PROTO, <a class="el" href="classL4_1_1Icu.html">Icu</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>__Iface</b></td></tr>
<tr class="memdesc:a0d83157994565e9c01f10006bdda2efa inherit pro_types_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">The interface description for the derived class. <br /></td></tr>
<tr class="memitem:afc2feec2f4a15e85286aabfa15c53e06 inherit pro_types_classL4_1_1Kobject__t" id="r_afc2feec2f4a15e85286aabfa15c53e06"><td class="memItemLeft" align="right" valign="top">
typedef Typeid::Merge_list&lt; Typeid::Iface_list&lt; <a class="el" href="classL4_1_1Kobject__t.html#a0d83157994565e9c01f10006bdda2efa">__Iface</a> &gt;, typename Irq_eoi::__Iface_list &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>__Iface_list</b></td></tr>
<tr class="memdesc:afc2feec2f4a15e85286aabfa15c53e06 inherit pro_types_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">The list of all RPC interfaces provided directly or through inheritance. <br /></td></tr>
<tr class="inherit_header pro_methods_classL4_1_1Kobject__t"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classL4_1_1Kobject__t')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Protected Member Functions inherited from <a class="el" href="classL4_1_1Kobject__t.html">L4::Kobject_t&lt; Scheduler, Icu, L4_PROTO_SCHEDULER, Type_info::Demand_t&lt; 1 &gt; &gt;</a></td></tr>
<tr class="memitem:a3d80fec7e057d575ec4b393437f05f8a inherit pro_methods_classL4_1_1Kobject__t" id="r_a3d80fec7e057d575ec4b393437f05f8a"><td class="memItemLeft" align="right" valign="top">
<a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="classL4_1_1Kobject__t.html#af7df35ba5bf68ef5993e605a6b62328a">Class</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>c</b> () const noexcept</td></tr>
<tr class="memdesc:a3d80fec7e057d575ec4b393437f05f8a inherit pro_methods_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the capability to ourselves. <br /></td></tr>
<tr class="inherit_header pro_methods_classL4_1_1Kobject__t"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_methods_classL4_1_1Kobject__t')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Protected Member Functions inherited from <a class="el" href="classL4_1_1Kobject__t.html">L4::Kobject_t&lt; Icu, Irq_eoi, L4_PROTO_IRQ, Type_info::Demand_t&lt; 1 &gt; &gt;</a></td></tr>
<tr class="memitem:a3d80fec7e057d575ec4b393437f05f8a inherit pro_methods_classL4_1_1Kobject__t" id="r_a3d80fec7e057d575ec4b393437f05f8a"><td class="memItemLeft" align="right" valign="top">
<a class="el" href="classL4_1_1Cap.html">L4::Cap</a>&lt; <a class="el" href="classL4_1_1Kobject__t.html#af7df35ba5bf68ef5993e605a6b62328a">Class</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>c</b> () const noexcept</td></tr>
<tr class="memdesc:a3d80fec7e057d575ec4b393437f05f8a inherit pro_methods_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the capability to ourselves. <br /></td></tr>
<tr class="inherit_header pro_static_methods_classL4_1_1Kobject__t"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_static_methods_classL4_1_1Kobject__t')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Static Protected Member Functions inherited from <a class="el" href="classL4_1_1Kobject__t.html">L4::Kobject_t&lt; Scheduler, Icu, L4_PROTO_SCHEDULER, Type_info::Demand_t&lt; 1 &gt; &gt;</a></td></tr>
<tr class="memitem:a7433b8eed587278821dd496864f75363 inherit pro_static_methods_classL4_1_1Kobject__t" id="r_a7433b8eed587278821dd496864f75363"><td class="memItemLeft" align="right" valign="top">
static void&#160;</td><td class="memItemRight" valign="bottom"><b>__check_protocols__</b> () noexcept</td></tr>
<tr class="memdesc:a7433b8eed587278821dd496864f75363 inherit pro_static_methods_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper to check for protocol conflicts. <br /></td></tr>
<tr class="inherit_header pro_static_methods_classL4_1_1Kobject__t"><td colspan="2" onclick="javascript:dynsection.toggleInherit('pro_static_methods_classL4_1_1Kobject__t')"><span class="dynarrow"><span class="arrowhead closed"></span></span>Static Protected Member Functions inherited from <a class="el" href="classL4_1_1Kobject__t.html">L4::Kobject_t&lt; Icu, Irq_eoi, L4_PROTO_IRQ, Type_info::Demand_t&lt; 1 &gt; &gt;</a></td></tr>
<tr class="memitem:a7433b8eed587278821dd496864f75363 inherit pro_static_methods_classL4_1_1Kobject__t" id="r_a7433b8eed587278821dd496864f75363"><td class="memItemLeft" align="right" valign="top">
static void&#160;</td><td class="memItemRight" valign="bottom"><b>__check_protocols__</b> () noexcept</td></tr>
<tr class="memdesc:a7433b8eed587278821dd496864f75363 inherit pro_static_methods_classL4_1_1Kobject__t"><td class="mdescLeft">&#160;</td><td class="mdescRight">Helper to check for protocol conflicts. <br /></td></tr>
</table>
<a name="details" id="details"></a><h2 id="header-details" class="groupheader">Detailed Description</h2>
<div class="textblock"><p>C++ interface of the <a class="el" href="classL4_1_1Scheduler.html" title="C++ interface of the Scheduler kernel object, see Scheduler for the C interface.">Scheduler</a> kernel object, see <a class="el" href="group__l4__scheduler__api.html">Scheduler</a> for the C interface. </p>
<p>The <a class="el" href="classL4_1_1Scheduler.html" title="C++ interface of the Scheduler kernel object, see Scheduler for the C interface.">Scheduler</a> interface allows a client to manage CPU resources. The API provides functions to query scheduler information, check the online state of CPUs, query CPU idle time and to start threads on defined CPU sets.</p>
<p>The scheduler offers IRQ number 0, which triggers when the number of online cores changes, e.g. due to hotplug events.</p>
<p>The <a class="el" href="classL4_1_1Scheduler.html" title="C++ interface of the Scheduler kernel object, see Scheduler for the C interface.">Scheduler</a> interface inherits from <a class="el" href="classL4_1_1Icu.html" title="C++ Icu interface, see Interrupt controller for the C interface.">L4::Icu</a> and <a class="el" href="classL4_1_1Irq__eoi.html" title="Interface for sending an unmask message to an object.">L4::Irq_eoi</a> for managing the scheduler virtual device IRQ which, in contrast to hardware IRQs, implements a limited functionality:</p><ul>
<li>Only IRQ line 0 is supported, no MSI vectors.</li>
<li>The IRQ is edge-triggered and the IRQ mode cannot be changed.</li>
<li>As the IRQ is edge-triggered, it does not have to be explicitly unmasked.</li>
</ul>
<p>It depends on the platform, which hotplug events actually trigger the IRQ. Many platforms only support triggering the IRQ when a CPU core different from the boot CPU goes online.</p>
<dl class="section user"><dt>Include File</dt><dd><div class="fragment"><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="scheduler.html">l4/sys/scheduler</a>&gt;</span> </div>
<div class="ttc" id="ascheduler_html"><div class="ttname"><a href="scheduler.html">scheduler</a></div><div class="ttdoc">Scheduler object functions.</div></div>
</div><!-- fragment --> </dd></dl>
<p class="definition">Definition at line <a class="el" href="scheduler_source.html#l00046">46</a> of file <a class="el" href="scheduler_source.html">scheduler</a>.</p>
</div><a name="doc-func-members" id="doc-func-members"></a><h2 id="header-doc-func-members" class="groupheader">Member Function Documentation</h2>
<a id="a0ab0511264542f083786e88ee1edd2e4" name="a0ab0511264542f083786e88ee1edd2e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0ab0511264542f083786e88ee1edd2e4">&#9670;&#160;</a></span>idle_time()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a> L4::Scheduler::idle_time </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structl4__sched__cpu__set__t.html">l4_sched_cpu_set_t</a> const &amp;</td> <td class="paramname"><span class="paramname"><em>cpus</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__l4__basic__types.html#gab71da24eb7cda2c035f18b862309b101">l4_kernel_clock_t</a> *</td> <td class="paramname"><span class="paramname"><em>us</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Query the idle time (in µs) of a CPU. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir"></td><td class="paramname">cpus</td><td>Set of CPUs to query. Only the idle time of the first selected CPU in <span class="tt">cpus.map</span> is queried. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">us</td><td>Idle time of queried CPU in µs.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">0</td><td>Success. </td></tr>
<tr><td class="paramname">-L4_EINVAL</td><td>Invalid CPU requested in cpu set.</td></tr>
</table>
</dd>
</dl>
<p>This function retrieves the idle time in µs of the first selected CPU in <span class="tt">cpus.map</span>. The idle time is the accumulated time a CPU has spent in the idle thread since its last reset. To calculate a load estimate <span class="tt">l</span> one has to retrieve the idle time at the beginning (<span class="tt">i1</span>) and the end (<span class="tt">i2</span>) of a known time interval <span class="tt">t</span>. The load is then calculated as l = 1 - (i2 - i1)/t.</p>
<p>The idle time is only defined for online CPUs. Reading the idle time from offline CPUs is undefined and may result in either getting -L4_EINVAL or calculating an estimated (incorrect) load of 1.</p>
<dl class="section note"><dt>Note</dt><dd>The idle time statistics of remote CPUs is updated on context switch events only, hence may not be up-to-date when requested cross-CPU. To get up-to-date idle time you should use a thread running on the same CPU of which the idle time is requested. </dd></dl>
<p class="reference">Referenced by <a class="el" href="#acc86cb4df9b2aad35730b209e0c98089">run_thread()</a>.</p>
<div id="dynsection-2" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
<div id="dynsection-2-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-2-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4_1_1Scheduler_a0ab0511264542f083786e88ee1edd2e4_icgraph.svg" width="376" height="75"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
<a id="aa6de6dfa45a4dbda8e78808cc81e0945" name="aa6de6dfa45a4dbda8e78808cc81e0945"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa6de6dfa45a4dbda8e78808cc81e0945">&#9670;&#160;</a></span>info()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a> L4::Scheduler::info </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> *</td> <td class="paramname"><span class="paramname"><em>cpu_max</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structl4__sched__cpu__set__t.html">l4_sched_cpu_set_t</a> *</td> <td class="paramname"><span class="paramname"><em>cpus</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a> *</td> <td class="paramname"><span class="paramname"><em>sched_classes</em></span><span class="paramdefsep"> = </span><span class="paramdefval">nullptr</span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *</td> <td class="paramname"><span class="paramname"><em>utcb</em></span><span class="paramdefsep"> = </span><span class="paramdefval"><a class="el" href="group__l4__utcb__api.html#gadc099b4a59e1d99638c72c11a8c8b644">l4_utcb</a>()</span>&#160;) const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel noexcept">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Get scheduler information. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[out]</td><td class="paramname">cpu_max</td><td>Maximum number of CPUs ever available. Optional, can be nullptr. </td></tr>
<tr><td class="paramdir">[in,out]</td><td class="paramname">cpus</td><td><em class="arg">cpus.offset</em> is first CPU of interest. <em class="arg">cpus.granularity</em> (see <a class="el" href="structl4__sched__cpu__set__t.html" title="CPU sets.">l4_sched_cpu_set_t</a>). <em class="arg">cpus.map</em> Bitmap of online CPUs. Must not be nullptr. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">sched_classes</td><td>A bitmap of available scheduling classes (see <a class="el" href="group__l4__scheduler__api.html#ga60f7dd34659eca637a4443d124540dc4" title="Supported scheduler classes.">L4_scheduler_classes</a>). Pass nullptr to omit this information. </td></tr>
<tr><td class="paramdir"></td><td class="paramname">utcb</td><td>UTCB to be used for this operation, shall be the UTCB of the calling thread. Defaults to <a class="el" href="group__l4__utcb__api.html#gadc099b4a59e1d99638c72c11a8c8b644" title="Get the UTCB address.">l4_utcb</a>.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">0</td><td>Success. </td></tr>
<tr><td class="paramname">-L4_ERANGE</td><td>The given CPU offset is larger than the maximum number of CPUs. </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="scheduler_source.html#l00074">74</a> of file <a class="el" href="scheduler_source.html">scheduler</a>.</p>
<p class="reference">References <a class="el" href="____typeinfo_8h_source.html#l00769">L4::Kobject_t&lt; Scheduler, Icu, L4_PROTO_SCHEDULER, Type_info::Demand_t&lt; 1 &gt; &gt;::c()</a>, <a class="el" href="scheduler_8h_source.html#l00072">l4_sched_cpu_set_t::gran_offset</a>, and <a class="el" href="scheduler_8h_source.html#l00077">l4_sched_cpu_set_t::map</a>.</p>
<div id="dynsection-3" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
<div id="dynsection-3-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-3-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4_1_1Scheduler_aa6de6dfa45a4dbda8e78808cc81e0945_cgraph.svg" width="432" height="66"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
<a id="a8f8565546f77600a08379306508935e4" name="a8f8565546f77600a08379306508935e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8f8565546f77600a08379306508935e4">&#9670;&#160;</a></span>is_online()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool L4::Scheduler::is_online </td>
<td>(</td>
<td class="paramtype"><a class="el" href="group__l4__basic__types.html#ga1c2c4b333f75b1d05b59855910f2b9cb">l4_umword_t</a></td> <td class="paramname"><span class="paramname"><em>cpu</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="group__l4__utcb__api.html#ga89be8a86d11c1d532b636cc2df1330fb">l4_utcb_t</a> *</td> <td class="paramname"><span class="paramname"><em>utcb</em></span><span class="paramdefsep"> = </span><span class="paramdefval"><a class="el" href="group__l4__utcb__api.html#gadc099b4a59e1d99638c72c11a8c8b644">l4_utcb</a>()</span>&#160;) const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel inline">inline</span><span class="mlabel noexcept">noexcept</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Query if a CPU is online. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cpu</td><td>CPU number whose online status should be queried. </td></tr>
<tr><td class="paramname">utcb</td><td>UTCB to be used for this operation, shall be the UTCB of the calling thread. Defaults to <a class="el" href="group__l4__utcb__api.html#gadc099b4a59e1d99638c72c11a8c8b644" title="Get the UTCB address.">l4_utcb</a>.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">true</td><td>The CPU is online. </td></tr>
<tr><td class="paramname">false</td><td>The CPU is offline </td></tr>
</table>
</dd>
</dl>
<p class="definition">Definition at line <a class="el" href="scheduler_source.html#l00154">154</a> of file <a class="el" href="scheduler_source.html">scheduler</a>.</p>
<p class="reference">References <a class="el" href="kobject_source.html#l00069">L4::Kobject::cap()</a>.</p>
<div id="dynsection-4" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
<div id="dynsection-4-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-4-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4_1_1Scheduler_a8f8565546f77600a08379306508935e4_cgraph.svg" width="358" height="36"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
<a id="acc86cb4df9b2aad35730b209e0c98089" name="acc86cb4df9b2aad35730b209e0c98089"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acc86cb4df9b2aad35730b209e0c98089">&#9670;&#160;</a></span>run_thread()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structl4__msgtag__t.html">l4_msgtag_t</a> L4::Scheduler::run_thread </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classL4_1_1Ipc_1_1Cap.html">Ipc::Cap</a>&lt; <a class="el" href="classL4_1_1Thread.html">Thread</a> &gt;</td> <td class="paramname"><span class="paramname"><em>thread</em></span>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structl4__sched__param__t.html">l4_sched_param_t</a> const &amp;</td> <td class="paramname"><span class="paramname"><em>sp</em></span>&#160;)</td>
</tr>
</table>
</div><div class="memdoc">
<p>Run a thread on a <a class="el" href="classL4_1_1Scheduler.html" title="C++ interface of the Scheduler kernel object, see Scheduler for the C interface.">Scheduler</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">thread</td><td>Capability of the thread to run. </td></tr>
<tr><td class="paramname">sp</td><td>Scheduling parameters.</td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">0</td><td>Success. </td></tr>
<tr><td class="paramname">-L4_EINVAL</td><td>Invalid size of the scheduling parameter.</td></tr>
</table>
</dd>
</dl>
<p>This function launches a thread on a CPU determined by the scheduling parameter <span class="tt">sp.affinity</span>. A thread can be intentionally stopped by migrating it on an offline or an invalid CPU. The thread is only guaranteed to run if the CPU it is migrated to is currently online.</p>
<dl class="section note"><dt>Note</dt><dd>If the target CPU is currently not online, there is no guarantee that the thread will ever run, even if the CPU comes online later on.</dd>
<dd>
A scheduler may impose a policy with regard to selecting CPUs. However the scheduler is required to ensure the following two properties:<ul>
<li>Two threads with disjoint CPU sets must be scheduled to different CPUs.</li>
<li>Two threads with identical CPU sets selecting only a single CPU must be scheduled to the same CPU. </li>
</ul>
</dd></dl>
<p class="reference">References <a class="el" href="#a0ab0511264542f083786e88ee1edd2e4">idle_time()</a>, <a class="el" href="scheduler_8h_source.html#l00273">L4_SCHEDULER_IDLE_TIME_OP</a>, and <a class="el" href="#acc86cb4df9b2aad35730b209e0c98089">run_thread()</a>.</p>
<p class="reference">Referenced by <a class="el" href="#acc86cb4df9b2aad35730b209e0c98089">run_thread()</a>.</p>
<div id="dynsection-5" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the call graph for this function:</div>
<div id="dynsection-5-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-5-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4_1_1Scheduler_acc86cb4df9b2aad35730b209e0c98089_cgraph.svg" width="376" height="75"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<div id="dynsection-6" onclick="return dynsection.toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"><span class="dynarrow"><span class="arrowhead closed"></span></span>Here is the caller graph for this function:</div>
<div id="dynsection-6-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-6-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" loading="lazy" frameborder="0" src="classL4_1_1Scheduler_acc86cb4df9b2aad35730b209e0c98089_icgraph.svg" width="150" height="75"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>l4/sys/<a class="el" href="scheduler_source.html">scheduler</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="page-nav" class="page-nav-panel">
<div id="page-nav-resize-handle"></div>
<div id="page-nav-tree">
<div id="page-nav-contents">
</div><!-- page-nav-contents -->
</div><!-- page-nav-tree -->
</div><!-- page-nav -->
</div><!-- container -->
<!-- HTML footer for doxygen 1.9.1-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a href="namespaceL4.html">L4</a></li><li class="navelem"><a href="classL4_1_1Scheduler.html">Scheduler</a></li>
<li class="footer">Generated on <span class="timestamp"></span> for L4Re Operating System Framework by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.15.0 </li>
</ul>
</div>
</body>
</html>