如何编写可以跟踪发送到特定设备的SCSI命令的内核模块?

时间:2016-08-11 12:01:26

标签: linux linux-kernel linux-device-driver kernel-module scsi

鉴于SCSI设备作为输入,我正在尝试实现一个可以的内核模块:

获取发送到该特定设备的SCSI命令列表,并计算该命令的给定次数。

如何继续实施?

我是编程内核模块的初学者,事实上我只写了一个" Hello,World"程序到现在。

1 个答案:

答案 0 :(得分:2)

我相信设备驱动程序端已经有调试和日志记录支持。

作为一个起点,你应该调查从这里开始的linux内核中的驱动程序:

https://github.com/torvalds/linux/blob/master/drivers/scsi/scsi_module.c

对于调试,您可以找到这个:

https://github.com/torvalds/linux/blob/master/drivers/scsi/scsi_logging.c

首先阅读本手册总是一个好主意!给它一个机会:

https://www.kernel.org/doc/Documentation/scsi/

如果您无法激活日志记录,则应该回来询问更具体的问题。但我相信你根本不需要自己编写记录器。

来自http://www.theunixway.com/2013/10/ol56-enable-additional-scsi-logging-or.html

在内核上启用scsi日志记录:

sysctl -q -w dev.scsi.logging_level=<N>

echo <N> > /proc/dev/scsi/logging_level

N是包含不同类别的日志记录信息的位字段。请参阅您使用的实际内核驱动程序版本的文档。