7. 디바이스 번호의 할당

Devfs는 커널 내부의 오퍼레이션에 대해 디바이스 번호(메이저&마이너 번호) 를 할당할 필요가 없는 드라이버들을 작성할 수 있도록 허용한다. 그러나, 디바이스에 대해 유일하게 조정가능한 것으로써 그 디바이스를 사용하는 사용자 공간 프로그램들의 번호가 있다. 그 중에 한 예가 inode가 다른 inode와 다른 파일시스템에 있는지 구분하기 위하여 다비이스 번호를 사용하는 find 프로그램이다. 그 사용된 디바이스 번호는 파일시스템이 사용하고 있는 블럭 디바이스를 위한 것이다. 사용자 공간 프로그램들과 호환성을유지하기 위하여 devfs를 사용하는 블럭 디바이스들은 유일한 디바이스 번호를 할당받을 필요가 있다. 또한, POSIX는 디바이스 번호들을 명시하고 디바이스 번호중 일부분은 사용자 공간에 보여줄 필요가 있다.

가장 간단한 옵션(특히 devfs에 포팅된 드라이버일때)은 예전의 메이저/마이너 번호들을 계속 사용하는 것이다. Devfs는 메이저&마이너 번호에 주어진 값이 무엇이던간에 사용자 공간에 보낼 것이다.

다른 방법으로는, devfs가 유일한 디바이스 번호를 선택하도록 할 수 있다. devfs_register를 사용하여 캐릭터나 블럭 디바이스를 등록하였을때, 자동적으로 고유한 디바이스 번호를 하당하는(그 할당은 캐릭터와 블럭디바이스를 구분한다) DEVFS_FL_AUTO_DEVNUM 플래그를 사용할 수 있다.

이 디바이스 번호는 16 bit 번호이며, 따라서 많은 수의 디스크와 파티션에 대해 충분한 공간을 마련해준다. 이 스키마는 또한 현재 256 pseudo-ttys 로 제한된(이 제한은 xterms 과 원격 로긴의 총 동시 접속자 수이다) tty 디바이스들과 같은 캐릭터 디바이스에도 적용된다. 디바이스 번호는 현존하는 공식적인 할당과의 가능한 충돌을 피하기 위하여 36864-61439(메이저 144-239) 의 범위로 제한되어 있다는 것을 명심하라.

동적으로 할당된 블럭 디바이스 번호들은 원격 마운트의 활성 시간동안 계속해서 주어지는 디바이스에 대해 dev_t 를 기다리는 NFS 데몬과는 작동하지 않는다 (사용자와 커널 모드 다) 는 것을 명심하라.

이 스키마에서 마지막으로 명심할 것은 : 이것이 디바이스 번호의 크기를 증가시키지 않기 때문에 사용자 공간에서의 호환과는 문제가 없다 는 것이다.