Pergunta

Eu tenho uma extensão de kernel baseada em Iokit no Mac OS X, uma subclasse de ioservice. Quando esse serviço carrega, preciso publicar informações adicionais de tempo de execução específicas e preciso que ele esteja acessível a partir do espaço do usuário sem fazer algumas solicitações específicas do iouserclient. As informações em questão são basicamente pares de campo value e seu formato é compartilhado entre a biblioteca Kext e a sua biblioteca Wrapper. O conteúdo mudará com o tempo em alguns eventos específicos dentro do serviço quando estiver ativo.

No Linux, eu teria conseguido isso com um arquivo no sistema de arquivos /proc. Você pode aconselhar uma estratégia semelhante no OS X? Talvez algo relacionado ao ioregistry?

Obrigada.

Foi útil?

Solução

Bem, isso acabou sendo muito fácil. Seu serviço IOKIT é (eventamente) herdado da classe de ioservice, que por sua vez é herdado da ioregistryEntry, que representa uma instância da entrada de seu serviço em Ioregistry e fornece uma família de métodos de setProperty getProperty para adicionar alteração Remover seus próprios campos em ioregistry getProperty entrada para seu serviço.

O IOREGISTURO EM UM BATO DE Memória que, é claro, é acessível programaticamente a partir do espaço do usuário, onde você o procura pela entrada do seu serviço e leia as informações publicadas por ele.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top