linux中虛位址和實位址的轉換

2021-05-02 19:20:10 字數 742 閱讀 2222

virt_to_phys() 虛擬位址轉換成實際位址

phys_to_virt()實際位址轉換成虛擬位址

最近用ioremap 和 phys_to_virt 做實體地址於虛擬位址的轉換發現

addr = (unsigned int volatile *)ioremap(0x56000088,12);

printk(kern_alert"%x/n",addr);

addr = (unsigned int volatile *) phys_to_virt(0x56000088);

printk(kern_alert"%x/n",addr);

兩個很函式返回的addr值不一樣看了一下(arm2410)核心的原始碼發現

#ifndef __virt_to_phys

#define __virt_to_phys(x) ((x) - page_offset + phys_offset)

#define __phys_to_virt(x) ((x) - phys_offset + page_offset)

#endif

而ioremap

void __iomem *

__ioremap(unsigned long phys_addr, size_t size, unsigned long flags,

unsigned long align)

return (void __iomem *) (offset + (char *)addr);

如何在wince中將虛位址轉為實位址

在wince開發中,尤其是驅動程式開發中,有時候我們需要得到某個buffer的真實實體地址,用於些暫存器,但是通常我們只有它在當前段中的虛位址。這就對程式的操作造成了麻煩。下面就是將虛位址轉為實位址的方法。dword pagesize userkinfo kinx pagesize userkinf...

PHP獲取短鏈結跳轉後的真實位址和響應頭資訊的方法

複製 如下 url headers get headers url,true print r headers 輸出跳轉到的 echo headers location 附完整陣列 複製 如下 n程式設計客棧bsp content type array 0 text html charset utf ...

實位址模式與保護模式下的中斷與異常處理

在中斷和異常的處理過程中,很重要的一件事是如何識別中斷源,獲取中斷服務子程式的入口位址。在80486 cpu系統中,因為cpu的工作模式不同而獲取中斷向量的方式有所不同,本節討論cpu工作在實位址模式下是如何獲取中斷向量而轉入中斷處理的。在實位址模式下,80486 cpu的中斷響應是根據中斷源提供的...