diff --git a/etc/syscalls_linux_aarch64.md b/etc/syscalls_linux_aarch64.md index b7e5cf0..0060958 100644 --- a/etc/syscalls_linux_aarch64.md +++ b/etc/syscalls_linux_aarch64.md @@ -198,7 +198,7 @@ | 0xc3 (195) | shmctl | (int shmid, int cmd, struct shmid_ds *buf) | __arm64_sys_shmctl | false | | 0xc4 (196) | shmat | (int shmid, char *shmaddr, int shmflg) | __arm64_sys_shmat | false | | 0xc5 (197) | shmdt | (char *shmaddr) | __arm64_sys_shmdt | false | -| 0xc6 (198) | socket | (int family, int type, int protocol) | __arm64_sys_socket | false | +| 0xc6 (198) | socket | (int family, int type, int protocol) | __arm64_sys_socket | dummy | | 0xc7 (199) | socketpair | (int family, int type, int protocol, int *usockvec) | __arm64_sys_socketpair | false | | 0xc8 (200) | bind | (int fd, struct sockaddr *umyaddr, int addrlen) | __arm64_sys_bind | false | | 0xc9 (201) | listen | (int fd, int backlog) | __arm64_sys_listen | false | diff --git a/libkernel/src/error/syscall_error.rs b/libkernel/src/error/syscall_error.rs index 4e62bd7..4d0783d 100644 --- a/libkernel/src/error/syscall_error.rs +++ b/libkernel/src/error/syscall_error.rs @@ -47,6 +47,7 @@ pub fn kern_err_to_syscall(err: KernelError) -> isize { KernelError::Fs(FsError::NotFound) => ENOENT, KernelError::NotATty => ENOTTY, KernelError::SeekPipe => ESPIPE, + KernelError::NotSupported => EINVAL, _ => todo!(), } } diff --git a/src/arch/arm64/exceptions/syscall.rs b/src/arch/arm64/exceptions/syscall.rs index bce7050..f27e5d1 100644 --- a/src/arch/arm64/exceptions/syscall.rs +++ b/src/arch/arm64/exceptions/syscall.rs @@ -58,7 +58,7 @@ use crate::{ }; use alloc::boxed::Box; use libkernel::{ - error::syscall_error::kern_err_to_syscall, + error::{KernelError, syscall_error::kern_err_to_syscall}, memory::address::{TUA, UA, VA}, }; @@ -217,6 +217,7 @@ pub async fn handle_syscall() { 0xaf => sys_geteuid().map_err(|e| match e {}), 0xb0 => sys_getgid().map_err(|e| match e {}), 0xb1 => sys_getegid().map_err(|e| match e {}), + 0xc6 => Err(KernelError::NotSupported), 0xd6 => sys_brk(VA::from_value(arg1 as _)) .await .map_err(|e| match e {}),