scatter/gather list代码分析和理解

相关的理论和背景

scatter/gather方式是与block dma方式相对应的一种dma方式。
在dma传输数据的过程中,要求源物理地址和目标物理地址必须是连续的。但在有的计算机体系中,如IA,连续的存储器地址在物理上不一定是连续的,则dma传输要分成多次完成。
如果传输完一块物理连续的数据后发起一次中断,同时主机进行下一块物理连续的传输,则这种方式即为block dma方式。
scatter/gather方式则不同,它是用一个链表描述物理不连续的存储器,然后把链表首地址告诉dma master。
dma master传输完一块物理连续的数据后,就不用再发中断了,而是根据链表传输下一块物理连续的数据,最后发起一次中断。 很显然scatter/gather方式比block dma方式效率高。

Linux Kernel代码分析

参考

https://blog.csdn.net/shenjin_s/article/details/80855762
https://blog.csdn.net/scarecrow_byr/article/details/79676482
http://www.wowotech.net/memory_management/scatterlist.html (重点参考)
https://blog.csdn.net/weixin_36145588/article/details/72900367

猜你喜欢

转载自www.cnblogs.com/powerrailgun/p/13202938.html