Skip to content

Commit 397c1ad

Browse files
committed
Add PageSize trait for defining 4K, 2M, and 1G huge pages (theseus-os#1031)
* All chunk-related types are now parameterized with a `P: PageSize` type parameter: * `Page` and `Frame`, which ensure that the underlying virtual or physical address is always properly aligned to the specified size. * `PageRange` and `FrameRange`, which ensure that the range of pages or frames are correctly aligned and only can be created in granular chunks of the given `PageSize`. * When iterating over a range of huge pages or frames, each step will be at the granularity of one huge page, which makes it easy to iterate of huge pages and huge frames in lockstep. * There are various implementations of the conversion traits `From` and `TryFrom` for normal and huge pages/frames and ranges. * The `PageSize` parameter can only be one of 3 marker structs: 1. `Page4K`: a normal 4KiB page (P1-level), which is the default. 2. `Page2M`: a P2-level huge page. 3. `Page1G`: a P3-level huge page. * This is only relevant to x86_64 at the moment, though we may add aarch64 huge page sizes in the future too. Co-authored-by: Kevin Boos <[email protected]> b521678
1 parent b1caafa commit 397c1ad

File tree

101 files changed

+1139
-471
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

101 files changed

+1139
-471
lines changed

doc/compositor/trait.CompositableRegion.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,16 +31,16 @@
3131
The <code>dest_coord</code> is the coordinate in the destination buffer (relative to its top-left corner)
3232
where the <code>src_fb</code> will be composited (starting at the <code>src_fb</code>’s top-left corner).
3333
<code>src_fb_row_range</code> is the index range of rows in the source framebuffer to blend.</p>
34-
</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-CompositableRegion-for-Coord" class="impl"><a class="srclink rightside" href="../src/compositor/lib.rs.html#94-118">source</a><a href="#impl-CompositableRegion-for-Coord" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.CompositableRegion.html" title="trait compositor::CompositableRegion">CompositableRegion</a> for Coord</h3></section></summary><div class="impl-items"><section id="method.row_range" class="method trait-impl"><a class="srclink rightside" href="../src/compositor/lib.rs.html#96-98">source</a><a href="#method.row_range" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.row_range" class="fn">row_range</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.isize.html">isize</a>&gt;</h4></section><section id="method.size" class="method trait-impl"><a class="srclink rightside" href="../src/compositor/lib.rs.html#101-103">source</a><a href="#method.size" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.size" class="fn">size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.usize.html">usize</a></h4></section><section id="method.blend_buffers" class="method trait-impl"><a class="srclink rightside" href="../src/compositor/lib.rs.html#105-117">source</a><a href="#method.blend_buffers" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.blend_buffers" class="fn">blend_buffers</a>&lt;P: Pixel&gt;(
34+
</div></details></div><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-CompositableRegion-for-Rectangle" class="impl"><a class="srclink rightside" href="../src/compositor/lib.rs.html#120-199">source</a><a href="#impl-CompositableRegion-for-Rectangle" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.CompositableRegion.html" title="trait compositor::CompositableRegion">CompositableRegion</a> for Rectangle</h3></section></summary><div class="impl-items"><section id="method.row_range" class="method trait-impl"><a class="srclink rightside" href="../src/compositor/lib.rs.html#122-124">source</a><a href="#method.row_range" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.row_range" class="fn">row_range</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.isize.html">isize</a>&gt;</h4></section><section id="method.size" class="method trait-impl"><a class="srclink rightside" href="../src/compositor/lib.rs.html#127-129">source</a><a href="#method.size" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.size" class="fn">size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.usize.html">usize</a></h4></section><section id="method.blend_buffers" class="method trait-impl"><a class="srclink rightside" href="../src/compositor/lib.rs.html#131-198">source</a><a href="#method.blend_buffers" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.blend_buffers" class="fn">blend_buffers</a>&lt;P: Pixel&gt;(
3535
&amp;self,
3636
src_fb: &amp;Framebuffer&lt;P&gt;,
3737
dest_fb: &amp;mut Framebuffer&lt;P&gt;,
3838
dest_coord: Coord,
39-
_src_fb_row_range: <a class="struct" href="https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.usize.html">usize</a>&gt;
40-
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.unit.html">()</a>, &amp;'static <a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.str.html">str</a>&gt;</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-CompositableRegion-for-Rectangle" class="impl"><a class="srclink rightside" href="../src/compositor/lib.rs.html#120-199">source</a><a href="#impl-CompositableRegion-for-Rectangle" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.CompositableRegion.html" title="trait compositor::CompositableRegion">CompositableRegion</a> for Rectangle</h3></section></summary><div class="impl-items"><section id="method.row_range-1" class="method trait-impl"><a class="srclink rightside" href="../src/compositor/lib.rs.html#122-124">source</a><a href="#method.row_range-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.row_range" class="fn">row_range</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.isize.html">isize</a>&gt;</h4></section><section id="method.size-1" class="method trait-impl"><a class="srclink rightside" href="../src/compositor/lib.rs.html#127-129">source</a><a href="#method.size-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.size" class="fn">size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.usize.html">usize</a></h4></section><section id="method.blend_buffers-1" class="method trait-impl"><a class="srclink rightside" href="../src/compositor/lib.rs.html#131-198">source</a><a href="#method.blend_buffers-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.blend_buffers" class="fn">blend_buffers</a>&lt;P: Pixel&gt;(
39+
src_fb_row_range: <a class="struct" href="https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.usize.html">usize</a>&gt;
40+
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.unit.html">()</a>, &amp;'static <a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.str.html">str</a>&gt;</h4></section></div></details><details class="toggle implementors-toggle"><summary><section id="impl-CompositableRegion-for-Coord" class="impl"><a class="srclink rightside" href="../src/compositor/lib.rs.html#94-118">source</a><a href="#impl-CompositableRegion-for-Coord" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.CompositableRegion.html" title="trait compositor::CompositableRegion">CompositableRegion</a> for Coord</h3></section></summary><div class="impl-items"><section id="method.row_range-1" class="method trait-impl"><a class="srclink rightside" href="../src/compositor/lib.rs.html#96-98">source</a><a href="#method.row_range-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.row_range" class="fn">row_range</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.isize.html">isize</a>&gt;</h4></section><section id="method.size-1" class="method trait-impl"><a class="srclink rightside" href="../src/compositor/lib.rs.html#101-103">source</a><a href="#method.size-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.size" class="fn">size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.usize.html">usize</a></h4></section><section id="method.blend_buffers-1" class="method trait-impl"><a class="srclink rightside" href="../src/compositor/lib.rs.html#105-117">source</a><a href="#method.blend_buffers-1" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.blend_buffers" class="fn">blend_buffers</a>&lt;P: Pixel&gt;(
4141
&amp;self,
4242
src_fb: &amp;Framebuffer&lt;P&gt;,
4343
dest_fb: &amp;mut Framebuffer&lt;P&gt;,
4444
dest_coord: Coord,
45-
src_fb_row_range: <a class="struct" href="https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.usize.html">usize</a>&gt;
45+
_src_fb_row_range: <a class="struct" href="https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.usize.html">usize</a>&gt;
4646
) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.unit.html">()</a>, &amp;'static <a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.str.html">str</a>&gt;</h4></section></div></details><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"></div><script src="../implementors/compositor/trait.CompositableRegion.js" data-ignore-extern-crates="shapes" async></script></section></div></main></body></html>

