UNIX Programmer's Supplementary Documents (PSD)

.4 Berkeley Software Distribution

June, 1993


      This volume contains documents which supplement the manual pages in The UNIXProgrammer's Reference Manual for the FreeBSD system as distributed by the FreeBSD Project. Documents ``(encumbered)'' are not distributed for legal reasons.

Documents of Historical Interest

Dennis Ritchie and Ken Thompson's original paper about UNIX, reprinted from Communications of the ACM. (encumbered)
Ken Thompson's description of the implementation of the Version 7 kernel and file system. (encumbered)
Dennis Ritchie's overview of the I/O System of Version 7; still helpful for those writing device drivers. (encumbered)
Describes the programming interface to the UNIX version 7 operating system and the standard I/O library. Should be supplemented by Kernighan and Pike, ``The UNIX Programming Environment'', Prentice-Hall, 1984 and especially by the Programmer Reference Manual section 2 (system calls) and 3 (library routines). (encumbered)
A concise and terse description of the system call interface provided in Berkeley Unix, as revised for 4.4BSD. This will never be a best seller.

Languages in common use

Official statement of the syntax of C. Should be supplemented by ``The C Programming Language,'' B.W. Kernighan and D.M. Ritchie, Prentice-Hall, 1978, that contains a tutorial introduction and many examples. (encumbered)
An implementation of this language popular for learning to program. (Not provided in FreeBSD.)
A revised version of the document which originally appeared in Volume 2b of the Bell Labs documentation; this version reflects the work done at Berkeley. (encumbered)
A description of the revised input/output library for Fortran 77, reflecting work carried out at Berkeley. (Not provided in FreeBSD.)

Programming Tools

How to debug programs using the source level gdb debugger (or how to debug programs without having to know much about machine language). (A TeXinfo version is provided separately.)
How to debug programs using the assembly-language level adb debugger. (encumbered)
Indispensable tool for making sure large programs are properly compiled with minimal effort.
RCS is a user-contributed tool for working together with other people without stepping on each other's toes. An alternative to sccs for controlling software changes.
A useful introductory article for those users with installations licensed for SCCS. (encumbered)
Converts a BNF specification of a language and semantic actions written in C into a compiler for that language. (encumbered)
Creates a recognizer for a set of regular expressions: each regular expression can be followed by arbitrary C code to be executed upon finding the regular expression. (encumbered)
M4 is a macro processor useful in its own right and as a front-end for C, Ratfor, and Cobol.
A program to show the call graph and execution time of a program. Indispensable aid for improving the running time of almost everything.

Programming Libraries

Describes the curses package, an aid for writing screen-oriented, terminal-independent programs.

General Reference

How to write programs that use the Interprocess Communication Facilities of 4.4BSD.
The reference document (with some examples) for the Interprocess Communication Facilities of 4.4BSD.
Manual for the ONC RPC stub-generating program, provided by Sun Microsystems.
A tutorial introduction to programming the ONC RPC system, provided by Sun Microsystems.
Technical details about the design of the XDR component of ONC RPC, provided by Sun Microsystems.
The Internet RFC specifying ONC XDR, provided by Sun Microsystems.
The Internet RFC specifying ONC RPC, RFC 1050, as provided by Sun Microsystems.
The Internet RFC specifying NFS, as provided by Sun Microsystems. Note that the NFS-compatible filesystem itself, while compliant with this specification, was not provided by Sun.
CVS (Concurrent Versions System) is a front end to the RCS revision control system which extends the notion of revision control from a collection of files in a single directory to a hierarchical collection of directories each containing revision controlled files.