by tmsonhsut 2008.4.28
Linux内核里提供的/dev/mem驱动,为我们读写内存物理地址,提供了一个渠道。下面讲述2种利用mem设备文件进行物理地址读写的方法,一种是设备驱动的方法,另一种是系统调用的方法。
首先我们看下mem这个设备文件,/dev/mem是linux下的一个字符设备,源文件是~/drivers/char/mem.c,这个设备文件是专门用来读写物理地址用的。里面的内容是所有物理内存的地址以及内容信息。通常只有root用户对其有读写权限。
1.设备驱动的方法
下面是mem.c文件里定义的file_operations结构,提供了llseek,read,write,mmap以及open等方法。
引用:
static struct file_operations mem_fops =
{
.llseek = memory_lseek,
.read = read_mem,
.write = write_mem,
.mmap = mmap_mem,
.open = open_mem,
};
因此我们可以通过一般驱动的使用方法,将内存完全当作一个设备来对对待。应用程序如下:
引用:
#include #include int main(void)
{
int fd;
char *rdbuf;
char *wrbuf = "butterfly";
int i;
fd = open("/d