doc/context_switch_regular/fn.context_switch_regular.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Switches context from a regular Task to another regular Task."><title>context_switch_regular in context_switch_regular - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-f40c346f39d9abc1.css" id="mainThemeStyle"><div id="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="context_switch_regular" data-themes="" data-resource-suffix="" data-rustdoc-version="1.72.0-nightly (065a1f5df 2023-06-21)" data-search-js="search-95c92dd01058facf.js" data-settings-js="settings-de11bff964e9d4e5.js" data-settings-css="settings-8c76f75bfb6bd192.css" data-theme-light-css="light-0f8c037637f9eb3e.css" data-theme-dark-css="dark-1097f8e92a01e3cf.css" data-theme-ayu-css="ayu-614652228113ac93.css" ></div><script src="../static.files/storage-62ce34ea385b278a.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-190c35055d2a8300.js"></script><noscript><link rel="stylesheet" media="(prefers-color-scheme:light)" href="../static.files/light-0f8c037637f9eb3e.css"><link rel="stylesheet" media="(prefers-color-scheme:dark)" href="../static.files/dark-1097f8e92a01e3cf.css"><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="logo-container" href="../context_switch_regular/index.html"><img class="rust-logo" src="../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2></h2></nav><nav class="sidebar"><a class="logo-container" href="../context_switch_regular/index.html"><img class="rust-logo" src="../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><div class="sidebar-elems"><h2><a href="index.html">In context_switch_regular</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="index.html">context_switch_regular</a>::<wbr><a class="fn" href="#">context_switch_regular</a><button id="copy-path" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/context_switch_regular/x86_64.rs.html#146-156">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub unsafe extern &quot;C&quot; fn context_switch_regular(
1+
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Switches context from a regular Task to another regular Task."><title>context_switch_regular in context_switch_regular - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-f40c346f39d9abc1.css" id="mainThemeStyle"><div id="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="context_switch_regular" data-themes="" data-resource-suffix="" data-rustdoc-version="1.72.0-nightly (065a1f5df 2023-06-21)" data-search-js="search-95c92dd01058facf.js" data-settings-js="settings-de11bff964e9d4e5.js" data-settings-css="settings-8c76f75bfb6bd192.css" data-theme-light-css="light-0f8c037637f9eb3e.css" data-theme-dark-css="dark-1097f8e92a01e3cf.css" data-theme-ayu-css="ayu-614652228113ac93.css" ></div><script src="../static.files/storage-62ce34ea385b278a.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-190c35055d2a8300.js"></script><noscript><link rel="stylesheet" media="(prefers-color-scheme:light)" href="../static.files/light-0f8c037637f9eb3e.css"><link rel="stylesheet" media="(prefers-color-scheme:dark)" href="../static.files/dark-1097f8e92a01e3cf.css"><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc fn"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="logo-container" href="../context_switch_regular/index.html"><img class="rust-logo" src="../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2></h2></nav><nav class="sidebar"><a class="logo-container" href="../context_switch_regular/index.html"><img class="rust-logo" src="../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><div class="sidebar-elems"><h2><a href="index.html">In context_switch_regular</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Function <a href="index.html">context_switch_regular</a>::<wbr><a class="fn" href="#">context_switch_regular</a><button id="copy-path" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../src/context_switch_regular/x86_64.rs.html#152-162">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub unsafe extern &quot;C&quot; fn context_switch_regular(
22
_prev_stack_pointer: <a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.pointer.html">*mut </a><a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.usize.html">usize</a>,
33
_next_stack_pointer_value: <a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.usize.html">usize</a>
44
)</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Switches context from a regular Task to another regular Task.</p>

0 commit comments

Comments
 (0)