אפשר גודל עמוד של 16kB

לאנדרואיד 15 (AOSP ניסיוני) ומעלה יש תמיכה בבניית אנדרואיד בגודל עמוד של 16kB. אפשרות זו משתמשת בזיכרון נוסף אך משפרת את ביצועי המערכת.

דפי 16kB נתמכים רק ביעדי arm64 עם גרעינים של 16kB. עם זאת, ישנה גם אפשרות לדמות שטח משתמש של 16KB ב- x86_64 עבור Cuttlefish.

כדי להפעיל דפים של 16kB, הגדר את אפשרויות הבנייה הבאות במכשיר:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true מסיר את ההגדרה PAGE_SIZE , וגורם לרכיבים לקבוע את גודל העמוד בזמן ריצה.
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384 מה שמבטיח שקובצי ELF של הפלטפורמה בנויים עם יישור של 16kB. גודל זה גדול מהנדרש מיועד לתאימות עתידית. עם יישור ELF של 16kB, הגרעין יכול לתמוך בגדלים של 4kB/16kB.

אמת דגלי בנייה

לאחר בחירת יעד lunch , ודא שדגלי הבנייה מוגדרים כהלכה בסביבה:

$ 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

אם שתי הפקודות הקודמות מחזירות 16384 ו- true בהתאמה, דגלי הבנייה שלך מוגדרים כהלכה.

בנה ספריות משותפות עם יישור ELF של 16kB

כדי לבנות ספריות משותפות שהן חלק מפרויקט אנדרואיד , אתה רק צריך להגדיר את דגלי הבנייה האלה ביעד שלך:

  • PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
  • PRODUCT_MAX_PAGE_SIZE_SUPPORTED := 16384

כדי לבנות ספריות משותפות שאינן חלק מפרויקט אנדרואיד , עליך להעביר את דגל המקשר הזה:

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