Module os::mm

source ·
Expand description

Memory management implementation

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.

Every task or process has a memory_set to control its virtual memory.

Re-exports§

  • pub use memory_set::KERNEL_SPACE;
  • pub use memory_set::KERNEL_SPACE;

Modules§

Structs§

Traits§

Functions§

  • Allocate a physical page frame in FrameTracker style
  • Deallocate a physical page frame with a given ppn
  • initiate heap allocator, frame allocator and kernel space
  • the kernel token
  • test map function in page table
  • Create mutable Vec<u8> slice in kernel space from ptr in other address space. NOTICE: the content pointed to by the pointer ptr can cross physical pages.
  • translate a pointer ptr in other address space to a immutable u8 slice in kernel address space. NOTICE: the content pointed to by the pointer ptr cannot cross physical pages, otherwise translated_byte_buffer should be used.
  • translate a pointer ptr in other address space to a mutable u8 slice in kernel address space. NOTICE: the content pointed to by the pointer ptr cannot cross physical pages, otherwise translated_byte_buffer should be used.
  • Create String in kernel address space from u8 Array(end with 0) in other address space