Skip to main content

fs_ext4_strate/
syscalls.rs

1//! Domain-specific syscall wrappers for the EXT4 strate.
2
3pub use strat9_syscall::{
4    call,
5    error::{self, Error},
6};
7
8pub type Result<T> = error::Result<T>;
9
10/// Implements volume read.
11pub fn volume_read(handle: u64, sector: u64, buf: &mut [u8], sector_count: u64) -> Result<usize> {
12    call::volume_read(
13        handle as usize,
14        sector as usize,
15        buf.as_mut_ptr() as usize,
16        sector_count as usize,
17    )
18}
19
20/// Implements volume write.
21pub fn volume_write(handle: u64, sector: u64, buf: &[u8], sector_count: u64) -> Result<usize> {
22    call::volume_write(
23        handle as usize,
24        sector as usize,
25        buf.as_ptr() as usize,
26        sector_count as usize,
27    )
28}
29
30/// Implements volume info.
31pub fn volume_info(handle: u64) -> Result<u64> {
32    call::volume_info(handle as usize).map(|v| v as u64)
33}
34
35/// Implements debug log.
36pub fn debug_log(msg: &str) {
37    let _ = call::debug_log(msg.as_bytes());
38}
39
40/// Implements exit.
41pub fn exit(code: usize) -> ! {
42    call::exit(code)
43}