Linux ABI
Linux 面是这个项目走得最远的一条兼容路径,理由很实际:Linux 的 syscall 编号稳定且公开,所以可以直接把编号映射到内核服务面,不需要用户态垫片。glibc 直接 syscall,跑原生速度。
45
dispatch 臂,一等公民。命名表已同步为实现面。
119
Linux demo 数量
一次被度量抓出来的不一致
在 C12 首次对 Linux 面做度量时,发现命名表与 dispatch 臂对不上:15 条臂没有名字(getpid / gettid / getuid / getgid / geteuid / getegid / time / futex / clock_gettime / set_tid_address / set_robust_list / get_robust_list / prlimit64 / rseq / unlink),另有 10 条表项没有实现(poll / ioctl / pread64 / readv / select / sched_yield / socket / connect / accept / wait4)。
处理方式:
命名表同步为实现面的 45 条(让表描述事实,而不是描述愿望);未实现的 10 条移入 C01 / C08 目标集。其中 socket 族是网络线的前置条件,因此它的优先级比看起来高。
这条路径为什么值得投入
因为验证成本最低。Linux 面有真实世界的测试语料(LTP 子集)、有大量现成二进制、有明确的接口规范。这意味着“兼容到什么程度”这个问题在这里第一次变得可以回答,而不是靠举例。
相关:
闸门本身的设计见 架构 · 系统调用闸门;编号表见 参考 · 系统调用;加固计划见 C01–C15。