첫 번째 배경. Logitech 게임 패널 장치 용 드라이버를 개발 중입니다. 화면이있는 키보드입니다. 드라이버는 잘 작동하지만 기본적으로 장치는 HID에 의해 처리됩니다. HID가 드라이버보다 먼저 장치를 인계받지 않도록 hid-core.c에 블랙리스트에 올릴 수 있습니다. 이것은 효과가 있지만 여러 사람들과 함께 일할 때 가장 좋은 해결책은 아니며 우리 모두가 종종 initramfs 등을 재구성하는 것과 같이 HID 모듈을 계속 패치해야합니다.
나는이 문제에 대한 몇 가지 연구를했고 나는 발견 이 메일 링리스트 게시물 결국에 데려 갔다, LWN에이 기사를 . 런타임에 장치를 특정 드라이버에 바인딩하는 메커니즘에 대해 설명합니다. 이것은 내가 필요한 것 같습니다.
그래서 나는 그것을 시도했다. 키보드를 HID에서 바인딩 해제 할 수있었습니다. 이것은 효과가 있었고 예상대로 더 이상 입력 할 수 없었습니다. 그러나 드라이버에 바인딩하려고하면 "오류 : 해당 장치 없음"이 표시되고 작업이 실패합니다.
그래서 내 질문은 : 어떻게 커널 바인드 / 언 바인드 작업을 사용하여 HID 장치를 hid-core로 블랙리스트에 추가하고 자신의 드라이버를 제공 할 때 발생하는 일을 복제합니까? -즉-hid-core.c를 항상 패치 할 필요성을 대체 할 것인가?
드라이버의 소스는 다음과 같습니다 : https://github.com/ali1234/lg4l