cregit-Linux how code gets into the kernel

Release 4.14 include/asm-generic/pgtable-nopmd.h

/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _PGTABLE_NOPMD_H

#define _PGTABLE_NOPMD_H

#ifndef __ASSEMBLY__

#include <asm-generic/pgtable-nopud.h>

struct mm_struct;


#define __PAGETABLE_PMD_FOLDED

/*
 * Having the pmd type consist of a pud gets the size right, and allows
 * us to conceptually access the pud entry that this pmd is folded into
 * without casting.
 */


typedef struct { pud_t pud; } pmd_t;


#define PMD_SHIFT	PUD_SHIFT

#define PTRS_PER_PMD	1

#define PMD_SIZE  	(1UL << PMD_SHIFT)

#define PMD_MASK  	(~(PMD_SIZE-1))

/*
 * The "pud_xxx()" functions here are trivial for a folded two-level
 * setup: the pmd is never bad, and a pmd always exists (as it's folded
 * into the pud entry)
 */

static inline int pud_none(pud_t pud) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Nicholas Piggin13100.00%2100.00%
Total13100.00%2100.00%


static inline int pud_bad(pud_t pud) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Nicholas Piggin13100.00%2100.00%
Total13100.00%2100.00%


static inline int pud_present(pud_t pud) { return 1; }

Contributors

PersonTokensPropCommitsCommitProp
Nicholas Piggin13100.00%2100.00%
Total13100.00%2100.00%


static inline void pud_clear(pud_t *pud) { }

Contributors

PersonTokensPropCommitsCommitProp
Nicholas Piggin10100.00%2100.00%
Total10100.00%2100.00%

#define pmd_ERROR(pmd) (pud_ERROR((pmd).pud)) #define pud_populate(mm, pmd, pte) do { } while (0) /* * (pmds are folded into puds so this doesn't get actually called, * but the define is needed for a generic inline function.) */ #define set_pud(pudptr, pudval) set_pmd((pmd_t *)(pudptr), (pmd_t) { pudval })
static inline pmd_t * pmd_offset(pud_t * pud, unsigned long address) { return (pmd_t *)pud; }

Contributors

PersonTokensPropCommitsCommitProp
Nicholas Piggin23100.00%2100.00%
Total23100.00%2100.00%

#define pmd_val(x) (pud_val((x).pud)) #define __pmd(x) ((pmd_t) { __pud(x) } ) #define pud_page(pud) (pmd_page((pmd_t){ pud })) #define pud_page_vaddr(pud) (pmd_page_vaddr((pmd_t){ pud })) /* * allocating and freeing a pmd is trivial: the 1-entry pmd is * inside the pud, so has no extra memory associated with it. */ #define pmd_alloc_one(mm, address) NULL
static inline void pmd_free(struct mm_struct *mm, pmd_t *pmd) { }

Contributors

PersonTokensPropCommitsCommitProp
Andrew Morton1066.67%133.33%
Nicholas Piggin320.00%133.33%
Benjamin Herrenschmidt213.33%133.33%
Total15100.00%3100.00%

#define __pmd_free_tlb(tlb, x, a) do { } while (0) #undef pmd_addr_end #define pmd_addr_end(addr, end) (end) #endif /* __ASSEMBLY__ */ #endif /* _PGTABLE_NOPMD_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Nicholas Piggin19384.65%225.00%
Hugh Dickins156.58%112.50%
Andrew Morton135.70%112.50%
Benjamin Herrenschmidt41.75%225.00%
Dave McCracken20.88%112.50%
Greg Kroah-Hartman10.44%112.50%
Total228100.00%8100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.