繁体   English   中英

是否有原始的linux系统调用API / ABI文档

[英]Is there raw linux system call API/ABI documentation

系统调用有man(2)页面,但这些页面描述了位于系统调用之上的C库(glibc)的行为。 原始系统调用API / ABI是否记录在某处(UseTheSourceLuke除外)? 我在手册页中看到了一些内核/ libc之间的差异,但我并没有感觉到记录这些差异是最重要的。

我真正要说的是:通过POLICY将C库视为稳定/记录的Linux API,并且内核的系统调用API / ABI被认为是不稳定的(可能会更改),因此无故意或低优先级?

那么改变系统调用的内核开发人员会在glibc中做出变通方法吗? 那么其他的libc呢?

我可以找到关于这个主题的历史讨论吗?

编辑:所以ABI是稳定的,也是系统调用的行为,但内核开发人员没有记录它们。 glibc正在记录它们(有自己的添加/更改)。 正确?

我不认为内核开发人员实际上发布了中断API,但你可以找到像这样的第三方图表。

在回答你的问题系统调用手册页 特别要注意章节标题“架构调用约定”,并注意上面提到的John Bollinger,这些信息可能因内核版本而异。

我真正要说的是:通过POLICY将C库视为稳定/记录的Linux API,并且内核的系统调用API / ABI被认为是不稳定的(可能会更改),因此无故意或低优先级?

这是不可能的,而无需指定策略, 什么说话的政策。

为“Linux”编程的人通常实际上是为一种或多种GNU / Linux编程,而不是裸内核。 因此,我倾向于说我们可能没有考虑内核开发者政策。 实际上,如果C库接口完全可用,那么我们不是在讨论裸内核。 而且,基于你的标记,我假设你在询问C编程。 如果您使用汇编编程,则原始系统调用接口将是自然且适当的,并且我的大部分其他注释将不适用。

如果您确实将GNU / Linux作为目标而排除其他任何东西,那么这个问题就有点明智了。 另一方面,通常情况下,人们更愿意为更广泛的兼容性进行编程。 在这种情况下,除了使用C库系统调用接口之外别无选择,因为每个系统的原始系统调用都是不同的。 Glibc的系统调用接口在符合POSIX和SUS方面表现非常出色,因此使用它们(正确)对于可移植性来说是一个巨大的优势。 即使其他Unix和类Unix系统(如OS X,BSD,Solaris等)不是直接目标,也很难在这些系统上保持使用软件的可能性。

无论如何,如果您决定让您的软件直接执行Linux系统调用,那么您是否确实会插入内联汇编来实现您想要的任何地方? 当然不是 - 你会写包装函数。 那么,为什么你应该反对使用C库已经提供的经过全面测试和详细记录的包装函数?

当然,Linux系统调用接口确实在某种程度上在内核版本之间发生了变化。 这可以被认为是使版本不同的东西(我的意思是x.2y - > x.2zxy - > zw )。 我并没有很好地了解这些更改通常有多大,但过去发生了不兼容的更改,使用C库接口可以在一定程度上隔离这些更改。 但是,如上所述,我认为更喜欢C库接口还有其他更大的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM