Abilita la dimensione della pagina da 16kB

Android 15 (AOSP sperimentale) e versioni successive supportano la creazione di Android con dimensioni di pagina di 16 kB. Questa opzione utilizza memoria aggiuntiva ma migliora le prestazioni del sistema.

Le pagine da 16kB sono supportate solo su target arm64 con kernel da 16kB. Tuttavia, esiste anche un'opzione per simulare uno spazio utente di 16 KB su x86_64 per Cuttlefish.

Per abilitare le pagine da 16 kB, imposta le seguenti opzioni di creazione su un dispositivo:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true rimuove la definizione PAGE_SIZE e fa sì che i componenti determinino la dimensione della pagina in fase di esecuzione.
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384 che garantisce che i file ELF della piattaforma vengano creati con un allineamento di 16kB. Questa dimensione più grande del necessario serve per la compatibilità futura. Con l'allineamento ELF a 16kB, il kernel può supportare dimensioni di pagina di 4kB/16kB.

Verifica i flag di build

Dopo aver selezionato la destinazione lunch , verifica che i flag di build siano impostati correttamente nell'ambiente:

$ source build/envsetup.sh
$ lunch target

$ get_build_var TARGET_MAX_PAGE_SIZE_SUPPORTED
16384
$ get_build_var TARGET_NO_BIONIC_PAGE_SIZE_MACRO
true

Se i due comandi precedenti restituiscono rispettivamente 16384 e true , i flag di build sono impostati correttamente.

Crea librerie condivise con allineamento ELF a 16kB

Per creare librerie condivise che fanno parte del progetto Android , devi solo impostare questi flag di build nel tuo target:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

Per creare librerie condivise che non fanno parte del progetto Android , devi passare questo flag del linker:

-Wl,-z,max-page-size=16384