最近在看网卡驱动时查看ioremap函数发现调用最低层用__iomem修饰了ioremap的第一个参数(unsigned int)ioremap(S3C24XX_PA_CS8900, SZ_1M) + 0x300;

因为第一个参数是一个定义的地址,逐层调用用关系查看如下:

#define ioremap(cookie,size) __arm_ioremap(cookie, size, MT_DEVICE) 封装了底层的ioremap调用,将cookie传递下去

void __iomem *__arm_ioremap(unsigned long phys_addr, size_t size, unsigned int mtype)

{

   return (void __iomem *)phys_addr;

}

这里将phys_addr;修饰成了一个iomem类型的指针。

__iomem介绍如下:

  __iomem是linux2.6.9内核中加入的特性。是用来个表示指针是指向一个I/O的内存空间。主要是为了驱动程序的通用性考虑。由于不同的CPU体系结构对I/O空间的表示可能不同。当使用__iomem时,编译器会忽略对变量的检查(因为用的是void __iomem)。若要对它进行检查,当__iomem的指针和正常的指针混用时,就会发出一些警告。

最新文章

  1. Intellij IDEA 快捷键整理(TonyCody)
  2. NV SDK 10 (1) Clipmaps
  3. 【LeetCode】Add Digits
  4. MyEclipse中代码格式化后自动换行
  5. DownloadManager
  6. javascript this在事件中的应用
  7. Lintcode: Wood Cut
  8. UIResponder
  9. (转)Windows驱动编程基础教程
  10. hdu 1427 dfs
  11. 248&258--高级软件工程第三次作业
  12. Android图片色彩变幻
  13. C#调用Interrop.excel导出Excel文件失败解决方案
  14. Jquery版本对IE浏览器的支持
  15. 第五章Bookstrap
  16. Maven解决NoPluginFoundForPrefixException错误
  17. Xcode安装CocoaPods
  18. Spring集成ElasticSearch搜索引擎
  19. docker安装jdk8
  20. BZOJ 1124: [POI2008]枪战Maf(构造 + 贪心)

热门文章

  1. 4、jQuery面向对象之简单的插件开发
  2. 大数据学习笔记之Hadoop(一):Hadoop入门
  3. Sublime 代码段设置
  4. centos7 编译打包bcache-tools
  5. Java异常抛出
  6. jenkins中的pipeline学习
  7. Android组件内核之Activity调用栈分析(一)
  8. connect failed: 127.0.0.1#953: connection refused
  9. UML各种线的含义
  10. 2019-5-21-win10-uwp-url-encode