사용자 애플리케이션을 통해 동적 모듈에 액세스하는 방법

사용자 애플리케이션을 통해 동적 모듈에 액세스하는 방법

간단한 동적 모듈(.ko)을 만들었습니다. 사용자 응용 프로그램이 커널 공간에서 드라이버에 액세스하는 방법. 동적으로 로드된 모듈의 메이저 및 마이너 번호를 얻는 방법.

답변1

다른 사람들이 올바르게 답변할 수 있도록 이 질문에 많은 정보를 생략했습니다. 몇 가지 가정을 하고 짧은 답변을 드리겠습니다.

먼저, 나는 당신이 Linux를 언급하고 있으며 모듈을 커널에 삽입하고 그것이 올바르게 설치되어 실행되고 있는지 확인했다고 가정합니다. 또한 귀하의 드라이버가 /dev 디렉토리에 장치 노드를 생성한다고 가정합니다.

메이저 번호와 마이너 번호를 얻으려면, ls -l /dev/<yourdevnode>예를 들어 /dev/fuse에 대해 다음을 실행하면 됩니다.

$ ls -l /dev/fuse 
crw-rw-rw- 1 root root 10, 229 Jan  3 09:08 /dev/fuse

여기서 10과 229는 각각 주번호와 차수이다.

답변2

당신은 그러한 장치 드라이버입니까 hello world?
그렇다면 /dev 디렉터리에 노드가 생성되지 않습니다.
mknod 명령을 사용하여 /dev/node를 생성할 수도 있습니다.
하지만 귀하의 장치 드라이버가 무엇을 하는지는 모르겠습니다(드라이버에 따라 장치 노드가 필요하지 않을 수도 있습니다).
드라이버 소스가 없어서 추측합니다.
일반적으로 장치 드라이버는 커널 기능을 사용하여 장치 노드를 만듭니다.
나는 추천하고 싶다http://derekmolloy.ie/writing-a-linux-kernel-module-part-2-a-character-device/
위 링크에서는 ebbchar_init()함수를 통해 함수가 생성됩니다. 물론 소스 코드에서 주요 항목과 보조 항목을 찾을 수도 있습니다. 드라이버가 위 기능을 사용하고 있는지 확인하세요. 그리고 오류가 있는지 확인하세요. /dev/ebbchardevice_create()

관련 정보