pub struct TaskInner {
pub trap_frame: UnsafeCell<TrapFrame>,
pub page_table_token: UnsafeCell<usize>,
pub cpu_set: AtomicU64,
pub send_sigchld_when_exit: bool,
pub sched_status: UnsafeCell<SchedStatus>,
/* private fields */
}
multitask
only.Expand description
The inner task structure.
Fields§
§trap_frame: UnsafeCell<TrapFrame>
monolithic
only.初始化的trap上下文
page_table_token: UnsafeCell<usize>
monolithic
only.the page table token of the process which the task belongs to
cpu_set: AtomicU64
monolithic
only.TODO: to support the sched_setaffinity
send_sigchld_when_exit: bool
signal
only.退出时是否向父进程发送SIG_CHILD
sched_status: UnsafeCell<SchedStatus>
monolithic
only.The scheduler status of the task, which defines the scheduling policy and priority
Implementations§
source§impl TaskInner
impl TaskInner
source§impl TaskInner
impl TaskInner
sourcepub fn set_child_tid(&self, tid: usize)
Available on crate feature monolithic
only.
pub fn set_child_tid(&self, tid: usize)
monolithic
only.store the child thread ID at the location pointed to by child_tid in clone args
sourcepub fn set_clear_child_tid(&self, tid: usize)
Available on crate feature monolithic
only.
pub fn set_clear_child_tid(&self, tid: usize)
monolithic
only.clear (zero) the child thread ID at the location pointed to by child_tid in clone args
sourcepub fn get_clear_child_tid(&self) -> usize
Available on crate feature monolithic
only.
pub fn get_clear_child_tid(&self) -> usize
monolithic
only.get the pointer to the child thread ID
sourcepub fn get_page_table_token(&self) -> usize
Available on crate feature monolithic
only.
pub fn get_page_table_token(&self) -> usize
monolithic
only.get the page table token of the process which the task belongs to
sourcepub fn set_page_table_token(&self, token: usize)
Available on crate feature monolithic
only.
pub fn set_page_table_token(&self, token: usize)
monolithic
only.force to set the page table token of the process UNSAFELY
sourcepub fn time_stat_from_user_to_kernel(&self)
Available on crate feature monolithic
only.
pub fn time_stat_from_user_to_kernel(&self)
monolithic
only.update the time information when the task is switched from user mode to kernel mode
sourcepub fn time_stat_from_kernel_to_user(&self)
Available on crate feature monolithic
only.
pub fn time_stat_from_kernel_to_user(&self)
monolithic
only.update the time information when the task is switched from kernel mode to user mode
sourcepub fn time_stat_when_switch_from(&self)
Available on crate feature monolithic
only.
pub fn time_stat_when_switch_from(&self)
monolithic
only.update the time information when the task is switched out
sourcepub fn time_stat_when_switch_to(&self)
Available on crate feature monolithic
only.
pub fn time_stat_when_switch_to(&self)
monolithic
only.update the time information when the task is ready to be switched in
sourcepub fn time_stat_output(&self) -> (usize, usize, usize, usize)
Available on crate feature monolithic
only.
pub fn time_stat_output(&self) -> (usize, usize, usize, usize)
monolithic
only.将内核统计的运行时时间转为秒与微妙的形式输出,方便进行sys_time (用户态秒,用户态微妙,内核态秒,内核态微妙)
sourcepub fn timer_output(&self) -> (usize, usize)
Available on crate feature monolithic
only.
pub fn timer_output(&self) -> (usize, usize)
monolithic
only.输出计时器信息 (计时器周期,当前计时器剩余时间) 单位为us
sourcepub fn set_timer(
&self,
timer_interval_ns: usize,
timer_remained_ns: usize,
timer_type: usize
) -> bool
Available on crate feature monolithic
only.
pub fn set_timer( &self, timer_interval_ns: usize, timer_remained_ns: usize, timer_type: usize ) -> bool
monolithic
only.设置计时器信息
若type不为None则返回成功
sourcepub fn time_stat_clear(&self)
Available on crate feature monolithic
only.
pub fn time_stat_clear(&self)
monolithic
only.重置统计时间
sourcepub fn get_process_id(&self) -> u64
Available on crate feature monolithic
only.
pub fn get_process_id(&self) -> u64
monolithic
only.get the process ID of the task
sourcepub fn set_process_id(&self, process_id: u64)
Available on crate feature monolithic
only.
pub fn set_process_id(&self, process_id: u64)
monolithic
only.set the process ID of the task
sourcepub fn get_first_trap_frame(&self) -> *mut TrapFrame
Available on crate feature monolithic
only.
pub fn get_first_trap_frame(&self) -> *mut TrapFrame
monolithic
only.获取内核栈的第一个trap上下文
sourcepub fn set_leader(&self, is_lead: bool)
Available on crate feature monolithic
only.
pub fn set_leader(&self, is_lead: bool)
monolithic
only.set the flag whether the task is the main thread of the process
sourcepub fn is_leader(&self) -> bool
Available on crate feature monolithic
only.
pub fn is_leader(&self) -> bool
monolithic
only.whether the task is the main thread of the process
sourcepub fn set_trap_context(&self, trap_frame: TrapFrame)
Available on crate feature monolithic
only.
pub fn set_trap_context(&self, trap_frame: TrapFrame)
monolithic
only.设置Trap上下文
sourcepub fn set_trap_in_kernel_stack(&self)
Available on crate feature monolithic
only.
pub fn set_trap_in_kernel_stack(&self)
monolithic
only.将trap上下文直接写入到内核栈上 注意此时保持sp不变 返回值为压入了trap之后的内核栈的栈顶,可以用于多层trap压入
sourcepub fn set_cpu_set(&self, mask: usize, set_size: usize)
Available on crate feature monolithic
only.
pub fn set_cpu_set(&self, mask: usize, set_size: usize)
monolithic
only.设置CPU set,其中set_size为bytes长度
sourcepub fn get_cpu_set(&self) -> usize
Available on crate feature monolithic
only.
pub fn get_cpu_set(&self) -> usize
monolithic
only.to get the CPU set
sourcepub fn set_sched_status(&self, status: SchedStatus)
Available on crate feature monolithic
only.
pub fn set_sched_status(&self, status: SchedStatus)
monolithic
only.set the scheduling policy and priority
sourcepub fn get_sched_status(&self) -> SchedStatus
Available on crate feature monolithic
only.
pub fn get_sched_status(&self) -> SchedStatus
monolithic
only.get the scheduling policy and priority
sourcepub fn get_ctx(&self) -> &TaskContext
Available on crate feature monolithic
only.
pub fn get_ctx(&self) -> &TaskContext
monolithic
only.get the task context for task switch
sourcepub fn get_sig_child(&self) -> bool
Available on crate features monolithic
and signal
only.
pub fn get_sig_child(&self) -> bool
monolithic
and signal
only.whether to send SIG_CHILD when the task exits
sourcepub fn set_sig_child(&mut self, sig_child: bool)
Available on crate features monolithic
and signal
only.
pub fn set_sig_child(&mut self, sig_child: bool)
monolithic
and signal
only.set whether to send SIG_CHILD when the task exits
sourcepub unsafe fn set_tls_force(&self, value: usize)
Available on crate feature monolithic
and x86-64 only.
pub unsafe fn set_tls_force(&self, value: usize)
monolithic
and x86-64 only.Safety
It is unsafe because it may cause undefined behavior if the fs_base
is not a valid address.