<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jun 19, 2024 at 10:56 AM Phil Budne <<a href="mailto:phil@ultimate.com">phil@ultimate.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">JNC wrote:<br>
> Is there a document for 2.11 which explains in detail why they did that? I<br>
> suspect it's actually a little more complicated than just "more address<br>
> space".<br>
...<br>
> ... Switching overlays took a certain amount of<br>
> overhead (since mapping registers had to be re-loaded); if all the networking<br>
> code ran in supervisor mode, the supervisor mode mapping registers could be<br>
> loaded with the right thing and just left.<br>
<br>
That's my understanding... It allows mbufs to be mapped only<br>
in supervisor mode...<br></blockquote><div><br></div><div>Yea. that's a much better explanation than my glossed over 'more address</div><div>space'. It's both to get more text space (overlays weren't infinite, and being a</div><div>separate image allowed more selective communication across the interface</div><div>boundary) and to provide some separation and allow for more data to be</div><div>around easily (the BSD kernel didn't overlay data, which is technically possible</div><div>on PDP-11, but the linker didn't support it).</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<a href="https://minnie.tuhs.org/PUPS/Setup/2.11bsd_setup.html" rel="noreferrer" target="_blank">https://minnie.tuhs.org/PUPS/Setup/2.11bsd_setup.html</a> says:<br>
<br>
       The networking in 2.11BSD, runs in supervisor mode, separate<br>
       from the mainstream kernel. There is room without overlaying to<br>
       hold both a SL/IP and ethernet driver. This is a major win, as<br>
       it allows the networking to maintain its mbufs in normal data<br>
       space, among other things. The networking portion of the kernel<br>
       resides in ``/netnix'', and is loaded after the kernel is<br>
       running. Since the kernel only looks for the file ``/netnix'',<br>
       it will not run if it is unable to load ``/netnix'' , sites<br>
       should build and keep a non-networking kernel in ``/'' at all<br>
       times, as a backup. NOTE: The ``/unix'' and ``/netnix''<br>
       imagines must have been created at the same time, do not<br>
       attempt to use mismatched images. The ability to have boot tell<br>
       the kernel which network image to load is on the wish list (had<br>
       to have something take the place of wishing for disklabels<br>
       ;-)).<br>
<br>
<a href="https://wfjm.github.io/home/ouxr/" rel="noreferrer" target="_blank">https://wfjm.github.io/home/ouxr/</a> shows the code path for the socket(2) syscall<br></blockquote><div><br></div><div>Oh, that's nice.</div><div><br></div><div>Warner </div></div></div>