编写RISC-V汇编时,write/read等系统调用代码该选哪份来源?
RISC-V系统调用代码来源选择建议
核心结论:优先选用你目标运行环境对应Linux内核版本的syscall.tbl文件,原因如下:
- 工具链生成的
sysroot/usr/include/asm-generic/unistd.h是通用架构头文件,未包含RISC-V专属系统调用(比如你提到的fork),且可能与实际运行的内核版本不匹配。 - RISC-V-Linux项目的
syscall.tbl是RISC-V架构Linux内核的系统调用定义源文件,所有RISC-V特有的系统调用都会在这里明确定义,完全匹配架构要求。
额外注意事项:
- 务必确保使用的
syscall.tbl版本和你目标运行的Linux内核版本一致,不同内核版本的系统调用号可能存在差异。 - 若基于工具链sysroot开发,也可直接查看
sysroot/usr/include/asm/unistd.h(而非asm-generic目录下的文件),该文件是工具链针对RISC-V架构生成的,会与对应内核版本的syscall.tbl保持一致。
内容的提问来源于stack exchange,提问作者AD S2dios
相关产品推荐
相关产品推荐

