⚠️ VeridianOS Kernel Documentation - This is low-level kernel code. All functions are unsafe unless explicitly marked otherwise. no_std

ThreadContext

Trait ThreadContext 

Source
pub trait ThreadContext: Sized {
Show 13 methods // Required methods fn new() -> Self; fn init( &mut self, entry_point: usize, stack_pointer: usize, kernel_stack: usize, ); fn get_instruction_pointer(&self) -> usize; fn set_instruction_pointer(&mut self, ip: usize); fn get_stack_pointer(&self) -> usize; fn set_stack_pointer(&mut self, sp: usize); fn get_kernel_stack(&self) -> usize; fn set_kernel_stack(&mut self, sp: usize); fn set_return_value(&mut self, value: usize); fn set_tls_base(&mut self, base: u64); fn tls_base(&self) -> u64; fn clone_from(&mut self, other: &Self); fn to_task_context(&self) -> TaskContext;
}
Expand description

Thread context trait

Required Methods§

Source

fn new() -> Self

Create a new empty context

Source

fn init( &mut self, entry_point: usize, stack_pointer: usize, kernel_stack: usize, )

Initialize context for a new thread

Source

fn get_instruction_pointer(&self) -> usize

Get instruction pointer

Source

fn set_instruction_pointer(&mut self, ip: usize)

Set instruction pointer

Source

fn get_stack_pointer(&self) -> usize

Get stack pointer

Source

fn set_stack_pointer(&mut self, sp: usize)

Set stack pointer

Source

fn get_kernel_stack(&self) -> usize

Get kernel stack pointer

Source

fn set_kernel_stack(&mut self, sp: usize)

Set kernel stack pointer

Source

fn set_return_value(&mut self, value: usize)

Set return value (for syscalls, fork, etc.)

Source

fn set_tls_base(&mut self, base: u64)

Set user TLS base for this context (FS/TP).

Source

fn tls_base(&self) -> u64

Get user TLS base stored in this context.

Source

fn clone_from(&mut self, other: &Self)

Clone the context

Source

fn to_task_context(&self) -> TaskContext

Convert to scheduler’s TaskContext

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§