单一来源
当前只有一个可用来源,尚未完成多源交叉核验我更新了Linux系统调用网站与相关API接口
Linux 系统调用表
架构
· x64 x86_64 369 个系统调用 · 自 3.3 版本起
· x86 i386, 32 位 x86 441 个系统调用 · 自 3.3 版本起
· arm64 AArch64 326 个系统调用 · 自 3.7 版本起
· arm ARM EABI, 32 位 426 个系统调用 · 自 4.10 版本起
· riscv64 RISC-V, 64 位 327 个系统调用 · 自 4.15 版本起
· ia32 x86_64 上的 IA-32 兼容层 439 个系统调用 · 自 3.3 版本起
· x32 x86_64 上的 x32 ABI 369 个系统调用 · 自 3.4 版本起
· loongarch64 LoongArch, 64 位 323 个系统调用 · 自 5.19 版本起
· ppc64 PowerPC, 64 位 383 个系统调用 · 自 5.0 版本起
· ppc PowerPC, 32 位 425 个系统调用 · 自 5.0 版本起
· s390x IBM Z 378 个系统调用 · 自 4.16 版本起
· mips64 MIPS n64 ABI 363 个系统调用 · 自 5.0 版本起
· mipsn32 MIPS n32 ABI 387 个系统调用 · 自 5.0 版本起
· mipso32 MIPS o32 ABI 413 个系统调用 · 自 5.0 版本起
· alpha DEC Alpha 403 个系统调用 · 自 5.0 版本起
· arc Synopsys ARC 350 个系统调用 · 自 3.9 版本起
· csky C-SKY 346 个系统调用 · 自 4.20 版本起
· hexagon Qualcomm Hexagon 345 个系统调用 · 自 3.7 版本起
· m68k Motorola 68000 435 个系统调用 · 自 5.0 版本起
· microblaze Xilinx MicroBlaze 423 个系统调用 · 自 5.0 版本起
· nios2 Intel Nios II 346 个系统调用 · 自 3.19 版本起
· openrisc OpenRISC 346 个系统调用 · 自 3.7 版本起
· parisc HP PA-RISC 404 个系统调用 · 自 5.0 版本起
· sh SuperH 433 个系统调用 · 自 5.0 版本起
· sparc SPARC, 32 位 434 个系统调用 · 自 5.0 版本起
· sparc64 SPARC, 64 位 399 个系统调用 · 自 5.0 版本起
· xtensa Tensilica Xtensa 388 个系统调用 · 自 5.0 版本起
每个架构的表格,包含每个系统调用出现和移除的完整历史,也是一个位于 /<arch>/syscalls.json 的纯 JSON 文件,例如 /x64/syscalls.json。
调用约定
NR 中的数字,ARG0 到 ARG5 中的参数,然后是指令。结果通过 RETURN 返回。
ARCHINSTRUCTIONNRRETURNARG0ARG1ARG2ARG3ARG4ARG5
x64syscallraxrax rdirsirdxr10r8r9
x86int 0x80eaxeax ebxecxedxesiediebp
arm64svc #0x8x0 x0x1x2x3x4x5
armsvc #0r7r0 r0r1r2r3r4r5
riscv64ecalla7a0 a0a1a2a3a4a5
ia32int 0x80eaxeax ebxecxedxesiediebp
x32syscallraxrax rdirsirdxr10r8r9
loongarch64syscall 0a7a0 a0a1a2a3a4a5
ppc64scr0r3 r3r4r5r6r7r8
ppcscr0r3 r3r4r5r6r7r8
s390xsvc 0r1r2 r2r3r4r5r6r7
mips64syscallv0v0 a0a1a2a3a4a5
mipsn32syscallv0v0 a0a1a2a3a4a5
mipso32syscallv0v0 a0a1a2a3sp+16sp+20
alphacallsysv0v0 a0a1a2a3a4a5
arctrap0r8r0 r0r1r2r3r4r5
cskytrap 0r7a0 a0a1a2a3r4r5
hexagontrap0(#1)r6r0 r0r1r2r3r4r5
m68ktrap #0d0d0 d1d2d3d4d5a0
microblazebrki r14,8r12r3 r5r6r7r8r9r10
nios2trapr2r2 r4r5r6r7r8r9
openriscl.sys 1r11r11 r3r4r5r6r7r8
pariscble 0x100(%sr2, %r0)r20r28 r26r25r24r23r22r21
shtrapa #31r3r0 r4r5r6r7r0r1
sparct 0x10g1o0 o0o1o2o3o4o5
sparc64t 0x6dg1o0 o0o1o2o3o4o5
xtensasyscalla2a2 a6a3a4a5a8a9
curl https://api.syscall.sh/v2/syscalls/x64/read
任何内核版本,版本之间的差异以及 API 文档中的更多内容。
跨内核版本的系统调用表
条目会在版本之间添加,偶尔也会被移除。每个架构页面都有一个内核选择器,其 JSON 下载记录了每个条目首次出现(since)和被移除(removed_in)的时间。
已移除的条目依然可见:在内核选择器中选中“all, with removed”,每个被移除的系统调用都会标明是哪个版本将其移除的。
数据来源
本站的所有数据均直接读取自内核源码。对于每种架构,生成器会遍历系统调用表以及该架构所扫描的每个主线版本中的 SYSCALL_DEFINE 宏,因此这些数字才是内核实际调度的数据。
此外,它还记录了每种架构的调用约定、进入内核的指令,因此每个系统调用表都精确显示了编号和参数的存放位置。
如果一个系统调用的 since 等于该架构所扫描的第一个版本,那么它早在当时就已经存在,可能还要更早。
描述与完整历史
简短描述来自 Linux man pages 项目,io_uring 的描述来自 liburing。每当数据发生变化,网站都会根据系统调用 API 重新构建。
Evidence
来源与证据
当前仅有一个可用来源,尚未完成多源交叉核验。
- 发布时间
- 内容处理
- AI 翻译 / 摘要,需结合原文核对
相关资讯
AI 翻译、摘要和解读仅用于辅助判断;涉及重要决策时,请回到上方来源核实。