rstubs::arch::gdt

Struct SegmentSelector

source
#[repr(transparent)]
pub struct SegmentSelector(u16);
Expand description

Specifies which element to load into a segment from descriptor tables (i.e., is a index to LDT or GDT table with some additional flags).

See Intel 3a, Section 3.4.2 “Segment Selectors”

Tuple Fields§

§0: u16

Implementations§

source§

impl SegmentSelector

source

const PRIVILEGE_BITS: usize = 2usize

source

const PRIVILEGE_OFFSET: usize = 0usize

source

const LOCAL_BITS: usize = 1usize

source

const LOCAL_OFFSET: usize = 2usize

source

const INDEX_BITS: usize = 13usize

source

const INDEX_OFFSET: usize = 3usize

source

pub const fn new() -> Self

Creates a new default initialized bitfield.

source

pub const fn from_bits(bits: u16) -> Self

Convert from bits.

source

pub const fn into_bits(self) -> u16

Convert into bits.

source

pub const fn privilege(&self) -> Ring

Requested privilege level

Bits: 0..2

source

pub const fn with_privilege_checked(self, value: Ring) -> Result<Self, ()>

Requested privilege level

Bits: 0..2

source

pub const fn with_privilege(self, value: Ring) -> Self

Requested privilege level

Bits: 0..2

source

pub fn set_privilege(&mut self, value: Ring)

Requested privilege level

Bits: 0..2

source

pub fn set_privilege_checked(&mut self, value: Ring) -> Result<(), ()>

Requested privilege level

Bits: 0..2

source

pub const fn local(&self) -> bool

Whether this selector corresponds to a global or local descriptor table

Bits: 2..3

source

pub const fn with_local_checked(self, value: bool) -> Result<Self, ()>

Whether this selector corresponds to a global or local descriptor table

Bits: 2..3

source

pub const fn with_local(self, value: bool) -> Self

Whether this selector corresponds to a global or local descriptor table

Bits: 2..3

source

pub fn set_local(&mut self, value: bool)

Whether this selector corresponds to a global or local descriptor table

Bits: 2..3

source

pub fn set_local_checked(&mut self, value: bool) -> Result<(), ()>

Whether this selector corresponds to a global or local descriptor table

Bits: 2..3

source

pub const fn index(&self) -> u16

Index within the descriptor table

Bits: 3..16

source

pub const fn with_index_checked(self, value: u16) -> Result<Self, ()>

Index within the descriptor table

Bits: 3..16

source

pub const fn with_index(self, value: u16) -> Self

Index within the descriptor table

Bits: 3..16

source

pub fn set_index(&mut self, value: u16)

Index within the descriptor table

Bits: 3..16

source

pub fn set_index_checked(&mut self, value: u16) -> Result<(), ()>

Index within the descriptor table

Bits: 3..16

Trait Implementations§

source§

impl Clone for SegmentSelector

source§

fn clone(&self) -> SegmentSelector

Returns a copy of the value. Read more
1.0.0§

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

Performs copy-assignment from source. Read more
source§

impl Debug for SegmentSelector

source§

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

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

impl Default for SegmentSelector

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl From<SegmentSelector> for u16

source§

fn from(v: SegmentSelector) -> u16

Converts to this type from the input type.
source§

impl From<u16> for SegmentSelector

source§

fn from(v: u16) -> Self

Converts to this type from the input type.
source§

impl PartialEq for SegmentSelector

source§

fn eq(&self, other: &SegmentSelector) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for SegmentSelector

source§

impl Eq for SegmentSelector

source§

impl StructuralPartialEq for SegmentSelector

Auto Trait Implementations§

§

impl Freeze for SegmentSelector

§

impl RefUnwindSafe for SegmentSelector

§

impl Send for SegmentSelector

§

impl Sync for SegmentSelector

§

impl Unpin for SegmentSelector

§

impl UnwindSafe for SegmentSelector

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
§

impl<T> CloneToUninit for T
where T: Clone,

§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

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

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
§

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

§

type Error = Infallible

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

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

Performs the conversion.
§

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

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

Performs the conversion.
source§

impl<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.