Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1052521
  • 博文数量: 836
  • 博客积分: 43880
  • 博客等级: 大将
  • 技术积分: 5485
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-20 17:36
文章分类

全部博文(836)

文章存档

2011年(1)

2008年(835)

我的朋友

分类: LINUX

2008-08-20 18:28:12


2.6内核验证。

  内核模块-----------------------

#include
#include
#include
#include
 
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Wheelz");
MODULE_DESCRIPTION("mmapdemo");
 
staticunsignedlongp=0;
 
staticint__initinit(void)
{
 //分配共享内存(一个页面)
 p=__get_free_pages(GFP_KERNEL,0);
 SetPageReserved(virt_to_page(p));
 
 printk("<1>p=0xx\n",p);
 
 //在共享内存中写上一个字符串
 strcpy(p,"Helloworld!\n");
 
 return0;
}
 
staticvoid__exitfini(void)
{
 ClearPageReserved(virt_to_page(p));
 free_pages(p,0); 
}
 
module_init(init);
module_exit(fini);
 
用户态程序---------------------------------
#include
#include
#include
#include
#include
 
#definePAGE_SIZE(4*1024)
 
#definePAGE_OFFSET  0xc0000000
#defineKERNEL_VIRT_ADDR 0xc5e3c000
 
intmain()
{
 char*buf;
 intfd;
 unsignedlongphy_addr;
 
 fd=open("/dev/mem",O_RDWR);
 if(fd==-1)
  perror("open");
 phy_addr=KERNEL_VIRT_ADDR-PAGE_OFFSET;
 
 buf=mmap(0,PAGE_SIZE,
  PROT_READ|PROT_WRITE,MAP_SHARED,
  fd,phy_addr);
 if(buf==MAP_FAILED)
  perror("mmap");
 puts(buf);//打印共享内存的内容
 munmap(buf,PAGE_SIZE);
 
 close(fd);
 return0;
}

(e129)


下载本文示例代码
阅读(727) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~