in core/server/src/streaming/systems/snapshot/procdump.rs [22:94]
fn parse_stat(contents: &str) -> String {
let fields: Vec<&str> = contents.split_whitespace().collect();
if fields.len() < 52 {
return format!("Invalid stat format: {}", contents);
}
let cmd_start = contents.find('(').unwrap_or(0);
let cmd_end = contents.rfind(')').unwrap_or(contents.len());
let comm = &contents[cmd_start + 1..cmd_end];
let mut result = String::new();
result.push_str(&format!("PID: {}\n", fields[0]));
result.push_str(&format!("Command: {}\n", comm));
result.push_str(&format!(
"State: {} ({})\n",
fields[2],
match fields[2] {
"R" => "Running",
"S" => "Sleeping (interruptible)",
"D" => "Waiting in uninterruptible disk sleep",
"Z" => "Zombie",
"T" => "Stopped",
"t" => "Tracing stop",
"W" => "Paging",
"X" | "x" => "Dead",
"K" => "Wakekill",
"P" => "Parked",
_ => "Unknown",
}
));
result.push_str(&format!("Parent PID: {}\n", fields[3]));
result.push_str(&format!("Process Group: {}\n", fields[4]));
result.push_str(&format!("Session ID: {}\n", fields[5]));
result.push_str(&format!("TTY: {}\n", fields[6]));
result.push_str(&format!("Foreground Process Group: {}\n", fields[7]));
result.push_str(&format!("Kernel Flags: {}\n", fields[8]));
result.push_str(&format!("Minor Faults: {}\n", fields[9]));
result.push_str(&format!("Children Minor Faults: {}\n", fields[10]));
result.push_str(&format!("Major Faults: {}\n", fields[11]));
result.push_str(&format!("Children Major Faults: {}\n", fields[12]));
result.push_str(&format!("User Mode Time: {} ticks\n", fields[13]));
result.push_str(&format!("System Mode Time: {} ticks\n", fields[14]));
result.push_str(&format!("Children User Mode Time: {} ticks\n", fields[15]));
result.push_str(&format!(
"Children System Mode Time: {} ticks\n",
fields[16]
));
result.push_str(&format!("Priority: {}\n", fields[17]));
result.push_str(&format!("Nice Value: {}\n", fields[18]));
result.push_str(&format!("Number of Threads: {}\n", fields[19]));
result.push_str(&format!("Real-time Priority: {}\n", fields[39]));
result.push_str(&format!(
"Policy: {} ({})\n",
fields[40],
match fields[40] {
"0" => "SCHED_NORMAL/OTHER",
"1" => "SCHED_FIFO",
"2" => "SCHED_RR",
"3" => "SCHED_BATCH",
"5" => "SCHED_IDLE",
"6" => "SCHED_DEADLINE",
_ => "Unknown",
}
));
result.push_str(&format!(
"Aggregated Block I/O Delays: {} ticks\n",
fields[41]
));
result.push_str(&format!("Guest Time: {} ticks\n", fields[42]));
result.push_str(&format!("Children Guest Time: {} ticks\n", fields[43]));
result
}