Obtenha o tamanho da página

Esta página lista as diferentes maneiras de obter o tamanho da página do kernel usado no dispositivo. Para se conectar ao dispositivo, você pode usar adb .

$ adb shell

Use o comando getconf

Use o comando getconf para obter o tamanho da página, mostrado a seguir:

$ getconf PAGE_SIZE
4096

Use o pseudo arquivo /proc/<pid>/smaps

O campo KernelPageSize no pseudo arquivo /proc/<pid>/smaps mostra o tamanho da página, mostrado a seguir:

$ grep KernelPageSize /proc/1/smaps
KernelPageSize:        4 kB

Use o sinalizador do vinculador LD_SHOW_AUXV=1

Utilize a flag LD_SHOW_AUXV para imprimir o vetor auxiliar do programa que está prestes a ser executado. O campo AT_PAGESZ contém o tamanho da página, mostrado a seguir:

$ LD_SHOW_AUXV=1 ls
AT_SYSINFO_EHDR      0x7250460000
AT_MINSIGSTKSZ       4720
AT_HWCAP             0b11111111111111111111111111111111
AT_PAGESZ            4096
AT_CLKTCK            100
AT_PHDR              0x5fda1e0040
AT_PHENT             56
AT_PHNUM             12
AT_BASE              0x72502f8000
AT_FLAGS             0
AT_ENTRY             0x5fda210000
AT_UID               0
AT_EUID              0
AT_GID               0
AT_EGID              0
AT_SECURE            0
AT_RANDOM            0x7fc59d66f8
AT_HWCAP2            0b100011001111111111
AT_EXECFN            "/system/bin/ls"
AT_PLATFORM          "aarch64"
data            dev.        init    vendor

Use o pseudo arquivo /proc/config.gz

Verifique a configuração do kernel para o tamanho da página no pseudo arquivo /proc/config.gz . As configurações possíveis para o tamanho da página são:

  • CONFIG_ARM64_4K_PAGES=y : o kernel usa páginas de 4.096 bytes.
  • CONFIG_ARM64_16K_PAGES=y : o kernel usa páginas de 16.384 bytes.
  • CONFIG_ARM64_64K_PAGES=y : o kernel usa páginas de 65.536 bytes.
$ zcat /proc/config.gz | grep "CONFIG_ARM64_[164K]*_PAGES=y"
CONFIG_ARM64_16K_PAGES=y

Use o vetor auxiliar

Quando um programa é executado, o kernel aloca e inicializa o vetor auxiliar com informações, como o tamanho da página, que são usadas pelo vinculador dinâmico. O vetor auxiliar pode ser lido no pseudo arquivo /proc/<pid>/auxv . O tamanho da página do vetor auxiliar do processo 1 pode ser mostrado da seguinte forma:

$ od -N8 -j56 -td8 -An /proc/1/auxv
4096

Onde:

  • od despeja arquivos em formatos hexadecimais, decimais ou outros.
  • -N8 -j56 despeja os 8 bytes começando no deslocamento 56 no arquivo, correspondendo a AT_PAGESZ .
  • -td8 formata o valor como um número inteiro decimal de 8 bytes.
  • -An faz com que apenas o valor seja mostrado, não seu endereço.