我正在从分配的共享内存中读取数据。 我通过访问mmap()给出的虚拟地址成功获取数据。 不幸的是,检索到的一些数据返回0,其余数据正确
#define MEMORY_A (0x3F050000)
#define MAP_SIZE 1024UL
#define MAP_MASK (MAP_SIZE - 1)
int main()
{
int32_t *mapped_baseA, *mapped_dev_baseA;
off_t target_A=MEMORY_A;
int memfdA;
int32_t fdA;
/* A */
memfdA = open("/dev/mem", O_RDWR | O_SYNC);
if (memfdA == -1)
{
printf("Can't open /dev/mem.\n");
exit(0);
}
mapped_baseA = (int32_t *) mmap(0, SIZEBUFFER*sizeof(int), PROT_READ|PROT_WRITE, MAP_SHARED, memfdA, target_A & ~ MAP_MASK_VECTOR);
mapped_dev_baseA = (mapped_baseA + (target_A & MAP_MASK));
for(i=0 ,nMemAdd=0; i < SIZEBUFFER;i++)
{
fdA=(int32_t*)mapped_dev_baseA[i];
printf("\n\nA: %ld ",fdA);
}
fclose(fp);
close (memfdA);
munmap(mapped_baseA,MAP_SIZE);
return 0;
}
结果
A: -3769313 ncounter: 933
A: -3746454 ncounter: 934
A: -3723030 ncounter: 935
A: 0 ncounter: 936
A: 0 ncounter: 937
A: 0 ncounter: 938
A: 0 ncounter: 939
A: 0 ncounter: 940
A: 0 ncounter: 941
A: 0 ncounter: 942
A: 0 ncounter: 943
A: -3487436 ncounter: 944
A: -3458578 ncounter: 945
A: -3429199 ncounter: 946
A: -3399303 ncounter: 947
A: -3368896 ncounter: 948
A: -3337981 ncounter: 949
A: -3306564 ncounter: 950
A: -3274649 ncounter: 951
我得到的数据的可能原因是0?