You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
21 lines
616 B
21 lines
616 B
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]
|
|
)
|
|
}
|
|
}
|