[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Escrever um driver



Ola' caro Wanderson, 


--- wanderson <wdmagalhaes@netscape.net> escreveu: >
Alo aos programadores (ou engenheiros de soft, sei
> lá :)
> 
> Alguém poderia me dizer (ainda que por alto) o que
> se leva em conta ao 
> escrever um driver? Ou seja, o que alguém precisa
> saber para escrever um 
> driver para GNU/Linux? Isso se aprende na faculdade
> ou dá pra aprender 
> "na marra"?. Esse cara precisaria de quais
> informações?

    No linux/unixes, os drivers sao chamados de
mo'dulos. Os mo'dulos sao co'digos objetos que
inseridos no espaco do kernel oferecem controle `a um
harwdware.

   No linux, modulos sao escritos em C . Nao eh
necessario utilizar o assembly; ha' muitas funcoes e
recursos do codigo do kernel que sao  necessarios e
utilizados para escrever os modulos - dai' que 90% eh
tudo escrito em C, trabalhando **muito** com o codigo
do kernel. Para tal entao, eh necessa'rio uma
familiarizacao e dominio da linguagem C e um estudo de
algumas partes do kernel do linux (eh necessario lidar
com algumas "structs" do kernel para escrever um
modulo, como "struct file" , "struct file operations"
"ioctl.h" ,....)

   A funcao de um modulo eh ler e escrever em portas
de I/O, emitir comandos para o hardware, controlar o
fluxo de dados entre o kernel e o espaco do usuario, e
algumas outras coisas que envolvem te'cnicas de
programacao como lidar com condicoes de disputa (race
conditions), variaveis atomicas, codigos reentrantes
(..). 

   Tal conhecimento vc pode obter buscando por fontes
do kernel, lendo documentacoes sobre o assunto (o bom
do linux eh que ha' **muita** documentacao), e ter
forca de vontade para ficar buscando correspondencias
no kernel do linux e tendo paciencia e vontade de um
programador (leia-se noites varadas em busca de uma
compilacao sem erros :) e tudo rodando como esperado
).


    Ha' um livro ****muito**** bom sobre o assunto :
"Linux Device Drivers  (Alessandro Rubini, ed.
Oreilly)", que recomendo fortemente aos interessados
em compra'-lo. Ha' uma versao eletronica em
http://www.xml.com/ldd/chapter/book/index.html (2nda
edicao).

   Sou um fissurado por kernel e drivers, essa eh
minha praia na computacao :) .


> (Não seria legal se TUDO funcionasse under linux?
> :-).

    Seria excelente.

> 
> Wanderson
> ________________________________________________
> "God saves Dennis Ritchie and Brian Kerninghan".

   Essa foi boa.... :) , concordo que devemos muito `a
esses caras .. participaram da construcao do MULTICS,
criaram o UNIX, reescreveram o unix 2 vezes em
assembly, criaram o C, ....




  Rodrigo F Baroni

Computer Science Bach's Student.
rodrigobaroni@yahoo.com.br
baroni@cci.fmrp.usp.br
    

_______________________________________________________________________
Busca Yahoo!
O serviço de busca mais completo da Internet. O que você pensar o Yahoo! encontra.
http://br.busca.yahoo.com/



Reply to: