linux/arch/alpha/include/asm/pgalloc.h
<<
>>
Prefs
   1#ifndef _ALPHA_PGALLOC_H
   2#define _ALPHA_PGALLOC_H
   3
   4#include <linux/mm.h>
   5#include <linux/mmzone.h>
   6
   7/*      
   8 * Allocate and free page tables. The xxx_kernel() versions are
   9 * used to allocate a kernel page table - this turns on ASN bits
  10 * if any.
  11 */
  12
  13static inline void
  14pmd_populate(struct mm_struct *mm, pmd_t *pmd, pgtable_t pte)
  15{
  16        pmd_set(pmd, (pte_t *)(page_to_pa(pte) + PAGE_OFFSET));
  17}
  18#define pmd_pgtable(pmd) pmd_page(pmd)
  19
  20static inline void
  21pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, pte_t *pte)
  22{
  23        pmd_set(pmd, pte);
  24}
  25
  26static inline void
  27pgd_populate(struct mm_struct *mm, pgd_t *pgd, pmd_t *pmd)
  28{
  29        pgd_set(pgd, pmd);
  30}
  31
  32extern pgd_t *pgd_alloc(struct mm_struct *mm);
  33
  34static inline void
  35pgd_free(struct mm_struct *mm, pgd_t *pgd)
  36{
  37        free_page((unsigned long)pgd);
  38}
  39
  40static inline pmd_t *
  41pmd_alloc_one(struct mm_struct *mm, unsigned long address)
  42{
  43        pmd_t *ret = (pmd_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT|__GFP_ZERO);
  44        return ret;
  45}
  46
  47static inline void
  48pmd_free(struct mm_struct *mm, pmd_t *pmd)
  49{
  50        free_page((unsigned long)pmd);
  51}
  52
  53extern pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addr);
  54
  55static inline void
  56pte_free_kernel(struct mm_struct *mm, pte_t *pte)
  57{
  58        free_page((unsigned long)pte);
  59}
  60
  61static inline pgtable_t
  62pte_alloc_one(struct mm_struct *mm, unsigned long address)
  63{
  64        pte_t *pte = pte_alloc_one_kernel(mm, address);
  65        struct page *page;
  66
  67        if (!pte)
  68                return NULL;
  69        page = virt_to_page(pte);
  70        pgtable_page_ctor(page);
  71        return page;
  72}
  73
  74static inline void
  75pte_free(struct mm_struct *mm, pgtable_t page)
  76{
  77        pgtable_page_dtor(page);
  78        __free_page(page);
  79}
  80
  81#define check_pgt_cache()       do { } while (0)
  82
  83#endif /* _ALPHA_PGALLOC_H */
  84
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.