Cache安全的内存分配--cacheDmaMalloc(转贴)

本文介绍了VxWorks操作系统中cacheDmaMalloc函数的使用方法及其重要性。此函数用于分配不会导致缓存一致问题的内存,适用于DMA设备和驱动程序。文章解释了为何在某些情况下必须避免使用具有缓存功能的内存,并讨论了cacheDmaMalloc如何通过MMU设置来实现这一目标。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cache安全的内存分配--cacheDmaMalloc(转贴)

VxWorks中实现了MMU(前提是CPU要支持MMU),内存管理页灵活了很多,未能针对所有MMU属性代码一一查看,但Cache安全的内存分配是最为常见实用的。VxWorks中用cacheDmaMalloc来分配cache安全的内存,也就是不存在cache一致性问题的内存,这些内存对于DMA设备和驱动常常使用。而malloc分配的内存就是具有cache功能的,也就存在cache一致性的问题了,因此malloc分配的内存在DMA和驱动设备中使用有很大隐患。是否需要使用cache安全的内存,就得看应用场合了。 cacheDmaMalloc的实现机制使用CPU支持的MMU页表转换功能,就是设定物理页属性,将该页的属性设定不可cache,就可以实现分配cache安全的内存了。不使用cache功能,性能上自然有些差距,而且该函数是以页大小为单位分配的,因此分配小量内存是会浪费相当的内存空间的,使用时需要注意

引用地址 http://blog.sina.com.cn/s/blog_3e56da070100r2mi.html

转载于:https://my.oschina.net/u/565524/blog/879843

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值