如 i386 ,在区别 I/O 空间和内存空间的进程的 I/O 空间写入数据。
outb() I/O 上写入 8 位数据 ( 1 字节 );
outw() I/O 上写入 16 位数据 ( 2 字节 );
outl () I/O 上写入 32 位数据 ( 4 字节)。
inb() I/O 上读取 8 位数据 ( 1 字节 );
inw() I/O 上读取 16 位数据 ( 2 字节 );
intl () I/O 上读取 32 位数据 ( 4 字节)。
redhat 5.0 linux 2.6.18 kelnel 原型:
#include <sys/io.h>
变量:
port :I/O 地址
data :数据
void outb (unsigned char data, unsigned short int port);
void outw (unsigned short data, unsigned short int port);
void outl (unsigned int data, unsigned short int port);
static __iniine unsigned char inb(unsigned short int port);
static __iniine unsigned short inw(unsigned short int port);
static __iniine unsigned int inl(unsigned short int port);
注:
inl(),outl(),是读写端口。
readl(),writel(),是读写内存。

本文介绍了在i386环境下,针对I/O空间与内存空间的不同读写操作。详细解释了outb(), outw(), outl()用于向I/O端口写入不同位数的数据,以及inb(), inw(), inl()用于从I/O端口读取数据的方法。同时对比了用于内存读写的readl(), writel()函数。
9734






