[TUHS] The Curious Case of "x"-suffixed Kernel Headers in 50 Changes
Jonathan Gray via TUHS
tuhs at tuhs.org
Sun Jul 19 20:00:07 AEST 2026
On Sat, Jul 18, 2026 at 08:54:30AM +0000, segaloco via TUHS wrote:
> I stumbled across something tonight that has me a bit curious. So both
> Program Generic 3 and CB-UNIX 2.3 include a series of "x"-suffixed
> headers in the kernel which contain the declarations for a number of
> kernel data structures. For instance, filex.h in PG3 is:
>
> > /*
> > * Allocation for the file table.
> > */
> > struct file file[NFILE];
>
> Well, the "50 Changes" tape issued between V6 and V7 also includes
> similar header changes, for instance:
>
> > ------ filex.h
> > 0a1,4
> > > /*
> > > * Allocation for the file table.
> > > */
> > > struct file file[NFILE];
>
> Several other bits from "50 Changes" appear in both PG3 and PWB1,
> suggesting both were based on at least some portion of this updated V6,
> for instance both include pause(2), alarm(2), and access(2). However,
> neither PWB1 nor V7 include these "x"-suffixed headers. Additionally,
> they are not in System III and beyond, suggesting they did not work
> their way into UNIX/TS either. This leaves the Program Generic and
> CB-UNIX lineages as the only ones that demonstrate this (although I have
> not gone looking to see if these are in No. 2 SCCS UNIX yet, I don't
> have kernel sources unfortunately but I may have a file schedule
> somewhere.)
>
> Anywho, this suggests some interesting context for the "50 Changes"
> tape. My speculative brain wants to say this may indicate that the
> changes swept up some USG-ish UNIX stuff, but this is just speculation.
> Does anyone know the absolute providence of the 50 Changes tape? Is it
> possible that the kernel version therein is a little more USG-ish than
> research? That said, when you get down to sysent, the message passing
> and error reporting features of USG UNIX are simply stubbed out as
> "reserved for USG", where these are implemented in PG3.
Ken gave a diff to Greg Chesson on the way to Berkeley.
This was later distributed by Mike O'Brien.
Salus QCU, pp 132,138-139
Unix News, November 1976, p 1
https://archive.org/details/unix_news_november-1976
Ken was at Berkeley from September 1975 to June 1976.
(determined from Ken's correspondence with Tony Marsland
University of Alberta Archives, Tony Marsland fonds
UAA-2004-058-061-003
UAA-2004-058-061-007)
diff is 'unix_changes', notes by Mike and Ken in 'changenotes'
relevant notes for *x.h headers:
from Mike:
1) Space allocation for buf, file, inode, proc, text, and u split out
into separate files (see notes).
from Ken:
1) Separate definition and declarations of tables: a more portable
C will require that there be only one space definition in
a group of programs. This has to do with loader restrictions
that are on some notable big blue machines.
>
> By the way, the reason I'm looking into this 50 Changes tape is I want
> to make a cleaner diff between V6 *at the time USG would've sampled it*
> and PG3. Many of the 50 Changes are also in PG3, so presumably there
> is a common ancestor, but the whole filex.h et. al. matter has
> certainly muddied the situation. If I didn't know any better, I'd
> want to believe the 50 Changes is the patch from V6 to USG PG1, but
> that might be too far of a reach.
*x.h headers aren't in PG2 going by
https://www.tuhs.org/Archive/Documentation/TechReports/USG_Library/1046_UNIX_Support_Classifications_for_PG_1C300_Issue_2.pdf
More information about the TUHS
mailing list