How do I create a memory-mapped file without a backing file on OSX?
You could mount a memory-backed filesystem: http://lists.apple.com/archives/darwin-kernel/2004/Sep/msg00004.html
Using this mechanism will increase memory pressure on the system, and will probably be paged out if memory pressure is great enough. It might be worthwhile to make it a configuration option, in case the user would rather some other application have first-choice of the memory.
Another option is to use POSIX shared memory segments: http://opengroup.org/onlinepubs/007908799/xsh/shm_open.html (I haven't used POSIX shared memory segments myself; if I understand them correctly, they were designed to solve exactly this problem.)
The shm_open()
function creates a memory object and returns a file descriptor. You could then mmap(2)
that file descriptor, do your work, and pass the file descriptor to the library.
Don't forget to shm_unlink
the object when you're done; POSIX shared memory segments, message queues, and semaphore arrays don't automatically go away when the last process exits.