kernel/syscall/
mod.rs

1//! System call interface module.
2//! 
3//! This module provides the system call interface for the Scarlet kernel.
4//! It defines the system call table and the functions that handle various system
5//! calls.
6//! User programs can invoke these system calls to request services from the kernel.
7//! 
8//! ## System Call Table
9//! 
10//! The system call table is a mapping between system call numbers and their
11//! corresponding handler functions. Each entry in the table is defined using the
12//! `syscall_table!` macro.
13//! 
14
15use crate::arch::Trapframe;
16use crate::fs::syscall::{sys_close, sys_lseek, sys_open, sys_read, sys_write};
17use crate::task::syscall::{sys_brk, sys_clone, sys_execve, sys_execve_abi, sys_exit, sys_getchar, sys_getpid, sys_getppid, sys_putchar, sys_sbrk, sys_waitpid};
18
19#[macro_use]
20mod macros;
21
22syscall_table! {
23    Invalid = 0 => |_: &mut Trapframe| {
24        0
25    },
26    Exit = 1 => sys_exit,
27    Clone = 2 => sys_clone,
28    Execve = 3 => sys_execve,
29    ExecveABI = 4 => sys_execve_abi,
30    Waitpid = 5 => sys_waitpid,
31    Getpid = 7 => sys_getpid,
32    Getppid = 8 => sys_getppid,
33    Brk = 12 => sys_brk,
34    Sbrk = 13 => sys_sbrk,
35    // BASIC I/O
36    Putchar = 16 => sys_putchar,
37    Getchar = 17 => sys_getchar,
38    // File operations
39    Open = 20 => sys_open,
40    Close = 21 => sys_close,
41    Read = 22 => sys_read,
42    Write = 23 => sys_write,
43    Lseek = 24 => sys_lseek,
44}