#[repr(C, align(16))]pub struct KernelContext {
pub sp: u64,
pub ra: u64,
pub s: [u64; 12],
pub kernel_stack: Box<[Page]>,
}Expand description
Kernel context for RISC-V 64-bit
Contains callee-saved registers that need to be preserved across function calls and context switches in kernel mode, as well as the kernel stack information.
Fields§
§sp: u64Stack pointer
ra: u64Return address
s: [u64; 12]Saved registers s0-s11 (callee-saved)
kernel_stack: Box<[Page]>Kernel stack pages for this context (page-aligned, contiguous)
Implementations§
Source§impl KernelContext
impl KernelContext
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new kernel context with kernel stack
§Returns
A new KernelContext with allocated kernel stack ready for scheduling
Sourcepub fn get_kernel_stack_bottom_paddr(&self) -> u64
pub fn get_kernel_stack_bottom_paddr(&self) -> u64
Get the bottom of the kernel stack
pub fn get_kernel_stack_memory_area_paddr(&self) -> MemoryArea
pub fn get_kernel_stack_paddr(&self) -> *const u8
Sourcepub fn set_entry_point(&mut self, entry_point: u64)
pub fn set_entry_point(&mut self, entry_point: u64)
Sourcepub fn get_entry_point(&self) -> u64
pub fn get_entry_point(&self) -> u64
pub fn set_sp(&mut self, sp_vaddr: u64)
Sourcepub fn get_trapframe(&mut self) -> &mut Trapframe
pub fn get_trapframe(&mut self) -> &mut Trapframe
Get a mutable reference to the trapframe
The trapframe is located at the top of the kernel stack, reserved during context creation. This provides access to the user-space register state.
§Returns
A mutable reference to the Trapframe, or None if no kernel stack is allocated
Trait Implementations§
Source§impl Clone for KernelContext
impl Clone for KernelContext
Source§fn clone(&self) -> KernelContext
fn clone(&self) -> KernelContext
Returns a duplicate of the value. Read more
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for KernelContext
impl RefUnwindSafe for KernelContext
impl Send for KernelContext
impl Sync for KernelContext
impl Unpin for KernelContext
impl UnwindSafe for KernelContext
Blanket Implementations§
§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
🔬This is a nightly-only experimental API. (
clone_to_uninit)