Acesso à memória do módulo do kernel

9

Dois módulos de kernel diferentes podem acessar a mesma área de memória de uma chamada para ioremap_nocache ()?

Eu tenho um driver sem fio e um módulo separado, gostaria que o módulo separado fizesse o perfil dos valores de ruído no cartão, enquanto o driver ainda está operando. Daí a minha pergunta acima.

Uma das maneiras que explorei foi iniciar um encadeamento do kernel a partir do driver, e então implementei um semáforo para evitar qualquer condição de corrida decorrente de leituras / gravações simultâneas no mesmo espaço de endereço. Eu esperava que um thread filho seria capaz de acessar a mesma área de memória.

Infelizmente isso não funcionou como eu esperava. Eu apreciaria todas as sugestões.

    
por Radagasp 28.01.2013 / 17:06

1 resposta

7

Suponho que você pretende implementar outro módulo do kernel, já que acha mais fácil compartilhar dados entre os módulos do kernel. Mas talvez não seja uma boa escolha. Se for possível 'traçar o perfil do ruído' no espaço do usuário, acho que uma solução melhor é implementar o 'profiler' no espaço do usuário.

Nesta solução, o criador de perfil do espaço do usuário lê dados, realiza alguns cálculos e envia o resultado.

Se esta solução estiver correta, a implementação é a seguinte.

No módulo do kernel, é apenas para registrar um dispositivo char em '/ proc' e implementar primitivas 'read' e 'write'. No espaço do usuário, é apenas para implementar o profiler, lendo e escrevendo para o dispositivo char. Detalhes e informações para essa implementação são todos aqui .

    
por vitorafsr 02.12.2013 / 23:18

Tags