As far as interfaces go, mmap() is pretty tragic - the underlying translation structures can express more interesting things, some of which are even worth doing.
There have even been OSes that let userland apps play with their address spaces in far more interesting ways - KeyKOS and EROS come to mind. And they were even fast, or something. In a system like Plan 9, where your file servers are on the other side of a 9P link, this mmap thing seems dubious. If what you want is the convenience that you get from having all the bytes in memory, reading them all in wouldn't be too hard. mmap()s magic really arises when you have a page-cache-like-thing. --vs