Skip to main content

strat9_kernel/process/
mod.rs

1//! Process and Task Management
2//!
3//! See also: [Architecture Overview](https://strat9-os.org/strat9-os-docs/architecture.html)
4//! for scheduler design and process lifecycle diagrams.
5//!
6//! Implements the core structures for process management in Strat9-OS:
7//! - Task structure with state management
8//! - Process abstraction
9//! - Basic scheduler functionality
10
11#[cfg(feature = "selftest")]
12pub mod abi_layout_test;
13#[cfg(feature = "selftest")]
14pub mod demand_paging_test;
15pub mod elf;
16#[cfg(feature = "selftest")]
17pub mod errno_test;
18#[cfg(feature = "selftest")]
19pub mod fork_test;
20#[cfg(feature = "selftest")]
21pub mod futex_test;
22#[cfg(feature = "selftest")]
23pub mod mmap_test;
24#[cfg(feature = "selftest")]
25pub mod pipe_test;
26#[cfg(feature = "selftest")]
27pub mod posix_signal_test;
28pub mod process;
29#[cfg(feature = "selftest")]
30pub mod process_id_test;
31pub mod sched_classes;
32pub mod scheduler;
33#[cfg(feature = "selftest")]
34pub mod scheduler_test;
35#[cfg(feature = "selftest")]
36pub mod selftest;
37pub mod signal;
38pub mod task;
39pub mod test;
40#[cfg(feature = "selftest")]
41pub mod time_test;
42pub mod timer;
43pub mod usertest;
44#[cfg(feature = "selftest")]
45pub mod vfs_ops_test;
46#[cfg(feature = "selftest")]
47pub mod vfs_stat_test;
48
49// Backward-compatible alias while references migrate from `sched` to `sched_classes`.
50pub use sched_classes as sched;
51
52pub use scheduler::{
53    add_task, block_current_task, class_table as scheduler_class_table, clear_task_wake_deadline,
54    configure_class_table, cpu_usage_snapshot, create_session, current_pgid, current_pid,
55    current_sid, current_task_clone, current_task_clone_try, current_task_id, current_tid,
56    get_all_tasks, get_child_task_id_by_pid, get_child_task_id_by_tid, get_parent_id,
57    get_parent_pid, get_pgid_by_pid, get_sid_by_pid, get_task_by_id, get_task_by_pid,
58    get_task_id_by_pid, get_task_id_by_tid, get_task_ids_in_pgid, get_task_ids_in_tgid,
59    init_scheduler, kill_task, log_state as log_scheduler_state, note_try_lock_fail,
60    reset_scheduler_metrics, resume_task, schedule, schedule_on_cpu, scheduler_metrics_snapshot,
61    set_process_group, set_task_sched_policy, set_task_wake_deadline,
62    set_verbose as set_scheduler_verbose, state_snapshot as scheduler_state_snapshot, suspend_task,
63    try_wait_child, verbose_enabled as scheduler_verbose_enabled, wake_task, yield_task,
64    CpuUsageSnapshot, SchedulerMetricsSnapshot, SchedulerStateSnapshot, WaitChildResult,
65};
66pub use signal::{has_pending_signals, send_signal, Signal, SignalSet};
67pub use task::{Pid, Task, TaskId, TaskPriority, TaskState, Tid};