2012-05-18 2 views
2

vn_rdwr (...)과 같이 파일에서 작업을 수행 할 vn_xxx apis가 있음을 확인하십시오. net search에서 vn_rdwr (...)은 사용하지 않는 것이 좋습니다. 같은 주위Mac에서 KEXT로 파일 I/O

거의 질의 :

  • 이 vn_xxx 맥 OS X가 출시를 통해 호환되지 않는 API가 있습니까?
  • 사용하는 것이 안전하지 않습니까? vn_rdwr이 어떻게 사용되는지 볼 수있는 예제가 있습니까?
  • 데몬에 대한 파일 입출력을 지연시키는 것 외에 다른 대안이 있습니까?

누군가가 의견 \ 제안을 제공 할 수 있다면 좋겠습니까?

+0

나는이 기능을 가진 경험을 말할 수 있지만, 자신의 API를 버전과 이전 버전과 호환되지 않는 방법을 변화해서는 안, 그들의 대부분도 * * KERNEL_PRIVATE' #ifdef와 블록'내부에 선언되지 참고 않습니다. kext가 실제로 kexts에 링크 할 수 있는지 테스트 kext로 신속하게 확인해야합니다. 내가 그들을 사용하지 않았기 때문에 당신이 *해야하는지에 관해 말할 수 없다. 그러나 필자가 본 모든 문서는 커널 기반 파일 I/O에 대해 특별히 조언합니다. 이 스레드 안전성의 이유로이 용의자 - 당신이 그들을 호출 해야하는 경우, 전 전용 스레드에서 이렇게 권하고 싶습니다. – pmdj

답변

3

나는 vn_rdwr()이 안전하고 호환 가능하다고 확신합니다.

일반적으로 권장되지 않는 이유는 매우 낮은 수준이라는 것입니다. KAuth API를 통해 등록 된 콜백을 호출하는 것을 피하십시오 (예 : 스포트라이트가 그러한 변경 사항을 보지 못함). 대부분의 상황에서 사용자 공간 (예 : 일부 데몬)에서 I/O를 수행해야합니다. . KEXT의 I/O에 대한

이동 당신은 정말 그렇게 할 이유가있는 경우에만. 그런 다음 vn_rdwr()을 사용하십시오.