osiris/syscalls/
file.rs

1use core::{ffi::c_int, str};
2use proc_macros::syscall_handler;
3
4#[syscall_handler(num = 0)]
5fn syscall_print(fd: usize, buf: *const u8, len: usize) -> c_int {
6    if fd == 0 {
7        let bytes = unsafe { core::slice::from_raw_parts(buf, len) };
8
9        if let Ok(s) = str::from_utf8(bytes) {
10            // If the bytes are valid UTF-8, print them directly
11            kprintln!("[uspace] {}", s);
12            return 0;
13        }
14    }
15
16    1
17}