MCPcopy Create free account
hub / github.com/Starry-OS/StarryOS / from_thread

Method from_thread

core/src/task/stat.rs:71–99  ·  view source on GitHub ↗

Create a new [`TaskStat`] from a [`AxTaskRef`].

(task: &TaskInner)

Source from the content-addressed store, hash-verified

69impl TaskStat {
70 /// Create a new [`TaskStat`] from a [`AxTaskRef`].
71 pub fn from_thread(task: &TaskInner) -> AxResult<Self> {
72 let thread = task.as_thread();
73 let proc_data = &thread.proc_data;
74 let proc = &proc_data.proc;
75
76 let pid = proc.pid();
77 let comm = task.name();
78 let comm = comm[..comm.len().min(16)].to_owned();
79 let state = match task.state() {
80 TaskState::Running | TaskState::Ready => 'R',
81 TaskState::Blocked => 'S',
82 TaskState::Exited => 'Z',
83 };
84 let ppid = proc.parent().map_or(0, |p| p.pid());
85 let pgrp = proc.group().pgid();
86 let session = proc.group().session().sid();
87 Ok(Self {
88 pid,
89 comm: comm.to_owned(),
90 state,
91 ppid,
92 pgrp,
93 session,
94 num_threads: proc.threads().len() as u32,
95 exit_signal: proc_data.exit_signal.unwrap_or(Signo::SIGCHLD) as u8,
96 exit_code: proc.exit_code(),
97 ..Default::default()
98 })
99 }
100}
101
102impl fmt::Display for TaskStat {

Callers

nothing calls this directly

Calls 3

as_threadMethod · 0.80
nameMethod · 0.45
lenMethod · 0.45

Tested by

no test coverage detected