內(nèi)核地址管理

1孵奶、內(nèi)核內(nèi)存布局
2、內(nèi)核頁表建立

kernel/msm-4.19/arch/arm64/mm/mmu.c

/*
 * Create fine-grained mappings for the kernel.
 */
static void __init map_kernel(pgd_t *pgdp)
{
...
    /*
     * Only rodata will be remapped with different permissions later on,
     * all other segments are allowed to use contiguous mappings.
     */
    map_kernel_segment(pgdp, _text, _etext, text_prot, &vmlinux_text, 0,
               VM_NO_GUARD);
    map_kernel_segment(pgdp, __start_rodata, __inittext_begin, PAGE_KERNEL,
               &vmlinux_rodata, NO_CONT_MAPPINGS, VM_NO_GUARD);
    map_kernel_segment(pgdp, __inittext_begin, __inittext_end, text_prot,
               &vmlinux_inittext, 0, VM_NO_GUARD);
    map_kernel_segment(pgdp, __initdata_begin, __initdata_end, PAGE_KERNEL,
               &vmlinux_initdata, 0, VM_NO_GUARD);
    map_kernel_segment(pgdp, _data, _end, PAGE_KERNEL, &vmlinux_data, 0, 0);
...
}

kernel/msm-4.19/arch/arm64/mm/mmu.c

static void __init map_kernel_segment(pgd_t *pgdp, void *va_start, void *va_end,
                      pgprot_t prot, struct vm_struct *vma,
                      int flags, unsigned long vm_flags)
{
    phys_addr_t pa_start = __pa_symbol(va_start);
    unsigned long size = va_end - va_start;

    BUG_ON(!PAGE_ALIGNED(pa_start));
    BUG_ON(!PAGE_ALIGNED(size));

    __create_pgd_mapping(pgdp, pa_start, (unsigned long)va_start, size, prot,
                 early_pgtable_alloc, flags);

    if (!(vm_flags & VM_NO_GUARD))
        size += PAGE_SIZE;

    vma->addr   = va_start;
    vma->phys_addr  = pa_start;
    vma->size   = size;
    vma->flags  = VM_MAP | vm_flags;
    vma->caller = __builtin_return_address(0);

    vm_area_add_early(vma);
}

kernel/msm-4.19/arch/arm64/mm/mmu.c

static void __create_pgd_mapping(pgd_t *pgdir, phys_addr_t phys,
                 unsigned long virt, phys_addr_t size,
                 pgprot_t prot,
                 phys_addr_t (*pgtable_alloc)(void),
                 int flags)
{
    unsigned long addr, length, end, next;
    pgd_t *pgdp = pgd_offset_raw(pgdir, virt);

    /*
     * If the virtual and physical address don't have the same offset
     * within a page, we cannot map the region as the caller expects.
     */
    if (WARN_ON((phys ^ virt) & ~PAGE_MASK))
        return;

    phys &= PAGE_MASK;
    addr = virt & PAGE_MASK;
    length = PAGE_ALIGN(size + (virt & ~PAGE_MASK));

    end = addr + length;
    do {
        next = pgd_addr_end(addr, end);
        alloc_init_pud(pgdp, addr, next, phys, prot, pgtable_alloc,
                   flags);
        phys += next - addr;
    } while (pgdp++, addr = next, addr != end);
}

參考博客:https://www.cnblogs.com/LoyenWang/p/11440957.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末往枣,一起剝皮案震驚了整個(gè)濱河市酥馍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌合住,老刑警劉巖帘饶,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哑诊,死亡現(xiàn)場離奇詭異,居然都是意外死亡及刻,警方通過查閱死者的電腦和手機(jī)镀裤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來缴饭,“玉大人暑劝,你說我怎么就攤上這事】怕В” “怎么了担猛?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我毁习,道長智嚷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任纺且,我火速辦了婚禮,結(jié)果婚禮上稍浆,老公的妹妹穿的比我還像新娘载碌。我一直安慰自己,他們只是感情好衅枫,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布嫁艇。 她就那樣靜靜地躺著,像睡著了一般弦撩。 火紅的嫁衣襯著肌膚如雪步咪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天益楼,我揣著相機(jī)與錄音猾漫,去河邊找鬼。 笑死感凤,一個(gè)胖子當(dāng)著我的面吹牛悯周,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播陪竿,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼禽翼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了族跛?” 一聲冷哼從身側(cè)響起闰挡,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎礁哄,沒想到半個(gè)月后长酗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡姐仅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年花枫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掏膏。...
    茶點(diǎn)故事閱讀 40,444評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡劳翰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出馒疹,到底是詐尸還是另有隱情佳簸,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站生均,受9級特大地震影響听想,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜马胧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一汉买、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧佩脊,春花似錦蛙粘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至歇盼,卻和暖如春舔痕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背豹缀。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工伯复, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人耿眉。 一個(gè)月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓边翼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鸣剪。 傳聞我的和親對象是個(gè)殘疾皇子组底,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內(nèi)容