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
sourceimpl ProcessControlBlockInner
impl ProcessControlBlockInner
sourcepub fn get_user_token(&self) -> usize
pub fn get_user_token(&self) -> usize
get the address of app’s page table
sourcepub fn dealloc_tid(&mut self, tid: usize)
pub fn dealloc_tid(&mut self, tid: usize)
deallocate a task id
sourcepub fn thread_count(&self) -> usize
pub fn thread_count(&self) -> usize
the count of tasks(threads) in this process
sourcepub fn get_task(&self, tid: usize) -> Arc<TaskControlBlock>
pub fn get_task(&self, tid: usize) -> Arc<TaskControlBlock>
get a task with tid in this process
Auto Trait Implementations
impl !RefUnwindSafe for ProcessControlBlockInner
impl Send for ProcessControlBlockInner
impl Sync for ProcessControlBlockInner
impl Unpin for ProcessControlBlockInner
impl !UnwindSafe for ProcessControlBlockInner
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more