*BSD News Article 34198


Return to BSD News archive

Xref: sserve comp.os.386bsd.questions:12282 comp.os.386bsd.misc:3159
Newsgroups: comp.os.386bsd.questions,comp.os.386bsd.misc
Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!msuinfo!agate!trib.apple.com!amd!netcomsv!calcite!vjs
From: vjs@calcite.rhyolite.com (Vernon Schryver)
Subject: Re: Whats wrong with Linux networking ???
Message-ID: <CuDvpC.Irz@calcite.rhyolite.com>
Organization: Rhyolite Software
Date: Thu, 11 Aug 1994 18:36:48 GMT
References: <RSANDERS.94Aug9003813@hrothgar.mindspring.com> <CuA6w1.5tF@calcite.rhyolite.com> <32cs6g$l9t@klaava.Helsinki.FI>
Lines: 81

In article <32cs6g$l9t@klaava.Helsinki.FI> torvalds@cc.Helsinki.FI (Linus Torvalds) writes:
>In article <CuA6w1.5tF@calcite.rhyolite.com>,
>Vernon Schryver <vjs@calcite.rhyolite.com> wrote:
>>
>>There was an excuse for inception of Linux.  Big-bad-nasty-mean-USL/AT&T
>>is obviously a sufficent reason for most of the kernel.  Who says
>>otherwise?
>
>Actually, USL/AT&T had little to do with the inception of linux at all,
>other than being the original home of unix..  The discussion seems to
>think that linux is "new" on the unix market, but linux has actually
>been out there longer than the free 386bsd variants, and the major
>reason I started on linux in the first place was that there was nothing
>else available to me. 

Except for USL/AT&T, wouldn't a complete 4.*BSD have existed many years
sooner?  Would you have started linux from scratch instead of as 
a rewrite of existing code except for the USL/AT&T license problem?
If you could have bought a CDROM of 4.*BSD-Lite, would you have even
bothered to start?


>                                                         ...     Another
>argument was that the BSD mbufs don't make any sense these days where
>memory is cheap (and caches makes pointer jumping look bad), and using
>them would just be shooting oneself in the foot in the long run. 

It's hard to say much good about mbufs.  STREAMS buffers are some better
than mbufs and could have been much better.  That STREAMS implementations
are slow is not due to the buffer mechanisms.  Its a fact of commercial
UNIX life that regardless of the wonders of your native scheme, you must
offer an interface based on either mbufs or STREAMS buffers to third
party hardware/device driver vendors, and that unless you offer both,
you'll get a lot of complaints.


>>That fitting BSD code into a Linux might be hard is a crazy excuse.  It
>>makes just much sense as refusing to have an open() system call.  Of
>>course a non-BSD kernel has different internal mechanisms, but one
>>expects a good clone (i.e. something strictly and unabigiously better
>>than the original) to have compatibility glue.
>
>Don't be silly.  It's a clone on the *user* level, not internally. 
>Internally, it looks a *lot* different: mostly just because it has a
>different history, partly because I think some "real Unix" ideas are
>braindead ("spl-level" - ugh.  Inherently stupid, and probably only done
>because the original machines had priority-coded interrupts.  Similarly
>for disklabels.).  And then we stole a lot of ideas from others too :-)

What you say bad about "real Unix" is arguably true, but beside my point.
My point is that the user-kernel interface is only one of the interfaces
to a system.  Much as I detest DLPI and DKI as typical consortium
committee work, the idea of standard interfaces to kernel facilities
for portable, low to medium performance devices, file systems, and other
gadgets is very important.  It could be argued that the most important
value of MACH was in its avowed effort to separate the interfaces of
the parts of the kernel, so that you can replace or add your own or 3rd
party code.  Regardless of how different Linux is internally from "real
Unix", to survive as other than a teaching aid like Minux (which is an
entirely respectable goal) it will have to converge to
NetBSD/FreeBSD/4.4BSD-Lite and/or maybe System V on kernel interfaces
so that people can fit kernel code into Linux as easily as the others.
That Linux is very different implies no more than that one would need
thicker glue to convert to and from mbufs.  For example, converting
between STREAMS buffers and mbufs is old hat for people in my vicinity.

Think how DOS had to accomodate TSRs, interrupt chaining, and the rest
of the kludges.  Think how much better DOS would have been if interfaces
to internal services had been chosen instead of kludged or forced by
3rd party software and hardware vendors

Why stick with read() and write()?  Those are terrible formulations of
the ancient system calls, except for the simplest, lowest performance
applications.  Kludges like page-flipping (that can be good for 100%
performance improvements) are useful only because read() and write()
are so simplistic.  However, even if you have something better than
read() and write(), you must also have read() and write() compatibility.
The same applies to internal kernel interfaces.


Vernon Schryver    vjs@rhyolite.com