ableos/ableos/src/boot_conf.rs

71 lines
1.6 KiB
Rust
Raw Normal View History

2022-01-22 06:01:16 +00:00
use log::LevelFilter;
2022-01-22 07:26:25 +00:00
use serde::{Deserialize, Serialize};
2022-01-22 06:01:16 +00:00
#[derive(Serialize, Debug, Deserialize)]
pub enum LogLevel {
/// A level lower than all log levels.
Off,
/// Corresponds to the `Error` log level.
Error,
/// Corresponds to the `Warn` log level.
Warn,
/// Corresponds to the `Info` log level.
Info,
/// Corresponds to the `Debug` log level.
Debug,
/// Corresponds to the `Trace` log level.
Trace,
}
#[derive(Serialize, Debug, Deserialize)]
pub struct KernelConfig {
pub boot: BootConfig,
pub logging: LoggingConfig,
pub tests: TestsConfig,
2022-01-22 06:01:16 +00:00
}
impl KernelConfig {
2022-01-22 06:01:16 +00:00
pub fn new() -> Self {
toml::from_str(include_str!("../assets/kernel.toml")).unwrap()
2022-01-22 06:01:16 +00:00
}
pub fn log_level(&self) -> LevelFilter {
use LevelFilter::*;
match self.logging.level {
2022-01-22 06:01:16 +00:00
LogLevel::Off => Off,
LogLevel::Error => Error,
LogLevel::Warn => Warn,
LogLevel::Info => Info,
LogLevel::Debug => Debug,
LogLevel::Trace => Trace,
}
}
}
impl Default for KernelConfig {
fn default() -> Self {
Self::new()
}
}
#[derive(Serialize, Debug, Deserialize)]
pub struct LoggingConfig {
pub enabled: bool,
2022-03-26 11:35:33 +00:00
pub log_to_serial: bool,
2022-08-07 03:12:48 +00:00
pub log_to_vterm: bool,
pub level: LogLevel,
2022-07-31 11:21:50 +00:00
pub filter: Vec<String>,
}
#[derive(Serialize, Debug, Deserialize)]
pub struct TestsConfig {
pub run_tests: bool,
pub run_demos: bool,
pub run_shader_tests: bool,
}
#[derive(Serialize, Debug, Deserialize)]
pub struct BootConfig {
2022-03-11 21:14:35 +00:00
pub system_processes: Vec<String>,
pub user_processes: Vec<String>,
}