커널 모듈에 액세스한 프로그램 찾기

커널 모듈에 액세스한 프로그램 찾기

모듈에 액세스하는 사용자/프로그램 목록에 어떻게 액세스할 수 있나요?

난 달린다:

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를 표시하지 않음.

관련 정보