#[repr(C)]pub struct PerCpuArch {
pub cpu_index: AtomicU64,
pub user_rsp: AtomicU64,
pub kernel_rsp: AtomicU64,
}Expand description
Minimal per-CPU block accessed from assembly via GS base.
Layout invariant (#[repr(C)]):
cpu_indexat offset 0 (8 bytes) — read by assembly asgs:[0]user_rspat offset 8 (8 bytes)kernel_rspat offset 16 (8 bytes)
AtomicU64 is #[repr(C, align(8))] and has the same size/alignment as
u64, so the offsets declared in USER_RSP_OFFSET/KERNEL_RSP_OFFSET are
preserved. The inline assembly in current_cpu_index() reads the raw 8
bytes from gs:[0], which are the inner u64 of AtomicU64.
Fields§
§cpu_index: AtomicU64CPU index for this block. Written once during init via AtomicU64::store
(no raw-pointer cast needed), then only ever read. AtomicU64 provides
proper UnsafeCell interior mutability so reads through &PerCpuArch
are not UB even though the field was written after the struct was placed
in a static.
user_rsp: AtomicU64§kernel_rsp: AtomicU64Auto Trait Implementations§
impl !Freeze for PerCpuArch
impl RefUnwindSafe for PerCpuArch
impl Send for PerCpuArch
impl Sync for PerCpuArch
impl Unpin for PerCpuArch
impl UnsafeUnpin for PerCpuArch
impl UnwindSafe for PerCpuArch
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more