pub struct ZombieNotification {
pub recipient: Weak<ThreadGroup>,
pub zombie: OwnedRef<ZombieProcess>,
}Expand description
A zombie process that is pending notification.
§Thread Safety
Notifications are generally produced in contexts in which a ThreadGroup state lock is held.
Any such lock must be released before notifications are delivered. The notification’s
recipient thread group may be:
- The originating thread group, in which case delivery while locked would self-deadlock.
- One of this thread group’s ancestors, in which case delivery while locked would invert the
parent-child ordering of
ThreadGrouplocks.
The PidTable lock must be held continuously between ZombieNotification production and
delivery to protect against concurrent exit races. Delivery requires releasing ThreadGroup
state locks. If the recipient thread group exits before the notification is delivered, subreaper
identification becomes impossible and the zombie must be reaped without notifying observers.
Holding the PidTable lock throughout notification ensures the recipient cannot concurrently
exit.
Fields§
§recipient: Weak<ThreadGroup>The recipient ThreadGroup, which is generally the zombie’s parent.
zombie: OwnedRef<ZombieProcess>The zombie process to notify the parent of.
Implementations§
Source§impl ZombieNotification
impl ZombieNotification
pub fn new( recipient: Weak<ThreadGroup>, zombie: OwnedRef<ZombieProcess>, ) -> Self
Auto Trait Implementations§
impl Freeze for ZombieNotification
impl !RefUnwindSafe for ZombieNotification
impl Send for ZombieNotification
impl Sync for ZombieNotification
impl Unpin for ZombieNotification
impl UnsafeUnpin for ZombieNotification
impl !UnwindSafe for ZombieNotification
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
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
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>
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>
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