C 测试内核模块

C 测试内核模块,c,linux,linux-kernel,kernel-module,C,Linux,Linux Kernel,Kernel Module,为了对内核模块进行单元测试,我对模拟函数和全局变量感兴趣 最初尝试使用,但遇到问题。任何关于如何做到这一点的文章链接也将是伟大的。(对于内核模块)。这里给出更多细节:作为内核模块编译会出错,因为stdio不可用;为用户空间编译会出错,因为它找不到printk之类的东西 理想情况下,我会有一个用户级可执行文件或一个内核模块,在我的函数上运行单元测试。我遇到麻烦的部分是模拟全局依赖关系,比如函数依赖的结构,以便编写一个合适的测试 我已经看了一些,但还没有找到答案,也没有找到不可能做到这一点的确切原因

为了对内核模块进行单元测试,我对模拟函数和全局变量感兴趣

最初尝试使用,但遇到问题。任何关于如何做到这一点的文章链接也将是伟大的。(对于内核模块)。这里给出更多细节:作为内核模块编译会出错,因为stdio不可用;为用户空间编译会出错,因为它找不到printk之类的东西

理想情况下,我会有一个用户级可执行文件或一个内核模块,在我的函数上运行单元测试。我遇到麻烦的部分是模拟全局依赖关系,比如函数依赖的结构,以便编写一个合适的测试


我已经看了一些,但还没有找到答案,也没有找到不可能做到这一点的确切原因。

我将按照以下步骤进行:

  • 实现您的内核模块
  • 定义一个API,让用户级程序测试您的模块,该API可以基于:
    • /dev/
      中的字符设备(您可以在其中定义适当的ioctl)
    • /proc/
      中的文件(不鼓励)
    • 特定系统调用(不鼓励)
    • /sys/
  • 在用户级实现一个程序(在这种情况下,使用适当的框架,如or),该程序与测试各种功能的内核模块交互

我喜欢这个想法,但对于已经编写的代码来说,很难付诸实践。