Messages in this thread | | | Date | Wed, 3 Nov 2004 14:51:50 -0700 | From | mark slutz <> | Subject | mmap going to wrong physical address |
| |
I am writting an application that needs control over large (1gig+) portions of contiguous memory. I am currently doing this by using mem=1024m during boot. My system is a dual opteron with 5 gig of memory. In my program I have
if ((fd=open("/dev/mem", O_RDWR))<0) { perror("open"); exit(-1); }
PtrMemoryBase = (void *) mmap64( NULL, size, PROT_READ | PROT_WRITE, MAP_FILE | MAP_SHARED, fd, base );
size = 1MB
I also have -D_FILE_OFFSET_BITS=64.
If base is between 1 and 3 gig the process works fine. When base is 4 gig + the mmap64 works but the memory does not seem to be mapped to the base location. I write a pattern to PtrMemoryBase then have my hardware start doing DMA transfers from the base address but I do not get the data I wrote to PtrMemoryBase.
Thanks for any help Mark - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |