Skip to main content

strat9_kernel/shell/commands/ps/
mod.rs

1//! Process management commands
2use crate::{shell::ShellError, shell_println};
3use alloc::string::String;
4
5/// List all tasks
6pub fn cmd_ps(_args: &[String]) -> Result<(), ShellError> {
7    shell_println!("PID    Name              State      Priority");
8    shell_println!("────────────────────────────────────────────────");
9
10    if let Some(tasks) = crate::process::get_all_tasks() {
11        for task in tasks {
12            let state = unsafe { *task.state.get() };
13            let state_str = match state {
14                crate::process::TaskState::Ready => "Ready",
15                crate::process::TaskState::Running => "Running",
16                crate::process::TaskState::Blocked => "Blocked",
17                crate::process::TaskState::Dead => "Dead",
18            };
19
20            shell_println!(
21                "{:<6} {:<17} {:<10} {:?}",
22                task.id.as_u64(),
23                task.name,
24                state_str,
25                task.priority
26            );
27        }
28    } else {
29        shell_println!("  No tasks available");
30    }
31
32    shell_println!("");
33    Ok(())
34}