> On Jan 7, 2026, at 8:41 AM, [email protected] wrote:
>
> 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?
This was just a brainwave but...
You have a (control) connection with the mmap device to
set up mmap so might as well use it to convey errors!
This device would be strictly local to where a program
runs.
I'd even consider allowing a separate process to mmap,
by making an address space a first class object. That'd
move more stuff out of the kernel and allow for more
interesting/esoteric uses.
------------------------------------------
9fans: 9fans
Permalink:
https://9fans.topicbox.com/groups/9fans/Te8d7c6e48b5c075b-M6fb0ef830c8e525cb591fb48
Delivery options: https://9fans.topicbox.com/groups/9fans/subscription