rCore-Tutorial-v3/ch6/riscv/paging/trait.Mapper.html
2022-05-03 12:09:53 +00:00

29 lines
31 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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="API documentation for the Rust `Mapper` trait in crate `riscv`."><meta name="keywords" content="rust, rustlang, rust-lang, Mapper"><title>Mapper in riscv::paging - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script src="../../crates.js"></script><script defer src="../../main.js"></script>
<noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc trait"><!--[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="sidebar-logo" href="../../riscv/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div>
</a><h2 class="location"></h2>
</nav>
<nav class="sidebar"><a class="sidebar-logo" href="../../riscv/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div>
</a><h2 class="location"><a href="#">Mapper</a></h2><div class="sidebar-elems"><section><div class="block"><h3 class="sidebar-title"><a href="#associated-types">Associated Types</a></h3><ul><li><a href="#associatedtype.Entry">Entry</a></li><li><a href="#associatedtype.MapperFlush">MapperFlush</a></li><li><a href="#associatedtype.P">P</a></li><li><a href="#associatedtype.V">V</a></li></ul></div><div class="block"><h3 class="sidebar-title"><a href="#required-methods">Required Methods</a></h3><ul><li><a href="#tymethod.map_to">map_to</a></li><li><a href="#tymethod.ref_entry">ref_entry</a></li><li><a href="#tymethod.unmap">unmap</a></li></ul></div><div class="block"><h3 class="sidebar-title"><a href="#provided-methods">Provided Methods</a></h3><ul><li><a href="#method.identity_map">identity_map</a></li><li><a href="#method.translate_page">translate_page</a></li><li><a href="#method.update_flags">update_flags</a></li></ul></div><div class="block"><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div></section><h2 class="location"><a href="index.html">In riscv::paging</a></h2><div id="sidebar-vars" data-name="Mapper" data-ty="trait" data-relpath=""></div><script defer src="sidebar-items.js"></script></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../riscv/index.html"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></a><nav class="sub"><div class="theme-picker hidden"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu" title="themes"><img width="22" height="22" alt="Pick another theme!" src="../../brush.svg"></button><div id="theme-choices" role="menu"></div></div><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><button type="button" id="help-button" title="help">?</button><a id="settings-menu" href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></form></nav></div><section id="main-content" class="content"><div class="main-heading">
<h1 class="fqn"><span class="in-band">Trait <a href="../index.html">riscv</a>::<wbr><a href="index.html">paging</a>::<wbr><a class="trait" href="#">Mapper</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/riscv/paging/mapper.rs.html#5-70">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait Mapper {
type <a href="#associatedtype.P" class="associatedtype">P</a>: <a class="trait" href="../addr/trait.PhysicalAddress.html" title="trait riscv::addr::PhysicalAddress">PhysicalAddress</a>;
type <a href="#associatedtype.V" class="associatedtype">V</a>: <a class="trait" href="../addr/trait.VirtualAddress.html" title="trait riscv::addr::VirtualAddress">VirtualAddress</a>;
type <a href="#associatedtype.MapperFlush" class="associatedtype">MapperFlush</a>: <a class="trait" href="trait.MapperFlushable.html" title="trait riscv::paging::MapperFlushable">MapperFlushable</a>;
type <a href="#associatedtype.Entry" class="associatedtype">Entry</a>: <a class="trait" href="trait.PTE.html" title="trait riscv::paging::PTE">PTE</a>;
fn <a href="#tymethod.map_to" class="fnname">map_to</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;page: <a class="struct" href="../addr/page/struct.PageWith.html" title="struct riscv::addr::page::PageWith">PageWith</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.V" title="type riscv::paging::Mapper::V">V</a>&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame: <a class="struct" href="../addr/page/struct.FrameWith.html" title="struct riscv::addr::page::FrameWith">FrameWith</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.P" title="type riscv::paging::Mapper::P">P</a>&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags: <a class="struct" href="struct.PageTableFlags.html" title="struct riscv::paging::PageTableFlags">PageTableFlags</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allocator: &amp;mut impl <a class="trait" href="trait.FrameAllocatorFor.html" title="trait riscv::paging::FrameAllocatorFor">FrameAllocatorFor</a>&lt;&lt;Self as <a class="trait" href="trait.Mapper.html" title="trait riscv::paging::Mapper">Mapper</a>&gt;::<a class="associatedtype" href="trait.Mapper.html#associatedtype.P" title="type riscv::paging::Mapper::P">P</a>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.MapperFlush" title="type riscv::paging::Mapper::MapperFlush">MapperFlush</a>, <a class="enum" href="enum.MapToError.html" title="enum riscv::paging::MapToError">MapToError</a>&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.unmap" class="fnname">unmap</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;page: <a class="struct" href="../addr/page/struct.PageWith.html" title="struct riscv::addr::page::PageWith">PageWith</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.V" title="type riscv::paging::Mapper::V">V</a>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;) -&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.tuple.html">(</a><a class="struct" href="../addr/page/struct.FrameWith.html" title="struct riscv::addr::page::FrameWith">FrameWith</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.P" title="type riscv::paging::Mapper::P">P</a>&gt;, Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.MapperFlush" title="type riscv::paging::Mapper::MapperFlush">MapperFlush</a><a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.tuple.html">)</a>, <a class="enum" href="enum.UnmapError.html" title="enum riscv::paging::UnmapError">UnmapError</a>&lt;&lt;Self as <a class="trait" href="trait.Mapper.html" title="trait riscv::paging::Mapper">Mapper</a>&gt;::<a class="associatedtype" href="trait.Mapper.html#associatedtype.P" title="type riscv::paging::Mapper::P">P</a>&gt;&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.ref_entry" class="fnname">ref_entry</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;page: <a class="struct" href="../addr/page/struct.PageWith.html" title="struct riscv::addr::page::PageWith">PageWith</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.V" title="type riscv::paging::Mapper::V">V</a>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;&amp;mut Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.Entry" title="type riscv::paging::Mapper::Entry">Entry</a>, <a class="enum" href="enum.FlagUpdateError.html" title="enum riscv::paging::FlagUpdateError">FlagUpdateError</a>&gt;;
fn <a href="#method.update_flags" class="fnname">update_flags</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;page: <a class="struct" href="../addr/page/struct.PageWith.html" title="struct riscv::addr::page::PageWith">PageWith</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.V" title="type riscv::paging::Mapper::V">V</a>&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags: <a class="struct" href="struct.PageTableFlags.html" title="struct riscv::paging::PageTableFlags">PageTableFlags</a><br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.MapperFlush" title="type riscv::paging::Mapper::MapperFlush">MapperFlush</a>, <a class="enum" href="enum.FlagUpdateError.html" title="enum riscv::paging::FlagUpdateError">FlagUpdateError</a>&gt; { ... }
<span class="item-spacer"></span> fn <a href="#method.translate_page" class="fnname">translate_page</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;page: <a class="struct" href="../addr/page/struct.PageWith.html" title="struct riscv::addr::page::PageWith">PageWith</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.V" title="type riscv::paging::Mapper::V">V</a>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../addr/page/struct.FrameWith.html" title="struct riscv::addr::page::FrameWith">FrameWith</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.P" title="type riscv::paging::Mapper::P">P</a>&gt;&gt; { ... }
<span class="item-spacer"></span> fn <a href="#method.identity_map" class="fnname">identity_map</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;frame: <a class="struct" href="../addr/page/struct.FrameWith.html" title="struct riscv::addr::page::FrameWith">FrameWith</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.P" title="type riscv::paging::Mapper::P">P</a>&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags: <a class="struct" href="struct.PageTableFlags.html" title="struct riscv::paging::PageTableFlags">PageTableFlags</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;allocator: &amp;mut impl <a class="trait" href="trait.FrameAllocatorFor.html" title="trait riscv::paging::FrameAllocatorFor">FrameAllocatorFor</a>&lt;&lt;Self as <a class="trait" href="trait.Mapper.html" title="trait riscv::paging::Mapper">Mapper</a>&gt;::<a class="associatedtype" href="trait.Mapper.html#associatedtype.P" title="type riscv::paging::Mapper::P">P</a>&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.MapperFlush" title="type riscv::paging::Mapper::MapperFlush">MapperFlush</a>, <a class="enum" href="enum.MapToError.html" title="enum riscv::paging::MapToError">MapToError</a>&gt; { ... }
}</code></pre></div><h2 id="associated-types" class="small-section-header">Associated Types<a href="#associated-types" class="anchor"></a></h2><div class="methods"><div id="associatedtype.P" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/riscv/paging/mapper.rs.html#6">source</a></div><h4 class="code-header">type <a href="#associatedtype.P" class="associatedtype">P</a>: <a class="trait" href="../addr/trait.PhysicalAddress.html" title="trait riscv::addr::PhysicalAddress">PhysicalAddress</a></h4></div><div id="associatedtype.V" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/riscv/paging/mapper.rs.html#7">source</a></div><h4 class="code-header">type <a href="#associatedtype.V" class="associatedtype">V</a>: <a class="trait" href="../addr/trait.VirtualAddress.html" title="trait riscv::addr::VirtualAddress">VirtualAddress</a></h4></div><div id="associatedtype.MapperFlush" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/riscv/paging/mapper.rs.html#8">source</a></div><h4 class="code-header">type <a href="#associatedtype.MapperFlush" class="associatedtype">MapperFlush</a>: <a class="trait" href="trait.MapperFlushable.html" title="trait riscv::paging::MapperFlushable">MapperFlushable</a></h4></div><div id="associatedtype.Entry" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/riscv/paging/mapper.rs.html#9">source</a></div><h4 class="code-header">type <a href="#associatedtype.Entry" class="associatedtype">Entry</a>: <a class="trait" href="trait.PTE.html" title="trait riscv::paging::PTE">PTE</a></h4></div></div><h2 id="required-methods" class="small-section-header">Required methods<a href="#required-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="tymethod.map_to" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/riscv/paging/mapper.rs.html#15-21">source</a></div><h4 class="code-header">fn <a href="#tymethod.map_to" class="fnname">map_to</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;page: <a class="struct" href="../addr/page/struct.PageWith.html" title="struct riscv::addr::page::PageWith">PageWith</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.V" title="type riscv::paging::Mapper::V">V</a>&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;frame: <a class="struct" href="../addr/page/struct.FrameWith.html" title="struct riscv::addr::page::FrameWith">FrameWith</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.P" title="type riscv::paging::Mapper::P">P</a>&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;flags: <a class="struct" href="struct.PageTableFlags.html" title="struct riscv::paging::PageTableFlags">PageTableFlags</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;allocator: &amp;mut impl <a class="trait" href="trait.FrameAllocatorFor.html" title="trait riscv::paging::FrameAllocatorFor">FrameAllocatorFor</a>&lt;&lt;Self as <a class="trait" href="trait.Mapper.html" title="trait riscv::paging::Mapper">Mapper</a>&gt;::<a class="associatedtype" href="trait.Mapper.html#associatedtype.P" title="type riscv::paging::Mapper::P">P</a>&gt;<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.MapperFlush" title="type riscv::paging::Mapper::MapperFlush">MapperFlush</a>, <a class="enum" href="enum.MapToError.html" title="enum riscv::paging::MapToError">MapToError</a>&gt;</h4></div></summary><div class="docblock"><p>Creates a new mapping in the page table.</p>
<p>This function might need additional physical frames to create new page tables. These
frames are allocated from the <code>allocator</code> argument. At most three frames are required.</p>
</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.unmap" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/riscv/paging/mapper.rs.html#26-29">source</a></div><h4 class="code-header">fn <a href="#tymethod.unmap" class="fnname">unmap</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;page: <a class="struct" href="../addr/page/struct.PageWith.html" title="struct riscv::addr::page::PageWith">PageWith</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.V" title="type riscv::paging::Mapper::V">V</a>&gt;<br>) -&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.tuple.html">(</a><a class="struct" href="../addr/page/struct.FrameWith.html" title="struct riscv::addr::page::FrameWith">FrameWith</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.P" title="type riscv::paging::Mapper::P">P</a>&gt;, Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.MapperFlush" title="type riscv::paging::Mapper::MapperFlush">MapperFlush</a><a class="primitive" href="https://doc.rust-lang.org/nightly/core/primitive.tuple.html">)</a>, <a class="enum" href="enum.UnmapError.html" title="enum riscv::paging::UnmapError">UnmapError</a>&lt;&lt;Self as <a class="trait" href="trait.Mapper.html" title="trait riscv::paging::Mapper">Mapper</a>&gt;::<a class="associatedtype" href="trait.Mapper.html#associatedtype.P" title="type riscv::paging::Mapper::P">P</a>&gt;&gt;</h4></div></summary><div class="docblock"><p>Removes a mapping from the page table and returns the frame that used to be mapped.</p>
<p>Note that no page tables or pages are deallocated.</p>
</div></details><details class="rustdoc-toggle" open><summary><div id="tymethod.ref_entry" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/riscv/paging/mapper.rs.html#32">source</a></div><h4 class="code-header">fn <a href="#tymethod.ref_entry" class="fnname">ref_entry</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;page: <a class="struct" href="../addr/page/struct.PageWith.html" title="struct riscv::addr::page::PageWith">PageWith</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.V" title="type riscv::paging::Mapper::V">V</a>&gt;<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;&amp;mut Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.Entry" title="type riscv::paging::Mapper::Entry">Entry</a>, <a class="enum" href="enum.FlagUpdateError.html" title="enum riscv::paging::FlagUpdateError">FlagUpdateError</a>&gt;</h4></div></summary><div class="docblock"><p>Get the reference of the specified <code>page</code> entry</p>
</div></details></div><h2 id="provided-methods" class="small-section-header">Provided methods<a href="#provided-methods" class="anchor"></a></h2><div class="methods"><details class="rustdoc-toggle" open><summary><div id="method.update_flags" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/riscv/paging/mapper.rs.html#35-44">source</a></div><h4 class="code-header">fn <a href="#method.update_flags" class="fnname">update_flags</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;page: <a class="struct" href="../addr/page/struct.PageWith.html" title="struct riscv::addr::page::PageWith">PageWith</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.V" title="type riscv::paging::Mapper::V">V</a>&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;flags: <a class="struct" href="struct.PageTableFlags.html" title="struct riscv::paging::PageTableFlags">PageTableFlags</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.MapperFlush" title="type riscv::paging::Mapper::MapperFlush">MapperFlush</a>, <a class="enum" href="enum.FlagUpdateError.html" title="enum riscv::paging::FlagUpdateError">FlagUpdateError</a>&gt;</h4></div></summary><div class="docblock"><p>Updates the flags of an existing mapping.</p>
</div></details><details class="rustdoc-toggle" open><summary><div id="method.translate_page" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/riscv/paging/mapper.rs.html#47-58">source</a></div><h4 class="code-header">fn <a href="#method.translate_page" class="fnname">translate_page</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;page: <a class="struct" href="../addr/page/struct.PageWith.html" title="struct riscv::addr::page::PageWith">PageWith</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.V" title="type riscv::paging::Mapper::V">V</a>&gt;<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../addr/page/struct.FrameWith.html" title="struct riscv::addr::page::FrameWith">FrameWith</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.P" title="type riscv::paging::Mapper::P">P</a>&gt;&gt;</h4></div></summary><div class="docblock"><p>Return the frame that the specified page is mapped to.</p>
</div></details><details class="rustdoc-toggle" open><summary><div id="method.identity_map" class="method has-srclink"><div class="rightside"><a class="srclink" href="../../src/riscv/paging/mapper.rs.html#61-69">source</a></div><h4 class="code-header">fn <a href="#method.identity_map" class="fnname">identity_map</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;frame: <a class="struct" href="../addr/page/struct.FrameWith.html" title="struct riscv::addr::page::FrameWith">FrameWith</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.P" title="type riscv::paging::Mapper::P">P</a>&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;flags: <a class="struct" href="struct.PageTableFlags.html" title="struct riscv::paging::PageTableFlags">PageTableFlags</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;allocator: &amp;mut impl <a class="trait" href="trait.FrameAllocatorFor.html" title="trait riscv::paging::FrameAllocatorFor">FrameAllocatorFor</a>&lt;&lt;Self as <a class="trait" href="trait.Mapper.html" title="trait riscv::paging::Mapper">Mapper</a>&gt;::<a class="associatedtype" href="trait.Mapper.html#associatedtype.P" title="type riscv::paging::Mapper::P">P</a>&gt;<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self::<a class="associatedtype" href="trait.Mapper.html#associatedtype.MapperFlush" title="type riscv::paging::Mapper::MapperFlush">MapperFlush</a>, <a class="enum" href="enum.MapToError.html" title="enum riscv::paging::MapToError">MapToError</a>&gt;</h4></div></summary><div class="docblock"><p>Maps the given frame to the virtual page with the same address.</p>
</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Mapper" class="impl has-srclink"><span class="rightside"><a class="srclink" href="../../src/riscv/paging/multi_level.rs.html#42-94">source</a></span><a href="#impl-Mapper" class="anchor"></a><h3 class="code-header in-band">impl&lt;'a, V:&nbsp;<a class="trait" href="../addr/trait.VirtualAddress.html" title="trait riscv::addr::VirtualAddress">VirtualAddress</a> + <a class="trait" href="../addr/trait.AddressL2.html" title="trait riscv::addr::AddressL2">AddressL2</a>, FL:&nbsp;<a class="trait" href="trait.MapperFlushable.html" title="trait riscv::paging::MapperFlushable">MapperFlushable</a>&gt; <a class="trait" href="trait.Mapper.html" title="trait riscv::paging::Mapper">Mapper</a> for <a class="struct" href="struct.Rv32PageTableWith.html" title="struct riscv::paging::Rv32PageTableWith">Rv32PageTableWith</a>&lt;'a, V, FL&gt;</h3></section></summary><div class="impl-items"><section id="associatedtype.P-1" class="type trait-impl has-srclink"><a href="#associatedtype.P-1" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.P" class="associatedtype">P</a> = <a class="struct" href="../addr/sv32/struct.PhysAddrSv32.html" title="struct riscv::addr::sv32::PhysAddrSv32">PhysAddrSv32</a></h4></section><section id="associatedtype.V-1" class="type trait-impl has-srclink"><a href="#associatedtype.V-1" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.V" class="associatedtype">V</a> = V</h4></section><section id="associatedtype.MapperFlush-1" class="type trait-impl has-srclink"><a href="#associatedtype.MapperFlush-1" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.MapperFlush" class="associatedtype">MapperFlush</a> = FL</h4></section><section id="associatedtype.Entry-1" class="type trait-impl has-srclink"><a href="#associatedtype.Entry-1" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Entry" class="associatedtype">Entry</a> = <a class="struct" href="struct.PageTableEntryX32.html" title="struct riscv::paging::PageTableEntryX32">PageTableEntryX32</a></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Mapper-1" class="impl has-srclink"><span class="rightside"><a class="srclink" href="../../src/riscv/paging/multi_level.rs.html#143-207">source</a></span><a href="#impl-Mapper-1" class="anchor"></a><h3 class="code-header in-band">impl&lt;'a, V:&nbsp;<a class="trait" href="../addr/trait.VirtualAddress.html" title="trait riscv::addr::VirtualAddress">VirtualAddress</a> + <a class="trait" href="../addr/trait.AddressL3.html" title="trait riscv::addr::AddressL3">AddressL3</a>, FL:&nbsp;<a class="trait" href="trait.MapperFlushable.html" title="trait riscv::paging::MapperFlushable">MapperFlushable</a>&gt; <a class="trait" href="trait.Mapper.html" title="trait riscv::paging::Mapper">Mapper</a> for <a class="struct" href="struct.Rv39PageTableWith.html" title="struct riscv::paging::Rv39PageTableWith">Rv39PageTableWith</a>&lt;'a, V, FL&gt;</h3></section></summary><div class="impl-items"><section id="associatedtype.P-2" class="type trait-impl has-srclink"><a href="#associatedtype.P-2" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.P" class="associatedtype">P</a> = <a class="struct" href="../addr/sv39/struct.PhysAddrSv39.html" title="struct riscv::addr::sv39::PhysAddrSv39">PhysAddrSv39</a></h4></section><section id="associatedtype.V-2" class="type trait-impl has-srclink"><a href="#associatedtype.V-2" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.V" class="associatedtype">V</a> = V</h4></section><section id="associatedtype.MapperFlush-2" class="type trait-impl has-srclink"><a href="#associatedtype.MapperFlush-2" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.MapperFlush" class="associatedtype">MapperFlush</a> = FL</h4></section><section id="associatedtype.Entry-2" class="type trait-impl has-srclink"><a href="#associatedtype.Entry-2" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Entry" class="associatedtype">Entry</a> = <a class="struct" href="struct.PageTableEntryX64.html" title="struct riscv::paging::PageTableEntryX64">PageTableEntryX64</a></h4></section></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Mapper-2" class="impl has-srclink"><span class="rightside"><a class="srclink" href="../../src/riscv/paging/multi_level.rs.html#269-350">source</a></span><a href="#impl-Mapper-2" class="anchor"></a><h3 class="code-header in-band">impl&lt;'a, V:&nbsp;<a class="trait" href="../addr/trait.VirtualAddress.html" title="trait riscv::addr::VirtualAddress">VirtualAddress</a> + <a class="trait" href="../addr/trait.AddressL4.html" title="trait riscv::addr::AddressL4">AddressL4</a>, FL:&nbsp;<a class="trait" href="trait.MapperFlushable.html" title="trait riscv::paging::MapperFlushable">MapperFlushable</a>&gt; <a class="trait" href="trait.Mapper.html" title="trait riscv::paging::Mapper">Mapper</a> for <a class="struct" href="struct.Rv48PageTableWith.html" title="struct riscv::paging::Rv48PageTableWith">Rv48PageTableWith</a>&lt;'a, V, FL&gt;</h3></section></summary><div class="impl-items"><section id="associatedtype.P-3" class="type trait-impl has-srclink"><a href="#associatedtype.P-3" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.P" class="associatedtype">P</a> = <a class="struct" href="../addr/sv48/struct.PhysAddrSv48.html" title="struct riscv::addr::sv48::PhysAddrSv48">PhysAddrSv48</a></h4></section><section id="associatedtype.V-3" class="type trait-impl has-srclink"><a href="#associatedtype.V-3" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.V" class="associatedtype">V</a> = V</h4></section><section id="associatedtype.MapperFlush-3" class="type trait-impl has-srclink"><a href="#associatedtype.MapperFlush-3" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.MapperFlush" class="associatedtype">MapperFlush</a> = FL</h4></section><section id="associatedtype.Entry-3" class="type trait-impl has-srclink"><a href="#associatedtype.Entry-3" class="anchor"></a><h4 class="code-header">type <a href="#associatedtype.Entry" class="associatedtype">Entry</a> = <a class="struct" href="struct.PageTableEntryX64.html" title="struct riscv::paging::PageTableEntryX64">PageTableEntryX64</a></h4></section></div></details></div><script type="text/javascript" src="../../implementors/riscv/paging/trait.Mapper.js" async></script></section><section id="search" class="content hidden"></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="riscv" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.62.0-nightly (1f7fb6413 2022-04-10)" ></div>
</body></html>