在linux的驱动程序中,都会使用大量的outb、outw、inb、inw等等宏来访问硬件或寄存器。这些宏的定义都在相应处理器体系下的include/asm目录下的io.h中定义。追究下去,这些宏最终就是一个volatile变量的的赋值:
#define __arch_putb(v,a) (*(volatile unsigned char *)(a) = (v))
#define __raw_writeb(v,a) __arch_putb(v,a)
#define outb(v,p) __raw_writeb(v,__io(p))

在(*(volatile unsigned char *)(a) = (v))中,a是一个物理地址(实地址,多数是特殊功能寄存器地址)。(volatile unsigned char *)对a进行类型转换,成为一个指向该地址指针,最后*(volatile unsigned char *)(a)引用该指针对该地址赋值v。这样就可以达到访问底层硬件的目的了。

linux中的outb、outw、inb、inw相关推荐

  1. linux 中的outb outw inb inw

    http://www.360doc.com/content/11/0902/11/1162697_145203655.shtml

  2. Linux中的地址空间以及I/O地址空间

    地址空间实现与cpu的体系结构有很大的关系,目前以应用最广的的80X86体系结构来论述这块的技术文档较多.这里也以此为基础. 根据<深入理解linux内核>所述,内存地址分为以下三种: 逻 ...

  3. linux中的i/o资源管理

    背景 由于一些原因,需要了解一下linux管理I/O资源的机制.这里也解释一下什么是I/O资源,如果做过嵌入式开发相关的工作,应该对arm cpu访问串口寄存器的方式有所了解.我们在实现串口的设备驱动 ...

  4. c++ 进程快照_如何在 Linux 中找出内存消耗最大的进程

    很多次,你可能遇见过系统消耗了过多的内存.如果是这种情况,那么最好的办法是识别出 Linux 机器上消耗过多内存的进程. -- Magesh Maruthamuthu(作者) 很多次,你可能遇见过系统 ...

  5. linux的tar中ztvf,linux中的tar命令(2)

    实例4:只将 /tar 内的 部分文件解压出来 命令: tar -zxvf /opt/soft/test/log30.tar.gz log2013.log 输出: [root@localhost te ...

  6. centos6.5 php5.2,Linux中PHP安装与配置(CentOS-6.5:php-5.2.13)

    1 PHP简介     PHP(PHP: Hypertext Preprocessor的缩写,中文名:"超文本预处理器")是一种通用开源脚本语言.语法吸收了C语言.Java和Per ...

  7. java 外部类似_[求指点] 如何用java 实现类似linux中管道调用外部程序的功能

    想写个小程序实现类似linux中管道的功能,创建一个外部子进程,然后主进程不断地写输入给子进程,而后把子进程的返回值取出. 如下的小代码就是从stdin读入一个字符串,调用子进程(cat)返回这个串, ...

  8. linux 修改java版本_Linux 有问必答:如何在 Linux 中改变默认的 Java 版本

    提问:当我尝试在Linux中运行一个Java程序时,我遇到了一个错误.看上去像程序编译所使用的Java版本与我本地的不同.我该如何在Linux上切换默认的Java版本? 当Java程序编译时,编译环境 ...

  9. linux ls 命令 路径,使用ls命令在Linux中使用完整路径列出文件

    许多人会发现,这是重复的问题,但我已经经历了所有问题,然后问及这个主题,但没有为我工作.使用ls命令在Linux中使用完整路径列出文件 我想打印使用ls命令的特定文件格式的完整路径名到目前为止,我发现 ...

最新文章

  1. DataTable中数据记录的统计
  2. 东田纳西州立大学计算机排名,2019东田纳西州立大学世界排名
  3. 方法区如何判断是否需要回收
  4. Silverlight 置于悬浮层之下 背景透明的方法
  5. 【Gunicorn】gunicorn配置文件详解
  6. 黑马程序员—java基础总结1
  7. ASP.NET 2.0 - 选用DataSet或DataReader
  8. Datawhale组队-Pandas(下)分类数据(打卡)
  9. 生成子集——位向量法
  10. 神州信息预计2020年全年净利润4.35亿至6亿元
  11. css3三角形兼容_css3三角箭头的使用和兼容【原创】
  12. 求一个序列所有区间不同数的个数之和
  13. __gxx_personality_v0详解
  14. 如何使用百度地图API
  15. CALIPSO Quality Statements Lidar Level 2 Cloud and Aerosol Layer Products
  16. 山东大学软件学院项目实训-创新实训-山大软院网络攻防靶场实验平台(八)-RCE漏洞
  17. 点击化学DBCO修饰药物(DBCO-PEG-雷替曲塞,甲氨喋呤MTX,培美曲塞,磺胺地索辛)
  18. 881. 救生艇-快速排序加贪心算法
  19. 荒野行动一直在获取服务器信息,荒野行动取得服务器信息一直不动 服务器信息0处理办法...
  20. H3C交换机命名规则

热门文章

  1. Http请求的header中不能带有中文 There was an error connecting to XXX
  2. [时序波动关联]模型CoFLUX论文要点整理
  3. 华为鸿蒙系统推广方案,实现推广华为鸿蒙系统,无需禁用安卓系统
  4. .输入一个字符串,内有数字和非数字字符,例如:A123x456 17960? 302tab5876 将其中连续的数字作为一个整数,依次存放到已数组a中,例如,123放在a[0],456放在a[1]…
  5. 页面返回/取消到上个页面back(-1)和go(-1)的区别
  6. 计算机应用基础模块2word2010,国开计算机应用基础模块2Word2010文字处理系统客观题答案...
  7. Q2表现喜忧参半,“在线音频第一股”荔枝还甜吗?
  8. python爬虫: re.find.all()正则时,正则表达式是正确的,但匹配不到
  9. java零基础Ⅰ-- 6.面向对象编程(基础部分)
  10. 利用CloudFormation自动化部署AWS GWLB集成Palo Alto防火墙