1. readb(), readw(), readl() 函数
功能:
从内存映射的 I/O 空间读取数据。
- readb 从 I/O 读取 8 位数据 ( 1 字节 );
- readw 从 I/O 读取 16 位数据 ( 2 字节 );
- readl 从 I/O 读取 32 位数据 ( 4 字节 )。
原型:
#include <asm/io.h>
unsigned char readb(unsigned int addr)
unsigned char readw(unsigned int addr)
unsigned char readl(unsigned int addr)
变量:addr I/O 地址。
返回值: 从 I/O 空间读取的数值。
2. writeb(), writew(), writel() 宏函数
功能:
往内存映射的 I/O 空间上写数据。
- writeb() I/O 上写入 8 位数据 (1字节)
- writew() I/O 上写入 16 位数据 (2字节)
- wirtel() I/O 上写入 32 位数据 (4字节)
原型:
引用#include <asm/io.h>
void writeb(unsigned char data,unsigned short addr)
void writew(unsigned char data,unsigned short addr)
void writel(unsigned char data,unsigned short addr)
变量:
data I/O 地址;
data 数据。
具体定义:
#define readb __raw_readb
#define readw(addr) __le16_to_cpu(__raw_readw(addr))
#define readl(addr) __le32_to_cpu(__raw_readl(addr))
#ifndef __raw_readb
static inline u8 __raw_readb(const volatile void __iomem *addr)
{
return *(const volatile u8 __force *) addr;
}
#endif
#ifndef __raw_readw
static inline u16 __raw_readw(const volatile void __iomem *addr)
{
return *(const volatile u16 __force *) addr;
}
#endif
#ifndef __raw_readl
static inline u32 __raw_readl(const volatile void __iomem *addr)
{
return *(const volatile u32 __force *) addr;
}
#endif
#define writeb __raw_writeb
#define writew(b,addr) __raw_writew(__cpu_to_le16(b),addr)
#define writel(b,addr) __raw_writel(__cpu_to_le32(b),addr)