29 lines
893 B
Rust
29 lines
893 B
Rust
// Copyright (c) 2025 shibedrill
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
#![allow(dead_code)]
|
|
|
|
// TODO: Implement a nice API for system calls.
|
|
// I don't want to have to define the argument/return value registers twice
|
|
// per architecture. How do I make this work?
|
|
|
|
pub enum SyscallArgs {
|
|
Args0(),
|
|
Args1(usize),
|
|
Args2(usize, usize),
|
|
Args3(usize, usize, usize),
|
|
Args4(usize, usize, usize, usize),
|
|
Args5(usize, usize, usize, usize, usize),
|
|
Args6(usize, usize, usize, usize, usize, usize),
|
|
}
|
|
|
|
#[repr(usize)]
|
|
pub enum SyscallError {
|
|
Ok, // No error.
|
|
Unspecified, // Unspecified error occurred.
|
|
SyscallNotExist, // System call does not exist.
|
|
ProcessNotExist, // The process mentioned does not exist.
|
|
PermissionDenied, // The process lacks capabilities.
|
|
Aborted, // The kernel gave up on a blocking request.
|
|
}
|