linux0.11-include/asm/io.h
来源:互联网 发布:编写软件怎么自学 编辑:程序博客网 时间:2024/06/05 01:17
http://www.imooo.com/linux/linux-unix/1398418.htm
#define outb(value,port) \
asm (“outb %%al,%%dx”::”a” (value),”d” (port))
//宏定义outb用汇编实现了在端口地址port处写入值value
//使用的寄存器是al,一个byte长度,而端口port使用的是2byte长度地址来标记的寄存器,注意这里寄存器的使用
#define inb(port) ({ \
unsigned char _v; \
asm volatile (“inb %%dx,%%al”:”=a” (_v):”d” (port)); \
_v; \
})
//这里inb是在端口port处读入读入一个byte长度的数据,并把读入数据保存在变量_V中
#define outb_p(value,port) \
asm (“outb %%al,%%dx\n” \
“\tjmp 1f\n” \
“1:\tjmp 1f\n” \ //这里jmp 1f是老把戏了,就是继续向下执行语句,纯粹的通过“重复执行没啥意义的机器指令”短暂延时一下而已
“1:”::”a” (value),”d” (port))
//outb_p 和outb 区别在于前者有短暂延时,后者没有
#define inb_p(port) ({ \
unsigned char _v; \
asm volatile (“inb %%dx,%%al\n” \
“\tjmp 1f\n” \
“1:\tjmp 1f\n” \
“1:”:”=a” (_v):”d” (port)); \
_v; \
})
//inb_p 和inb 区别在于前者有短暂延时,后者没有
- linux0.11-include/asm/io.h
- arch/arm/include/asm/io.h
- 《linux 内核完全剖析》 include/asm/io.h
- /usr/include/asm/errno.h
- signal.h /usr/include/asm/signal.h
- linux/include/asm-powerpc/posix_types.h
- usr/include/i386/asm/unistd_32.h
- arch/alpha/include/asm/posix_types.h
- /usr/include/asm-generic/errno-base.h
- /usr/include/asm-generic/errno.h
- Linux/arch/arm/include/asm/unistd.h
- Tiny210移植u-boot报/usr/local/include/asm/io.h文件中未知的类型名错误
- Tiny210移植u-boot报/usr/local/include/asm/io.h文件中未知的类型名错误
- linux 系统调用列表 /usr/include/asm/unistd.h
- 2.4 内核中的/usr/include/asm/page.h
- Linux/error.h中的错误对应(include/asm-generic/(errno.h)、(errno-base.h))
- 关于make zImage时出现include/asm/timex.h:15:28: asm/arch/timex.h: No such file or directory
- /usr/include/asm-generic/errno-base.h和errno.h对errno值的宏定义
- 《PHP基础知识总结》关于PHP5 Session生命周期介绍
- Spring学习笔记(12)----------aop
- angularjs karma安装小问题
- 04_java基础_继承、抽象、多态
- CentOS下安装samba服务
- linux0.11-include/asm/io.h
- 电梯几何学
- java-基础入门-自动装箱与自动拆箱留给我们的坑
- Spring学习笔记(13)----------aop拦截器
- 《PHP基础知识总结》PHP检查库或函数是否可用的方法
- Codeforces Round #301 (Div. 2)
- Linux中的特殊权限位
- 设计模式(行为型)之迭代器模式(Iterator Pattern)
- Dialogue System for Unity文档中英对照版(简雨原创翻译)完结篇(内置脚本使用,脚本API)