rCore-Tutorial-v3/ch5/os/mm/index.html
2023-10-15 07:27:52 +00:00

7 lines
10 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="Memory management implementation"><title>os::mm - 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-fa3bb1812debf86c.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="os" data-themes="" data-resource-suffix="" data-rustdoc-version="1.75.0-nightly (bf9a1c8a1 2023-10-08)" data-channel="nightly" data-search-js="search-5f5ec5419eadd0c9.js" data-settings-js="settings-74424d7eec62a23e.js" ><script src="../../static.files/storage-fec3eaa3851e447d.js"></script><script defer src="../../static.files/main-c5bd66d33317d69f.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-5d8b3c7633ad77ba.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 mod"><!--[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="../../os/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a></nav><nav class="sidebar"><a class="logo-container" href="../../os/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2 class="location"><a href="#">Module mm</a></h2><div class="sidebar-elems"><section><ul class="block"><li><a href="#reexports">Re-exports</a></li><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#functions">Functions</a></li></ul></section></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>Module <a href="../index.html">os</a>::<wbr><a class="mod" href="#">mm</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="src" href="../../src/os/mm/mod.rs.html#1-26">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Memory management implementation</p>
<p>SV39 page-based virtual-memory architecture for RV64 systems, and
everything about memory management, like frame allocator, page table,
map area and memory set, is implemented here.</p>
<p>Every task or process has a memory_set to control its virtual memory.</p>
</div></details><h2 id="reexports" class="small-section-header"><a href="#reexports">Re-exports</a></h2><ul class="item-table"><li><div class="item-name" id="reexport.KERNEL_SPACE"><code>pub use memory_set::<a class="struct" href="memory_set/struct.KERNEL_SPACE.html" title="struct os::mm::memory_set::KERNEL_SPACE">KERNEL_SPACE</a>;</code></div></li><li><div class="item-name" id="reexport.KERNEL_SPACE-1"><code>pub use memory_set::KERNEL_SPACE;</code></div></li></ul><h2 id="modules" class="small-section-header"><a href="#modules">Modules</a></h2><ul class="item-table"><li><div class="item-name"><a class="mod" href="address/index.html" title="mod os::mm::address">address</a><span title="Restricted Visibility">&nbsp;🔒</span> </div><div class="desc docblock-short">Implementation of physical and virtual address and page number.</div></li><li><div class="item-name"><a class="mod" href="frame_allocator/index.html" title="mod os::mm::frame_allocator">frame_allocator</a><span title="Restricted Visibility">&nbsp;🔒</span> </div><div class="desc docblock-short">Implementation of <a href="frame_allocator/trait.FrameAllocator.html" title="trait os::mm::frame_allocator::FrameAllocator"><code>FrameAllocator</code></a> which
controls all the frames in the operating system.</div></li><li><div class="item-name"><a class="mod" href="heap_allocator/index.html" title="mod os::mm::heap_allocator">heap_allocator</a><span title="Restricted Visibility">&nbsp;🔒</span> </div><div class="desc docblock-short">The global allocator</div></li><li><div class="item-name"><a class="mod" href="memory_set/index.html" title="mod os::mm::memory_set">memory_set</a><span title="Restricted Visibility">&nbsp;🔒</span> </div><div class="desc docblock-short">Implementation of <a href="memory_set/struct.MapArea.html" title="struct os::mm::memory_set::MapArea"><code>MapArea</code></a> and <a href="memory_set/struct.MemorySet.html" title="struct os::mm::memory_set::MemorySet"><code>MemorySet</code></a>.</div></li><li><div class="item-name"><a class="mod" href="page_table/index.html" title="mod os::mm::page_table">page_table</a><span title="Restricted Visibility">&nbsp;🔒</span> </div><div class="desc docblock-short">Implementation of <a href="page_table/struct.PageTableEntry.html" title="struct os::mm::page_table::PageTableEntry"><code>PageTableEntry</code></a> and <a href="page_table/struct.PageTable.html" title="struct os::mm::page_table::PageTable"><code>PageTable</code></a>.</div></li></ul><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><ul class="item-table"><li><div class="item-name"><a class="struct" href="struct.FrameTracker.html" title="struct os::mm::FrameTracker">FrameTracker</a></div><div class="desc docblock-short">manage a frame which has the same lifecycle as the tracker</div></li><li><div class="item-name"><a class="struct" href="struct.KERNEL_SPACE.html" title="struct os::mm::KERNEL_SPACE">KERNEL_SPACE</a></div><div class="desc docblock-short">a memory set instance through lazy_static! managing kernel space</div></li><li><div class="item-name"><a class="struct" href="struct.MapPermission.html" title="struct os::mm::MapPermission">MapPermission</a></div><div class="desc docblock-short">map permission corresponding to that in pte: <code>R W X U</code></div></li><li><div class="item-name"><a class="struct" href="struct.MemorySet.html" title="struct os::mm::MemorySet">MemorySet</a></div><div class="desc docblock-short">memory set structure, controls virtual-memory space</div></li><li><div class="item-name"><a class="struct" href="struct.PageTableEntry.html" title="struct os::mm::PageTableEntry">PageTableEntry</a></div><div class="desc docblock-short">page table entry structure</div></li><li><div class="item-name"><a class="struct" href="struct.PhysAddr.html" title="struct os::mm::PhysAddr">PhysAddr</a></div><div class="desc docblock-short">physical address</div></li><li><div class="item-name"><a class="struct" href="struct.PhysPageNum.html" title="struct os::mm::PhysPageNum">PhysPageNum</a></div><div class="desc docblock-short">physical page number</div></li><li><div class="item-name"><a class="struct" href="struct.VirtAddr.html" title="struct os::mm::VirtAddr">VirtAddr</a></div><div class="desc docblock-short">virtual address</div></li><li><div class="item-name"><a class="struct" href="struct.VirtPageNum.html" title="struct os::mm::VirtPageNum">VirtPageNum</a></div><div class="desc docblock-short">virtual page number</div></li></ul><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2><ul class="item-table"><li><div class="item-name"><a class="fn" href="fn.frame_alloc.html" title="fn os::mm::frame_alloc">frame_alloc</a></div><div class="desc docblock-short">allocate a frame</div></li><li><div class="item-name"><a class="fn" href="fn.init.html" title="fn os::mm::init">init</a></div><div class="desc docblock-short">initiate heap allocator, frame allocator and kernel space</div></li><li><div class="item-name"><a class="fn" href="fn.remap_test.html" title="fn os::mm::remap_test">remap_test</a></div><div class="desc docblock-short">Check PageTable running correctly</div></li><li><div class="item-name"><a class="fn" href="fn.translated_byte_buffer.html" title="fn os::mm::translated_byte_buffer">translated_byte_buffer</a></div><div class="desc docblock-short">translate a pointer to a mutable u8 Vec through page table</div></li><li><div class="item-name"><a class="fn" href="fn.translated_refmut.html" title="fn os::mm::translated_refmut">translated_refmut</a></div><div class="desc docblock-short">translate a generic through page table and return a mutable reference</div></li><li><div class="item-name"><a class="fn" href="fn.translated_str.html" title="fn os::mm::translated_str">translated_str</a></div><div class="desc docblock-short">translate a pointer to a mutable u8 Vec end with <code>\0</code> through page table to a <code>String</code></div></li></ul></section></div></main></body></html>