码迷,mamicode.com
首页 > 系统相关 > 详细

linux 内核cache

时间:2016-10-21 10:27:57      阅读:236      评论:0      收藏:0      [点我收藏+]

标签:size   tar   物理   sync   记录   strong   映射   申请   void   

写驱动总会碰到和cache相关的东西

记录下用到的接口:

 

驱动中用的内存地址一般为内核地址,用户调用驱动接口时,有时候会把自己申请的地址赋给驱动,此时用户kmalloc得到内核地址,

再用mmap获得映射出来的用户地址,此时用户使用用户地址的时候,会用到cache,为了确保数据的实时性,有时候驱动中应该对cache进行一些操作

 

1. __sync_cache_range_r((void*)start, size);  

用户读取buffer数据时,会从cache中读取,而这个接口会使内核地址对应的cache失效,使用后,用户讲直接从实际物理地址读取数据,

从而保证了数据的正确性

 

2. __sync_cache_range_w((void*)start, size);

用户写数据时,会先写到cache中,驱动为了保证数据及时写到实际物理地址,用这个接口,cache失效数据写到物理地址

 

linux 内核cache

标签:size   tar   物理   sync   记录   strong   映射   申请   void   

原文地址:http://www.cnblogs.com/chencesc/p/5983397.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!