Localizando informações de arquitetura no kernel linux / android durante a criação do código do kernel

0

Estou fazendo modificações nos arquivos do kernel. Eu quero carregar uma função se é uma arquitetura de 32 bits ou carregar outra função se for uma arquitetura de 64 bits. É possível obter informações de arquitetura no kernel durante o tempo de construção e carregar diferentes funções baseadas nele. Em que local as informações de arquitetura são armazenadas ou de onde obter as informações? Obrigado.

    
por user7718036 05.08.2017 / 01:30

1 resposta

2

Se você estiver compilando na própria máquina de destino, uname -m fornecerá o que você deseja na maioria das máquinas. por exemplo. na minha máquina desktop de 64 bits:

$ uname -m
x86_64

Isto não lhe dirá explicitamente se a máquina é de 64 ou 32 bits. É apenas uma string que você terá que interpretar (por exemplo, com uma série de instruções if/then ou uma instrução case ).

Aqui está um exemplo (muito bruto) em sh:

machine=$(uname -m)
bits=0

case "$machine" in
       *64*) bits=64 ;;
  *[3-6]86*) bits=32 ;;
    *armv7*) bits=32 ;;  # replace with a pattern to match your 32-bit android cpu
    *armv8*) bits=64 ;;  # replace with a pattern to match your 64-bit android cpu
esac

[ "$bits" = 0 ] && echo "Unknown machine type" && exit 1
    
por 05.08.2017 / 03:23