| 
			 
					阅读:1313回复:7
				 
				关于页表地址的一下问。。。。。。。
					现在要完成PCI的DMA传输。。。
 
							其中有一个地址映射的过程。。。 映射过程要用到相应页表 现在要把这个页表地址存储在硬件的相应寄存器中, 现在要问的就是: 在驱动中如何获取这个页表地址? 有专门的函数么? 谢谢。。。。。。。。。  | 
	|
					
						
						
						
						
  | 
	
| 
			 沙发# 
								发布于:2005-01-25 20:22				
			
					什么意思??一般可以通过CR3来获得PDE,PDE等.PAE下获得PDPE.PDE,PTE,ADM64下获得PML4E.PDPE.PDE,PTE
 
							都可以通过查表获得. 其实可以放在内存中,建议放在GDT的NULL SELCTOR中,由于任何情况下GDT必然影射到内存中,而且GDT的NULL SELCTOR在X86-32下也永远不会用来进行内存访问,所以是保存的最佳的地方....  | 
	|
					
						
  | 
	
| 
			 板凳# 
								发布于:2005-01-25 20:46				
			什么意思??一般可以通过CR3来获得PDE,PDE等.PAE下获得PDPE.PDE,PTE,ADM64下获得PML4E.PDPE.PDE,PTE wowo大侠: 我的意思是, 硬件芯片有一个寄存器的位置专门用来存放本次DMA传输时候 要用到的页表的地址。。 因为芯片资料说的。 这个页表地址由驱动来获取,并写入相应的寄存器。 我现在问的就是:在驱动中怎么获得这个页表的地址? 然后就可以写入寄存器了, 完成配置。 我的意思您应该明白了吧? 谢谢wowo大侠。。。!  | 
	|
					
						
  | 
	
| 
			 地板# 
								发布于:2005-01-25 21:27				
			
					Walt Oney,第七章				 
							 | 
	|
| 
			 地下室# 
								发布于:2005-01-26 09:11				
			Walt Oney,第七章 大侠的意思:这个页表地址就存放在当前IRP的MdlAddress域吧。 嗯!应该是这样的, 谢谢猫王了。。。。。。。。。。! :cool  | 
	|
					
						
  | 
	
| 
			 5楼# 
								发布于:2005-01-26 10:07				
			
					现在还有一个问题。。。。。
 
							Irp的MdlAddress域为PMDL类型的。 我现在用WRITE_REGISTER_ULONG配置寄存器。。 我用了一个强制类型转换。。。 将PMDL类型强制转换为ULONG。。。 编译链接可以通过。。。。 这种强制类型转换安全吗? 是不是如果编译不报错的话就可以这样转换。。? 谢谢。。。  | 
	|
					
						
  | 
	
| 
			 6楼# 
								发布于:2005-01-26 10:45				
			
					ft,麻烦把第7章的最后一节看完了先。。。				 
							 | 
	|
| 
			 7楼# 
								发布于:2005-01-26 11:07				
			ft,麻烦把第7章的最后一节看完了先。。。 猫王的意思是。。。。 用分散/聚集表完成DMA传输?  | 
	|
					
						
  |