2012-02-23 3 views
4

Linux 용 콘솔 드라이버를 쓰고 있었고이 드라이버를 설정하는 데 필요한 tty 인터페이스를 발견했습니다. tty 드라이버가 저수준 드라이버와 어떻게 묶여 있는지 혼란스러워합니다.저수준 드라이버와 tty 드라이버 간 연결

여러 번 루트 파일 시스템에 이미 많은 tty 장치가 포함되어 있습니다. 저수준 디바이스가 루트 파일 시스템의 기존 tty 노드 중 하나에 어떻게 바인드되는지 궁금합니다.

예 : /dev/tty7 : 루트 파일 시스템의 노드.
하위 수준 장치 드라이버가이 노드에 연결하는 방법은 무엇입니까? 또는 저수준 장치가 완전히 새로운 tty 장치를 정의해야합니까?

답변

4

하위 수준 장치가 루트 파일 시스템의 기존 tty 노드 중 하나에 바인딩 할 수 있습니까?

콘솔 및 tty 드라이버의 주 번호와 부 번호는 하드 코드됩니다. 당신은 당신의 시스템에 할당 된 주 번호를 찾아 볼 수 있습니다 :

$ cat /proc/devices 

장치 파일은 mknod를 유틸리티, 예를 들어, throgh 장치 드라이버에 바인딩 장치 파일은 장치 드라이버가로드 된 후에 만들어집니다. 커널 소스의 참고

$ mknod /dev/tty7 c 4 7 

을 입력하려는 장치 파일은/dev/tty7을 만들려면 : 드라이버/TTY/tty_io.c을 : tty_init이는/dev/청각 장애에 대한 메이저와 마이너 번호를 할당하고/dev/console. tty_register_driver은 다른 tty 드라이버 그룹에 대해 메이저 번호와 마이너 번호를 할당하는 것처럼 보입니다. 아마도 발신자를 보면 대답을 찾을 수 있습니다.

tty 하위 시스템이 어떻게 구성되어 있는지에 대한 개요를 보려면 tty demystifiedLDD3 Chapter 18 TTY drivers이 좋은 참고 자료입니다.