Q:

system call to map memory to a file descriptor (inverse mmap)?

I want to be able to map memory to a file descriptor so I can use some existing functions that need a file descriptor.  Here's essentially what I'm looking for:
void do_operation1(int fd);

char data[DATA_MAX] = { /* embedded binary data */ };
int fd = addr_to_fd(data, DATA_MAX);

do_operation1(fd);
/* ... operate on fd ... */

What system call, or calls, can I use to accomplish this?

A:

Some implementations have fmemopen(). (Then of course you have to call fileno()).
If yours doesn't, you can build it yourself with fork() and pipe().

A:

You should Check out shm_open().

