Remove os/src/loader.rs
This commit is contained in:
parent
e9597d901b
commit
b1b26fd788
1 changed files with 0 additions and 62 deletions
|
@ -1,62 +0,0 @@
|
||||||
use alloc::vec::Vec;
|
|
||||||
use lazy_static::*;
|
|
||||||
|
|
||||||
pub fn get_num_app() -> usize {
|
|
||||||
extern "C" { fn _num_app(); }
|
|
||||||
unsafe { (_num_app as usize as *const usize).read_volatile() }
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn get_app_data(app_id: usize) -> &'static [u8] {
|
|
||||||
extern "C" { fn _num_app(); }
|
|
||||||
let num_app_ptr = _num_app as usize as *const usize;
|
|
||||||
let num_app = get_num_app();
|
|
||||||
let app_start = unsafe {
|
|
||||||
core::slice::from_raw_parts(num_app_ptr.add(1), num_app + 1)
|
|
||||||
};
|
|
||||||
assert!(app_id < num_app);
|
|
||||||
unsafe {
|
|
||||||
core::slice::from_raw_parts(
|
|
||||||
app_start[app_id] as *const u8,
|
|
||||||
app_start[app_id + 1] - app_start[app_id]
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
lazy_static! {
|
|
||||||
static ref APP_NAMES: Vec<&'static str> = {
|
|
||||||
let num_app = get_num_app();
|
|
||||||
extern "C" { fn _app_names(); }
|
|
||||||
let mut start = _app_names as usize as *const u8;
|
|
||||||
let mut v = Vec::new();
|
|
||||||
unsafe {
|
|
||||||
for _ in 0..num_app {
|
|
||||||
let mut end = start;
|
|
||||||
while end.read_volatile() != '\0' as u8 {
|
|
||||||
end = end.add(1);
|
|
||||||
}
|
|
||||||
let slice = core::slice::from_raw_parts(start, end as usize - start as usize);
|
|
||||||
let str = core::str::from_utf8(slice).unwrap();
|
|
||||||
v.push(str);
|
|
||||||
start = end.add(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
v
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#[allow(unused)]
|
|
||||||
pub fn get_app_data_by_name(name: &str) -> Option<&'static [u8]> {
|
|
||||||
let num_app = get_num_app();
|
|
||||||
(0..num_app)
|
|
||||||
.find(|&i| APP_NAMES[i] == name)
|
|
||||||
.map(|i| get_app_data(i))
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn list_apps() {
|
|
||||||
println!("/**** APPS ****");
|
|
||||||
for app in APP_NAMES.iter() {
|
|
||||||
println!("{}", app);
|
|
||||||
}
|
|
||||||
println!("**************/");
|
|
||||||
}
|
|
Loading…
Add table
Add a link
Reference in a new issue