pub struct ThreadLifecycleSource;Expand description
Harvests timing jitter from thread creation and destruction.
§What it measures
Nanosecond timing of the full pthread_create + pthread_join cycle,
with variable per-thread workloads.
§Why it’s entropic
Each thread lifecycle exercises deep kernel scheduling paths:
- Mach thread port allocation from the kernel IPC port name space
- Zone allocator allocation for the kernel thread structure
- CPU core selection — P-core vs E-core, influenced by ALL threads
- Stack page allocation via
vm_allocate - TLS setup including dyld per-thread state
- Context switch on join — depends on current runqueue state
- Core migration — new thread may run on a different core
§What makes it unique
Thread lifecycle timing is a previously untapped entropy source. The combination of kernel memory allocation, scheduling decisions, and cross-core communication produces 89 unique LSB values — the richest of any frontier source.
§Configuration
No configuration needed — this source has no tunable parameters.
Trait Implementations§
Source§impl EntropySource for ThreadLifecycleSource
impl EntropySource for ThreadLifecycleSource
Auto Trait Implementations§
impl Freeze for ThreadLifecycleSource
impl RefUnwindSafe for ThreadLifecycleSource
impl Send for ThreadLifecycleSource
impl Sync for ThreadLifecycleSource
impl Unpin for ThreadLifecycleSource
impl UnsafeUnpin for ThreadLifecycleSource
impl UnwindSafe for ThreadLifecycleSource
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