ioctl 내에서 ioctl을 호출하는 것이 나쁜가요?

ioctl 내에서 ioctl을 호출하는 것이 나쁜가요?

저는 Linux를 처음 접했지만 많은 독학을 해왔습니다.

내 질문에 대한 대답은 '아니오, 그렇게 하면 안 된다'입니다.

따라서 이 페이지의 전문가로부터 이 주제에 대한 조언을 구하세요.

  1. 다른 ioctl 내에서 다른 ioctl을 호출할 수 있습니까?
  2. ioctl은 기술적으로 시스템 호출입니다(내 생각에는). 이는 기술적으로 커널 코드를 의미합니까?

답변1

ioctl호출은 사용자 공간에서 이루어지며 드라이버의 코드는 커널 공간에서 실행됩니다. 커널 공간 자체에서는 일반적으로 커널의 다른 부분을 직접 호출하므로 중첩이 필요하지 않습니다 ioctl. 결국 이는 사용자 공간과 커널 공간의 통신을 돕는 메커니즘입니다.

그래서:

1) 필요가 없기 때문에 아무도 하지 않습니다.

2) 이렇게 하면 안 됩니다.

3) 정말로 원한다면 ioctl다른 환경을 시뮬레이션할 수 있는 가짜 환경을 커널에 설정할 수 있지만 ioctl이는 많은 노력과 복잡한 솔루션이므로 더 간단한 방법을 사용하여 달성할 수 있습니다.

4) 이것에 대해 생각하는 것은 커널을 이해하는 데 도움이 되지 않습니다.

관련 정보