2014-01-06 2 views
2

여러 개의 독립적 인 "채널"데이터를 제공하는 하드웨어 용 Linux 디바이스 드라이버를 작성하고 있습니다. 시스템 상에 다수의 디바이스가 존재할 수 있으며, 각각의 디바이스는 기본적으로 독립적 인 문자 디바이스로 표현 될 채널 세트를 제공한다.Linux 디바이스 드라이버 문자 디바이스 "서브 디렉토리"

내가 계층 적 관계를 표현/dev에, 예컨대 :

/dev/mydevice0/chan0 
/dev/mydevice0/chan1 
/dev/mydevice0/chan2 
/dev/mydevice0/chan3 

/dev/mydevice1/chan0 
/dev/mydevice1/chan1 
/dev/mydevice1/chan2 
/dev/mydevice1/chan3 
... 

는 어떻게 자동으로 계층 구조의이 종류를 만드는 방법에 대해 이동 않습니다에 장치 노드를 만드는 방법을 궁금하네요? "자동으로"는 현대 리눅스 시스템에서 사용할 수있는 일반적인 메커니즘을 사용한다는 것을 의미합니다 (즉, udev를 사용하는 것이 좋지만, mknod 명령을 사용하여 특수 스크립트를 작성하지 않아도됩니다). 예컨대, 시도이 훨씬 현명하다, 아니면 디스크 장치에 대해 수행되는 것과 유사한 각 채널의 고유 접미사를 생성하는 더 나을 것 :

/dev/mydev0c0 
/dev/mydev0c1 
... 
/dev/mydev1c0 
/dev/mydev1c1 
... 

감사합니다!

답변

1

device_create() 함수는 드라이버에서 장치 노드를 만드는 방법이며 this short thread에 따라 장치를 호출 할 때 장치를 배치 할 경로를 하드 코딩 할 수 있습니다. 경로 분리 기호를 느낌표로 바꾸면됩니다. 링크 된 스레드에서

예 경로 :

"테스트 파워!"로 작성됩니다

This tutorialmy answer to another SO question가 제대로 device_create()를 사용하는 데 도움이해야/개발/테스트/전원.

+0

와우 - 나는 그것을 결코 짐작하지 않았을 것입니다. 감사! – jeremytrimble

+0

게시하기 전에 테스트 할 수 없어서 도움이 되었기를 바랍니다. 그렇지 않으면 되돌아 와서 대답을 수락하십시오. 그래서 계속 볼 것을 압니다. 나는이 문제에 정말로 관심이 있고 결코이 방법을 추측하지 못했다. – skrrgwasme

관련 문제