5 ms·
It's rather a bit more BSD than merely having a "C API that resembles BSD" or a "BSD userland". https://github.com/apple-oss-distributions/xnu/tree/main/bsd ht
by netbsdusers 7mo ago
It's rather a bit more BSD than merely having a "C API that resembles BSD" or a "BSD userland".
https://github.com/apple-oss-distributions/xnu/tree/main/bsd https://github.com/apple-oss-distributions/xnu/tree/main/bsd
You can find there the better part of a whole BSD kernel, including the fundamental datastructures like proc, tty, vnode, and user.
The point of departure is 4.4BSD-Lite2. The majority of the core of the BSD kernel carries the relevant notices for that.
- spijdar 7mo agoYeah, I probably went too far in saying it's just the userland, but I'll insist it's more complicated than saying it was based on 4.4BSD-Lite2. I haven't done a proper deep dive yet, but I can tell that it wasn't strictly based on the Lite2 release. Take a look at XNU 123.5's (OS X 10.0) kern/tty.c: https://github.com/apple/darwin-xnu/blob/xnu-123.5/bsd/kern/tty.c https://github.com/apple/darwin-xnu/blob/xnu-123.5/bsd/kern/... Notice the SCCS version info dates the file 1/21/94. Now look at the Lite2 equivalent: https://github.com/sergev/4.4BSD-Lite2/blob/master/usr/src/sys/kern/tty.c https://github.com/sergev/4.4BSD-Lite2/blob/master/usr/src/s... The SCCS date on this file is 1/9/95, a year later. It appears the XNU copy is from Lite1 instead: https://github.com/dspinellis/unix-history-repo/blob/BSD-4_4_Lite2-Snapshot-Development/.ref-BSD-4_4_Lite1/usr/src/sys/kern/tty.c https://github.com/dspinellis/unix-history-repo/blob/BSD-4_4... You'll also see the source has been reorganized, with e.g. the VFS source being regrouped into bsd/vfs, instead of being left in bsd/kern. This coincidentally mirrors how OSF/1 was organized (no other source relation though, just an interesting observation): https://github.com/Arquivotheca/OSF1/tree/OSC200/src/kernel/vfs https://github.com/Arquivotheca/OSF1/tree/OSC200/src/kernel/... For that matter, compare the the differences between vfs_bio.c in XNU: https://github.com/apple-oss-distributions/xnu/blob/rel/xnu-124/bsd/vfs/vfs_bio.c https://github.com/apple-oss-distributions/xnu/blob/rel/xnu-... With Lite2's, where most function bodies have been replaced with the comment "Body deleted.", presumably due to use of encumbered code: https://github.com/sergev/4.4BSD-Lite2/blob/master/usr/src/sys/kern/vfs_bio.c https://github.com/sergev/4.4BSD-Lite2/blob/master/usr/src/s... This file had to be reimplemented by all of the BSDs. In this case, this version appears distinct from the FreeBSD and NetBSD versions I can find. If you grep around for the `NeXT` ifndef/ifdefs in XNU, too, you'll see some code of which some appears to have been copied/adapted from the NeXT source tree, itself derived from Mach/CMU sources. (and 4.3BSD ;-) I say all this to draw attention to the ways XNU differs from BSD, which is pretty interesting, at least to me.
- torstenvl 7mo agoNo person acting in good faith can argue that having similarities to 4.3BSD-Lite1 or 4.3BSD-Reno (the basis for OSF/1) make something less of a BSD. These are not ways it "differs from BSD." These are ways it is identical to BSD.