Skip to main content

Chkstk

Struct Chkstk 

Source
pub struct Chkstk {
    pub name: &'static str,
    pub size: PhysReg,
}
Expand description

What a platform calls the routine that reaches the pages of a frame before the frame is taken.

Windows is the platform this is about. A thread there is given a stack of which only a little is committed, and one page below what is committed is a guard page whose whole job is to be touched: the fault it raises is what tells the kernel to commit another page and move the guard down. So a frame larger than a page has to be reached a page at a time or the guard is stepped over, and the program gets an access violation on an address that was never going to be mapped. That is the calling convention rather than a hardening flag, which is what makes this a field here and not something -fstack-clash-protection turns on.

Every Windows toolchain calls a routine for it rather than writing the walk out, and the routine is in the C runtime, so the name is the platform’s. It reads the size in one register, touches each page down to there, and comes back having moved nothing, which is why the caller still has to take the frame afterwards.

A convention that answers None is one where reaching the pages is not the convention’s business. That is every System V target, where a stack grows by faulting anywhere below it and the pages between are filled in by the kernel without being asked in order.

Fields§

§name: &'static str

What the routine is called.

§size: PhysReg

The register the size goes in, which is also the register it comes back in.

Trait Implementations§

Source§

impl Clone for Chkstk

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for Chkstk

Source§

impl Debug for Chkstk

Source§

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

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

impl Eq for Chkstk

Source§

impl PartialEq for Chkstk

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Chkstk

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

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.