Jump to content
octavio rainha

Dúvida Driver Kernel Módulo Linux

Recommended Posts

Há um tempo comprei um daqueles controles genéricos usb para computador e fiquei interessado em saber como  funcionava a comunicaçao do controle com o computador, resolvi que a melhor maneira de ver na prática seria escrever um driver. Sou novo no kernel linux, e a pouca documentaçao q achei pelo q eu vi parece datada (tanto pq alguns codigos de exemplos nem dá pra dar insmod sem erros). A pergunta, tem alguma doumentaçao mais moderna ou algo que eu nao deveria deixar de ver sobre driver e modulos linux, para conseguir escrever meu primeiro driver pra valer?

Tbm tenho interesse em saber um pouco mais sobre kernel e syscalls(tem a ver com os modulos né).

Os livros que eu estou lendo no momento( e penando um pouco tentando entender oq é novo e nao se usa mais  e atualizar os exemplos que nao rodam mais).

http://tldp.org/LDP/lkmpg/2.6/html/index.html  (daqueles exemplos classicos de documentaçao sobre algo em computaçao, alguem que sabe mto resolve escrever um livro em html).

https://lwn.net/Kernel/LDD3/  (sei que é uma boa fonte mas tmb sei que esta datado, e pelo q pesquisei nao existe pretensao em escrever a quarta ediçao).

Edited by octavio rainha

Share this post


Link to post
Share on other sites

Em que ponto você está, Octavio? Já rolou um "hello, world"? O que não tá funcionando? Não conheço nada super atualizado, mas podemos de repente fazer algo e até gerar um artigo, mantendo-o atualizado, sei lá.

Abraço!

Share this post


Link to post
Share on other sites
Em 27/09/2019 em 18:39, Fernando Mercês disse:

Em que ponto você está, Octavio? Já rolou um "hello, world"? O que não tá funcionando? Não conheço nada super atualizado, mas podemos de repente fazer algo e até gerar um artigo, mantendo-o atualizado, sei lá.

Abraço!

Um  "hello world"ja rolou sim , tive quase nenhum problema em atualizar  as "novas boas práticas" de programaçao de  modulo tipo  declarar o fops e usar module_init e exit ao invés de init e cleanup_module em uns drivers (básicos) pra device de caracter (tipo o chardev.c de exemplo aqui   http://tldp.org/LDP/lkmpg/2.6/html/x569.html  e os exemplos mais pra trás no livro tbm). As minhas dúvidas e oq eu to tentando entender acho que sao   um pouco mais "estruturais" do tipo, entender melhor como funciona o "filp" (o struct file pra representar um device no kernel) na prática, entender a diferença entre .read e o .open do "fops " (eles nao deveriam ser a  mesma coisa?!), como o kernel sabe que é pra chamar a .read quando eu leio de um device file?,   acho que os diretorios do file system do linux tbm pq nao acho que entendi   o próposito de escrever um módulo que cria um file em /proc e esse foi um dos exemplos que eu nao consegui atualizar e fazer com q o "Make" funcionasse  sem erros (o exemplo procfs1.c aqui http://tldp.org/LDP/lkmpg/2.6/html/x710.html).

Acho interessante a ideia de um artigo pq pelo menos oq eu achei alem de estar datado está em ingles.

Share this post


Link to post
Share on other sites
Em 28/09/2019 em 19:41, octavio rainha disse:

nao acho que entendi   o próposito de escrever um módulo que cria um file em /proc

O /proc é um sistema de arquivos virtual para os usuários consultarem informações do kernel e também dar instruções a ele, sem a necessidade de reiniciar o sistema. Por exemplo, dá pra habilitar roteamento (/proc/sys/net/ipv4/ip_forwarding) ou consultar informações do processador (/proc/cpuinfo), processos em execução, etc. Como programar um módulo é como se fosse extender o kernel, é bem útil que tal módulo escreva no procfs e também leia parâmetros de lá. ;)

Tentei compilar rapidinho num kernel 5.x e também não rolou, mas não consigo parar agora para verificar. De fato, tem um trabalho a ser feito aí!

Abraço!

Share this post


Link to post
Share on other sites
Em 30/09/2019 em 11:48, Fernando Mercês disse:

O /proc é um sistema de arquivos virtual para os usuários consultarem informações do kernel e também dar instruções a ele, sem a necessidade de reiniciar o sistema. Por exemplo, dá pra habilitar roteamento (/proc/sys/net/ipv4/ip_forwarding) ou consultar informações do processador (/proc/cpuinfo), processos em execução, etc. Como programar um módulo é como se fosse extender o kernel, é bem útil que tal módulo escreva no procfs e também leia parâmetros de lá. 😉

Tentei compilar rapidinho num kernel 5.x e também não rolou, mas não consigo parar agora para verificar. De fato, tem um trabalho a ser feito aí!

Abraço!

Interessante, sabia da parte de log do kernel no procfs mas nao q dava pra dar instruçoes por ele.

Fiquei interessado em  consertar e atualizar os exemplos do livro e posso postar aqui ou talvez ate em um topico novo( talvez até mandar pra quem publicou o livro). Valeu, Mercês.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...