pub struct SpawnSpec {
pub kernel: u32,
pub entry_pc: u32,
pub parent: ProcessId,
pub disable_name: Vec<String>,
}Expand description
One fork branch the scheduler must instantiate (see Suspend::ForkJoin).
Not Copy (unlike every other scheduler ABI value): Self::disable_name
is a real, possibly-nonempty String, not FFI/ABI data – this struct
stays a plain, compile-time-constant Rust value (per its own module’s
decode_reschedule_with_fork_table/fork_table doc comments), never
crosses an extern "C" boundary, so losing Copy costs nothing a real
caller observes; every construction site this adds a field to is a
struct literal, so a missed one is a compile error, never a silent gap.
Fields§
§kernel: u32Index into the compiled kernel’s VJ_PROCESS_TABLE of the kernel
codegen emitted for this fork branch.
entry_pc: u32Resume point (segment / resume_pc) at which the child starts.
parent: ProcessIdThe spawning process; the child’s activation record links to it for access to variables declared in enclosing scopes (LRM 9.3.2).
disable_name: Vec<String>The name(s) a disable elsewhere may target this branch by (LRM
9.6.2): the enclosing fork : NAME label, if any, and/or this
branch’s own named outermost block, if it has one – both resolved at
compile time by vj_sim::process::cfg’s fork-branch walk. Empty
for an unnamed branch of an unnamed fork, which no disable can ever
single out. Engine::apply_suspend’s Suspend::ForkJoin handling
tags each newly minted child’s ProcessDescriptor::disable_names
with this list the moment handle_fork hands back its ProcessId.
Trait Implementations§
impl Eq for SpawnSpec
impl StructuralPartialEq for SpawnSpec
Auto Trait Implementations§
impl Freeze for SpawnSpec
impl RefUnwindSafe for SpawnSpec
impl Send for SpawnSpec
impl Sync for SpawnSpec
impl Unpin for SpawnSpec
impl UnsafeUnpin for SpawnSpec
impl UnwindSafe for SpawnSpec
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.