sysfs가 있을 때 하드웨어 정보를 얻기 위해 ioctl을 쿼리할 이유가 있습니까?

sysfs가 있을 때 하드웨어 정보를 얻기 위해 ioctl을 쿼리할 이유가 있습니까?

내 가정은 쿼리 를 sysfs사용하여 구축되었다는 것입니다 ioctl. 이는 원하는 모든 정보(또는 적어도 대부분)가 이미 sysfs. 을 클릭하는데 이유가 있는지 궁금합니다. 신뢰할 수 없습니까 ? 하드웨어 정보에만 관심이 있다면 over 를 사용할 이유가 있나요 ?hdparmioctlsysfssysfsioctlsysfs

답변1

Tilman이 자신의 의견에서 올바르게 주장했듯이 sysfs와 ioctl은 모두 커널 데이터 구조에 대한 사용자 공간 액세스를 제공합니다.
커널은 자체 데이터에 액세스하기 위해 시스템 호출을 요구하지 않으므로 sysfs 트리도 ioctl 호출을 통해 구축되지 않으며 사용자 조작도 수행되지 않습니다.문서ioctl 호출로 변환됩니다.


당신은 쓰기“…정보는 다음에서 제공되었습니다.간단히파일을 읽는 중..."나는 이것이 귀하의 마지막 질문에 대한 답변이라고 생각합니다.

할 수 있는sysfs 인터페이스를 사용하는 것이 더 쉬운 것 같나요?

  • 첫째, 일부 쉘을 실행하는 기본 ASCII 터미널을 고려하면 sysfs 트리는 가장 기본적인 cat 및 echo 명령을 통해 (바이너리) 커널 데이터에 액세스할 수 있습니다.
  • 다른 기본 셸 명령(ls, cd)을 사용하면 기호 링크를 통해 커널 개체 간의 관계에 대한 통찰력을 얻을 수도 있습니다.
  • 그 외에도 사용자는 커밋하려는 변경 사항의 유효성을 어느 정도(최소한) 제어할 수 있어 이점을 누릴 수 있습니다.

이것은 시스템을 조정하고, 스크립트 또는 규칙을 작성하고, 사용자 공간(sysfs의 초기 대상... 전에 생각해보세요... .../dev /mem은 나중에 사용할 수 있는 유일한 친구입니다.

글쎄요, 그러나 어떤 경우에는 이러한 모든 기능에 신경 쓰지 않고 sysfs 인터페이스를 통해 커널 개체에 액세스하는 것이 제한될 것입니다... (더) 더 많은 코드 작성: C 프로그램을 작성할 때: 상상해 보세요: 당신 일부 파일을 열고, 데이터를 트랜스코딩하고, 기타 오류 조건을 관리하고, 경쟁 조건을 처리하고 싶으십니까? 간단한 ioctl 시스템 호출이면 충분합니다(물론 무엇을 하고 있는지 알고 있다면).

따라서 귀하의 질문에 대한 답변이 제공됩니다. 언제 이 방법을 선택해야 합니까? 아니면 저 방법을 선택해야 합니까? 지금 당장은 저것 대신 이것을 사용하여 달성하려는 것을 달성하는 것이 훨씬 더 간단할 것이기 때문입니다.

관련 정보