源码目录与模块索引
1. 规模
drivers/char共约228个文件。顶层Makefile无统一char-core.o,而是固定对象、条件模块和子目录集合。
固定构建:
1 | mem.o |
2. 顶层核心文件
| 文件 | 职责 |
|---|---|
mem.c |
major 1设备统一open分发 |
random.c |
CRNG、熵源、random/urandom接口 |
misc.c |
major 10 misc registry |
virtio_console.c |
virtio console和multiport |
ttyprintk.c |
将TTY写入转成printk |
lp.c、ppdev.c |
并口打印和用户态parport |
nvram.c |
legacy NVRAM |
hpet.c、uv_mmtimer.c |
timer字符接口 |
hangcheck-timer.c |
系统卡死检测 |
apm-emulation.c |
ARM APM兼容 |
powernv-op-panel.c |
POWER operator panel |
adi.c |
SPARC ADI版本访问 |
其它顶层文件多为x86、MIPS、PowerPC、NetWinder或旧式专用卡。
3. hw_random/
包含HWRNG Core和大量厂商driver:
core.c:registry、/dev/hwrng、选择和熵注入;rockchip-rng.c:Rockchip Crypto/TRNG/RKRNG多代实现;- virtio、OP-TEE、SMCCC;
- Intel/AMD/VIA、Broadcom、OMAP、Meson、MTK、Exynos等。
CONFIG_HW_RANDOM构建rng-core;各厂商选项独立构建。
4. tpm/
核心:
tpm-interface.c、tpm-chip.c;tpm-dev.c、tpm-dev-common.c;tpmrm-dev.c、tpm2-space.c;tpm1-cmd.c、tpm2-cmd.c;tpm-sysfs.c;eventlog/。
Transport:
- TIS MMIO/SPI/I2C;
- CR50、Atmel、Infineon、Nuvoton、ST33;
- ACPI CRB;
- IBM/Xen vTPM;
- OP-TEE fTPM;
- userspace vTPM proxy。
5. ipmi/
主要模块:
- message handler;
- device interface;
- SI(KCS/SMIC/BT);
- SSIF(SMBus);
- watchdog;
- poweroff;
- DMI/ACPI/OF/platform discovery;
- PCI/USB等特定接口。
IPMI是管理控制器协议,不属于Linux watchdog Core本身。
6. agp/
AGP Core及Intel/AMD/VIA/NVIDIA/ALI/SIS等GART bridge驱动。主要服务旧式PC图形内存aperture,ARM64 RK3588不使用。
7. pcmcia/
包含同步串口、smart card等PCMCIA function driver。依赖PCMCIA Core,RK3588板级通常没有。
8. xillybus/
xillybus_core.c:endpoint/channel和字符设备数据面;xillybus_class.c:class/minor管理;- PCIe、OF和USB transport。
它可用于FPGA streaming,但需具体Xillybus endpoint,不是通用FPGA manager。
9. 其它子目录
xilinx_hwicap/:MicroBlaze/Xilinx ICAP重配置;mwave/:旧IBM ThinkPad modem;tpm/st33zp24/:ST TPM transport。
10. Kconfig边界
drivers/char/Kconfig还source drivers/tty/Kconfig和drivers/s390/char/Kconfig,这不表示对应源码位于本目录。
关键配置:
| 配置 | 产物/接口 |
|---|---|
DEVMEM |
/dev/mem |
DEVPORT |
/dev/port |
HW_RANDOM |
rng-core、/dev/hwrng |
TCG_TPM |
TPM Core |
VIRTIO_CONSOLE |
virtio_console |
PRINTER |
lp |
PPDEV |
ppdev |
XILLYBUS_* |
transport和class |
11. 与其它目录边界
- 通用cdev:
fs/char_dev.c; - TTY:
drivers/tty; - watchdog:
drivers/watchdog; - TEE:
drivers/tee; - crypto accelerator:
drivers/crypto; - FPGA manager:
drivers/fpga; - GPIO:
drivers/gpio。
正在加载留言…