2010-02-22 7 views
4

IOService의 하위 클래스 인 Mac OS X에서 IOKit 기반 커널 확장이 있습니다. 이 서비스가로드 될 때 특정 런타임 정보를 게시해야하며 특정 IOUserClient 요청을하지 않고도 사용자 공간에서 액세스 할 수 있어야합니다. 문제의 정보는 기본적으로 필드와 값의 쌍이며 형식은 KEXT와 사용자 공간 래퍼 라이브러리간에 공유됩니다. 내용은 활성 상태 일 때 서비스 내부의 일부 특정 이벤트에서 시간이 지남에 따라 변경됩니다.OS X의 IOKit KEXT에서 정보 공개

리눅스에서는/proc 파일 시스템의 파일로이 작업을 수행했을 것입니다. OS X에서 비슷한 전략을 조언 할 수 있습니까? 아마도 IORegistry와 관련이 있을까요?

감사합니다.

답변

3

글쎄 이것은 꽤 쉬운 것으로 판명되었습니다. IOKit 서비스는 IOService 클래스에서 (궁극적으로) 상속되며 IORegistry 클래스의 서비스 항목 인스턴스를 나타내는 IORegistryEntry에서 상속되며 setProperty \ getProperty 패밀리를 제공하여 \ change \ 자신의 필드를 추가합니다. 귀하의 서비스를위한 IORegistry 항목.

메모리 내 데이터베이스의 IORegistry는 프로그래밍 방식으로 액세스 할 수있는 사용자 공간에서 서비스 항목을 검색하고이 항목에서 게시 한 정보를 읽습니다.