Estou lendo o Linux Kernel Module Programming Guide de Salzman e gostaria de saber onde o arquivo linux/kernel.h está localizado. Não consegui encontrar com find
. Ou melhor, os arquivos que encontrei não continham nenhuma printk
macro prioritária.
relate perguntas
-
tamanho da pilha do programa
-
Quais dongles WiFi 802.11ac (ou posteriores) funcionam com o kernel Linux 4.13
-
Como os desenvolvedores do kernel Linux lidam com seu trabalho com milhões de linhas de código? É um método? [fechado]
-
Passe o sistema de arquivos raiz por rótulo para o kernel do Linux
-
Acesse o sistema de arquivos como usuário root
O
linux/kernel.h
cabeçalho que é usado para compilações de módulos é o cabeçalho que faz parte do código-fonte do kernel . Quando os módulos são construídos na árvore fonte do kernel, essa é a versão que é usada.Para compilações de módulos externos, o processo de compilação procura o cabeçalho em
/lib/modules/$(uname -r)/build/include/linux/sched.h
. Esse arquivo é fornecido pelos pacotes de cabeçalho do kernel, por exemplo , em derivados do Debian, olinux-headers-$(uname -r)
pacote.O
/usr/include/linux/kernel.h
destina-se a processos de usuário, não a módulos do kernel.As
printk
macros prioritárias agora residem emlinux/printk.h
elinux/kern_levels.h
. Suponho que você esteja lendo o guia original , que é baseado na série de kernel 2.6; para kernels modernos, você deve ler o guia atualizado (atualmente para 5.6.7 ).No meu sistema Mint 18.x com
build-essential
MAS nenhuma árvore de fonte completa instalada -Pelo comentário de Jeff sobre sua pergunta, eu diria que na maioria das vezes
/usr/include/linux/kernel.h
é o que será usado,Tenho certeza de que, se você extrair um tarball da árvore do kernel, ele também poderá ter outra cópia em sua estrutura de diretórios. Uma verificação rápida mostra que todos eles têm tamanhos diferentes... ou arquivos vazios.
a resposta para isso pode depender significativamente da distribuição Linux... SUSE/SLES vs RHEL/Centos/Fedora vs debian vs mint e assim por diante,
e também poderia diferir com base nos sabores RPM das distribuições linux vs debian?
de qualquer forma, minha experiência é principalmente com o SLES versão 11.4 e posso garantir
à medida que atualizo o kernel para versões mais recentes, o link virtual muda de acordo com o kernel.h. Eu acho que é seguro dizer que se você está procurando a versão do módulo do kernel,
kernel.h
ela estará em alguma pasta relacionadauname -r
e fará parte do pacote fonte do kernel para sua distribuição Linux.