Interagindo com um driver de kernel de entrada do linux do userspace

1

Estou desenvolvendo um driver de kernel Linux para um dispositivo multitouch. Agora eu já toquei sendo injetado no subsistema de kernel do Linux e está funcionando. O problema é que eu também preciso interagir com o dispositivo para alterar as configurações.

Enquanto o kernel está pegando o dispositivo eu não consigo pegá-lo no espaço do usuário, então eu preciso encontrar uma maneira de interagir com o driver do kernel.

Meu primeiro teste de motorista teve algumas operações extras que não consigo encontrar no modelo atual que estou usando. Tinha aberto, fechar, ler, escrever operações que eu poderia realizar a partir do espaço do usuário.

Como posso fazer essas coisas com drivers de entrada? Existe alguma maneira oficial?

Agradecemos antecipadamente

Com meus melhores cumprimentos,

Nuno Santos

    
por Nuno Santos 14.11.2011 / 13:13

2 respostas

1

Você precisa implementar o dispositivo de caractere injetado no subsistema de entrada padrão do kernel. Por favor, verifique este livro. As read() , write() , ioctl() , etc. são operações típicas dos drivers char, qualquer driver char possui pelo menos open() e close() .  Enfim, qual subsistema do kernel você usou na sua última versão do driver? A maneira mais útil para qualquer desenvolvimento de kernel é ler documentos relacionados em Documentação / do diretório de fontes do kernel e ler o código de drivers de kernels da área relacionada com suas tarefas.

    
por Ilay 14.11.2011 / 14:14
0

Você pode combinar seu driver de dispositivo de entrada com um driver de caractere e, em seguida, obter um arquivo de dispositivo para o qual pode gravar seus dados de configuração e ler a configuração. A interação entre dois drivers separados no espaço do kernel também não deve ser complicada.

Eu acho que você já conhece este livro, ele pode responder sua pergunta em detalhes:

Drivers de dispositivos do Linux, 3ª edição

    
por Michael K 14.11.2011 / 13:51