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

Akshdeep Singh |

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

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

斯蒂芬·基特

当我想要做到这一点,我使用ftrace框架首先安装特殊文件系统:

mount -t tracefs nodev /sys/kernel/tracing

(作为root用户;您应该成为所有这些用户的root用户,无论如何,您都将以root用户身份进行操作,拥有root shell比使用容易得多sudo)。

然后转到该目录:

cd /sys/kernel/tracing

它包含一个README提供简短摘要的基础。要探索函数调用,我使用的函数图形示踪剂function_graphavailable_tracers确定您感兴趣的功能,例如ath9k_htc_tx,并进行设置

echo ath9k_htc_tx > set_graph_function

您可以附加其他功能,请确保>>在第一个功能之后使用您可以通过以下方式查看已配置的功能:

cat set_graph_function

当您写入时set_graph_function,将针对正在运行的内核检查该函数;如果找不到该函数,则写入将失败,因此您将立即知道是否最终不进行任何跟踪。

功能设置完成后,启用跟踪器:

echo function_graph > current_tracer

然后观看trace文件。要再次禁用跟踪器,

echo nop > current_tracer

tracing_on通过向其写入0或1进行翻转(0禁用跟踪,1使其重新启用)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何编写Linux驱动程序模块调用/使用其他驱动程序模块?

如何在Linux驱动程序模块中暂停100毫秒以上?

如何通过在驱动程序模块中使用seq_file实现可写的proc文件

linux如何为内置驱动程序模块加载固件

如何在连接的USB设备上加载我的自定义驱动程序模块?

ralink rt3290驱动程序模块无法启动,我不知道为什么

Linux内核驱动程序模块:使用单个驱动程序处理多个设备文件

如何为Oracle Adf应用程序模块浏览器设置sql驱动程序

在用户程序中使用<linux / types.h>,或在驱动程序模块代码中使用<stdint.h>……有关系吗?

测量某个Linux驱动程序模块的内存使用情况

来自Microsoft Office加载项taskpane.js的MySQL驱动程序模块的空引用

升级Jboss EAP 6中的JDBC驱动程序模块

如何知道驱动程序名称?

如何知道哪段代码在驱动程序或执行程序上运行?

是否可以在Wildfly中将数据源部署描述符与驱动程序模块一起使用?

Goodix触摸屏驱动程序模块加载了错误的abs_x_max和abs_y_max

MongoDB NodeJS驱动程序,如何知道.update()何时完成

如何知道无线网络驱动程序。

Flutter驱动程序-如何知道哪个“ waitFor”命令失败了?

如何阻止内核内置的驱动程序,即不是模块的驱动程序

如何选择PHPUnit用于代码覆盖的驱动程序?

内核模块中的驱动程序代码无法执行?

如何使桌面应用程序模块化?

您如何创建本地VGO应用程序模块

如何创建和使用全局实用程序模块?

如何启用驱动程序?

Linux如何知道如何以及在新安装中安装哪些驱动程序

Datastax Cassandra PHP驱动程序:如何知道CQL INSERT,UPDATE,DELETE成功

安装Ubuntu后,我如何知道所有设备都具有必需的驱动程序