首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何知道页面是否可用于DMA?

问如何知道页面是否可用于DMA?
EN

Stack Overflow用户
提问于 2021-10-26 06:18:30
回答 1查看 59关注 0票数 1

我想要跟踪正在/可能用于DMA的页面。

我只知道DMA的页面是“锁定的”,它的物理位置在主内存中是不允许改变的。但是我如何判断一个页面是否“锁定”呢?(我猜是在struct页面中使用标志),或者有没有更好的方法来知道页面是否用于DMA?

EN

回答 1

Stack Overflow用户

发布于 2021-10-27 05:32:09

我不是专家,但是,从我在这里和那里读到的内容来看,没有办法知道一个页面是否用于DMA。就像你说的,在页面结构中有一个标志字段,它是一个无符号的长整型。在这个标志字段中,有一个加锁位,它告诉Linux不要将页面换出主内存。要知道这一点,最好的方法是遍历所有进程及其地址空间,并检查页面是否锁定在主内存中。通常,锁定页面的是设备驱动程序。这对于避免设备写入调用进程不能通过虚拟地址访问的物理地址是必要的。如果设备驱动程序没有锁定页面,设备将写入可能被换出的物理帧,或者更改vm映射,这将是灾难性的。这个方法也不会告诉你内核的dma。内核有时可以像交换页面时那样执行dma IO。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69718253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档