Linux 커널의 드라이버 소스 코드를 장치 자체와 연결하는 명확한 방법이 있습니까?

Linux 커널의 드라이버 소스 코드를 장치 자체와 연결하는 명확한 방법이 있습니까?

Linux 커널의 소스 코드 디렉토리에는 수많은 장치에 대한 드라이버 소스 코드가 포함되어 있습니다 /drivers. 때로는 소스 코드 설명을 보면 드라이버가 어떤 장치를 대상으로 하는지에 대한 힌트를 얻을 수 있습니다. 그러나 드라이버가 어떤 장치나 장치 제품군을 대상으로 하는지 알 수 없는 경우가 많습니다. 해당 장치에 대한 드라이버를 다시 추적할 수 있습니까?

답변1

이는 드라이버가 작성된 장치 유형에 따라 다릅니다. 간단하지만 일반적인 예는 다음과 같습니다.PCI 장치.

PCI 장치는 일련의 레지스터를 통해 자신을 식별합니다.PCI 구성 공간. 예를 들어, 네트워크 카드는 Linux 커널이 읽을 수 있는 일련의 레지스터 값을 통해 어떤 유형의 카드인지 식별합니다.

PCI 장치용 장치 드라이버는 드라이버 자체가 제어할 수 있는 장치를 설명하는 PCI ID 테이블을 내보냅니다. 이 ID 테이블은 Linux 커널에 등록되어 있습니다. 그런 다음 Linux 커널은 시스템에 연결된 각 장치를 반복하여 장치에서 PCI ID를 얻고 해당 ID에 등록된 드라이버를 확인할 수 있습니다. 이것이 특정 PCI 하드웨어용 드라이버를 선택하는 방법입니다.

종합적으로 썼어요블로그 게시물Linux 네트워킹 스택(조정, 최적화, 모니터링 등)에 관한 모든 것. 해당 블로그 게시물의 시작 부분에서 저는 igbLinux 네트워크 드라이버 코드(실제 코드 예제 포함)를 살펴보고 코드를 보여주었습니다.PCI ID 내보내기운전자가 제어할 수 있는 장치의 경우 igb.

관련 정보