Linux 内核上游的驱动程序源代码结构要求

Driver's source code structure requirements for Linux Kernel upstream

我打算重写我的传感器驱动程序,以便尝试让我的模块进入 Linux 内核。我想知道是否对源代码的组织有要求。是否必须将所有代码保存在一个源文件中,或者是否可以将其拆分为多个源文件?

我更喜欢模块化的实现方法,一个文件包含 API 和内核注册所需的所有结构,另一个文件包含与传感器交换数据的低级操作 (即 mysensor.c & mysensor_core.c).

从这个角度来看有什么要求?

每个文件的代码行数有限制吗?

注:

我试图查看官方 github 存储库,在我看来代码总是仅限于一个源文件。

https://github.com/torvalds/linux/tree/master/drivers/misc

这里摘自“linux/drivers/iio/gyro/Makefile”作为例子:

# Currently this is rolled into one module, split it if
# we ever create a separate SPI interface for MPU-3050
obj-$(CONFIG_MPU3050) += mpu3050.o
mpu3050-objs := mpu3050-core.o mpu3050-i2c.o

用于构建“mpu3050.ko”模块的“mpu3050.o”文件是通过链接两个目标文件“mpu3050-core.o”和“mpu3050-[=21=”构建的]",每一个都是通过编译一个相应命名的源文件来构建的。

请注意,如果模块是从多个源文件构建的,则最终模块“mpu3050”的基本名称必须与每个源文件“mpu3050-core”和“mpu3050”的基本名称不同-i2c”。因此,在您的情况下,如果您希望最终模块被称为“mysensor.ko”,那么您将需要重命名“mysensor.c”文件。