compare.D
jsq at ut-sally.UUCP
jsq at ut-sally.UUCP
Sun Aug 14 14:13:01 AEST 1983
- 12 -
2.2.8 _T_i_m_i_n_g In 4.1C, all times are returned in a machine
independent format, viz., seconds and microseconds. There
is also improved timezone flexibility. (Systems in
Australia and Europe should no longer experience
difficulties with timezones.)
4.1C uses a simulated 100 Hertz line clock to report
times more accurately than before. The new system call to
replace _f_t_i_m_e and _t_i_m_e is called _g_e_t_t_i_m_e_o_f_d_a_y. Profiling
using _p_r_o_f is also affected.
The _g_e_t_i_t_i_m_e_r and _s_e_t_i_t_i_m_e_r system calls allow the use
of three interval timers, one for real time, one for virtual
time (i.e., the time the process is actually running), and
one for user and system virtual time. The latter allows
interpreters to be profiled, that is, keeping track of when
the interpreted program, rather than the interpreter, is
running. These timers had a bug in 4.1C, but work properly
in 4.2.
2.2.9 _I_P_C The old MPX and FIFO IPC mechanisms have been
largely superseded by the new mechanisms discussed below in
the section on _I_P_C.
2.3 Libraries and Subroutines
There are many changes in this section.
2.3.1 _C_o_m_m_o_n__O_b_j_e_c_t__F_i_l_e__F_o_r_m_a_t__r_o_u_t_i_n_e_s System V adds a
number of routines to provide specialized open, close, seek,
and read operations for files written in the Common Object
File Format (see below).
2.3.2 _U_t_m_p__r_o_u_t_i_n_e_s In accordance with substantial changes
to the format of the _u_t_m_p structure (see below) in System V,
a collection of routines similar to those provided for
manipulating the password file have been added to deal with
the /etc/utmp and /etc/wtmp files.
2.3.3 _F_7_7__l_i_b_r_a_r_y See above under _P_r_o_g_r_a_m_m_i_n_g _s_u_p_p_o_r_t
_e_n_v_i_r_o_n_m_e_n_t_s for f77.
2.3.4 _K_n_u_t_h__a_l_g_o_r_i_t_h_m_s In addition to the binary search
(_b_s_e_a_r_c_h) and linear search (_l_s_e_a_r_c_h) algorithms available
in System III, System V provides routines for searching hash
tables (_h_s_e_a_r_c_h) and binary trees (_t_s_e_a_r_c_h).
A related UNIX-specific utility, _f_t_w, provides the
ability to recursively descend a directory tree, applying a
user-supplied function at each node. (In other words, it is
the subroutine equivalent of the _f_i_n_d command.)
- 13 -
2.3.5 _S_o_f_t_w_a_r_e__s_i_g_n_a_l_s__a_n_d__m_a_t_h_e_r_r System V preserves the
_s_s_i_g_n_a_l (and the associated _g_s_i_g_n_a_l) facility from
System III, allowing the user to raise and dispose of
software signals.
A related topic is the inclusion in System V of
_m_a_t_h_e_r_r, an error-handler invoked by functions in the math
library. The user may supply his own version of _m_a_t_h_e_r_r to
control the disposition of such errors.
4.1C preserves the software signals added in 4.1 to
support the job control features of the Cshell; these are
related to the ``new tty'' line discipline. (4.2 provides a
new signal interface.)
2.3.6 _S_t_d_i_o__b_u_f_f_e_r_i_n_g 4.1C buffers output even if the
output file is a terminal, but flushes all terminal or pipe
output when the process attempts to read from a terminal or
a pipe. 4.1C adapts its buffer size according to the block
size of the file system containing the relevant files, to
produce a marked speed improvement.
The System V stdio buffers have been increased and the
string-oriented output functions have been changed to
provide pseudo-line buffered output to terminals if
buffering has not been specified explicitly. As in 4.1C,
output is flushed on terminal reads.
Both systems keep stderr unbuffered. (The calling
program may, of course, determine the buffering via _s_e_t_b_u_f.)
In 4.2 _p_e_r_r_o_r does a single write (using _w_r_i_t_e_v to
gather the arguments) to alleviate the problem of single-
character network transfers, but _s_t_d_e_r_r is still unbuffered.
2.3.7 _P_r_i_n_t_f System V has dropped the System III
(undocumented) _v_p_r_i_n_t_f and _v_f_p_r_i_n_t_f, retaining the V7
(undocumented) _d_o_p_r_n_t routine, such as is still used in
4.1C. The old (undocumented) %r format has apparently not
been restored, however.
In a similar vein, certain Berkeley programs assume
that _s_p_r_i_n_t_f returns the address of the buffer, an
undocumented feature that has been changed and properly
documented in System V (the number of characters written is
returned).
System V _p_r_i_n_t_f follows the System III standard, which
abolished the old capital letter formats ("%X", "%F") for
long variables in favor of the prepended-`l' ("%lx", "%lf")
format so that capital letters can be used in the
- 14 -
hexadecimal and floating point formats to mean capital
letters in the output stream.
4.1C has basically the V7 _p_r_i_n_t_f and _s_c_a_n_f.
The _p_r_i_n_t_f and _s_c_a_n_f formats are still not fully
compatible in either system.
2.3.8 _S_t_r_i_n_g__r_o_u_t_i_n_e_s As in System III, System V changes
the V7 (and 4BSD) _i_n_d_e_x and _r_i_n_d_e_x functions to _s_t_r_c_h_r and
_s_t_r_r_c_h_r, respectively, as well as adding a few additional
string routines reminiscent of certain SNOBOL pattern
primitives.
System V also provides new routines to perform basic
memory-to-memory operations (copy, compare, etc.) based on
byte count rather than a terminating null character.
4.1C provides the same functions via the _b_c_o_p_y _b_c_m_p,
and _b_z_e_r_o routines, which are now in the C library as well
as the kernel.
2.3.9 _N_e_t_w_o_r_k__l_i_b_r_a_r_y The 4.1C C library contains a
collection of routines used for translating network-related
names and numbers, such as _g_e_t_h_o_s_t_b_y_n_a_m_e, which takes the
name of a host and returns its address. There are also a
few routines for manipulating the byte order of network
addresses, such as _h_t_o_n_l, which converts a network host
address from network to host byte order, and some routines
brought up from the kernel that are used for manipulating
byte arrays, such as _b_z_e_r_o, which clears a byte array.
2.4 Devices
Details of device drivers are beyond the scope of this
paper. We only mention a few corresponding to the most
important devices.
2.4.1 _T_t_y See above under _i_o_c_t_l for a discussion of the
terminal driver changes.
2.4.2 _D_H_-_1_1 System V provides no support for the DH-11
terminal controller. Although DEC no longer supports this
device, many installations either still own DEC DHs or
emulations from other vendors. Also, DEC now supports the
Emulex DH-11 emulation (CS21/H). The replacement is a
combination of DZ-11s controlled by KMC-11Bs. The
System III dh driver is probably portable to System V, but
of course you must acquire a System III distribution.
- 15 -
2.4.3 _K_M_C_-_1_1_B System V no longer supports the KMC-11A
microprocessor.
The KMC-11B may be used in conjunction with DZ-11s for
offloading terminal I/O processing; it now performs batched
character transfers, an improvement over the character-at-
a-time behavior (a bug) exhibited by System III.
The KMC-11B, as well as the KMS11 (KMC11 plus DMS11-
DA), is also used as the ``Programmable Communications
Device'' (PCD) on which link-level protocols are implemented
under VPM.
2.4.4 _V_P_M The Virtual Protocol Machine (VPM) is a package
which supports a high-level definition language for level 2
protocols to be handled by an interpreter running in a PCD.
In this manner, IBM RJE, a synchronous pseudo-terminal
interface, and several network protocols, including X.25 but
not TCP/IP, may be supported.
2.4.5 _S_y_n_c_h_r_o_n_o_u_s__t_e_r_m_i_n_a_l System V documents support for
a synchronous terminal interface utilizing the _V_i_r_t_u_a_l
_P_r_o_t_o_c_o_l _M_a_c_h_i_n_e, but it was not included in the
distribution.
2.4.6 _B_L_I_T At the time of this writing, the driver for the
Teletype 5620 bit-mapped terminal was available only as a
System V-compatible binary object.
2.4.7 _P_t_y_s 4.1C has a pseudo-terminal driver to support
network connections. This is actually a driver for two
devices, a slave (/dev/ttyp?) and a master (/dev/ptyp?) end,
where the slave end looks exactly like an ordinary terminal
and the master end (used by network daemons such as _r_l_o_g_i_n_d
and _t_e_l_n_e_t_d) has a few extra _i_o_c_t_ls to aid in simulating a
terminal.
This device is quite important in the common situation
in which there are few directly-connected terminals and most
users log in over a local network.
Pseudo-terminals are also important for such programs
as _E_m_a_c_s and _s_c_r_i_p_t.
2.4.8 _G_e_n_e_r_a_l_i_z_e_d__d_i_s_k__d_r_i_v_e_r System V provides a
generalized driver _g_d for several moving-head disks (RM05,
RM80, RP04/5/6/7).
The System V driver may be derived from the Berkeley _h_p
driver, which supports all MASSBUS drives.
- 16 -
The drive type is determined in both systems by
examining the device type register and then using different
parameter tables per drive.
2.4.9 _G_e_n_e_r_a_l_i_z_e_d__t_a_p_e__d_r_i_v_e_r A generalized tape driver _g_t
similar to the generalized disk driver is provided by
System V. This driver offers a general interface to the
TE16 and TU78 style tape drives.
The Berkeley _h_t drivers support all MASSBUS tape drives
except the TU78, which is supported by the _m_t driver.
Again, device information is determined by examining
the device hardware type register.
2.5 File Formats
A few file formats are worth mention. In particular,
System V has reorganized several standard file formats, with
important consequences.
2.5.1 _A_._o_u_t The details of the binary object file format
for commands are sufficiently different between the two
systems that it is not possible to run an object file from
one system on the other.
The Common Object File Format (_C_O_F_F) has been adopted
in System V as the standard output format for programs such
as _a_s and _l_d in an effort to provide uniformity across
several processors and compatibility with certain other
operating systems. The traditional UNIX _a._o_u_t header is
included as a part of the _C_O_F_F header information. Other
_C_O_F_F information includes such things as the architecture of
the host on which the file was created, line numbers if a
symbolic debugging option was in effect at compile time, and
so forth.
The _c_o_n_v_e_r_t utility may be used to convert pre-System V
objects to _C_O_F_F.
2.5.2 _A_r The System V format for file archives has changed
somewhat from previous releases of UNIX. In particular, an
archive now includes a symbol directory created from the
symbol tables of all archive members which are in _C_O_F_F to
allow _l_d to perform random access on the archive. In
addition, numeric data in headers (archive, symbol
directory, member) is stored as 4-byte quantities and should
be portably accessed using the _s_p_u_t_l and _s_g_e_t_l library calls
from libld.a.
More information about the Comp.sources.unix
mailing list