Skip to content

syscall.h

TIP

System call numbers 系统调用号定义

TIP

fork() 创建一个与当前进程完全相同的子进程。 子进程拥有父进程内存空间的副本,并继承父进程打开的文件描述符。 成功时,在父进程中返回子进程的PID,在子进程中返回0。失败时返回-1。

#define SYS_fork     1

TIP

exit(status) 终止当前进程,并将其退出状态 status 返回给父进程。 该进程占用的所有资源将被释放。

#define SYS_exit     2

TIP

wait(status_ptr) 等待一个子进程退出,并获取其退出状态。 如果没有子进程退出,则会阻塞当前进程,直到有子进程退出。 成功时返回退出的子进程PID,并将其退出状态写入 status_ptr 指向的地址。

#define SYS_wait     3

TIP

pipe(fd_array) 创建一个管道,用于进程间通信。 fd_array 是一个包含两个整数的数组,fd_array[0] 用于读,fd_array[1] 用于写。 成功时返回0,失败时返回-1。

#define SYS_pipe     4

TIP

read(fd, buf, n) 从文件描述符 fd 中读取最多 n 个字节到缓冲区 buf。 返回实际读取的字节数,如果已到文件末尾则返回0,失败时返回-1。

#define SYS_read     5

TIP

kill(pid) 向进程ID为 pid 的进程发送一个终止信号。 成功时返回0,失败时返回-1(例如,进程不存在或权限不足)。

#define SYS_kill     6

TIP

exec(path, argv) 加载并执行路径为 path 的可执行文件,替换当前进程的内存映像。 argv 是传递给新程序的命令行参数数组。 成功时不会返回,失败时返回-1。

#define SYS_exec     7

TIP

fstat(fd, stat_buf) 获取文件描述符 fd 指向的文件的元数据信息。 stat_buf 是一个指向 struct stat 的指针,用于存储文件状态。 成功时返回0,失败时返回-1。

#define SYS_fstat    8

TIP

chdir(path) 将当前进程的工作目录更改为 path。 成功时返回0,失败时返回-1。

#define SYS_chdir    9

TIP

dup(fd) 复制一个现有的文件描述符 fd。 返回一个新的文件描述符,它与旧的 fd 指向同一个文件表项。 失败时返回-1。

#define SYS_dup     10

TIP

getpid() 返回当前进程的进程ID (PID)。

#define SYS_getpid  11

TIP

sbrk(n) 将进程的数据段大小增加 n 字节。 n 可以是负数,表示收缩内存。 返回新分配内存的起始地址(即旧的程序中断点)。

#define SYS_sbrk    12

TIP

sleep(ticks) 使当前进程暂停执行 ticks 个时钟周期。 在指定的 ticks 时间后,进程将被唤醒并重新调度。

#define SYS_sleep   13

TIP

uptime() 返回系统自启动以来经过的时钟周期数。

#define SYS_uptime  14

TIP

open(path, flags) 打开路径为 path 的文件,并返回一个新的文件描述符。 flags 参数指定文件的打开模式(如O_RDONLY, O_WRONLY, O_CREATE等)。 成功时返回文件描述符,失败时返回-1。

#define SYS_open    15

TIP

write(fd, buf, n) 将缓冲区 buf 中的 n 个字节写入文件描述符 fd。 返回实际写入的字节数,失败时返回-1。

#define SYS_write   16

TIP

mknod(path, major, minor) 创建一个特殊文件(设备文件)。 path 是文件名,majorminor 是设备号。 成功时返回0,失败时返回-1。

#define SYS_mknod   17

TIP

unlink(path) 从文件系统中删除路径为 path 的文件。 如果文件的链接计数降为0,并且没有进程打开它,则会释放其占用的空间。 成功时返回0,失败时返回-1。

#define SYS_unlink  18

TIP

link(old_path, new_path) 为 old_path 创建一个新的硬链接 new_path。 硬链接是现有文件的另一个名字,它们共享相同的inode。 成功时返回0,失败时返回-1。

#define SYS_link    19

TIP

mkdir(path) 创建一个名为 path 的新目录。 成功时返回0,失败时返回-1。

#define SYS_mkdir   20

TIP

close(fd) 关闭文件描述符 fd。 释放该文件描述符,如果这是最后一个指向该文件的引用,则会释放相关资源。 成功时返回0,失败时返回-1。

#define SYS_close   21

TIP

shutdown() 关闭系统。这是一个xv6特有的系统调用,用于测试或关闭虚拟机。

#define SYS_shutdown 22

TIP

reboot() 重启系统

#define SYS_reboot 23