2017-11-30 8 views
0

Linux Device Drivers, Third Edition 서적과 14 장의 "함께 쓰다"섹션에서 "PCI 코어, 드라이버 코어 및 개별 PCI 드라이버"간의 상호 작용에 대해 설명했습니다. 그리고 그들은 "driver core"라는 단어를 여러 번 사용했습니다. "드라이버 코어"가 "문자 장치 드라이버"와 다른가요?Linux 커널 장치 드라이버의 맥락에서 "드라이버 코어"의 의미는 무엇입니까?

내 질문은 InfiniBand 스택을 이해하려는 의도에서 비롯된 것입니다. IB 스택은 사용자 공간과 커널 공간 모두에 걸쳐 있습니다. 따라서 Mellanox ConnectX-4 NIC에서 실행되는 간단한 ping-pong InfiniBand 프로그램을 작성하는 경우 내 바이너리는 libibverbs와 libmlx5, 3 kernel-modules : ib_uverbs, mlx5_ib 및 mlx5_core와 같은 2 개의 사용자 공간 라이브러리에 의존합니다. 나는 ib_uverbs가 문자 디바이스 드라이버라는 것을 알고있다. 그러나 mlx5_ib 및 mlx5_core 커널 모듈을 드라이버 범주로 간주 할 수 있습니까? 아니면 그것들의 인터페이스가 그들과 인터페이스하기 위해서 전 세계적으로 수출 되었습니까?

답변

2

드라이버 코어는 드라이버, 장치, 버스, 클래스 등을 관리하는 일반 코드입니다. 특정 버스 나 장치에 연결되지 않습니다. 내가 언급 한 장에서는 PCI 버스 드라이버와 드라이버 코어 사이의 분업에 대한 몇 가지 예를 제공합니다 (그림 14-3 (장치 생성 프로세스) 참조).

언급 한 세 가지 커널 모듈 중 두 가지는 장치 코어에 참여합니다. ib_uverbs는 문자 장치를 등록하여 RDMA 기능을 사용자 공간에 내보내고, mlx5_core는 ConnectX NIC를 처리 할 PCI 드라이버를 등록합니다. mlx5_ib는 드라이버로 간주 될 수도 있지만 RDMA 하위 시스템은 드라이버를 등록하기 위해 장치 코어를 사용하지 않습니다 (자체 API - ib_register_device가 있음).

+0

대단히 감사합니다. haggai_e! –