Struct Descriptor

Source
#[repr(packed(1))]
pub struct Descriptor { pub lower: u32, pub upper: u32, }
Expand description

Entry for IDT, GDT or LDT. Provides size and location of a segment.

See Intel 3a, Section 3.4.5 “Segment Descriptors”, and Section 3.5.2

Fields§

§lower: u32§upper: u32

Implementations§

Source§

impl Descriptor

Source

pub const NULL: Descriptor

Source

pub fn as_u64(&self) -> u64

Source

pub fn set_base_limit(&mut self, base: u32, limit: u32)

Create a new segment, TSS or LDT descriptor by setting the three base and two limit fields.

Source

pub fn set_selector_offset(&mut self, selector: SegmentSelector, offset: u32)

Creates a new descriptor with selector and offset (for IDT Gate descriptors, e.g. Trap, Interrupts and Task gates)

Source

pub fn set_type(&mut self, typ: u8)

Set the type of the descriptor (bits 8-11). Indicates the segment or gate type and specifies the kinds of access that can be made to the segment and the direction of growth. The interpretation of this field depends on whether the descriptor type flag specifies an application (code or data) descriptor or a system descriptor.

Source

pub fn set_s(&mut self)

Specifies whether the segment descriptor is for a system segment (S flag is clear) or a code or data segment (S flag is set).

Source

pub fn set_dpl(&mut self, ring: Ring)

Specifies the privilege level of the segment. The DPL is used to control access to the segment.

Source

pub fn set_p(&mut self)

Set Present bit. Indicates whether the segment is present in memory (set) or not present (clear). If this flag is clear, the processor generates a segment-not-present exception (#NP) when a segment selector that points to the segment descriptor is loaded into a segment register.

Source

pub fn set_avl(&mut self)

Set AVL bit. System software can use this bit to store information.

Source

pub fn set_l(&mut self)

Set L In IA-32e mode, bit 21 of the second doubleword of the segment descriptor indicates whether a code segment contains native 64-bit code. A value of 1 indicates instructions in this code segment are executed in 64-bit mode. A value of 0 indicates the instructions in this code segment are executed in compatibility mode. If L-bit is set, then D-bit must be cleared.

Source

pub fn set_db(&mut self)

Set D/B. Performs different functions depending on whether the segment descriptor is an executable code segment, an expand-down data segment, or a stack segment.

Source

pub fn set_g(&mut self)

Set G bit Determines the scaling of the segment limit field. When the granularity flag is clear, the segment limit is interpreted in byte units; when flag is set, the segment limit is interpreted in 4-KByte units.

Trait Implementations§

Source§

impl BuildDescriptor<Descriptor> for DescriptorBuilder

Source§

impl Clone for Descriptor

Source§

fn clone(&self) -> Descriptor

Returns a copy of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Descriptor

Source§

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

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

impl Default for Descriptor

Source§

fn default() -> Descriptor

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

impl Display for Descriptor

Source§

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

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

impl Copy for Descriptor

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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.