カーネルモジュールにアクセスしたプログラムを探す

カーネルモジュールにアクセスしたプログラムを探す

モジュールにアクセスするユーザー/プログラムのリストにどのようにアクセスできますか?

私は走る:

lsmod | grep ^uvcvideo

私のカメラを使用するアプリケーションがない場合は、次の行が返されます。

uvcvideo               86016  0

さて、行末の「0」が0(通常は実際には1)以外の値に変更された場合、カメラが使用中であるという通知を送信する機能を実行しています。

0を1に置き換えるプログラムログがあるか、いつどのモジュールにアクセスするかを知りたいです。

答え1

通常、これにはログファイルはありません。しかし、それを作成するために使用できるいくつかのツールがあります!

カーネルには、try_module_get() 関数の組み込みトレースポイントがあります。モジュールの参照カウントをインクリメントする関数です。このトレースポイントはmoduleというサブシステムにありますmodule_get

https://stackoverflow.com/questions/448999/is-there-a-way-to-Figure-out-what-is-using-a-linux-kernel-module/449856(長く読みました)。

始めるのに役立つようにしてくださいperf trace -a --no-syscalls -e module:module_get -e module:module_put。プログラム名が表示されますが、PIDを表示しない

関連情報