#[repr(C, packed(4))]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: u16
The 16-bit offset to the I/O permission bit map from the 64-bit TSS base.
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 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more