Seitengröße abrufen

Auf dieser Seite sind die verschiedenen Möglichkeiten aufgeführt, wie Sie die Größe der Kernel-Seite abrufen können, die im . Zum Herstellen einer Verbindung mit dem Gerät kannst du adb verwenden.

$ adb shell

Programmiercode verwenden

In C++ ist getpagesize(2) bevorzugt:

# include <unistd.h>
...
... = getpagesize();

In Java können Sie die Systemkonfiguration verwenden:

import android.system.Os;
import android.system.OsConstants;

... = Os.sysconf(OsConstants._SC_PAGE_SIZE);

Befehl getconf verwenden

Verwenden Sie den Befehl getconf, um die Seitengröße abzurufen, wie hier gezeigt:

$ getconf PAGE_SIZE
4096

Pseudodatei /proc/<pid>/smaps verwenden

Im Feld KernelPageSize in der Pseudodatei /proc/<pid>/smaps wird die Seite angezeigt. -Größe (siehe unten):

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

Verknüpfungs-Flag LD_SHOW_AUXV=1 verwenden

Verwenden Sie das Flag LD_SHOW_AUXV, um den Hilfsvektor des Programms auszugeben die ausgeführt werden soll. Das Feld AT_PAGESZ enthält die Seitengröße, wie folgt angezeigt:

$ 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

Pseudodatei /proc/config.gz verwenden

Prüfen Sie die Kernel-Konfiguration für die Seitengröße in der Pseudodatei /proc/config.gz Mögliche Konfigurationen für die Seitengröße:

  • CONFIG_ARM64_4K_PAGES=y: Der Kernel verwendet 4.096-Byte-Seiten.
  • CONFIG_ARM64_16K_PAGES=y: Der Kernel verwendet 16.384-Byte-Seiten.
  • CONFIG_ARM64_64K_PAGES=y: Der Kernel verwendet Seiten mit 65.536 Byte.
$ zcat /proc/config.gz | grep "CONFIG_ARM64_[164K]*_PAGES=y"
CONFIG_ARM64_16K_PAGES=y

Hilfsvektor verwenden

Wenn ein Programm ausgeführt wird, weist der Kernel das Hilfsprogramm zu und initialisiert es Vektor mit Informationen wie der Seitengröße, die vom dynamischen Verknüpfung. Der Hilfsvektor kann aus der Pseudodatei gelesen werden /proc/<pid>/auxv Die Seitengröße aus dem Hilfsvektor von Prozess 1 kann folgendermaßen lauten: wie folgt angezeigt:

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

Dabei gilt:

  • od gibt Dateien im Hexadezimal-, Dezimal- oder anderen Formaten aus.
  • -N8 -j56 gibt die 8 Byte ab Offset 56 in die Datei aus. für AT_PAGESZ.
  • -td8 formatiert den Wert als 8-Byte-Dezimalzahl.
  • Mit -An wird nur der Wert angezeigt, nicht seine Adresse.