pub struct TaskStateSegment {
pub privilege_stack_table: [VirtAddr; 3],
pub interrupt_stack_table: [VirtAddr; 7],
pub iomap_base: u16,
/* private fields */
}Expand description
In 64-bit mode the TSS holds information that is not directly related to the task-switch mechanism, but is used for stack switching when an interrupt or exception occurs.
Fields§
§privilege_stack_table: [VirtAddr; 3]The full 64-bit canonical forms of the stack pointers (RSP) for privilege levels 0-2. The stack pointers used when a privilege level change occurs from a lower privilege level to a higher one.
interrupt_stack_table: [VirtAddr; 7]The full 64-bit canonical forms of the interrupt stack table (IST) pointers. The stack pointers used when an entry in the Interrupt Descriptor Table has an IST value other than 0.
iomap_base: u16The 16-bit offset to the I/O permission bit map from the 64-bit TSS base. It must not
exceed 0xDFFF.
Implementations§
Source§impl TaskStateSegment
impl TaskStateSegment
Sourcepub const fn new() -> TaskStateSegment
pub const fn new() -> TaskStateSegment
Creates a new TSS with zeroed privilege and interrupt stack table and an empty I/O-Permission Bitmap.
As we always set the TSS segment limit to
size_of::<TaskStateSegment>() - 1, this means that iomap_base is
initialized to size_of::<TaskStateSegment>().
Trait Implementations§
Source§impl Clone for TaskStateSegment
impl Clone for TaskStateSegment
Source§fn clone(&self) -> TaskStateSegment
fn clone(&self) -> TaskStateSegment
1.0.0 (const: unstable)§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for TaskStateSegment
Source§impl Debug for TaskStateSegment
impl Debug for TaskStateSegment
Auto Trait Implementations§
impl Freeze for TaskStateSegment
impl RefUnwindSafe for TaskStateSegment
impl Send for TaskStateSegment
impl Sync for TaskStateSegment
impl Unpin for TaskStateSegment
impl UnsafeUnpin for TaskStateSegment
impl UnwindSafe for TaskStateSegment
Blanket Implementations§
§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)