• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 用戶態和內核共享內存:最簡單的例子

    發表于:2007-05-26來源:作者:點擊數: 標簽:
    2.6內核驗證。 內核模塊----------------------- #include #include #include #include MODULE_LICENSE(GPL); MODULE_AUTHOR(Wheelz); MODULE_DESCRIPTION(mmap demo); static unsigned long p = 0; static int __init init(void) { //分配共享內存(一個頁

    2.6內核驗證。

      內核模塊-----------------------


    #include
    #include
                
                
    #include
                
                
    #include
                
                
     
    MODULE_LICENSE("GPL");
    MODULE_AUTHOR("Wheelz");
    MODULE_DESCRIPTION("mmap demo");
     
    static unsigned long p = 0;
     
    static int __init init(void)
    {
     //分配共享內存(一個頁面)
     p = __get_free_pages(GFP_KERNEL, 0);
     SetPageReserved(virt_to_page(p));
     
     printk("<1> p = 0x%08x\n", p);
     
     //在共享內存中寫上一個字符串
     strcpy(p, "Hello world!\n");
     
     return 0;
    }
     
    static void __exit fini(void)
    {
     ClearPageReserved(virt_to_page(p));
     free_pages(p, 0); 
    }
     
    module_init(init);
    module_exit(fini);
     
    用戶態程序---------------------------------
    #include  
    #include 
    #include 
    #include  
    #include  
     
    #define PAGE_SIZE (4*1024)
     
    #define PAGE_OFFSET  0xc0000000
    #define KERNEL_VIRT_ADDR 0xc5e3c000
     
    int main() 
    { 
     char *buf; 
     int fd; 
     unsigned long phy_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); 
     return 0; 
    } 

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>