当前位置: 技术问答>linux和unix
关于readb()
来源: 互联网 发布时间:2016-02-09
本文导语: 单独的一行语句 readb(addr); 这个语句有什么意义吗?我的意思是没有将readb的返回值赋给另外一个变量,仅仅是执行一下这个函数,有什么其他的作用么? 刚开始做驱动,看到以前的老代码中有这样的语句,不明白...
单独的一行语句
readb(addr);
这个语句有什么意义吗?我的意思是没有将readb的返回值赋给另外一个变量,仅仅是执行一下这个函数,有什么其他的作用么?
刚开始做驱动,看到以前的老代码中有这样的语句,不明白有什么样的作用。
另外关于readb/writeb等等这些函数的用法和参数、返回值格式的介绍哪里可以找到啊?
谢谢了。
readb(addr);
这个语句有什么意义吗?我的意思是没有将readb的返回值赋给另外一个变量,仅仅是执行一下这个函数,有什么其他的作用么?
刚开始做驱动,看到以前的老代码中有这样的语句,不明白有什么样的作用。
另外关于readb/writeb等等这些函数的用法和参数、返回值格式的介绍哪里可以找到啊?
谢谢了。
|
"单独的一行语句 readb(addr); "
清空当前地址的值,让下次读到的保证最新的一种方法
"另外关于readb/writeb等等这些函数的用法和参数、返回值格式的介绍哪里可以找到啊? "
应该都有介绍和使用例子
清空当前地址的值,让下次读到的保证最新的一种方法
"另外关于readb/writeb等等这些函数的用法和参数、返回值格式的介绍哪里可以找到啊? "
应该都有介绍和使用例子
|
readb其实是一个宏:
#define readb(addr) (*(volatile unsigned char *) __io_virt(addr))
上述定义中的宏__io_virt()仅仅检查虚地址addr是否是核心空间中的虚地址。
实际上在x86平台上访问I/O内存资源与访问系统主存RAM是无差别的,readb相当于通过指针的间接引用。但是为了保证驱动程序的跨平台的可移植性,应该使用readb来访问I/O内存资源,而不应该通过指向核心虚地址的指针来访问。
#define readb(addr) (*(volatile unsigned char *) __io_virt(addr))
上述定义中的宏__io_virt()仅仅检查虚地址addr是否是核心空间中的虚地址。
实际上在x86平台上访问I/O内存资源与访问系统主存RAM是无差别的,readb相当于通过指针的间接引用。但是为了保证驱动程序的跨平台的可移植性,应该使用readb来访问I/O内存资源,而不应该通过指向核心虚地址的指针来访问。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。