Struct os::task::task::TaskControlBlockInner

source ·
pub struct TaskControlBlockInner {
Show 18 fields pub trap_cx_ppn: PhysPageNum, pub base_size: usize, pub task_cx: TaskContext, pub task_status: TaskStatus, pub memory_set: MemorySet, pub parent: Option<Weak<TaskControlBlock>>, pub children: Vec<Arc<TaskControlBlock>>, pub exit_code: i32, pub fd_table: Vec<Option<Arc<dyn File + Send + Sync>>>, pub signals: SignalFlags, pub signal_mask: SignalFlags, pub handling_sig: isize, pub signal_actions: SignalActions, pub killed: bool, pub frozen: bool, pub trap_ctx_backup: Option<TrapContext>, pub heap_bottom: usize, pub program_brk: usize,
}

Fields§

§trap_cx_ppn: PhysPageNum

The physical page number of the frame where the trap context is placed

§base_size: usize

Application data can only appear in areas where the application address space is lower than base_size

§task_cx: TaskContext

Save task context

§task_status: TaskStatus

Maintain the execution status of the current process

§memory_set: MemorySet

Application address space

§parent: Option<Weak<TaskControlBlock>>

Parent process of the current process. Weak will not affect the reference count of the parent

§children: Vec<Arc<TaskControlBlock>>

A vector containing TCBs of all child processes of the current process

§exit_code: i32

It is set when active exit or execution error occurs

§fd_table: Vec<Option<Arc<dyn File + Send + Sync>>>§signals: SignalFlags§signal_mask: SignalFlags§handling_sig: isize§signal_actions: SignalActions§killed: bool§frozen: bool§trap_ctx_backup: Option<TrapContext>§heap_bottom: usize

Heap bottom

§program_brk: usize

Program break

Implementations§

source§

impl TaskControlBlockInner

source

pub fn get_trap_cx(&self) -> &'static mut TrapContext

source

pub fn get_user_token(&self) -> usize

source

fn get_status(&self) -> TaskStatus

source

pub fn is_zombie(&self) -> bool

source

pub fn alloc_fd(&mut self) -> usize

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.