Gerenciamento de memória - como memblock_reserve funciona

4

Estou trabalhando em placas Marvel PXA986 e no arquivo de placa eu posso ver poucos códigos de reserva de memória usando memblock_reserve . Mas imediatamente após memblock_reserve , posso ver o memblock_free e memblock_remove sendo chamado. Quando reservamos memória, qual é o ponto de removê-lo imediatamente?

Alguém pode lançar alguma luz sobre a API do memblock?

    
por linux-newbie 15.11.2013 / 12:23

1 resposta

2

Não tenho certeza se entendi a pergunta, mas talvez isso seja pelo menos um indicativo para a direção certa. Quanto à API, não acho que há muito a ser feito sobre isso, mas para ler a fonte.

Isso não será mais do que uma versão em prosa do que a fonte diz. A versão que eu consultei era 3.11.7.

De embaralhar rapidamente os bits relevantes se mm/memblock.c parece que 1) memblock_reserve () chama memblock_add_region () que sob certas condições chama memblock_double_array () que pode então chamar, novamente sob certas condições, memblock_free (). Isto acontece quando o kernel encontrou espaço livre e tem que mover a matriz apontando para regiões de memória reais como a matriz antiga, caso a matriz já esteja cheia (veja as linhas 267-278 de mm/memblock.c ).

Então, para resumir: não é necessário uma condição de erro se você ver memblock_free () e memblock_remove () sendo chamados imediatamente após memblock_reserve (), eu acho.

    
por 16.11.2013 / 13:35

Tags