Struct os::task::process::ProcessControlBlockInner

source ·
pub struct ProcessControlBlockInner {
    pub is_zombie: bool,
    pub memory_set: MemorySet,
    pub parent: Option<Weak<ProcessControlBlock>>,
    pub children: Vec<Arc<ProcessControlBlock>>,
    pub exit_code: i32,
    pub fd_table: Vec<Option<Arc<dyn File + Send + Sync>>>,
    pub signals: SignalFlags,
    pub tasks: Vec<Option<Arc<TaskControlBlock>>>,
    pub task_res_allocator: RecycleAllocator,
    pub mutex_list: Vec<Option<Arc<dyn Mutex>>>,
    pub semaphore_list: Vec<Option<Arc<Semaphore>>>,
    pub condvar_list: Vec<Option<Arc<Condvar>>>,
}
Expand description

Inner of Process Control Block

Fields§

§is_zombie: bool

is zombie?

§memory_set: MemorySet

memory set(address space)

§parent: Option<Weak<ProcessControlBlock>>

parent process

§children: Vec<Arc<ProcessControlBlock>>

children process

§exit_code: i32

exit code

§fd_table: Vec<Option<Arc<dyn File + Send + Sync>>>

file descriptor table

§signals: SignalFlags

signal flags

§tasks: Vec<Option<Arc<TaskControlBlock>>>

tasks(also known as threads)

§task_res_allocator: RecycleAllocator

task resource allocator

§mutex_list: Vec<Option<Arc<dyn Mutex>>>

mutex list

§semaphore_list: Vec<Option<Arc<Semaphore>>>

semaphore list

§condvar_list: Vec<Option<Arc<Condvar>>>

condvar list

Implementations§

source§

impl ProcessControlBlockInner

source

pub fn get_user_token(&self) -> usize

get the address of app’s page table

source

pub fn alloc_fd(&mut self) -> usize

allocate a new file descriptor

source

pub fn alloc_tid(&mut self) -> usize

allocate a new task id

source

pub fn dealloc_tid(&mut self, tid: usize)

deallocate a task id

source

pub fn thread_count(&self) -> usize

the count of tasks(threads) in this process

source

pub fn get_task(&self, tid: usize) -> Arc<TaskControlBlock>

get a task with tid in this process

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> 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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

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, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

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

§

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.