__raw_readl/__raw_writel与readl/writel

What's the difference between  __raw_readl/__raw_writel and readl/writel in linux kernel? 

  • raw denotes native byte ordering, non-raw means little-endian
  • the __ prefix alternatives don't include memory barriers
#define writel(v,c)   ({ __iowmb(); writel_relaxed(v,c); })//io写内存屏障,确保之前的io写都完成,再执行后面的写。 byteswapping
#define writel_relaxed(v,c)    __raw_writel((__force u32) cpu_to_le32(v),c)//cpu native format--->little endian format
#define __raw_writel(v,a) (__chk_io_ptr(a), *(volatile unsigned int __force   *)(a) = (v))//无内存屏障,no byteswapping
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
memcpy_toio是一个函数,用于将数据从内存复制到IO空间。它是在memcpy函数的基础上进行了封装,通过定义宏来实现。具体来说,memcpy_toio的定义如下:#define memcpy_toio(a,b,c) memcpy(__io_virt(a),(b),(c)) 。在这个宏的定义中,__io_virt是一个用于将物理地址映射到虚拟地址的函数。因此,memcpy_toio会将数据从源内存地址复制到目标IO地址。 需要注意的是,memcpy_toio函数主要用于访问IO空间,而不是一般的内存空间。这是因为IO空间与内存空间的访问方式不同。在处理IO设备时,需要使用特殊的访问方法,以确保数据的正确传输和处理。因此,当需要将数据从内存复制到IO空间时,应该使用memcpy_toio函数而不是普通的memcpy函数。 总结起来,memcpy_toio函数是一个用于将数据从内存复制到IO空间的函数,通过封装memcpy函数以实现对IO空间的访问。它主要用于处理IO设备数据的传输和处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [memcpy vs memcpy_toio](https://blog.csdn.net/qq_41592865/article/details/129560905)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [I/O资源读写接口 writel/readl/memcpy_toio](https://blog.csdn.net/u012294613/article/details/129118222)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值