Que bibliotecas podem ser chamadas dentro de um módulo do kernel

0

Procurando por uma lista de bibliotecas que podem ser chamadas a partir de um módulo de kernel personalizado.

Eu entendo que existem restrições em relação ao espaço do usuário e bibliotecas como <stdio.h> e <string.h> não podem ser usadas.

Quais são os mais populares que podem ser usados, ou melhor ainda, existe uma regra para me ajudar a distinguir quando uma biblioteca pode ser chamada dentro de um Módulo de Kernel.

No momento, estou procurando mapear a memória usando mmap() , que faz parte da biblioteca sys/mman.h , mas tenho certeza de que isso não será a única coisa de que preciso.

Então:

  • linux/<MANY_DIFFERENT_NAME> está disponível
  • eu vi incluindo asm/uaccess.h no código do kernel
  • o sys/<ANY> também está disponível para os módulos do kernel?
  • algum outro?
por Gr3at 29.09.2018 / 15:25

1 resposta

1

Nenhuma das bibliotecas de espaço do usuário padrão está disponível no código do kernel. Existem algumas funções no kernel que se comportam de maneira semelhante às funções de espaço do usuário correspondentes, mas você deve sempre verificar se não há diferenças.

Sobre a função mmap , esta função é apenas uma chamada do sistema para o kernel. Não faz sentido ter uma chamada para o kernel dentro do kernel. Em vez disso, existe a função que implementa mmap . A menos que você queira mapear a memória anônima, o que seria mais fácil de conseguir com a alocação de memória, você precisa de um descritor de arquivo. Os processos têm descritores de arquivos, os módulos do kernel não.

Em geral, programar um módulo do kernel é diferente da programação do espaço do usuário. Uma boa abordagem seria procurar por módulos do kernel fazendo algo semelhante ao que você pretende e usar isso como ponto de partida.

    
por 29.09.2018 / 19:26

Tags