Move more syscall usages to helper functions.
This commit is contained in:
parent
ca67da16e6
commit
5705f8d2ab
3 changed files with 50 additions and 33 deletions
|
|
@ -1,6 +1,4 @@
|
|||
use crate::init::SELF_VMAS_CAP;
|
||||
use crate::syscall;
|
||||
use crate::zion;
|
||||
use linked_list_allocator::LockedHeap;
|
||||
|
||||
#[global_allocator]
|
||||
|
|
@ -11,24 +9,8 @@ pub static mut CAN_ALLOC: bool = false;
|
|||
pub fn init_heap() {
|
||||
// 1 MiB
|
||||
let size = 0x10_0000;
|
||||
let mut vmmo_cap = 0;
|
||||
let obj_req = zion::ZMemoryObjectCreateReq {
|
||||
size,
|
||||
vmmo_cap: &mut vmmo_cap as *mut u64,
|
||||
};
|
||||
syscall::syscall(zion::kZionMemoryObjectCreate, &obj_req)
|
||||
.expect("Failed to create memory object");
|
||||
|
||||
let mut vaddr: u64 = 0;
|
||||
let vmas_req = zion::ZAddressSpaceMapReq {
|
||||
vmmo_cap,
|
||||
vmas_cap: unsafe { SELF_VMAS_CAP },
|
||||
align: 0x2000,
|
||||
vaddr: &mut vaddr as *mut u64,
|
||||
vmas_offset: 0,
|
||||
};
|
||||
|
||||
syscall::syscall(zion::kZionAddressSpaceMap, &vmas_req).expect("Failed to map memory object");
|
||||
let vmmo_cap = syscall::memory_object_create(size).expect("Failed to create memory object");
|
||||
let vaddr = syscall::address_space_map(vmmo_cap).expect("Failed to map memory object");
|
||||
unsafe {
|
||||
ALLOCATOR.lock().init(vaddr as *mut u8, size as usize);
|
||||
CAN_ALLOC = true;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue