Messages in this thread | | | Date | Thu, 04 Nov 2004 16:38:53 -0500 | From | Bill Davidsen <> | Subject | Re: mmap going to wrong physical address |
| |
mark slutz wrote: > 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
I'm not sure it will help, but have you tried the MAP_FIXED option, and is your address which doesn't work a multiple of the page size?
-- -bill davidsen (davidsen@tmr.com) "The secret to procrastination is to put things off until the last possible moment - but no longer" -me
- 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/
| |