nawei87 发表于 2016-9-19 10:27

linux 驱动mmap指针偏移问题

请问大家,驱动中使用使用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呢?
页: [1]
查看完整版本: linux 驱动mmap指针偏移问题