2016-09-16 3 views
3

나는 임베디드 시스템 용 리눅스 커널 모듈을 개발 중이다.
시스템에는 프로그래머블 로직 (PL)이 포함되어 있으며 사용자 공간 프로세스에서 액세스해야합니다.configfs가 mmap을 지원하지 않는 이유는 무엇입니까?

  • PL은 런타임에 변경 될 수 있습니다.

  • 내 모듈은 프로세스가 지정된 hw 레지스터와 페이지에 액세스 할 수있게합니다.
    이러한 매핑은 런타임에 내 모듈의 configfs 바인딩에서 구성됩니다.

  • 모든 매핑은 액세스 할 수있는 configfs에 항목을 가져옵니다.

프로세스가 전체 페이지를 mmap 할 수 있도록 허용하고 싶습니다. 그래서 그들은 직접 PL과 통신 할 수 있습니다.

그러나 configfs는 mmap을 지원하지 않습니다.

  • 이유가 있습니까?
  • Sysfs는 mmap을 지원하므로 configfs가 안되는 이유는 없습니다.

해결책은, sysfs를에
을 내 CONFIGFS 트리를 반영하는 것입니다 그러나 이것은 CONFIGFS를 사용하는 전체 이유 ... 어떤 아이디어를 패배?

답변

1

configfssysfs을 대신하지 않습니다. 사실 sysfs의 반대쪽으로 볼 수 있습니다.

sysfs은 파일 시스템 인터페이스를 통해 커널의 객체를 제공합니다. 그것은 사물을 바꾸거나 그 사물에 어떤 행동을하기 위해 사용될 수 있지만, 그것을 의미하지는 않습니다. 여기에서 중요한 점은 sysfs으로 표시된 각 개체가 커널에서 만들어지고 파괴된다는 것입니다. 커널은 sysfs 표현의 수명주기를 제어하며 sysfs는이 모든 것에 대한 창일뿐입니다. 한편, 파일 시스템 인터페이스를 통해 커널 객체를 생성하거나 변경하는 방법을 제공합니다.

configfs 그것은 근본적인 차이입니다. 사용자 공간 프로세스는 configfs 내에 디렉토리를 작성할 수 있습니다. 이 동작은 커널 내에서 콜백 실행과 해당 커널 객체 생성을 유발합니다. 디렉토리의 파일은 다양한 객체의 구성 요소의 상태를 나타냅니다.

이 두 가지 경우에서 커널과 사용자 공간 프로세스 간의 데이터 교환의 특성으로 인해 configfs에 mmap 지원이 필요하지 않다고 생각됩니다.

시스템의 디자인/아키텍처를 보지 않아도 귀하의 경우에 확실한 것을 말하기는 어렵습니다. 귀하의 설명에서 sysfs은 원하는 목표를 달성하는 데 필요한 것일 수 있습니다. 액세스가 필요한 모든 오브젝트는 커널에서 작성, 수정 및 삭제됩니다. 모듈의 기존 커널 구조/객체에 대한 제한된 설정/변경은 sysfs 인터페이스를 통해 수행 할 수 있습니다. 그렇다면 모듈의 sysfsconfigfs 인터페이스를 모두 특정 용도로 사용하려는 경우도 있습니다. 물건을 더 깔끔하고 깨끗하게 만들면 아무 것도 없습니다.

+0

두 인터페이스를 모두 사용하는 것이 좋지 않다고 생각했습니다. 그러나 configfs를 통한 구성 및 sysfs를 통한 모든 액세스 관련 작업은 상당히 매력적입니다. 감사. – drechsler

관련 문제