Struct axhal::arch::GdtStruct

source ·
#[repr(align(16))]
pub struct GdtStruct { /* private fields */ }
Expand description

A wrapper of the Global Descriptor Table (GDT) with maximum 16 entries.

Implementations§

source§

impl GdtStruct

source

pub const KCODE32_SELECTOR: SegmentSelector = _

Kernel code segment for 32-bit mode.

source

pub const KCODE64_SELECTOR: SegmentSelector = _

Kernel code segment for 64-bit mode.

source

pub const KDATA_SELECTOR: SegmentSelector = _

Kernel data segment.

source

pub const UCODE32_SELECTOR: SegmentSelector = _

User code segment for 32-bit mode.

source

pub const UDATA_SELECTOR: SegmentSelector = _

User data segment.

source

pub const UCODE64_SELECTOR: SegmentSelector = _

User code segment for 64-bit mode.

source

pub const TSS_SELECTOR: SegmentSelector = _

TSS segment.

source

pub fn new(tss: &'static TaskStateSegment) -> Self

Constructs a new GDT struct that filled with the default segment descriptors, including the given TSS segment.

source

pub fn pointer(&self) -> DescriptorTablePointer

Returns the GDT pointer (base and limit) that can be used in lgdt instruction.

source

pub unsafe fn load(&'static self)

Loads the GDT into the CPU (executes the lgdt instruction), and updates the code segment register (CS).

Safety

This function is unsafe because it manipulates the CPU’s privileged states.

source

pub unsafe fn load_tss(&'static self)

Loads the TSS into the CPU (executes the ltr instruction).

Safety

This function is unsafe because it manipulates the CPU’s privileged states.

Trait Implementations§

source§

impl Debug for GdtStruct

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.