Quoth Bakul Shah via 9fans <[email protected]>:
> I have this idea that will horrify most of you!
> 
> 1. Create an mmap device driver. You ask it to a new file handle which you 
> use to communicate about memory mapping.
> 2. If you want to mmap some file, you open it and write its file descriptor 
> along with other parameters (file offset, base addr, size, mode, flags) to 
> your mmap file handle.
> 3. The mmap driver sets up necessary page table entries but doesn't actually 
> fetch any data before returning from the write.
> 4. It can asynchronously kick off io requests on your behalf and fixup page 
> table entries as needed.
> 5. Page faults in the mmapped area are serviced by making appropriate 
> read/write calls.
> 6. Flags can be used to indicate read-ahead or write-behind for typical 
> serial access.
> 7. Similarly msync, munmap etc. can be implemented.
> 
> In a sneaky way this avoids the need for adding any mmap specific syscalls! 
> But the underlying work would be mostly similar in either case.
> 
> The main benefits of mmap are reduced initial latency , "pay as you go" cost 
> structure and ease of use. It is certainly more expensive than 
> reading/writing the same amount of data directly from a program.
> 
> No idea how horrible a hack is needed to implement such a thing or even if it 
> is possible at all but I had to share this ;-)

To what end? The problems with mmap have little to do with adding a syscall;
they're about how you do things like communicating I/O errors. Especially
when flushing the cache.

Imagine the following setup -- I've imported 9p.io:

        9fs 9pio

and then I map a file from it:

        mapped = mmap("/n/9pio/plan9/lib/words", OWRITE);

Now, I want to write something into the file:

        *mapped = 1234;

The cached version of the page is dirty, so the OS will
eventually need to flush it back with a 9p Twrite; Let's
assume that before this happens, the network goes down.

How do you communicate the error with userspace?


------------------------------------------
9fans: 9fans
Permalink: 
https://9fans.topicbox.com/groups/9fans/Te8d7c6e48b5c075b-M1ebb42ae226a10acb54e9127
Delivery options: https://9fans.topicbox.com/groups/9fans/subscription

Reply via email to