arch/um/include/asm/pgalloc.h

Source file repositories/reference/linux-study-clean/arch/um/include/asm/pgalloc.h

File Facts

System
Linux kernel
Corpus path
arch/um/include/asm/pgalloc.h
Extension
.h
Size
1038 bytes
Lines
46
Domain
Architecture Layer
Bucket
arch/um
Inferred role
Architecture Layer: implementation source
Status
source implementation candidate

Why This File Exists

CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.

Dependency Surface

Detected Declarations

Annotated Snippet

#ifndef __UM_PGALLOC_H
#define __UM_PGALLOC_H

#include <linux/mm.h>

#include <asm-generic/pgalloc.h>

#define pmd_populate_kernel(mm, pmd, pte) \
	set_pmd(pmd, __pmd(_PAGE_TABLE + (unsigned long) __pa(pte)))

#define pmd_populate(mm, pmd, pte) 				\
	set_pmd(pmd, __pmd(_PAGE_TABLE +			\
		((unsigned long long)page_to_pfn(pte) <<	\
			(unsigned long long) PAGE_SHIFT)))

/*
 * Allocate and free page tables.
 */
extern pgd_t *pgd_alloc(struct mm_struct *);

#define __pte_free_tlb(tlb, pte, address)	\
	tlb_remove_ptdesc((tlb), page_ptdesc(pte))

#if CONFIG_PGTABLE_LEVELS > 2

#define __pmd_free_tlb(tlb, pmd, address)	\
	tlb_remove_ptdesc((tlb), virt_to_ptdesc(pmd))

#if CONFIG_PGTABLE_LEVELS > 3

#define __pud_free_tlb(tlb, pud, address)	\
	tlb_remove_ptdesc((tlb), virt_to_ptdesc(pud))

#endif
#endif

#endif

Annotation

Implementation Notes