Linux 内核上游的驱动程序源代码结构要求
Driver's source code structure requirements for Linux Kernel upstream
我打算重写我的传感器驱动程序,以便尝试让我的模块进入 Linux 内核。我想知道是否对源代码的组织有要求。是否必须将所有代码保存在一个源文件中,或者是否可以将其拆分为多个源文件?
我更喜欢模块化的实现方法,一个文件包含 API 和内核注册所需的所有结构,另一个文件包含与传感器交换数据的低级操作 (即 mysensor.c & mysensor_core.c).
从这个角度来看有什么要求?
每个文件的代码行数有限制吗?
注:
我试图查看官方 github 存储库,在我看来代码总是仅限于一个源文件。
这里摘自“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”文件。
我打算重写我的传感器驱动程序,以便尝试让我的模块进入 Linux 内核。我想知道是否对源代码的组织有要求。是否必须将所有代码保存在一个源文件中,或者是否可以将其拆分为多个源文件?
我更喜欢模块化的实现方法,一个文件包含 API 和内核注册所需的所有结构,另一个文件包含与传感器交换数据的低级操作 (即 mysensor.c & mysensor_core.c).
从这个角度来看有什么要求?
每个文件的代码行数有限制吗?
注:
我试图查看官方 github 存储库,在我看来代码总是仅限于一个源文件。
这里摘自“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”文件。