Aprendendo a escrever drivers para o Linux

 Talvez a maior vantagem de se usar sistemas de código-fonte aberto, é justamente a possibilidade de intervir em qualquer parte da aplicação. No Linux, por exemplo, você pode efetuar tarefas mais triviais – como recompilar o kernel inserindo ou tirando determinados recursos – ou até mesmo escrever seus próprios drivers. Os drivers, em qualquer sistema operacional moderno, assumem um papel especial junto ao kernel. Eles fazem uma determinada peça de hardware responder a uma interface de programação interna bem definida e escondem completamente os detalhes de como o dispositivo funciona.

Interagir com drivers pode ser a forma mais direta para se conhecer a fundo um determinado sistema operacional. Primeiro porque você trabalhar com chamadas de sistemas que rodam no kernel, segundo porque você escreve códigos de acordo com as APIs do respectivo SO, sem ter que mexer nos meandros mais complexos do kernel em si.

Se você busca um ponto inicial, um norte, para começar a entender como funcionam e como escrever drivers para os seus dispositivos no Linux, a 3ª edição do livro Linux Device Drivers certamente pode lhe ajudar muito. O livro está licenciado sob  Creative Commons Attribution-ShareAlike 2.0 license e pode ser obtido, utilizado e distribuído livremente. Uma das coisas mais bacanas sobre esta publicação é que ela utiliza uma abordagem independente de devices em específico, você pode aplicar as técnicas em basicamente qualquer driver para qualquer dispositivo (sob kernel 2.6.10 ou posteriores – LDD3).

Esta dica foi enviada por Frederico Schardong (frede.sch em gmail.com).