Skip to main content

GS

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§

§

impl GS

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§

§

impl Debug for GS

§

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

Formats the value using the given formatter. Read more
§

impl Segment for GS

§

fn get_reg() -> SegmentSelector

Returns the current value of the segment register.
§

unsafe fn set_reg(sel: SegmentSelector)

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

impl Segment64 for GS

§

const BASE: Msr = GsBase::MSR

MSR containing the segment base. This MSR can be used to set the base when [CR4.FSGSBASE][Cr4Flags::FSGSBASE] is not set.
§

fn read_base() -> VirtAddr

Reads the segment base address Read more
§

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 UnsafeUnpin 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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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.