问题现象: 用户程序mmap驱动程序的一块buf后,读不到此buf中的数据(初始化时候设置0x78),当用户程序更改了此buf的内容,驱动程序读出来的数据还是一开始初始化设置的数据(0x78),没有改变过。 后来怀疑是mmap()调用的属性(MAP_PRIVATE)不对,改成MAP_SHARED,在调用mmap的时候居然显示mmap() Permission denied 请各位大侠帮帮忙。 程序源码: ---------------内核态代码--------------- voi...
by seven_007 - 程序开发 - 2006-10-03 09:20:02 阅读(876) 回复(2)
问题:用户空间调用mmap时老是返回NULL 用户空间代码片断 char * p; int i; int fd; int len = 512; ...
由于要访问大内存(over 4G),所以要使用以上几个函数。
但是在使用过程中遇到几个问题:
1. mmap2按照man里说的,include了
[code]/*mycp.c*/
#include
FILE* ptr; 文件是以 fd=open(tim,O_RDONLY|O_WRONLY|O_CREAT,S_IRWXU) 打开! ptr=(FILE*)mmap(NULL,sb.st_size,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0); 这样使用mmap有错误没? mmap不是返回一个void*吗?
#include
#include
typedef struct{ char name[4]; int age; }people; main(int argc, char** argv) { int fd,i; int pagesize,offset; people *p_map; pagesize = sysconf(_SC_PAGESIZE); printf("pagesize is %d\n",pagesize); fd = open(argv[1],O_CREAT|O_RDWR|O_TRUNC,00777); lseek(fd,pagesize*2-100,SEEK_SET);//设置文件大小。因为mmap不能改变文件大小 write(fd," ",1); offset = 0; //此处offset = 0编译成版本1;offset = pag...
hi, all 我用mmap把一个elf格式的可执行文件放入内存. mmap一直返回错. 我的代码如下: stat (file, &file_stat); fd = open(file, O_RDONLY); ret_val = mmap(NULL, file_stat.st_size, PROT_READ, MAP_PRIVATE|MAP_FILE|MAP_VARIABLE, fd, getpagesize()); 为什么ret_val老是-1. 我的环境是salories. 谢谢