두 가지 질문이 있습니다.
(A) 사용자 공간과 데이터를 교환하기 위해 Linux 장치 드라이버에 사용할 수 있는 다양한 옵션을 식별하려고 합니다.
내가 아는 일반적인 접근 방식은 copy_from_user()
및 입니다 copy_to_user()
. ~에서질문SO에서는 다른 옵션으로는 netlink
, ioctl
, sysfs
, procfs
가 있습니다 configfs
. 옵션의 전체 목록을 설명하는 리소스와 해당 옵션을 사용하는 것이 적절한 시기를 아는 사람이 있는지 궁금합니다.
(B) 또한 질문이 있습니다. Linux의 드라이버 유형이 사용자 공간과 데이터 교환을 허용하는 옵션과 관련이 있습니까?
온라인 검색을 통해 드라이버 유형을 문자, 블록, PCI, USB, 네트워크, TTY로 식별할 수 있습니다(이 목록이 완전한지 확실하지 않음). 드라이버 유형과 데이터가 사용자 공간과 교환되는 방식 사이에 어떤 관계가 있는지, 아니면 독립적인지 묻고 싶습니다.
답변1
실제로 이러한 API copy_from_user()
는 copy_to_user()
캐릭터 드라이버에서 찾을 수 있습니다. sysfs 속성을 사용하여 데이터 커널을 사용자 공간에 공유할 수 있습니다.