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的中斷響應是根據中斷源提供的...