1. #include <linux/***.h>
-
位置 :这些头文件通常位于内核源代码树的
include/linux/
目录下。 -
用途 :
linux/
目录中的头文件包含了大量的内核接口、数据结构和宏定义,用于编写与内核交互的代码,如驱动程序、内核模块等。示例路径:
include/linux/module.h
include/linux/kernel.h
include/linux/init.h
2. #include <asm/***.h>
-
位置 :这些头文件位于内核源代码树的
arch/<architecture>/include/asm/
目录下,其中<architecture>
代表目标架构(如x86
,arm
,arm64
,riscv
等)。 -
用途 :
asm/
目录中的头文件是与架构相关的接口定义,提供了特定处理器架构的低级接口和汇编相关的宏或函数。示例路径:
arch/x86/include/asm/io.h
arch/arm/include/asm/system.h
arch/riscv/include/asm/atomic.h
3. #include <mach/***.h>
-
位置 :
mach/
头文件通常位于特定平台相关的目录下,比如arch/arm/mach-<platform>/include/mach/
。 -
用途 :
mach/
目录中的头文件主要用于嵌入式平台或者特定硬件架构,定义了与特定机器相关的接口和实现。例如,不同的 ARM 处理器可能有各自的mach
目录来定义硬件特性。示例路径:
arch/arm/mach-omap2/include/mach/hardware.h
arch/arm/mach-exynos/include/mach/map.h
4. #include <uapi/***.h>
-
位置 :位于
include/uapi/
目录下。 -
用途 :
uapi
代表 "User API"(用户空间 API),这些头文件定义了内核向用户空间暴露的接口,如系统调用相关的结构体、常量和宏。这些文件通常通过make headers_install
安装到/usr/include
目录下,供用户空间应用程序使用。示例路径:
include/uapi/linux/fs.h
include/uapi/linux/if.h
include/uapi/asm-generic/ioctl.h
5. #include <soc/***.h>
-
位置 :位于
drivers/soc/
或include/soc/
目录下。 -
用途 :
soc/
目录用于定义与特定 SoC(System on Chip)相关的头文件和代码。这些头文件通常提供了访问 SoC 特定硬件资源的接口。示例路径:
include/soc/qcom/smem.h
include/soc/tegra/common.h
6. #include <net/***.h>
-
位置 :位于
include/net/
目录下。 -
用途:这些头文件与内核的网络子系统相关,定义了网络协议栈、接口和数据结构。通常用于网络驱动程序和网络协议的实现。
示例路径:
include/net/sock.h
include/net/net_namespace.h
include/net/tcp.h
7. #include <sound/***.h>
-
位置 :位于
include/sound/
目录下。 -
用途:这些头文件与 ALSA(Advanced Linux Sound Architecture)子系统相关,定义了音频设备驱动程序的接口和数据结构。
示例路径:
include/sound/core.h
include/sound/pcm.h
include/sound/control.h
8. #include <media/***.h>
-
位置 :位于
include/media/
目录下。 -
用途:这些头文件与 Linux 媒体子系统相关,定义了视频设备、摄像头、电视调谐器等的接口和数据结构。
示例路径:
include/media/v4l2-dev.h
include/media/media-device.h
include/media/dvbdev.h
9. #include <crypto/***.h>
-
位置 :位于
include/crypto/
目录下。 -
用途:这些头文件与内核的加密子系统相关,定义了加密算法、加密上下文、密钥管理等功能接口。
示例路径:
include/crypto/hash.h
include/crypto/skcipher.h
include/crypto/algapi.h
10. #include <trace/***.h>
-
位置 :位于
include/trace/
和include/trace/events/
目录下。 -
用途:这些头文件与内核的跟踪和调试子系统相关,定义了跟踪点、事件和跟踪控制接口,用于内核性能分析和调试。
示例路径:
include/trace/trace_events.h
include/trace/events/sched.h
include/trace/events/net.h
11. #include <drm/***.h>
-
位置 :位于
include/drm/
目录下。 -
用途:这些头文件与 Direct Rendering Manager (DRM) 子系统相关,定义了图形设备驱动程序的接口,特别是用于显示控制器和 GPU 驱动。
示例路径:
include/drm/drmP.h
include/drm/drm_crtc.h
include/drm/drm_mode.h
12. #include <video/***.h>
-
位置 :位于
include/video/
目录下。 -
用途:这些头文件与 Linux 内核的视频子系统相关,定义了图形和显示设备的接口,包括 framebuffer 驱动程序等。
示例路径:
include/video/videomode.h
include/video/edid.h
include/video/of_videomode.h
13. #include <sound/***.h>
-
位置 :位于
include/sound/
目录下。 -
用途:这些头文件与音频设备驱动程序相关,定义了用于音频处理的接口,如 PCM(脉冲编码调制)和控制接口等。
示例路径:
include/sound/core.h
include/sound/pcm.h