阅读:1233回复: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传输? |
|
|