pub struct PidTableGuard<'a> { /* private fields */ }Expand description
An RAII guard representing exclusive writer access to a PidTable.
Holding this guard serializes mutations (allocations, reservations, removals) to the PID table while allowing concurrent lock-free reads.
Implementations§
Source§impl<'a> PidTableGuard<'a>
impl<'a> PidTableGuard<'a>
Sourcepub fn allocate_pid(&mut self) -> Result<Pid, Errno>
pub fn allocate_pid(&mut self) -> Result<Pid, Errno>
Allocates a new PID, returning an error if the PID table is full.
pub fn add_task(&mut self, task: Arc<Task>)
pub fn remove_task(&mut self, tid: &Pid)
Sourcepub fn kill_process(&mut self, pid: &Pid)
pub fn kill_process(&mut self, pid: &Pid)
Replace process with the specified pid with a zombie.
pub fn remove_zombie(&mut self, pid: &Pid)
pub fn add_process_group(&mut self, process_group: &Arc<ProcessGroup>)
pub fn remove_process_group(&mut self, leader: &Pid)
Methods from Deref<Target = PidTable>§
Sourcepub fn lock(&self) -> PidTableGuard<'_>
pub fn lock(&self) -> PidTableGuard<'_>
Acquires the lock for mutations, returning a PidTableGuard.
pub fn get(&self, pid: pid_t) -> Result<Pid, Errno>
pub fn set_thread_group_notifier( &self, notifier: Sender<MemoryAttributionLifecycleEvent>, )
pub fn get_thread_groups<'a>( &'a self, scope: &'a RcuReadScope, ) -> impl Iterator<Item = Arc<ThreadGroup>> + 'a
Sourcepub fn process_ids(&self) -> Vec<pid_t> ⓘ
pub fn process_ids(&self) -> Vec<pid_t> ⓘ
Returns the process ids for all processes, including zombies.
Sourcepub fn running_task_ids<'a>(
&'a self,
scope: &'a RcuReadScope,
) -> impl Iterator<Item = &'a Pid>
pub fn running_task_ids<'a>( &'a self, scope: &'a RcuReadScope, ) -> impl Iterator<Item = &'a Pid>
Returns an iterator over the Pids for all the currently running tasks.
pub fn last_pid(&self) -> pid_t
Trait Implementations§
Source§impl<'a> Deref for PidTableGuard<'a>
impl<'a> Deref for PidTableGuard<'a>
Source§impl<'a> ZombieReleaser for PidTableGuard<'a>
impl<'a> ZombieReleaser for PidTableGuard<'a>
fn remove_zombie(&mut self, pid: &Pid)
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for PidTableGuard<'a>
impl<'a> !Send for PidTableGuard<'a>
impl<'a> !UnwindSafe for PidTableGuard<'a>
impl<'a> Freeze for PidTableGuard<'a>
impl<'a> Sync for PidTableGuard<'a>
impl<'a> Unpin for PidTableGuard<'a>
impl<'a> UnsafeUnpin for PidTableGuard<'a>
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, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
Source§impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
§impl<F, N> FidlIntoNative<Box<N>> for Fwhere
F: FidlIntoNative<N>,
impl<F, N> FidlIntoNative<Box<N>> for Fwhere
F: FidlIntoNative<N>,
fn fidl_into_native(self) -> Box<N>
§impl<T> InstanceFromServiceTransport<T> for T
impl<T> InstanceFromServiceTransport<T> for T
§fn from_service_transport(handle: T) -> T
fn from_service_transport(handle: T) -> T
Converts the given service transport handle of type
T to [Self]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