Skip to main content

NumaLocal

Struct NumaLocal 

Source
pub struct NumaLocal<I: OsBacked> { /* private fields */ }
Expand description

NumaLocal wrapper.

Implementations§

Source§

impl<I: OsBacked> NumaLocal<I>

Source

pub fn new(inner: I, policy: NumaPolicy) -> Result<Self, AllocError>

Wrap and apply policy to the inner allocator’s region.

Returns Err(AllocError) if the platform supports NUMA and the kernel rejects the bind (insufficient capability, invalid node id, no memory available on the bound nodes). On unsupported platforms (macOS, Windows, other) returns Ok without binding — caller can inspect with policy but the region’s physical placement is the kernel’s default.

Source

pub fn inner(&self) -> &I

Borrow the inner allocator.

Source

pub fn policy(&self) -> &NumaPolicy

Active policy.

Trait Implementations§

Source§

impl<I: OsBacked> Allocator for NumaLocal<I>

Source§

fn allocate(&self, layout: NonZeroLayout) -> Result<NonNull<[u8]>, AllocError>

Allocate a block satisfying layout. The returned slice’s length is at least layout.size() but may be larger.
Source§

unsafe fn usable_size( &self, ptr: NonNull<u8>, layout: NonZeroLayout, ) -> Option<usize>

Usable size of an existing allocation, if the allocator can report it. Defaults to None — implementors that track usable size override. Read more
Source§

fn capacity_bytes(&self) -> Option<usize>

Total bytes this allocator can issue, if bounded. None for unbounded allocators like System. Used by Watermark to compute thresholds.
Source§

fn corruption_events(&self) -> u64

Detected freelist / metadata corruption events observed by this allocator since construction. Read more
Source§

fn allocate_zeroed( &self, layout: NonZeroLayout, ) -> Result<NonNull<[u8]>, AllocError>

Allocate a zero-initialized block.
Source§

unsafe fn grow( &self, ptr: NonNull<u8>, old: NonZeroLayout, new: NonZeroLayout, ) -> Result<NonNull<[u8]>, AllocError>

Grow an allocation in place if possible, otherwise allocate-copy-free. Read more
Source§

unsafe fn shrink( &self, ptr: NonNull<u8>, old: NonZeroLayout, new: NonZeroLayout, ) -> Result<NonNull<[u8]>, AllocError>

Shrink an allocation in place if possible, otherwise allocate-copy-free. Read more
Source§

fn reset(&mut self) -> Result<(), AllocError>

Reclaim everything previously allocated. Default impl returns AllocError — only arena-style allocators implement a meaningful reset. Read more
Source§

impl<I: OsBacked> Deallocator for NumaLocal<I>

Source§

unsafe fn deallocate(&self, ptr: NonNull<u8>, layout: NonZeroLayout)

Release a previously allocated block. Read more
Source§

impl<I: OsBacked + FixedRange> FixedRange for NumaLocal<I>

Source§

fn commit(&self, offset: usize, len: usize) -> Result<(), AllocError>

Pass-through forward so a commit-aware consumer reaches the inner backing when this wrapper sits over a lazy_commit MmapBacked.

Source§

fn base(&self) -> NonNull<u8>

First byte of the owned address range. Read more
Source§

fn size(&self) -> usize

Length in bytes of the owned address range. Read more
Source§

fn contains(&self, ptr: NonNull<u8>) -> bool

Whether ptr lies within [base, base + size). Read more
Source§

impl<I: OsBacked> OsBacked for NumaLocal<I>

Source§

fn base_ptr(&self) -> NonNull<u8>

First byte of the OS-managed region.
Source§

fn region_size(&self) -> usize

Length in bytes of the OS-managed region.
Source§

unsafe fn release_pages(&self, ptr: NonNull<u8>, size: usize)

Release the physical pages backing [ptr, ptr + size) to the OS while keeping the virtual address range reserved. Read more
Source§

unsafe fn protect(&self, ptr: NonNull<u8>, size: usize, flags: ProtectFlags)

Change memory protection flags on [ptr, ptr + size). Read more

Auto Trait Implementations§

§

impl<I> Freeze for NumaLocal<I>
where I: Freeze,

§

impl<I> RefUnwindSafe for NumaLocal<I>
where I: RefUnwindSafe,

§

impl<I> Send for NumaLocal<I>
where I: Send,

§

impl<I> Sync for NumaLocal<I>
where I: Sync,

§

impl<I> Unpin for NumaLocal<I>
where I: Unpin,

§

impl<I> UnsafeUnpin for NumaLocal<I>
where I: UnsafeUnpin,

§

impl<I> UnwindSafe for NumaLocal<I>
where I: UnwindSafe,

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

Source§

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

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.