On Tue, Dec 09, 2014 at 10:26:34AM -0500, Neil Horman wrote: > On Mon, Dec 08, 2014 at 07:02:38PM +0000, Karmarkar Suyash wrote: > > Hello, > > > > In DPDK when we use mmap why are we passing the MAP_FIXED flag when Linux > > man page itself says that the option is discouraged? Any specific reason > > for passing the MAP_FIXED flag? > > > Because theres nothing wrong with doing so. The man page says its discouraged > because it creates less portable applications (due to the fact that not all > operating systems support MAP_FIXED). Given that we currently only support > BSD > and Linux however, and given that MAP_FIXED was added to POSIX for > XSI compliant systems, it seems like a reasonable thing to use, as we will > most > likely never run into a system that won't support it > Neil >
Whatever about portability, I thing the best reason to avoid it is given in the quote from the map page given below: "If the memory region specified by addr and len overlaps pages of any existing mapping(s), then the overlapped part of the existing mapping(s) will be discarded." i.e. an mmap with MAP_FIXED can silently discard an existing mapping. This can lead to some strange behaviour for the unwary. /Bruce > > > > http://linux.die.net/man/2/mmap > > > > MAP_FIXED > > Don't interpret addr as a hint: place the mapping at exactly that address. > > addr must be a multiple of the page size. If the memory region specified by > > addr and len overlaps pages of any existing mapping(s), then the overlapped > > part of the existing mapping(s) will be discarded. If the specified address > > cannot be used, mmap() will fail. Because requiring a fixed address for a > > mapping is less portable, the use of this option is discouraged. > > > > > > Regards > > Suyash Karmarkar > >