, 난 당신이 리눅스 모듈을 개발하는 것으로 가정했다. 질문을 다시 읽으면 문제를 잘못 해석했을 수 있습니다. 통해
직접 디바이스 인터페이스를 통해 (일명 procfs)
커널 드라이버와의 통신을 위해 여러 메커니즘이있다 장치 인터페이스
가장 일반적인 기술은 read()
및/또는 write()
시스템 호출을 사용하여 드라이버 동작을 유발하는 마지막 기술입니다. 이러한 시스템 호출이 일반적으로 순수한 데이터를 전달하는 동안 특정 드라이버를 중지하는 대신에 metadata을 I/O 인터페이스를 통해 전달하는 것이 아무것도 없습니다. 드라이버가 이미 read()
및 write()
메타 데이터에 대한 좋지 않다있는 유용한 순수 데이터 규율이있는 경우 반면에
, 다음
ioctl()
시스템 호출은 범용 스위스 군용 칼의 종류 모든 종류의 것들 일입니다 자기 테이프의로드 또는 언로드, DVD 꺼내기, 네트워크 카드의 이더넷 주소 찾기 또는 얼마나 많은 디스크 드라이브 오류가 발생했는지 파악하는 것과 같은 파일 관련 작업입니다.
ioctl 작업 코드가 너무 많아서 사용자 목적에 따라 재사용 할 수있는 합리적인 코드를 찾을 수 있습니다.
ioctl
인터페이스의 가장 큰 단점은 사용자 정의 프로그램에서 사용하기에 가장 적합하므로 표준 프로그램의 파이프 라인에 연결된
ioctl
을 통해 데이터를 전송하는 것이 어색하거나 어려울 수 있다는 것입니다. 이 표준 유틸리티 프로그램
stdin
/
stdout
규칙을 사용하는 의무이지만, 또한 관통/O를 모든 I 독립적 인 디바이스 드라이버에 대한 인터페이스를 제공
/proc
인터페이스는 이전 두 기술 중 가장 결합한 정기적 인 드라이버 메커니즘. 예를 들어, Linux 시스템에서 cat /proc/net/tcp
을 시도하십시오. 모든 TCP
연결 상태를 보여줍니다.
procfs 기능 구현에 관한 유용한 정보는 create_proc_entry()
입니다. ioctl 구현은 here에 포함됩니다. 메타 데이터 접근법은 경험이 풍부한 구현 자에게 개념적으로 장애가 될 수 있지만 다른 모든 디바이스 드라이버만큼 쉽게 코딩 할 수 있습니다.
감사합니다. 작동합니다! – user979223