在线时间2 小时
UID212999
注册时间2016-4-17
NXP金币0
该用户从未签到
新手上路

- 积分
- 21
- 最后登录
- 2021-7-6
|
请问大家,驱动中使用使用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呢?
|
|