x86_64::registers::segmentation

Struct GS

Source
pub struct GS;
Expand description

GS Segment

Only base is used in 64-bit mode, see Segment64. In kernel-mode, the GS base often points to a per-cpu kernel data structure.

Implementations§

Source§

impl GS

Source

pub unsafe fn swap()

Swap KernelGsBase MSR and GsBase MSR.

§Safety

This function is unsafe because the caller must ensure that the swap operation cannot lead to undefined behavior.

Trait Implementations§

Source§

impl Debug for GS

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Segment for GS

Source§

fn get_reg() -> SegmentSelector

Returns the current value of the segment register.
Source§

unsafe fn set_reg(sel: SegmentSelector)

Reload the segment register. Depending on the segment, this may also reconfigure the corresponding segment. Read more
Source§

impl Segment64 for GS

Source§

const BASE: Msr = GsBase::MSR

MSR containing the segment base. This MSR can be used to set the base when CR4.FSGSBASE is not set.
Source§

fn read_base() -> VirtAddr

Reads the segment base address Read more
Source§

unsafe fn write_base(base: VirtAddr)

Writes the segment base address Read more

Auto Trait Implementations§

§

impl Freeze for GS

§

impl RefUnwindSafe for GS

§

impl Send for GS

§

impl Sync for GS

§

impl Unpin for GS

§

impl UnwindSafe for GS

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>,

Source§

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>,

Source§

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.