1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
// Take a look at the license at the top of the repository in the LICENSE file.
use std::fmt;
pub use crate::sys::inner::process::*;
use crate::ProcessStatus;
#[doc(hidden)]
impl From<u32> for ProcessStatus {
fn from(status: u32) -> ProcessStatus {
match status {
1 => ProcessStatus::Idle,
2 => ProcessStatus::Run,
3 => ProcessStatus::Sleep,
4 => ProcessStatus::Stop,
5 => ProcessStatus::Zombie,
x => ProcessStatus::Unknown(x),
}
}
}
impl fmt::Display for ProcessStatus {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str(match *self {
ProcessStatus::Idle => "Idle",
ProcessStatus::Run => "Runnable",
ProcessStatus::Sleep => "Sleeping",
ProcessStatus::Stop => "Stopped",
ProcessStatus::Zombie => "Zombie",
_ => "Unknown",
})
}
}
/// Enum describing the different status of a thread.
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum ThreadStatus {
/// Thread is running normally.
Running,
/// Thread is stopped.
Stopped,
/// Thread is waiting normally.
Waiting,
/// Thread is in an uninterruptible wait
Uninterruptible,
/// Thread is halted at a clean point.
Halted,
/// Unknown.
Unknown(i32),
}
impl From<i32> for ThreadStatus {
fn from(status: i32) -> ThreadStatus {
match status {
1 => ThreadStatus::Running,
2 => ThreadStatus::Stopped,
3 => ThreadStatus::Waiting,
4 => ThreadStatus::Uninterruptible,
5 => ThreadStatus::Halted,
x => ThreadStatus::Unknown(x),
}
}
}
impl ThreadStatus {
/// Used to display `ThreadStatus`.
pub fn to_string(&self) -> &str {
match *self {
ThreadStatus::Running => "Running",
ThreadStatus::Stopped => "Stopped",
ThreadStatus::Waiting => "Waiting",
ThreadStatus::Uninterruptible => "Uninterruptible",
ThreadStatus::Halted => "Halted",
ThreadStatus::Unknown(_) => "Unknown",
}
}
}
impl fmt::Display for ThreadStatus {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.to_string())
}
}
|