⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mm.h

📁 xen虚拟机源代码安装包
💻 H
字号:
/****************************************************************************** * include/xen/mm.h *  * Definitions for memory pages, frame numbers, addresses, allocations, etc. *  * Note that Xen must handle several different physical 'address spaces' and * there is a consistent terminology for these: *  * 1. gpfn/gpaddr: A guest-specific pseudo-physical frame number or address. * 2. gmfn/gmaddr: A machine address from the p.o.v. of a particular guest. * 3. mfn/maddr:   A real machine frame number or address. * 4. pfn/paddr:   Used in 'polymorphic' functions that work across all *                 address spaces, depending on context. See the pagetable *                 conversion macros in asm-x86/page.h for examples. *                 Also 'paddr_t' is big enough to store any physical address. *  * This scheme provides consistent function and variable names even when * different guests are running in different memory-management modes. * 1. A guest running in auto-translated mode (e.g., shadow_mode_translate()) *    will have gpfn == gmfn and gmfn != mfn. * 2. A paravirtualised x86 guest will have gpfn != gmfn and gmfn == mfn. * 3. A paravirtualised guest with no pseudophysical overlay will have *    gpfn == gpmfn == mfn. *  * Copyright (c) 2002-2006, K A Fraser <keir@xensource.com> */#ifndef __XEN_MM_H__#define __XEN_MM_H__#include <xen/config.h>#include <xen/types.h>#include <xen/list.h>#include <xen/spinlock.h>struct domain;struct page_info;/* Boot-time allocator. Turns into generic allocator after bootstrap. */paddr_t init_boot_allocator(paddr_t bitmap_start);void init_boot_pages(paddr_t ps, paddr_t pe);unsigned long alloc_boot_pages(    unsigned long nr_pfns, unsigned long pfn_align);void end_boot_allocator(void);/* Xen suballocator. These functions are interrupt-safe. */void init_xenheap_pages(paddr_t ps, paddr_t pe);void *alloc_xenheap_pages(unsigned int order);void free_xenheap_pages(void *v, unsigned int order);#define alloc_xenheap_page() (alloc_xenheap_pages(0))#define free_xenheap_page(v) (free_xenheap_pages(v,0))/* Domain suballocator. These functions are *not* interrupt-safe.*/void init_domheap_pages(paddr_t ps, paddr_t pe);struct page_info *alloc_domheap_pages(    struct domain *d, unsigned int order, unsigned int memflags);void free_domheap_pages(struct page_info *pg, unsigned int order);unsigned long avail_domheap_pages_region(    unsigned int node, unsigned int min_width, unsigned int max_width);unsigned long avail_domheap_pages(void);#define alloc_domheap_page(d,f) (alloc_domheap_pages(d,0,f))#define free_domheap_page(p)  (free_domheap_pages(p,0))void scrub_heap_pages(void);int assign_pages(    struct domain *d,    struct page_info *pg,    unsigned int order,    unsigned int memflags);/* memflags: */#define _MEMF_no_refcount 0#define  MEMF_no_refcount (1U<<_MEMF_no_refcount)#define _MEMF_node        8#define  MEMF_node(n)     ((((n)+1)&0xff)<<_MEMF_node)#define _MEMF_bits        24#define  MEMF_bits(n)     ((n)<<_MEMF_bits)#ifdef CONFIG_PAGEALLOC_MAX_ORDER#define MAX_ORDER CONFIG_PAGEALLOC_MAX_ORDER#else#define MAX_ORDER 20 /* 2^20 contiguous pages */#endif/* Automatic page scrubbing for dead domains. */extern struct list_head page_scrub_list;#define page_scrub_schedule_work()              \    do {                                        \        if ( !list_empty(&page_scrub_list) )    \            raise_softirq(PAGE_SCRUB_SOFTIRQ);  \    } while ( 0 )#define page_scrub_kick()                                               \    do {                                                                \        if ( !list_empty(&page_scrub_list) )                            \            cpumask_raise_softirq(cpu_online_map, PAGE_SCRUB_SOFTIRQ);  \    } while ( 0 )unsigned long avail_scrub_pages(void);#include <asm/mm.h>int guest_remove_page(struct domain *d, unsigned long gmfn);/* Returns TRUE if the memory at address @p is ordinary RAM. */int memory_is_conventional_ram(paddr_t p);extern unsigned long *alloc_bitmap;	/* for vmcoreinfo */#endif /* __XEN_MM_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -