virtconvert.h

来自「linux 内核源代码」· C头文件 代码 · 共 55 行

H
55
字号
#ifndef __VIRT_CONVERT__#define __VIRT_CONVERT__/* * Macros used for converting between virtual and physical mappings. */#ifdef __KERNEL__#include <linux/compiler.h>#include <linux/mmzone.h>#include <asm/setup.h>#include <asm/page.h>/* * Change virtual addresses to physical addresses and vv. */static inline unsigned long virt_to_phys(void *address){	return __pa(address);}static inline void *phys_to_virt(unsigned long address){	return __va(address);}/* Permanent address of a page. */#ifdef CONFIG_SINGLE_MEMORY_CHUNK#define page_to_phys(page) \	__pa(PAGE_OFFSET + (((page) - pg_data_map[0].node_mem_map) << PAGE_SHIFT))#else#define page_to_phys(_page) ({						\	struct page *__page = _page;					\	struct pglist_data *pgdat;					\	pgdat = pg_data_table[page_to_nid(__page)];			\	page_to_pfn(__page) << PAGE_SHIFT;				\})#endif/* * IO bus memory addresses are 1:1 with the physical address, * except on the PCI bus of the Hades. */#ifdef CONFIG_HADES#define virt_to_bus(a) (virt_to_phys(a) + (MACH_IS_HADES ? 0x80000000 : 0))#define bus_to_virt(a) (phys_to_virt((a) - (MACH_IS_HADES ? 0x80000000 : 0)))#else#define virt_to_bus virt_to_phys#define bus_to_virt phys_to_virt#endif#endif#endif

⌨️ 快捷键说明

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