kernel/
services.rs

1//! This module initializes and manages the microkernel services.
2
3use crate::{
4    sched::{self, thread::Timing},
5    uspace,
6    utils::KernelError,
7};
8
9/// Initialize the microkernel services.
10///
11/// This function creates the init task and other services.
12pub fn init_services() -> Result<(), KernelError> {
13    // TODO: These are dummy values for testing.
14    let init_timing = Timing {
15        period: 8,
16        deadline: 8,
17        exec_time: 2,
18    };
19
20    let init_task = sched::create_task(uspace::core::Init::task_desc())?;
21    sched::create_thread(init_task, uspace::core::Init::main, None, init_timing)?;
22
23    // TODO: These are dummy values for testing.
24    let dummy_timing = Timing {
25        period: 6,
26        deadline: 6,
27        exec_time: 1,
28    };
29
30    let dummy_task = sched::create_task(uspace::core::Dummy::task_desc())?;
31    sched::create_thread(dummy_task, uspace::core::Dummy::main, None, dummy_timing)?;
32
33    // TODO: These are dummy values for testing.
34    let dummy_timing2 = Timing {
35        period: 6,
36        deadline: 6,
37        exec_time: 1,
38    };
39
40    let dummy2_task = sched::create_task(uspace::core::Dummy2::task_desc())?;
41    sched::create_thread(dummy2_task, uspace::core::Dummy2::main, None, dummy_timing2)?;
42
43    Ok(())
44}