Linux内核标识符中前导和尾部下划线的含义是什么?

我一直在运行像__KERNEL__这样的小公约.

在这种情况下,__是内核开发人员使用的命名约定,还是以这种方式命名宏的语法特定原因?

整个代码中有很多这样的例子.

例如,一些函数和变量以_或偶数__开头.

这有什么特别的原因吗?

它似乎被广泛使用,我只需要澄清一下这些东西是否具有语法目的,还是只是一个命名约定.

此外,我看到许多用户声明的类型,如uid_t.我再次假设这是一个命名约定,告诉读者它是用户定义的类型?

最佳答案
有几种情况:

>在面向公众的标题中,即libc将接管并置于/usr/include / linux下的任何内容,标准指定应定义哪些符号,并且系统特定的任何其他符号应以下划线和大写字母或两个下划线开头.这就是__KERNEL__特别的原因,因为它被用在内核和libc中都包含的头文件中,并且一些声明是不同的.
>在内部代码中,约定通常是符号__something是排除某些管理的东西,通常是锁定的.这就像__d_lookup这样的原因.系统调用的类似约定是sys_something是系统调用入口点,它处理与内核之间的上下文切换,并调用do_something来执行实际工作.
> _t后缀是typedef的标准库约定.例如. size_t,ptrdiff_t,foff_t等.内核类型也遵循此约定.

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...