Struct axtask::CurrentTask
source · pub struct CurrentTask(/* private fields */);
multitask
only.Expand description
A wrapper of AxTaskRef
as the current task.
Implementations§
source§impl CurrentTask
impl CurrentTask
sourcepub fn as_task_ref(&self) -> &AxTaskRef
pub fn as_task_ref(&self) -> &AxTaskRef
Converts CurrentTask
to AxTaskRef
.
Methods from Deref<Target = TaskInner>§
sourcepub fn join(&self) -> Option<i32>
pub fn join(&self) -> Option<i32>
Wait for the task to exit, and return the exit code.
It will return immediately if the task has already exited (but not dropped).
sourcepub fn get_kernel_stack_top(&self) -> Option<usize>
pub fn get_kernel_stack_top(&self) -> Option<usize>
获取内核栈栈顶
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 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.