源码目录与模块索引

源码目录与模块索引

1. 规模

drivers/char共约228个文件。顶层Makefile无统一char-core.o,而是固定对象、条件模块和子目录集合。

固定构建:

1
2
3
4
mem.o
random.o
misc.o
agp/ # 进入子目录,具体对象仍受Kconfig控制

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.cppdev.c 并口打印和用户态parport
nvram.c legacy NVRAM
hpet.cuv_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.ctpm-chip.c
  • tpm-dev.ctpm-dev-common.c
  • tpmrm-dev.ctpm2-space.c
  • tpm1-cmd.ctpm2-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/Kconfigdrivers/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

文章互动

阅读 --

留言

0 条留言

正在加载留言…