Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/arch/loongarch/include/asm/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  pgalloc.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
 */

#ifndef _ASM_PGALLOC_H
#define _ASM_PGALLOC_H

#include <linux/mm.h>
#include <linux/sched.h>

#define __HAVE_ARCH_PMD_ALLOC_ONE
#define __HAVE_ARCH_PUD_ALLOC_ONE
#define __HAVE_ARCH_PTE_ALLOC_ONE_KERNEL
#include <asm-generic/pgalloc.h>

static inline void pmd_populate_kernel(struct mm_struct *mm,
           pmd_t *pmd, pte_t *pte)
{
 set_pmd(pmd, __pmd((unsigned long)pte));
}

static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, pgtable_t pte)
{
 set_pmd(pmd, __pmd((unsigned long)page_address(pte)));
}

#ifndef __PAGETABLE_PMD_FOLDED

static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
{
 set_pud(pud, __pud((unsigned long)pmd));
}
#endif

#ifndef __PAGETABLE_PUD_FOLDED

static inline void p4d_populate(struct mm_struct *mm, p4d_t *p4d, pud_t *pud)
{
 set_p4d(p4d, __p4d((unsigned long)pud));
}

#endif /* __PAGETABLE_PUD_FOLDED */

extern void pagetable_init(void);

extern pgd_t *pgd_alloc(struct mm_struct *mm);

static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm)
{
 pte_t *pte = __pte_alloc_one_kernel(mm);

 if (pte)
  kernel_pte_init(pte);

 return pte;
}

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

#ifndef __PAGETABLE_PMD_FOLDED

static inline pmd_t *pmd_alloc_one(struct mm_struct *mm, unsigned long address)
{
 pmd_t *pmd;
 struct ptdesc *ptdesc;

 ptdesc = pagetable_alloc(GFP_KERNEL_ACCOUNT, 0);
 if (!ptdesc)
  return NULL;

 if (!pagetable_pmd_ctor(mm, ptdesc)) {
  pagetable_free(ptdesc);
  return NULL;
 }

 pmd = ptdesc_address(ptdesc);
 pmd_init(pmd);
 return pmd;
}

#define __pmd_free_tlb(tlb, x, addr) pmd_free((tlb)->mm, x)

#endif

#ifndef __PAGETABLE_PUD_FOLDED

static inline pud_t *pud_alloc_one(struct mm_struct *mm, unsigned long address)
{
 pud_t *pud;
 struct ptdesc *ptdesc = pagetable_alloc(GFP_KERNEL & ~__GFP_HIGHMEM, 0);

 if (!ptdesc)
  return NULL;
 pagetable_pud_ctor(ptdesc);
 pud = ptdesc_address(ptdesc);

 pud_init(pud);
 return pud;
}

#define __pud_free_tlb(tlb, x, addr) pud_free((tlb)->mm, x)

#endif /* __PAGETABLE_PUD_FOLDED */

extern pte_t * __init populate_kernel_pte(unsigned long addr);
#endif /* _ASM_PGALLOC_H */

Messung V0.5
C=96 H=100 G=97

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.