内存共享的问题???

发布于 2022-09-18 19:12:54 字数 2593 浏览 21 评论 0

我这个例子共享内存读出来的数据不对, 能帮我看看什么问题吗?? 谢谢
unsigned long addr=0;
static int init_mem()
{
        unsigned long int i=0;
        addr=__get_free_pages(GFP_KERNEL,0);
        if (!addr){
                printk("<1>error to get page\n");
                return -1;
        }       
        SetPageReserved(virt_to_page(addr));
        printk("<1>the virtue address is 0x%08x\n",addr);
               
       
        return 0;
}

static int exit_mem()
{
        printk("the written bytes is %s\n",(char*)addr);
        ClearPageReserved(virt_to_page(addr));   
        free_pages(addr,0);
}

module_init(init_mem);
module_exit(exit_mem);
==========================================

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/mman.h>
#include <string.h>
#include <unistd.h>

#define VIRT_ADDR   0Xc3873000           // INSMOD模块后, 虚拟地址
#define P_SIZE      4096
int main(char argc,char** argv)
{
        int fd;
        unsigned long offset=0;
        unsigned char * map_addr;
        unsigned int i=0;
        if ((fd=open("/dev/mem",O_RDWR))<0){
                printf("open error\n");
                exit(-1);
        }
        offset=VIRT_ADDR-0xc0000000;
        map_addr=mmap(0,P_SIZE,PROT_READ|PROT_WRITE,MAP_SHARED,fd,offset);
        strcpy(map_addr,"hello,everyone");       
        munmap(map_addr,P_SIZE);
        close(fd);

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

梦初启 2022-09-25 19:12:54

怎么不见你的映射?

与往事干杯 2022-09-25 19:12:54

汗,我就是参考那个改写的啊,  就是没有使用 /PROC ,

MAIN 函数里面有映射啊, map_addr=mmap(0,P_SIZE,PROT_READ|PROT_WRITE,MAP_SHARED,fd,offset);

雪落纷纷 2022-09-25 19:12:54

汗,解决了, 原来只计算了偏移地址, 没有加上物理内存的基地址,

美羊羊 2022-09-25 19:12:54

原帖由 star316 于 2009-3-8 11:25 发表
汗,解决了, 原来只计算了偏移地址, 没有加上物理内存的基地址,

呵呵,看来我的例子应该把要注意的方面写的更详细一些啊,呵呵。

不过,自己遇上一次这样的问题并解决了,对个人的学习还是很有帮助啊。

旧人九事 2022-09-25 19:12:54

原帖由 Godbach 于 2009-3-8 20:32 发表

呵呵,看来我的例子应该把要注意的方面写的更详细一些啊,呵呵。

不过,自己遇上一次这样的问题并解决了,对个人的学习还是很有帮助啊。

god老大,我也用了你的例子实现了我需要的功能。。

无尽的现实 2022-09-25 19:12:54

原帖由 weily0000 于 2009-3-9 00:37 发表

god老大,我也用了你的例子实现了我需要的功能。。

很顺利的就实现了啊?:wink:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文