Skip to main content

TaskRunningState

Struct TaskRunningState 

Source
pub struct TaskRunningState {
    pub thread: OnceLock<ZirconThread>,
    pub files: LockDepMutex<Option<SharedFdTable>, TaskFilesLock>,
    pub mm: RcuArc<MemoryManager>,
    pub fs: RcuArc<FsContext>,
    pub abstract_socket_namespace: Arc<AbstractUnixSocketNamespace>,
    pub abstract_vsock_namespace: Arc<AbstractVsockSocketNamespace>,
    pub proc_pid_directory_cache: OnceLock<FsNodeHandle>,
}
Expand description

The running state of a task.

This structure contains the state of a task that is only relevant while the task is running. It is dropped when the task enters an exited state.

Fields§

§thread: OnceLock<ZirconThread>

A handle to the underlying Zircon thread object.

Some tasks lack an underlying Zircon thread. These tasks are used internally by the Starnix kernel to track background work, typically on a kthread.

§files: LockDepMutex<Option<SharedFdTable>, TaskFilesLock>

The file descriptor table for this task.

This table can be shared by many tasks.

This is always Some while the task is running. It becomes None upon exit.

§mm: RcuArc<MemoryManager>

The memory manager for this task. This is None only for system tasks.

§fs: RcuArc<FsContext>

The file system for this task.

This is always Some while the task is running. It becomes None upon exit, so that the FsContext (and possibly the whole mount namespace) is released on the exiting thread rather than by whichever thread happens to drop the last reference to this TaskRunningState.

§abstract_socket_namespace: Arc<AbstractUnixSocketNamespace>

The namespace for abstract AF_UNIX sockets for this task.

§abstract_vsock_namespace: Arc<AbstractVsockSocketNamespace>

The namespace for AF_VSOCK for this task.

§proc_pid_directory_cache: OnceLock<FsNodeHandle>

The pid directory, so it doesn’t have to be generated and thrown away on every access. See https://fxbug.dev/291962828 for details.

Implementations§

Source§

impl TaskRunningState

Source

pub fn files(&self) -> Result<Arc<FdTable>, Errno>

Source

pub fn fork_files(&self) -> Option<SharedFdTable>

Source

pub fn share_files(&self) -> Option<SharedFdTable>

Source

pub fn unshare_files(&self, current_task: &CurrentTask)

Unshares the file descriptor table for this task, if shared.

Updates the Arc<FdTable> reference in both SharedFdTable and CurrentTask.

Source

pub fn mm(&self) -> Result<Arc<MemoryManager>, Errno>

Source

pub fn fs(&self) -> Result<Arc<FsContext>, Errno>

Returns the file system context for this task.

§Errors

Returns [Err(ESRCH)] if the task has exited and released its file system context.

Auto Trait Implementations§

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> AsAny for T
where T: Any,

Source§

fn as_any(&self) -> &(dyn Any + 'static)

Source§

fn type_name(&self) -> &'static str

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, D> Encode<Ambiguous1, D> for T
where D: ResourceDialect,

Source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
Source§

impl<T, D> Encode<Ambiguous2, D> for T
where D: ResourceDialect,

Source§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
§

impl<F, N> FidlIntoNative<Box<N>> for F
where F: FidlIntoNative<N>,

§

fn fidl_into_native(self) -> Box<N>

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> InstanceFromServiceTransport<T> for T

§

fn from_service_transport(handle: T) -> T

Converts the given service transport handle of type T to [Self]
Source§

impl<T, U> Into32<U> for T
where U: MultiArchFrom<T>,

Source§

fn into_32(self) -> U

Source§

impl<T, U> Into64<U> for T
where U: MultiArchFrom<T>,

Source§

fn into_64(self) -> U

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> IntoAny for T
where T: 'static + Send + Sync,

Source§

fn into_any(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ

Cast the given object into a dyn std::any::Any.
Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

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
§

impl<T, U> IntoExt<U> for T
where U: FromExt<T>,

§

fn into_ext(self) -> U

Performs the conversion.
Source§

impl<T, U> IntoFidl<U> for T
where U: FromFidl<T>,

Source§

fn into_fidl(self) -> U

Source§

impl<T, U> MultiArchFrom<T> for U
where U: From<T>,

Source§

fn from_64(value: T) -> U

Source§

fn from_32(value: T) -> U

§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<E> RunsTransport<Mpsc> for E

§

impl<E> RunsTransport<Mpsc> for E
where E: RunsTransport<Mpsc>,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.
§

impl<T, U> TryIntoExt<U> for T
where U: TryFromExt<T>,

§

type Error = <U as TryFromExt<T>>::Error

§

fn try_into_ext(self) -> Result<U, <T as TryIntoExt<U>>::Error>

Tries to perform the conversion.
§

impl<St> WithTag for St

§

fn tagged<T>(self, tag: T) -> Tagged<T, St> ⓘ

Produce a new stream from this one which yields item tupled with a constant tag