one_md_table_init()
来源:互联网 发布:淘宝搜索引擎 编辑:程序博客网 时间:2024/06/06 01:28
直接返回pgd所指向的页目录表项
static pmd_t * __init one_md_table_init(pgd_t *pgd)
{
pud_t *pud;
pmd_t *pmd_table;
#ifdef CONFIG_X86_PAE
pmd_table = (pmd_t *) alloc_bootmem_low_pages(PAGE_SIZE);
set_pgd(pgd, __pgd(__pa(pmd_table) | _PAGE_PRESENT));
pud = pud_offset(pgd, 0);
if (pmd_table != pmd_offset(pud, 0))
BUG();
#else
pmd_table和pgd指向同一个页目录项
|-------------------------------------|
| pud = pud_offset(pgd, 0); |
| pmd_table = pmd_offset(pud, 0); |
|-------------------------------------|
#endif
return pmd_table;
}
static pmd_t * __init one_md_table_init(pgd_t *pgd)
{
pud_t *pud;
pmd_t *pmd_table;
#ifdef CONFIG_X86_PAE
pmd_table = (pmd_t *) alloc_bootmem_low_pages(PAGE_SIZE);
set_pgd(pgd, __pgd(__pa(pmd_table) | _PAGE_PRESENT));
pud = pud_offset(pgd, 0);
if (pmd_table != pmd_offset(pud, 0))
BUG();
#else
pmd_table和pgd指向同一个页目录项
|-------------------------------------|
| pud = pud_offset(pgd, 0); |
| pmd_table = pmd_offset(pud, 0); |
|-------------------------------------|
#endif
return pmd_table;
}
#define pud_offset(pgd, start) (pgd)
static inline pmd_t * pmd_offset(pud_t * pud, unsigned long address)
{
return (pmd_t *)pud;
}
static inline pmd_t * pmd_offset(pud_t * pud, unsigned long address)
{
return (pmd_t *)pud;
}