请问大家,驱动中使用使用mmap遇到这种情况:
应用层中调用:
for(i = 0; i<3; i++){
mapBuf = mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, fd, off);
if(i==0)strcpy(mapBuf, "Driver Test####00####");//向映射段写数据
else if(i==1)strcpy(mapBuf, "Driver Test####11####");//向映射段写数据
else if(i==2)strcpy(mapBuf, "Driver Test####22####");//向映射段写数据
off += 4096;
}
mapBuf = mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
memset(buffer, 0, 4096);
strcpy(buffer, mapBuf);
printf("buffer = %s\n", buffer);
最后buffer打印出来是buffer=Driver Test####22####
是不是在驱动中指针偏移的位置到了4096*3的位置了,
那么如何重新将指针偏移到0呢? |