I/O端口的访问
2016-01-18 15:35
267 查看
Linux中的任何设备驱动程序都可对I/O端口进行操作,这样很容易引起混乱,因此Linux提供了三个宏check_region(start,n)、request_region(start,n,name)、release_region(start,n)来对端口使用情况进行控制,它们在include/linux/ioport.h中进行了定义。
check_region(start,n)检查一片区域是否正在被使用,如果正在被使用,则返回非零值。
request_region(start,n,name)创建一片新的标记为正在被使用的区域。
release_region(start,n)释放正在使用的区域,也就是将指定I/O端口区域标记为没有使用状态。
参数start表示用到的I/O端口的基地址,n标明从start开始的I/O端口范围,name为使用这段I/O地址的设备名。
在申请了I/O端口区域之后,就可以放心地访问,Linux使用inb(p)、inw(P)、insb(p,d,l)、insw(p,d,l)、outb(v,p)、outw(v,p)、outl(v,p)、outsb(p,d,l)、outsl(p,d,l)等宏来访问I/O端口,他们在include/asm/io.h中进行定义。
宏中in表示从端口输入,out表示从输出到端口。
b表示访问字节,w表示访问字,l表示访问长整数,s表示流数据,如outw表示输出一个字。
参数p表示要访问的I/O端口号,v表示要输出的数值,d表示内存缓存起始地址,l表示输出输入的量。
eg:
intb(p)表示从端口p输入一个字节。
outsw(p,d,l)表示输出从内存地址d开始的l个字到端口p。
Linux中的任何设备驱动程序都可对I/O端口进行操作,这样很容易引起混乱,因此Linux提供了三个宏check_region(start,n)、request_region(start,n,name)、release_region(start,n)来对端口使用情况进行控制,它们在include/linux/ioport.h中进行了定义。
check_region(start,n)检查一片区域是否正在被使用,如果正在被使用,则返回非零值。
request_region(start,n,name)创建一片新的标记为正在被使用的区域。
release_region(start,n)释放正在使用的区域,也就是将指定I/O端口区域标记为没有使用状态。
参数start表示用到的I/O端口的基地址,n标明从start开始的I/O端口范围,name为使用这段I/O地址的设备名。
在申请了I/O端口区域之后,就可以放心地访问,Linux使用inb(p)、inw(P)、insb(p,d,l)、insw(p,d,l)、outb(v,p)、outw(v,p)、outl(v,p)、outsb(p,d,l)、outsl(p,d,l)等宏来访问I/O端口,他们在include/asm/io.h中进行定义。
宏中in表示从端口输入,out表示从输出到端口。
b表示访问字节,w表示访问字,l表示访问长整数,s表示流数据,如outw表示输出一个字。
参数p表示要访问的I/O端口号,v表示要输出的数值,d表示内存缓存起始地址,l表示输出输入的量。
eg:
intb(p)表示从端口p输入一个字节。
outsw(p,d,l)表示输出从内存地址d开始的l个字到端口p。
相关文章推荐
- Java细节之static方法重写
- ListView布局之View复用原理举例
- 已经完成的习惯
- 读取固定ResourceBundle
- Windows下移动MariaDB数据目录 (转!)
- vb 定时执行php程序
- 【菜鸟学Java】10:Cookie技术
- POJ 2975 Nim题解
- xUtils更新到3.0后的基本使用规则
- Theano深度学习入门
- JAVA加密解密之PBE(Password Based Encryption)算法
- 蓝桥杯 历届试题 错误票据
- 收集
- 使用myeclipse打jar包
- 字符序列模式识别
- Python BeautifulSoup4 使用指南
- Linux学习netstat
- php 策略模式实例
- Java Web学习总结(14)——JSP基础语法
- Java Web学习总结(14)——JSP基础语法