如何访问访问某个模块的用户/程序列表?
我跑:
lsmod | grep ^uvcvideo
当没有应用程序使用我的摄像机时,这会返回此行:
uvcvideo 86016 0
好吧,我正在运行一些东西,当行尾的“0”变成除 0 以外的任何值(实际上通常是 1)时,它会向我发送一条通知,表明我的相机正在使用中。
我想知道是否有将 0 变为 1 的程序日志,或者何时/如何访问哪些模块。
答案1
通常,没有这方面的日志文件。不过,您可以使用一些工具来制作它!
内核有一个针对 try_module_get() 函数的内置跟踪点。这是增加模块引用计数的函数。该跟踪点位于module
子系统中,称为module_get
。
为了帮助您入门,您可以尝试一下perf trace -a --no-syscalls -e module:module_get -e module:module_put
。这显示了程序名称,但它不显示PID。