25 lines
853 B
Rust
25 lines
853 B
Rust
use crate::memory::alloc;
|
|
use alloc::string::String;
|
|
use alloc::vec::Vec;
|
|
|
|
pub type KernelParameters = alloc::collections::BTreeMap<String, String>;
|
|
|
|
// This parsing is godawful.
|
|
pub fn get_kernel_params(cmdline: &[u8]) -> KernelParameters {
|
|
let cmd_str = String::from_utf8_lossy(cmdline).into_owned();
|
|
let args: Vec<&str> = cmd_str.split_ascii_whitespace().collect();
|
|
let mut params: alloc::collections::BTreeMap<String, String> =
|
|
alloc::collections::BTreeMap::new();
|
|
for arg in args {
|
|
let split: Vec<&str> = arg.split('=').collect();
|
|
if let Some(first) = split.first() {
|
|
if split.len() > 1 {
|
|
params.insert(String::from(*first), split[1..].join("="));
|
|
} else {
|
|
params.insert(String::from(*first), String::new());
|
|
}
|
|
}
|
|
}
|
|
params
|
|
}
|