MCPcopy Create free account
hub / github.com/bendudson/EuraliOS / malloc

Function malloc

euralios_std/src/syscalls.rs:401–432  ·  view source on GitHub ↗
(
    num_bytes: u64,
    max_physaddr: u64
)

Source from the content-addressed store, hash-verified

399}
400
401pub fn malloc(
402 num_bytes: u64,
403 max_physaddr: u64
404) -> Result<(MemoryHandle, u64), SyscallError> {
405
406 if num_bytes == 0 {
407 return Err(SYSCALL_ERROR_PARAM);
408 }
409
410 let num_pages = (num_bytes >> 12) +
411 if (num_bytes & 4095) != 0 {1} else {0};
412
413 let error: u64;
414 let virtaddr: u64;
415 let physaddr: u64;
416 unsafe {
417 asm!("syscall",
418 in("rax") SYSCALL_MALLOC,
419 in("rdi") num_pages, // First argument
420 in("rsi") max_physaddr, // Second argument
421 lateout("rax") error,
422 lateout("rdi") virtaddr,
423 lateout("rsi") physaddr,
424 out("rcx") _,
425 out("r11") _);
426 }
427 if error == 0 {
428 Ok((MemoryHandle(virtaddr), physaddr))
429 } else {
430 Err(SyscallError(error))
431 }
432}
433
434pub fn new_rendezvous() -> Result<(CommHandle, CommHandle), SyscallError> {
435 let error: u64;

Callers 7

from_u8_sliceMethod · 0.85
handle_file_readwriteFunction · 0.85
handle_file_readonlyFunction · 0.85
mainFunction · 0.85
receive_packetMethod · 0.85
consumeMethod · 0.85
displayFunction · 0.85

Calls 2

MemoryHandleClass · 0.85
SyscallErrorClass · 0.85

Tested by

no test coverage detected