小编Aks*_*ngh的帖子

如何知道驱动模块的代码流程?

我正在研究 Linux 设备驱动程序,我的主要重点是 wifi 驱动程序。我想知道当我插入我的设备时代码是如何流动的。也许,我可以做一些事情,比如printk在每个函数中添加一行。我拥有的设备由ath9k_htc驱动程序支持。出于学习目的,我想对驱动程序代码进行一些更改。

理解 linux 中驱动程序模块的代码流的正确或通用方法是什么?

drivers debugging kernel-modules control-flow

7
推荐指数
1
解决办法
763
查看次数

在 linux 内核中找不到一些“asm”、“生成的”头文件的来源?

所以,我正在编写一个在内核空间中工作的模块。我的代码编译正确并且工作正常。

问题是有一些头文件,我在任何地方都找不到。这对我来说没有意义,为什么头文件不存在时一切正常。他们一定在某个地方。

这些是我在任何地方都找不到的一些头文件(还有更多,但对于我的问题,它们可能就足够了):

#include <asm/errno.h>
#include <asm/socket.h>  /* /include/linux/socket.h */
#include <stdarg.h>      /* /include/linux/kernel.h */
#include <asm/types.h>
#include <asm/mmiowb.h>  /* /include/linux/spinlock.h */
#include <asm/param.h>   /* /include/linux/jiffies.h */
Run Code Online (Sandbox Code Playgroud)

尽管x86在 .

而且我不知道在哪里查找这些文件:

#include <generated/timeconst.h>    /* /include/linux/jiffies.h */
#include <generated/bounds.h>
#include <generated/autoconf.h>     /* /include/linux/kconfig.h */
#include <generated/asm-offsets.h>
Run Code Online (Sandbox Code Playgroud)

我正在linux 内核 5.4.31的以下目录中查找这些文件:

/include
/include/uapi
/arch/x86/include
/arch/x86/include/uapi
Run Code Online (Sandbox Code Playgroud)

我希望可以在上述包含路径中找到这些文件。但是我对编译后处理 linux 头文件的位置和方式知之甚少,因为我在源代码中找到了它们。

linux c source x86 linux-headers

1
推荐指数
1
解决办法
980
查看次数