亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3620 | 回復(fù): 4
打印 上一主題 下一主題

[轉(zhuǎn)貼]用戶態(tài)和內(nèi)核共享內(nèi)存--最簡單的例子 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2006-03-18 17:55 |只看該作者 |倒序?yàn)g覽
作者:wheelz
來自:
http://www.linuxforum.net/forum/gshowflat.php?Cat=&Board=linuxK&Number=587187&page=0&view=collapsed&sb=5&o=all&fpart=
例子中,用戶態(tài)程序的KERNEL_VIRT_ADDR就是內(nèi)核模塊打印的地址p
這里是hard coding(先加載內(nèi)核模塊,再把打印的地址賦值給KERNEL_VIRT_ADDR),
可以采用其他的方式傳遞。

2.6內(nèi)核驗(yàn)證。

內(nèi)核模塊-----------------------


  1. #include <linux/config.h>

  2. #include <linux/module.h>

  3. #include <linux/kernel.h>

  4. #include <linux/mm.h>



  5. MODULE_LICENSE("GPL");

  6. MODULE_AUTHOR("Wheelz");

  7. MODULE_DESCRIPTION("mmap demo");



  8. static unsigned long p = 0;



  9. static int __init init(void)

  10. {

  11.         //分配共享內(nèi)存(一個(gè)頁面)

  12.         p = __get_free_pages(GFP_KERNEL, 0);

  13.         SetPageReserved(virt_to_page(p));



  14.         printk("<1> p = 0x%08x\n", p);



  15.         //在共享內(nèi)存中寫上一個(gè)字符串

  16.         strcpy(p, "Hello world!\n");



  17.         return 0;

  18. }



  19. static void __exit fini(void)

  20. {

  21.         ClearPageReserved(virt_to_page(p));

  22.         free_pages(p, 0);       

  23. }



  24. module_init(init);

  25. module_exit(fini);



  26. 用戶態(tài)程序---------------------------------

  27. #include <sys/mman.h>

  28. #include <sys/types.h>

  29. #include <sys/stat.h>

  30. #include <fcntl.h>

  31. #include <stdio.h>



  32. #define PAGE_SIZE (4*1024)



  33. #define PAGE_OFFSET                0xc0000000

  34. #define KERNEL_VIRT_ADDR        0xc5e3c000



  35. int main()

  36. {

  37.         char *buf;

  38.         int fd;

  39.         unsigned long phy_addr;



  40.         fd=open("/dev/mem",O_RDWR);

  41.         if(fd == -1)

  42.                 perror("open");

  43.         phy_addr=KERNEL_VIRT_ADDR - PAGE_OFFSET;



  44.         buf=mmap(0, PAGE_SIZE,

  45.                 PROT_READ|PROT_WRITE, MAP_SHARED,

  46.                 fd, phy_addr);

  47.         if(buf == MAP_FAILED)

  48.                 perror("mmap");

  49.         puts(buf);//打印共享內(nèi)存的內(nèi)容

  50.         munmap(buf,PAGE_SIZE);



  51.         close(fd);

  52.         return 0;

  53. }
復(fù)制代碼

論壇徽章:
1
榮譽(yù)版主
日期:2011-11-23 16:44:17
2 [報(bào)告]
發(fā)表于 2006-03-18 19:48 |只看該作者
都轉(zhuǎn)的wheelz老大的帖子..

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2006-03-20 13:33 |只看該作者
不錯(cuò)

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
4 [報(bào)告]
發(fā)表于 2006-03-20 14:47 |只看該作者
這樣做的話,是單向的,還是雙向的?

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2006-09-13 16:29 |只看該作者
原帖由 flw 于 2006-3-20 14:47 發(fā)表
這樣做的話,是單向的,還是雙向的?


應(yīng)該是雙向的, 用戶寫的數(shù)據(jù)內(nèi)核也能看到, 但這樣的話, 二者采用何種方式同步好呢?
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP