Struct tartan_arch::x86_common::protection::GateDescriptor

source ·
#[repr(C)]
pub struct GateDescriptor { pub flags: GateDescriptorFlags, /* private fields */ }
Available on x86 or x86-64 only.
Expand description

An entry in a segment descriptor table that points to an existing segment rather than defining a new one.

This includes:

  • Call gates, which allow controlled access to routines defined in a code segment with a different priority level or word size.
  • Interrupt and trap gates, which define handlers for interrupt vectors.
  • Task gates, which support hardware task switching. These are not supported in 64-bit mode.

Fields§

§flags: GateDescriptorFlags

Common gate descriptor settings.

Implementations§

source§

impl GateDescriptor

source

pub const fn new() -> Self

Create a zero-initialized descriptor

source

pub fn selector(self) -> Selector

Selector that points to the code or task state segment to be accessed through this gate.

For call, interrupt, and trap gates, this points to the code segment that contains the routine to be executed. For task gates, this points to a task state segment representing the task to activate.

source

pub fn set_selector(&mut self, selector: Selector)

Update the selector pointing to the segment to be accessed through this gate.

source

pub fn entry_point_offset(self) -> usize

Offset of the entry point in code segment referenced by selector.

Only applies to call, interrupt, and trap gates.

source

pub fn set_entry_point_offset(&mut self, offset: usize)

Update the offset of the entry point within the referenced code segment.

Trait Implementations§

source§

impl Clone for GateDescriptor

source§

fn clone(&self) -> GateDescriptor

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 GateDescriptor

source§

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

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

impl Default for GateDescriptor

source§

fn default() -> Self

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

impl PartialEq for GateDescriptor

source§

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

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

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 GateDescriptor

source§

impl Eq for GateDescriptor

source§

impl StructuralPartialEq for GateDescriptor

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§

default 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
source§

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

source§

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