Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/arch/x86/xen/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 1 kB image not shown  

Quelle  mmu.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0

#include <linux/pfn.h>
#include <asm/xen/page.h>
#include <asm/xen/hypercall.h>
#include <xen/interface/memory.h>

#include "xen-ops.h"

unsigned long arbitrary_virt_to_mfn(void *vaddr)
{
 xmaddr_t maddr = arbitrary_virt_to_machine(vaddr);

 return PFN_DOWN(maddr.maddr);
}

xmaddr_t arbitrary_virt_to_machine(void *vaddr)
{
 unsigned long address = (unsigned long)vaddr;
 unsigned int level;
 pte_t *pte;
 unsigned offset;

 /*
 * if the PFN is in the linear mapped vaddr range, we can just use
 * the (quick) virt_to_machine() p2m lookup
 */

 if (virt_addr_valid(vaddr))
  return virt_to_machine(vaddr);

 /* otherwise we have to do a (slower) full page-table walk */

 pte = lookup_address(address, &level);
 BUG_ON(pte == NULL);
 offset = address & ~PAGE_MASK;
 return XMADDR(((phys_addr_t)pte_mfn(*pte) << PAGE_SHIFT) + offset);
}
EXPORT_SYMBOL_GPL(arbitrary_virt_to_machine);

/* Returns: 0 success */
int xen_unmap_domain_gfn_range(struct vm_area_struct *vma,
          int nr, struct page **pages)
{
 if (xen_feature(XENFEAT_auto_translated_physmap))
  return xen_xlate_unmap_gfn_range(vma, nr, pages);

 if (!pages)
  return 0;

 return -EINVAL;
}
EXPORT_SYMBOL_GPL(xen_unmap_domain_gfn_range);

Messung V0.5
C=93 H=92 G=92

¤ Dauer der Verarbeitung: 0.2 Sekunden  ¤

*© 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.