'\"!  pic | tbl | mmdoc
.if n .pH tfmguide.tfmguide @(#)tfmguide	40.1
.nr p 1
.fp 1 R
.fp 2 I
.fp 3 B
.fp 4 H
.fp 5 CW
.fp 6 HX
.S 11 13
.ie \np \{ .de XK
.SP
.. \}
.el \{\
.de XK
.P
.. \}
.ie \np \{\
.de XS
.DS "\\$1" "\\$2" "\\$3"
..
.de XF
.DE
.. \}
.el \{ .de XS
.nf
.di XZ
..
.de XF
.fi
.di
.rm XZ
.. \}
.ie \nr \{\
.de ZS
.P
.DS I F \\n(Si
.ft 2
..
.de ZF
.ft 1
.DE
.. \}
.el \{\
.de ZS
.nf
.di XZ
..
.de ZF
.fi
.di
.rm XZ
.. \}
.if n .ds Tm \uTM\d
.if t .ds Tm \v'-0.5m'\s-4TM\s+4\v'0.5m'
.if n .ds Rg \uR\d
.if t .ds Rg \u\s-8\(rg\s+8\d
.ds No \f2None\fP
.ds Co \f4\s-2AT&T\s+2\fP
.ds Cc \f4\s-2C\s+2\fP
.ds AX \s-2AIX\s+2
.ds UX \f4\s-2UNIX\s+2\fP
.ds OL \f4\s-2OPEN LOOK\s+2\fP
.ds IX \s-2POSIX\s+2
.ds XE \s-2XENIX\s+2
.ds XN \s-2X11\s+2/\s-2N\s+2e\s-2WS\s+2
.ds XO \s-2X/OPEN\s+2
.ds DP \s-2SUBLICENSED PRODUCT\s+2
.ds SS \s-2STANDARD SYSTEM\s+2
.ds SV \*(UX System V
.ds ID \f2System V Interface Definition\f1
.ds PG \f2\*(XO Portability Guide\f1
.ds WB \s-2WORKBENCH\s+2
.ds 4U Release 4 of \*(SV
.ds 3U Release 3 of \*(SV
.ds 2U Release 2 of \*(SV
.ds 1U Release 1 of \*(SV
.ds U4 \*(SV Release 4
.ds U3 \*(SV Release 3
.ds U2 \*(SV Release 2
.ds U1 \*(SV Release 1
.ds V4 \*(SV Release 4.0
.ds V3 \*(SV Release 3.0
.ds V2 \*(SV Release 2.0
.ds V1 \*(SV Release 1.0
.ds R4 \s-2SVR4\s+2
.ds R3 \s-2SVR3\s+2
.ds R2 \s-2SVR2\s+2
.ds R1 \s-2SVR1\s+2
.ds S1 \fH\s-2UNIX\s+2\fP System V
.ds S2 \f(HI\s-2UNIX\s+2\fP System V
.ds S3 \f(HB\s-2UNIX\s+2\fP System V
.de CW
.nf
.if '\\$1'F' .fi
.if t .ps -1
.if t .vs -2
.ie n .ft 3
.el \{\
.ft 5
.cs 5 24
.ss 12 \}
..
.de CN
.if t .ps +1
.if t .vs +2
.ft 1
.fi
.ss 12
..
.ds Cw \&\f5
.ds Cn \fP
.ds Cf \&\f4\s-2
.ds Ct \&\s-2\f4
.ds Cx \fP\s+2
.ds HP 13 12 12 11 11 11 11
.ds HF  3  3  3  3  2  2  2
.HM I 1 A i a
.nr Ht 1
.nr Hc 1
.nr Hu 3
.nr Hb 5
.nr Hs 4
.nr Hi 0
.nr Cl 3
.nr Pt 0
.nr Pv 0
.nr Ds 0
.nr Hy 0
.de HX
.if \\$1=1 \{\
.PH ""
.OH ""
.EH ""
.SK
.tl ''''
.if e .SK
.ft HB
.S +9 +9
.tl ''''
.sp 10v
.tl '''\\$3'
.S -9 -9
.ft 1
.SK
.tl ''''
.OP
.PH "\\$3" \}
.if \\$1=2 \{\
.OH ""
.EH ""
.SK
.OH "\\$3"
.EH "\\$3" \}
..
.nr Ej 0
.de TP
'sp 1
.tl \fI\s+1\\*(}t\s0\fP
'sp 1
.if o 'tl \fI\s+1\\*(}o\s0\fP
.if e 'tl \fI\s+1\\*(}e\s0\fP
'sp 2
..
.SA 0
.TL
\f(HB\s-2UNIX\s+2\fP Software Technology
.AF "\fH\s-2UNIX\s+2\fP Software Operation"
.AU
.ds dU \f(HI\s-2UNIX\s+2\fP System V Release 4
.ie \np .ds dT Technology/File Mapping Guide
.el .ds dT Software Technology Overview
.MT "\*(dU \*(dT"
.tl ''''
.FS ""
\*(UX is a registered trademark of \*(Co in the United States and other countries.
.FE
.PH ""
.OH ""
.EH ""
.OP
.ie \np .PF "''\f(BIAT&T USO Proprietary\fP''"
.el .PF ""
.OF "'\f2\*(DT\f1''\f(HI\s-2UNIX\s+2\f2 Software Technology\f1'"
.EF "'\f(HI\s-2UNIX\s+2\f2 Software Technology\f1''\f2\*(DT\f1'"
.tl ''''
.nr % 1
.af % i
.DS I N
.ft 2
.S +6 +6
.tl ''''
.sp 11v
.tl '''\*(dU'
.tl '''\*(dT'
.S -6 -6
.ft 1
.DE
.SK
.tl ''''
.OP
.DS I N
.ft HB
.S +9 +9
.tl '''\f(HX\s-2UNIX\s+2\fP \f(BISystem V Release 4.0\fP'
.sp 10v
.tl '''\f(BI\*(dT\fP'
.S -9 -9
.ft 1
.DE
.SK
.if \np \{ .tl ''''
.P
.tl '''' \}
.P
Copyright \(co 1989 \*(Co.  All Rights Reserved.
.if \np \{ .P
\s-2THIS DOCUMENT CONTAINS UNPUBLISHED PROPRIETARY INFORMATION OF\s+2 \*(Co.
.P
The copyright notice above does not evidence any actual or intended publication of this information. \}
.P
No part of this document may be reproduced or transmitted in any form or by any means \(em graphic, electronic, electrical, mechanical or chemical, including photocopying, recording in any medium, taping, by any computer or information storage and retrieval systems, etc., without prior permission in writing from \*(Co.
.P
Restricted rights legend: use, duplication or disclosure by the U.S. Government is subject to restrictions set forth in the subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Software clause of \s-2DFARS\s+2 52.227-7013 and in similar clauses in the \s-2FAR\s+2 and \s-2NASA\s+2 \s-2FAR\s+2 Supplement.
.P
.tl '\f3\s-2IMPORTANT NOTE TO USERS\s+2\f1'''
.P
.DS L F
.S -1 -1
While every effort has been made to ensure the accuracy of all information in this document, \*(Co assumes no liability to any party for any loss or damage caused by errors or omissions or by statements of any kind in the \f2\*(dU \*(dT\f1, its updates, supplements or special editions, whether such errors are omissions or statements resulting from negligence, accident or any other cause.
.P
\*(Co further assumes no liability arising out of the application or use of any product or system described herein; nor any liability for incidental or consequential damages arising from the use of this document.
.P
\*(Co disclaims all warranties regarding the information contained herein, whether expressed, implied or statutory, including implied warranties of merchantability or fitness for a particular purpose.
.P
\*(Co makes no representation that the interconnection of products in the manner described herein will not infringe on existing or future patent rights, nor do the descriptions contained herein imply the granting of license to make, use or sell equipment constructed in accordance with this description.
.P
\*(Co reserves the right to make changes without further notice to any products herein to improve reliability, function or design.
.S +1 +1
.DE
.P
.tl ''''
.P
.DS L F
.S -1 -1
The text for this document was processed with \*(Cwtroff\*(Cn software on an \f4Amdahl\f1 5870 computer running \*(SV.
The \*(Cwtroff\*(Cn output was networked with \*(Cwuucp\*(Cn software to an \*(Co \f43B2\fP computer running \*(SV to drive a \f4PostScript\f1 output device.
.S +1 +1
.DE
.P
.tl ''''
.P
.DS L N
.S -2 -2
\*(UX is a registered trademark of \*(Co in the United States and other countries.
\f4Amdahl\f1 is a trademark of Amdahl Corporation.
\s-2XENIX\s+2 is a registered trademark of Microsoft Corporation.
\f4PostScript\f1 is a registered trademark of Adobe Systems.
.S +2 +2
.DE
.OP
.S +9 +9
.tl '''\f(HBTable of\f1'
.tl '''\f(HBContents\f1'
.S -9 -9
.P
.tl ''''
.P
.DS L F
.TS
center;
r1f4p13 l1f4p13
r1f1p11 l1f1p11.
.P
Part I:	General Introduction
.P
	Benefits of \*(SV
	Structure of \*(SV
	Evolution of \*(SV
	Technology Licensing
.P
.T&
r1f4p13 l1f4p13
r1f1p11 l1f1p11.
.P
Part II:	Kernel Software Technology
.P
	Virtual File Subsystem
	\s-2STREAMS\s+2 \s-2I/O\s+2 Subsystem
	Memory Management Subsystem
	Process Management Subsystem
	Kernel Management Subsystem
	Real-Time System Facilities
.P
.T&
r1f4p13 l1f4p13
r1f1p11 l1f1p11.
.P
Part III:	Development Software Technology
.P
	\*(Cc Language Libraries
	Software Generation System
	Source Code Control System
.P
.T&
r1f4p13 l1f4p13
r1f1p11 l1f1p11.
.P
Part IV:	System Software Technology
.P
	\s-2BSD\s+2 System Compatibility
	\s-2XENIX\s+2 System Compatibility
	Command Line Interpreters
	Core System Facilities
	Printing & Plotting Facilities
	Operations, Administration & Maintenance
.P
.T&
r1f4p13 l1f4p13
r1f1p11 l1f1p11.
.P
Part V:	Network Software Technology
.P
	Basic Networking Facilities
	Network Administration Facilities
	\s-2STREAMS\s+2 Networking Facilities
	Internet Networking Facilities
.P
.T&
r1f4p13 l1f4p13
r1f1p11 l1f1p11.
.P
Part VI:	User Interface Software Technology
.P
	Character User Interfaces
	Graphical User Interfaces
.TE
.DE
.SK
.tl ''''
.OP
.ft HB
.S +9 +9
.tl ''''
.tl '''Preface'
.S -9 -9
.ft 1
.P
.tl ''''
\*(U4 (\*(R4) is a major enhancement of the functionality and quality of the \*(UX system.
Industry-standard implementations of virtual memory, protocol-independent networking and file system types, the introduction of binary standards and user interface standards, and the provision of an evolution path are important aspects of this release.
In addition, \*(R4 provides a true merge/unification of the major variants of the \*(UX system, thus maintaining continuity and broadening the market for applications programs.
.P
\*(U4 was designed to achieve these major goals:
.LB 3 0 1 0 \(bu 1 1
.LI
\fIUnify Major Variants\fR
.br
To unify the major \*(UX system derivatives into a single common source-code release.
.LI
\fIConform to Standards\fR
.br
To promote industry standards and ensure that \*(SV provides an open systems platform for users and suppliers of \*(UX system-based products.
.LI
\fIIntegrate Computing and Communication\fR
.br
To support networking of computer systems and the development of integrated computer and communication systems and products.
.LI
\fIStrengthen Existing Markets\fR
.br
To strengthen the value of \*(SV for existing customers in both commercial and government markets, emphasizing improved Operations, Administration and Maintenance (\s-2OA&M\s+2).
.LI
\fIIncrease value in New Markets\fR
.br
To broaden the appeal of \*(SV with additional features and capabilities especially in the areas of real-time and internationalization.
.LE 1
\*(R4 development followed seven guidelines:
.LB 12 0 1 0 0 1 1
.LI "\fIQuality\fR"
Special care was taken to use quality and productivity metrics and procedures including \*(Cc coding standards, requirements reviews, design reviews, code inspections, system test procedures as well as entry and exit criteria for each step of the development process.
.LI "\fIModularity\fR"
Internal interfaces are better defined to provide system builders with ``hooks'' to support everything from high-performance mainframe systems to small, inexpensive control systems.
.LI "\fIEfficiency\fR"
Size has been monitored to be sure that new features consume the smallest possible amount of memory space.
.LI "\fIPerformance\fR"
Each new capability has had specified performance goals, and an extensive test effort has been established to verify compliance.
.LI "\fIStandards\fR"
\*(SV will adhere to all relevant industry standards especially those specified in the \*(PG, Issue 3 (\s-2XPG3\s+2).
.LI "\fIPortability\fR"
\*(SV utilities have been enhanced to remove interdependencies and to isolate and remove (where possible) machine dependencies.
.LI "\fICompatibility\fR"
\*(R4 supports four levels of compatibility because compatibility with past versions of \*(SV is a primary \*(UX International requirement.
.DL
.LI
Source Compatibility
.br
Source code that conforms to the interfaces documented in the \*(ID, \s-2ANSI\s+2 X3J11 \*(Cc, \*(IX 1003.1 and \*(PG, Issue 3 will compile and run, with equivalent results, when moved between two \*(R4-based systems regardless of the make or model of processor.
This level of compatibility is defined at the point before preprocessors are used.
.LI
Binary Compatibility
.br
Compiled programs for a particular processor architecture will continue to run properly when a new release of system software is installed.
Binaries that comply with the Application Binary Interface (\s-2ABI\s+2) for a particular processor architecture from one release will run on later releases.
This is known as upward compatibility.
.LI
Object Compatibility
.br
Object files (including libraries) compiled under one release of the \*(Cc compilation system will be valid input to the next release of the \*(Cc compilation system.
.LI
Data Compatibility
.br
Existing data storage formats (including the file-system, \*(Cwcpio\*(Cn\^, \*(Cwvolcopy\*(Cn\^, \*(Cwar\*(Cn and \*(Cwtar\*(Cn\^) do not change from their current form in \*(SV.
.LE 1
.LE 1
.P
The \f2\*(dU Technology/File Mapping Guide\f1 gives \*(R4 licensees a detailed overview of the product plus the means for determining per-copy fees for \*(DPs based on \*(R4.
.pn 1
.af % 1
.OP
.OF "'\f2\*(DT\f1''\f(HI\s-2UNIX\s+2\f2 Software Technology\f1 \(em \f(HI%\f1'"
.EF "'\f(HI%\f1 \(em \f(HI\s-2UNIX\s+2\f2 Software Technology\f1''\f2\*(DT\f1'"
.H 1 "Introduction"
The development of the \*(UX operating system emphasizes the addition of needed facilities, improvement of the structure and preservation of the existing software base.
\*(R4 represents not only evolution of \*(UX system functionality, but also maturation of the software base.
The \*(UX operating system has grown to be a complete software base that meets a variety of industry standards and is supported by a professional software development organization.
.HU "Completeness"
\*(R4 includes the operating system, networking, program development tools, window systems, user interface toolkits and documentation.
It provides a variety of extension and customization mechanisms for companies to add value in a consistent and compatible way.
By integrating features from predecessor versions of the \*(UX system, \*(R4 provides a migration path for existing \*(UX system customers.
.P
\*(R4 also provides for the convergence of the \s-2BSD\s+2, \*(XE and \*(SV communities.
The resulting system is not a multi-modal mix of capabilities, with some capabilities available in some modes and not in others, but a true unification.
This gives all programs complete access to system facilities, and provides the best foundation for future system evolution.
.HU "Standardization"
\*(Co has the strongest commitment to standards of any company in the industry, and \*(R4 is the realization of that commitment.
\*(R4 conforms to the existing standards, including: \*(IX P1003.1, \s-2ANSI\s+2 X3J11 \*(Cc, \s-2XPG3\s+2 and \s-2SVID3\s+2.
.P
\*(R4 provides a \*(Cc compiler that meets \s-2ANSI\s+2 Standard X3J11.
With command flags, it will compile old \*(Cc programs, and assist programmers in migrating to \s-2ANSI\s+2 \*(Cc.
.P
In addition, \*(R4 continues the commitment to well-documented, compatible, system interfaces, and responds to the different user communities by providing smooth migration paths from the most widely used versions of the \*(UX system.
.P
With \*(R4 come the mechanisms to support Application Binary Interfaces (\s-2ABI\s+2).
\s-2ABI\s+2s provide the opportunity to create software that spans multiple vendors and multiple versions of the \*(UX system.
A binary standard that includes all the necessary details of the operating environment opens the door to shrink-wrapped software and the ability to have a complete and stable platform for applications.
.HU "Quality"
\*(R4 is a mature software product built by an established software organization with years of experience dealing with standards, multiple vendors, portability and stable evolution of software.
The integration of functionality has required careful engineering, and has resulted in a significantly improved \*(UX system.
.P
\*(R4 is the result of multiple development iterations on several important components, and incorporation of existing implementations of others.
The Virtual File Subsystem resulted from improvements to both Sun's \f2v-node\f1 interface and \*(Co's File System Switch.
The networking code has been improved in the process of integrating it into the \s-2STREAMS\s+2 \s-2I/O\s+2 framework.
.P
The portability and hardware neutrality of the \*(UX system has evolved over years of use by many vendors, from \s-2PC\s+2 to supercomputer.
Because of the variety of platforms being used to develop \*(R4, it is impossible for any one vendor to bias the system in its favor.
.HU "Architecture"
The structure of \*(SV makes it easy for it to work on different kinds of computers.
At the core of \*(SV lies a ``kernel'' of basic software that works directly with the underlying computer hardware; all other software, including the user-interface and \*(Cc library routines as well as most commands and utilities, works with the kernel software instead of the computer hardware.
Kernel software comprises some 5 to 10 percent of the operating system, and is the only part permanently resident in memory.
To move \*(SV to a new and different type of computer, only parts of the kernel need to be significantly modified.
Hence, most of \*(SV \(en and the application-software written for it \(en remains completely independent of the computer hardware.
.P
This figure depicts the layers of software that make up the \*(SV operating system\*(Rf:
.RS
M.Bach, \f2The Design of the \f(HI\s-2UNIX\s+2\fP Operating System\f1, Prentice-Hall: Englewood Cliffs NJ, 1986.
.RF
.SP 2
.DS L N
.PS 6.0i
scale = 100
arrowhead = 7
unit = 8
B00: box invis wid 600 ht 300
C01: circle rad ( 8*unit) with .c at B00.c "" "\*(SV" "Kernel" "\*(CfOS\*(Cx"
C20: circle invis rad (12*unit) with .c at C01.c
move to C20.n "" "\*(Cc Language" "Libraries"
move to C20.s "\*(CfLIB\*(Cx"
C21: circle rad (16*unit) with .c at C01.c
     circle rad (16*unit)+2 with .c at C01.c
C30: circle invis rad (24*unit) with .c at C01.c
move to C30.n "" "\*(SV Shells" "Commands and Utilities"
move to C30.s "\*(CfCMD\*(Cx"
C31: circle rad (32*unit) with .c at C01.c
.PE
.SP 2
.FG "\f2\s+1\*(S2 Structure and Component Types\s-1\f1"
.DE
.SK
To a software developer \*(SV comprises three layers: kernel software \*(Cf(OS)\*(Cx; \*(Cc language library routines \*(Cf(LIB)\*(Cx; and \*(SV Shells, commands and utility programs \*(Cf(CMD)\*(Cx.
.DS L F
.LB 6 0 2 0 0 1 1
.LI "\*(CfOS\*(Cx"
The \*(SV kernel schedules processes, manages memory and handles low-level input/output services.
.XX Kernel software regulates the flow of data through the system, and allocates the resources processes need to operate.
Kernel software supports the \*(SV file-system and system-calls programs use to access system resources and control process execution.
.LI "\*(CfLIB\*(Cx"
The \*(Cc Language Libraries build on the \*(SV kernel to create a \*(UX software \f2execution\f1 environment on the underlying computer hardware.
.LI "\*(CfCMD\*(Cx"
The \*(SV Shells, commands and utilities adapt the basic facilities provided by the \*(Cc libraries and \*(SV kernel to create a software \f2development\f1 environment.
.LE 1
.DE
A system integrator or an end-user sees the system from a different perspective, specifically as a set of capabilities that cut across the \*(UX system structure, using \*(CfOS\*(Cx, \*(CfLIB\*(Cx and \*(CfCMD\*(Cx software components.
This document's organization reflects both viewpoints as shown below:
.DS CB
.LB 3 0 0 1 0 1 1
.LI
Operating System Kernel
.LB 12 0 1 0 \(en 0 1
.LI "\*(Cf(BA_OS)\*(Cx" 1
Base System Services
.LI "\*(Cf(KE_OS)\*(Cx" 1
Kernel Extension
.LE
.LI
System Services & Libraries
.LB 12 0 1 0 \(en 0 1
.LI "\*(Cf(BA_OS)\*(Cx" 1
Base System Services
.LI "\*(Cf(BA_LIB)\*(Cx" 1
Base System Libraries
.LI "\*(CfTI\*(Cx" 1
Terminal Interface Extension
.LI "\*(CfRT\*(Cx" 1
Real-Time Services Extension
.LE
.LI
Shells, Commands & Utilities
.LB 12 0 1 0 \(en 0 1
.LI "\*(Cf(BU_CMD)\*(Cx" 1
Basic Utilities Extension
.LI "\*(Cf(AU_CMD)\*(Cx" 1
Advanced Utilities Extension
.LI "" 1
Character Terminal Facilities
.LE
.LI
System Administration Facilities
.LB 12 0 1 0 \(en 0 1
.LI "\*(Cf(AS_LIB)\*(Cx" 1
Administered Systems Libraries
.LI "\*(Cf(AS_CMD)\*(Cx" 1
Administered Systems Utilities
.LE
.LI
Programming Tools & Languages
.LB 12 0 1 0 \(en 0 1
.LI "\*(Cf(SD_LIB)\*(Cx" 1
Software Development Library
.LI "\*(Cf(SD_CMD)\*(Cx" 1
Software Development Utilities
.LE
.LI
Networking Software Technology
.LB 12 0 1 0 \(en 0 1
.LI "\*(Cf(BA_LIB)\*(Cx" 1
Basic Networking Libraries
.LI "\*(Cf(AU_CMD)\*(Cx" 1
Basic Networking Utilities
.LI "\*(CfRS\*(Cx" 1
Remote Services Extension
.LI "" 1
Internet Networking Services
.LI "" 1
\s-2TCP/IP\s+2 Protocol Modules
.LE
.LI
Windowing Software Technology
.LB 12 0 1 0 \(en 0 1
.LI "\*(CfWS\*(Cx" 1
Graphic Services Extension
.LI "" 1
XView/TypeScaler/Fonts
.LE
.LE 1
.DE
.H 2 "Technology Licensing"
The \f2\*(dU Technology/File Mapping Guide\f1 lists the component source-files for \*(SV system calls, library routines, commands and utilities as well as other facilities of \*(U4, following the conventions established by the \*(ID for identifying components of \*(SV.
The \*(ID identifies each \*(SV component as a member of the Base System or one of a series of Extensions to that Base System using the following two letter abbreviations:
.DS CB
.LB 3 0 0 0 \(em 0 1
.LI "\*(CfBA\*(Cx" 1
Base System 
.LI "\*(CfKE\*(Cx" 1
Kernel Extension 
.LI "\*(CfRT\*(Cx" 1
Real-Time Services Extension
.LI "\*(CfSD\*(Cx" 1
Software Development Extension
.LI "\*(CfBU\*(Cx" 1
Basic Utilities Extension
.LI "\*(CfAU\*(Cx" 1
Advanced Utilities Extension
.LI "\*(CfAS\*(Cx" 1
Administered Systems Extension
.LI "\*(CfRS\*(Cx" 1
Remote Services Extension
.LI "\*(CfTI\*(Cx" 1
Terminal Interface Extension
.LI "\*(CfWS\*(Cx" 1
Windowing Systems Extension
.LE 1
.DE
The Base System includes the components that all computer systems supporting \*(SV must provide, but a system may provide some or none of the Extensions.
Partitioning \*(SV into a Base System with Extensions allows programs to be developed using a basic set of components that are consistent across all computer systems supporting  \*(SV.
.P
The Extensions to the Base System provide a growth path which leads to a full \*(SV configuration in logical functional increments.
The division into a Base System and Extensions allows system builders to create machines tailored for different purposes and markets in an orderly fashion.
Thus, a small single-user business/professional computer system designed for novices might include only the Base System and the Basic Utilities.
A system for advanced business/professional users might add the Advanced Utilities to such a basic configuration.
A system designed for high-level language software development would include the Base System and Kernel Extension and the Basic Utilities, Advanced Utilities and Software Development Extensions.
Although the Extensions are not meant to specify the physical packaging of \*(SV for a particular product, it is expected that the Extensions can support a fairly consistent packaging scheme.
This recognizes that different computing environments require different sets of functions and that the entire feature/functionality of \*(SV may be unnecessary in certain environments, especially on small hardware configurations.
.P
The \*(R4 schedules* offer customers two sublicensing options:
.FS *
terms in capital letters are defined in the \*(R4 schedule or in the associated license agreements.
.FE
.BL 1
.LI
The \f2Technology Licensing Option\f1 is available to license
portions of \*(U4 for inclusion in
a \*(DP that does \f2not\f1 meet the requirements of a
\*(SS as defined in the \*(R4 Schedule.
.LI
The \f2\*(XO Standardization Option\f1 is available to license
portions of \*(U4 for inclusion in
a \*(DP that does meet the requirements of a
\*(SS as defined in the \*(R4 Schedule.
.LE 1
.SK
Which \*(R4 source code files a \*(DP uses determine the \*(R4 royalty owed to \*(Co.
The Technology/File Mapping Guide lists the \*(R4 source code files in \f2Technology Groups\f1.
Each Technology Group represents a well-defined set of the files that fall within a single Technology License Category.
Tables in this section identify the Technology Groups and show the Technology Licensing Category for each Technology Group.
Detailed listings of files in the Guide follow the same organization as the tables, so that the tables can be used to find the source-code files in a given Technology Group.
Each table has three columns:
.BL
.LI
The first column gives the name of the Technology Group.
.LI
The second column gives the \s-2SVID3\s+2 (1989) classification for the Technology Group.
.br
A dash ``\(em'' indicates that no \s-2SVID\s+2 classification exists for the Group.
.LI
The third column gives the designation in the \*(R4 schedule for the Technology Group.
.LE 1
The legend in Table 1 shows the categories from the \*(R4 schedule and how they are represented in the third column of the Technology Group tables that follow.
.P
.TB "Technology License Legend"
.P
.TS
center, tab(>), box;
c3f2p11w(3.0i)  c3f2p11w(1.0i).
\*(R4 Technology License>Technology Table
Component Category>Designation
=
.T&
l3f1p11w(3.0i) c3f6p11w(1.0i).
Base System
\(em Virtual File Subsystem>VFS
\(em \s-2STREAMS\s+2 \s-2I/O\s+2 Subsystem>Streams
\(em Any Base System Facilities>Base
_
Kernel Extension
\(em Virtual Memory Subsystem>VM
\(em Any Kernel Facilities>KE
_
Real-Time Services Extension>RTE
_
Software Development Extension>SDE
_
Basic Utilities Extension
\(em Encryption Facilities>BU*
\(em Any Basic Utilities>BU
_
Advanced Utilities Extension
\(em \s-2UUCP\s+2>uucp
\(em Any Advanced Utilities>AU
_
Administered Systems Extension>AS
_
Remote Services Extension>RSE
_
Internet Networking Services>Internet
_
\s-2TCP\s+2/\s-2IP\s+2 Protocol Modules>TCP
_
Terminal Interface Extension>TI
_
Graphics Services Extension>GSE
_
XView/TypeScaler/Fonts>XVT
.TE
.FS "*"
The Encryption Facilities may only be licensed in the U.S.,
and are not included in the International product.
.FE
.SK
.TB "Operating System Kernel"
.P
.TS
center box tab(>);
l1f2p11  c1f1p11  c3f2p11w(3.0i)  c3f2p11w(1.0i)  c3f2p11w(1.0i).
>>\f(HI\s-2UNIX\s+2\fP Software>\s-2SVID3\s+2>Technology
>>Technology Group>Extension>License
=
.T&
l1f2p11  s        s               s               s
l1f4p9   c1f1p11  l3f1p11w(3.0i)  c3f4p9w(1.0i)   c3f6p11w(1.0i).
Virtual File Subsystem
FF>\(en>File-descriptor level>BA_OS>VFS
FV>\(en>File-system independent v-node level>BA_OS>VFS
FB>\(en>File buffer management>BA_OS>VFS
FS>\(en>File System Type (\s-2FST\s+2ype) dependent level>\(em>\(em
>\(en>\*(Cwufs\fP \(en Unified \s-2FST\s+2ype>BA_OS>VFS
>\(en>\*(Cws5\fP \(en System V \s-2FST\s+2ype>BA_OS>VFS
>\(en>\*(Cwfifofs\fP \(en \s-2FIFO\s+2 \s-2FST\s+2ype>BA_OS>VFS
>\(en>\*(Cwnamefs\fP \(en Named \s-2STREAMS\s+2 \s-2FST\s+2ype>\(em>VFS
>\(en>\*(Cwspecfs\fP \(en Special \s-2FST\s+2ype>BA_OS>VFS
>\(en>\*(Cwproc\fP \(en Process \s-2FST\s+2ype>\(em>VFS
>\(en>\*(Cwbfs\fP \(en Boot \s-2FST\s+2ype>BA_OS>VFS
>\(en>\*(Cwfd\fP \(en File Descriptor \s-2FST\s+2ype>BA_OS>VFS
_
.T&
l1f2p11  s        s               s               s
l1f4p9   c1f1p11  l3f1p11w(3.0i)  c3f4p9w(1.0i)   c3f6p11w(1.0i).
\s-2STREAMS\s+2 \s-2I/O\s+2 Subsystem
SS>\(en>\s-2STREAMS\s+2 \s-2I/O\s+2 services>BA_OS>Streams
ST>\(en>\s-2STREAMS\s+2 \s-2TTY\s+2 subsystem>BA_OS>Streams
SM>\(en>\s-2STREAMS\s+2 \s-2I/O\s+2 modules>BA_OS>Streams
SD>\(en>\s-2STREAMS\s+2 device drivers>BA_OS>Streams
SR>\(en>\s-2STREAMS\s+2 support routines>BA_OS>Streams
_
.T&
l1f2p11  s        s               s               s
l1f4p9   c1f1p11  l3f1p11w(3.0i)  c3f4p9w(1.0i)   c3f6p11w(1.0i).
Memory Management Subsystem
MM>\(en>Memory management>KE_OS>VM
MS>\(en>Memory segmentation>KE_OS>VM
MP>\(en>Memory paging>KE_OS>VM
MX>\(en>Memory transfer>KE_OS>VM
_
.T&
l1f2p11  s        s               s               s
l1f4p9   c1f1p11  l3f1p11w(3.0i)  c3f4p9w(1.0i)   c3f6p11w(1.0i).
Process Management Subsystem
PP>\(en>Process creation & deletion>BA_OS>Base
PS>\(en>Process scheduling>BA_OS>Base
PM>\(en>Process memory management>BA_OS>Base
PI>\(en>Inter-process communication>KE_OS>KE
_
.T&
l1f2p11  s        s               s               s
l1f4p9   c1f1p11  l3f1p11w(3.0i)  c3f4p9w(1.0i)   c3f6p11w(1.0i).
Kernel Management Subsystem
KK>\(en>System initialization/termination>BA_OS>Base
KU>\(en>Kernel/User interface>BA_OS>Base
KT>\(en>Time services>BA_OS>Base
KS>\(en>Kernel support routines>BA_OS>Base
.TE
.SK
.TB "System Services & Libraries"
.P
.TS
center box tab(>);
c3f2p11w(3.0i)  c3f2p11w(1.0i) c3f2p11w(1.0i).
\f(HI\s-2UNIX\s+2\fP Software>\s-2SVID3\s+2>Technology
Technology Group>Extension>License
=
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
File System Services
\(em File Directory Functions>BA_OS>Base
\(em File Creation, Removal & Status Functions>BA_OS>Base
\(em File System Functions>BA_OS>Base
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
\s-2I/O\s+2 System Services
\(em File Descriptor Functions>BA_OS>Base
\(em Data Transfer Functions>BA_OS>Base
\(em \s-2I/O\s+2 Control Functions>BA_OS>Base
\(em \s-2TTY\s+2 Control Functions>BA_OS>Base
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Memory System Services
\(em Virtual Memory Functions>KE_OS>KE
\(em Memory Control Functions>RT_OS>RTE
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Process System Services
\(em Process Execution & Control Functions>BA_OS>Base
\(em Process Status & Resource Functions>BA_OS>Base
\(em Inter-process Communication>KE_OS>KE
\(em Kernel System Functions>\(em>Base
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
\f(HI\s-2C\s+2\fP Language Libraries
\(em Run-Time Loader Library>\(em>Base
\(em Standard \s-2I/O\s+2 Library>BA_LIB>Base
\(em Character and String Handling Library>BA_LIB>Base
\(em Searching and Sorting Library>BA_LIB>Base
\(em Wide Character Library>BA_LIB>Base
\(em Floating-point Library>\(em>Base
\(em Mathematical Library>BA_LIB>Base
\(em Miscellaneous Library>BA_LIB>Base
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
\s-2XENIX\s+2\*(Rg System Compatibility Package
\(em \s-2XENIX\s+2 System Services>\(em>Base
\(em \s-2XENIX\s+2 System \s-2FST\s+2ype \(en \*(Cwxnamfs\*(Cn>\(em>Base
\(em \s-2XENIX\s+2 System Libraries>\(em>Base
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
\s-2BSD\s+2 System Compatibility Package
\(em \s-2BSD\s+2 Header Files>\(em>Base
\(em \s-2BSD\s+2 System Libraries>\(em>Base
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Real-Time System Facilities
\(em User-controlled Process Scheduling>RT_OS>RTE
\(em High-Resolution Timing Services>RT_OS>RTE
\(em Real-Time System Commands>RT_CMD>RTE
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Extended Terminal Interface
\(em Character Terminal Interface (\^\*(Cwcurses\*(Cn\^) Library>TI_LIB>TI
\(em Forms, Menus & Panels Library>TI_LIB>TI
\(em Terminal Information (\^\*(Cwterminfo\*(Cn\^) Utilities>TI_CMD>TI
.TE
.SK
.TB "Shells, Commands & Utilities"
.P
.TS
center box tab(>);
c3f2p11w(3.0i)  c3f2p11w(1.0i) c3f2p11w(1.0i).
\f(HI\s-2UNIX\s+2\fP Software>\s-2SVID3\s+2>Technology
Technology Group>Extension>License
=
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
\s-2BSD\s+2 System Utilities
\(em \s-2BSD\s+2 System Commands>\(em>Base
\(em \s-2BSD\s+2 System Text Processing Utilities>\(em>Base
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Encryption Facilities
\(em Encryption Library>BA_LIB>Base
\(em Encryption Commands>\(em>BU
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Localization Facilities
\(em Localization Library>BA_LIB>Base
\(em Localization and Message String Handling Utilities>\(em>BU
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Command Line Interpreters
\(em Bourne Shell (\*(Cwsh\*(Cn)>BU_CMD>BU
\(em \*(Cc Shell (\*(Cwcsh\*(Cn)>\(em>AU
\(em Korn Shell (\*(Cwksh\*(Cn)>\(em>AU
\(em Shell Layers (\*(Cwshl\*(Cn)>AU_CMD>AU
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Core System Utilities
\(em Basic Commands & Utilities>BU_CMD>BU
\(em Advanced Commands & Utilities>AU_CMD>AU
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Directory & File Management Utilities
\(em Basic File Management Utilities>BU_CMD>BU
\(em Advanced File Management Utilities>AU_CMD>AU
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Text Processing Utilities
\(em Spell Checking Utilities>BU_CMD>BU
\(em Basic Text Editing Utilities>BU_CMD>BU
\(em Advanced Text Editing Utilities>AU_CMD>AU
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Printing Facilities
\(em Line Printer Spooling Utilities>AU_CMD>AU
\(em Line Printer PostScript\*(Rg Filters>\(em>AU
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Plotting Facilities
\(em Plotting Library>\(em>AU
\(em Plotting Commands>\(em>AU
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Character User Interfaces
\(em Form & Menu Language Interpreter (\s-2FMLI\s+2)>\(em>TI
\(em Framed Access Command Environment (\s-2FACE\s+2)>\(em>TI
.TE
.SK
.TB "System Administration Facilities"
.P
.TS
center box tab(>);
c3f2p11w(3.0i)  c3f2p11w(1.0i) c3f2p11w(1.0i).
\f(HI\s-2UNIX\s+2\fP Software>\s-2SVID1989\s+2>Technology
Technology Group>Extension>License
=
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Operations, Administration & Maintenance (\s-2OA&M\s+2) Facilities
\(em \s-2OA&M\s+2 Interface Library>AS_LIB>AS
\(em \s-2OA&M\s+2 Interface Utilities>AS_CMD>AS
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Virtual File System Administration Facilities
\(em File System Independent Utilities>AS_CMD>AS
\(em Unified File System (\*(Cwufs\*(Cn) Utilities>AS_CMD>AS
\(em System V (\*(Cws5\*(Cn) File System Utilities>AS_CMD>AS
\(em File Descriptor (\*(Cwfd\*(Cn) File System Utilities>AS_CMD>AS
\(em Boot File System (\*(Cwbfs\*(Cn) Utilities>AS_CMD>AS
\(em Process (\*(Cwproc\*(Cn) File System Utilities>AS_CMD>AS
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Backup and Restore Facilities
\(em Backup and Restore Library>\(em>AS
\(em Backup and Restore Utilities>AS_CMD>AS
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Configuration Management Facilities
\(em System Configuration Utilities>AS_CMD>AS
\(em Software Packaging Utilities>\(em>AS
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Software Installation Facilities
\(em Software Installation Libraries>\(em>AS
\(em Software Installation Utilities>AS_CMD>AS
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Device Management Facilities
\(em Device Management Libraries>AS_LIB>AS
\(em Device Management Utilities>AS_CMD>AS
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
User Management Facilities
\(em User Management Libraries>\(em>AS
\(em User Management Utilities>AS_CMD>AS
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Service Access Facilities (\s-2SAF\s+2)
\(em Core \s-2SAF\s+2 Utilities>\(em>AS
\(em Port Management Utilities>\(em>AS
\(em \s-2TTY\s+2 Monitor (\^\(Cwttymon\*Cn\^) Utilities>\(em>AS
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
System Administration Facilities
\(em Run-Time Administration Utilities>AS_CMD>AS
\(em System Performance Analysis Utilities>AS_CMD>AS
\(em Diagnostic Utilities>\(em>AS
\(em \s-2STREAMS\s+2 Administrative Utilities>\(em>AS
\(em \s-2XENIX\s+2 System Utilities>\(em>AS
\(em 3B2 Specific Utilities>\(em>AS
.TE
.SK
.TB "Programming Tools & Languages"
.P
.TS
center box tab(>);
c3f2p11w(3.0i)  c3f2p11w(1.0i) c3f2p11w(1.0i).
\f(HI\s-2UNIX\s+2\fP Software>\s-2SVID1989\s+2>Technology
Technology Group>Extension>License
=
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Software Development Facilities
\(em Software Development Library>BA_LIB>Base
\(em Software Development Utilities>SD_CMD>SDE
\(em Source Code Control System (\s-2SCCS\s+2)>SD_CMD>SDE
_
.T&
l1f2p11        s             s
l3f1p11w(3.0i) c3f4p9w(1.0i) c3f6p11w(1.0i).
\*(Cc Programming Language Utilities (\s-2CPLU\s+2)
\(em Software Generation System>SD_CMD>SDE
\(em Symbolic Debugger (\*(Cwsdb\*(Cn)>SD_CMD>SDE
\(em \*(Cc++ Translator>\(em>\*(No*
.TE
.FS "*"
This Technology Group contains the \*(Co \*(Cc++ Translator, which is only provided to assist in compiling and porting of \*(Cwsdb\*(Cn\^; it may only be used as defined in the Schedule for \*(U4.
.FE
.SK
.TB "Networking Software Technology"
.P
.TS
center box tab(>);
c3f2p11w(3.0i)  c3f2p11w(1.0i) c3f2p11w(1.0i).
\f(HI\s-2UNIX\s+2\fP Software>\s-2SVID3\s+2>Technology
Technology Group>Extension>License
=
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Basic Networking Facilities
\(em Transport Layer Interface (\s-2TLI\s+2)>BA_LIB>Base
\(em Basic Networking Utilities>AU_CMD>uucp
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Electronic Mail Facilities
\(em Basic Mail Utilities>BU_CMD>BU
\(em Advanced Mail Utilities>AU_CMD>AU
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Network Services Facilities
\(em Network Listener Library>RS_LIB>RSE
\(em Network Services Utilities>RS_CMD>RSE
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Network Administration Facilities
\(em Network Selection Library>\(em>RSE
\(em Distributed File System (\s-2DFS\s+2) Administration>RS_CMD>RSE
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
\s-2YP\s+2 Name Server Facilities
\(em \s-2YP\s+2 Name Server Library>\(em>RSE
\(em \s-2YP\s+2 Name Server Utilities>\(em>RSE
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Resource Sharing Facilities
\(em Remote File Sharing (\s-2RFS\s+2)>RS_CMD/RS_LIB>RSE
\(em Network File System (\s-2NFS\s+2)>RS_CMD/RS_LIB>RSE
\(em Remote Procedure Call (\s-2RPC\s+2)>RS_CMD/RS_LIB>RSE
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
\s-2STREAMS\s+2 Networking Facilities
\(em \s-2TCP/IP\s+2 Protocol Modules>\(em>TCP
\(em \s-2ETHERNET\s+2\*(Tm Media Drivers>\(em>RSE
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Internet Networking Facilities
\(em Sockets Compatibility Library>\(em>Internet
\(em Internet Networking Utilities>\(em>Internet
.TE
.SK
.TB "Windowing Software Technology"
.P
.TS
center box tab(>);
c3f2p11w(3.0i)  c3f2p11w(1.0i) c3f2p11w(1.0i).
\f(HI\s-2UNIX\s+2\fP Software>\s-2SVID1989\s+2>Technology
Technology Group>Extension>License
=
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
X Window System
\(em X Window Server>WS>GSE
\(em X Window Clients>WS>GSE
\(em X Window Library (\*(CwXlib\*(Cn)>WS>GSE
\(em X Window Intrinsics (\*(CwXt\*(Cn)>WS>GSE
\(em X Window Utilities (\*(CwXmu\*(Cn & \*(CwXau\*(Cn)>WS>GSE
\(em X Window Athena Widgets (\*(CwXaw\*(Cn)>WS>GSE
\(em X Window Fonts>WS>GSE
\(em X Window Bitmaps & Pixmaps>WS>GSE
\(em X Window Miscellaneous>WS>GSE
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
\*(XN Facilities
\(em \*(XN Server>\(em>GSE
\(em \*(XN Client>\(em>GSE
\(em \*(XN Libraries>\(em>GSE
\(em \*(XN Development Environment (\s-2NDE\s+2)>\(em>GSE
\(em \*(XN Utilities>\(em>GSE
\(em \*(XN Graphics & Images>\(em>GSE
\(em \*(XN \*(OL Window Manager>\(em>GSE
\(em \*(XN Miscellaneous>\(em>GSE
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
\*(XN Fonts
\(em \*(XN Cursor Fonts>\(em>GSE
\(em \*(XN Icon Fonts>\(em>GSE
\(em \*(XN OLCursor Fonts>\(em>GSE
\(em \*(XN \*(OL Fonts>\(em>GSE
\(em \*(XN Text Fonts>\(em>GSE
\(em \*(XN X Fonts>\(em>GSE
\(em \*(XN Folio Fonts>\(em>XVT
\(em \*(XN TypeScaler>\(em>XVT
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
\f(HI\s-2OPEN LOOK\s+2\fP Graphical User Interface (\s-2GUI\s+2)
\(em \*(OL Toolkit (\*(CwXol\*(Cn)>\(em>GSE
\(em \*(OL User Packaging (\*(Cwolpkg\*(Cn)>\(em>GSE
\(em \*(OL Administration Manager (\*(Cwolam\*(Cn)>\(em>GSE
\(em \*(OL File Manager (\*(Cwolfm\*(Cn)>\(em>GSE
\(em \*(OL Window Manager (\*(Cwolwm\*(Cn)>\(em>GSE
\(em \*(OL Workspace Manager (\*(Cwolwsm\*(Cn)>\(em>GSE
\(em \*(OL Utilities>\(em>GSE
_
.T&
l1f2p11         s              s
l3f1p11w(3.0i)  c3f4p9w(1.0i)  c3f6p11w(1.0i).
Other \s-2GUI\s+2 Technologies
\(em XView>\(em>XVT
\(em \s-2DMD\s+2 Utilities>\(em>TI
.TE
.SK
.HU "Documentation Distribution"
When the Technology Licensing Option is chosen, the documentation that may be distributed with
a \*(DP is limited to the Manual Pages that describe the components for which a per copy fee has
been paid.
In addition, the \fIProduct Overview and Master Index\fP may be distributed with any \*(DP,
regardless of the category.
.P
Such distribution must conform with the requirements listed in the \*(R4 schedule.
.HU "\*(IX Standardization Option"
The \*(IX Standardization Option applies to \*(DPs that provide \fIonly\fP the interfaces defined in the \s-2IEEE\s+2 \*(IX 1003.1 standard\*(Rf.
.RS
\s-2IEEE\s+2 1003 Working Group, \f2\s-2IEEE\s+2 Standard Portable Operating System Interface for Computer Environments\fP, Institute of Electrical and Electronics Engineers, Inc., New York, New York, 1988.
.RF
.P
A \*(DP that provides facilities beyond those defined in \s-2IEEE\s+2 Std 1003.1 is subject to the binary per copy fees for those additional features as detailed in the \*(R4 schedule and the \f2\*(dU Technology/File Mapping Guide\f1.
.P
A \*(DP may include technology from the Kernel Software Technology section of the \f2\*(dU Technology/File Mapping Guide\f1 only as required to implement the \*(IX 1003.1 interfaces.
However, in including such technology, a \*(DP may not provide program or user interfaces beyond \s-2IEEE\s+2 Std 1003.1.
.P
.XS L F
The files listed below contain the \*(IX 1003.1 interface components for \*(R4.
The entries in the lists below contain the file name, \*(IX function or interface name, and a short description, respectively.
.XF
.H 4 "\*(IX Header Files"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f3 l3f1.
cmd/cpio/cpio.h	cpio	Extended \*(Cwcpio\*(Cn Format
head/dirent.h	dirent.h	structure of directory entries
head/errno.h	errno	error code variable \(en \*(Cwerrno\*(Cn
head/fcntl.h	fcntl.h	file control definitions
head/grp.h	grp.h	group file structure
head/limits.h	limits.h	numerical limits
head/pwd.h	pwd.h	password file structure
head/signal.h	signal.h	signal definitions
head/termios.h	termios.h	general terminal interface
head/unistd.h	unistd.h	symbolic constants & structures
head/utime.h	utime.h	access & modification time structure
head/wait.h	wait.h	declarations for waiting
uts/3b2/sys/dirent.h	sys/dirent.h	structure of directory entries
uts/3b2/sys/errno.h	sys/errno.h	error code definitions
uts/3b2/sys/fcntl.h	sys/fcntl.h	file control definitions
uts/3b2/sys/signal.h	sys/signal.h	signal definitions
uts/3b2/sys/stat.h	sys/stat.h	file-status definitions
uts/3b2/sys/termios.h	sys/termios.h	general terminal interface
uts/3b2/sys/times.h	sys/times.h	process time definitions
uts/3b2/sys/types.h	sys/types.h	primitive system data types
uts/3b2/sys/utime.h	sys/utime.h	access & modification time structure
uts/3b2/sys/utsname.h	sys/utsname.h	system name structure
uts/3b2/sys/wait.h	sys/wait.h	wait for process termination
.TE
.S
.XF
.SK
.H 4 "\*(IX Interface Files"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f3 l3f1.
lib/libc/m32/gen/sigsetjmp.c	siglongjmp()	non-local jump
lib/libc/m32/gen/sigsetjmp.c	sigsetjmp()	save calling environment
lib/libc/m32/sys/access.s	access()	check accessibility of a file
lib/libc/m32/sys/alarm.s	alarm()	set a process alarm clock
lib/libc/m32/sys/chdir.s	chdir()	change working directory
lib/libc/m32/sys/chmod.s	chmod()	change mode of a file
lib/libc/m32/sys/chown.s	chown()	change owner & group of a file
lib/libc/m32/sys/close.s	close()	close a file-descriptor
lib/libc/m32/sys/creat.s	creat()	create new file or rewrite existing one
lib/libc/m32/sys/dup.s	dup()	duplicate an open file-descriptor
lib/libc/m32/sys/execl.s	execl()	execute a file
lib/libc/m32/sys/execle.s	execle()	execute a file
lib/libc/m32/sys/execv.s	execv()	execute a file
lib/libc/m32/sys/execve.s	execve()	execute a file
lib/libc/m32/sys/exit.s	_exit()	terminate a process
lib/libc/m32/sys/fcntl.s	fcntl()	file control operations
lib/libc/m32/sys/fork.s	fork()	create a new process
lib/libc/m32/sys/fpathconf.s	fpathconf()	get configurable path-name variables
lib/libc/m32/sys/fstat.s	fstat()	get status of a file
lib/libc/m32/sys/getegid.s	getegid()	get effective-group-id
lib/libc/m32/sys/geteuid.s	geteuid()	get effective-user-id
lib/libc/m32/sys/getgid.s	getgid()	get real-group-id
lib/libc/m32/sys/getgroups.s	getgroups()	get supplementary group-ids
lib/libc/m32/sys/getpgrp.s	getpgrp()	get process-group-id
lib/libc/m32/sys/getpid.s	getpid()	get process-id
lib/libc/m32/sys/getppid.s	getppid()	get parent-process-id
lib/libc/m32/sys/getuid.s	getuid()	get real-user-id
lib/libc/m32/sys/kill.s	kill()	signal a process or a process-group
lib/libc/m32/sys/link.s	link()	link to a file
lib/libc/m32/sys/lseek.s	lseek()	move read/write pointer
lib/libc/m32/sys/mkdir.s	mkdir()	make a directory
lib/libc/m32/sys/open.s	open()	open file for reading and/or writing
lib/libc/m32/sys/pathconf.s	pathconf()	get configurable path-name variables
lib/libc/m32/sys/pause.s	pause()	suspend process until a signal
lib/libc/m32/sys/pipe.s	pipe()	create an inter-process channel
lib/libc/m32/sys/read.s	read()	read from a file
lib/libc/m32/sys/rmdir.s	rmdir()	remove a directory
lib/libc/m32/sys/setgid.s	setgid()	set group-id
lib/libc/m32/sys/setsid.s	setpgid()	set process-group-id for job control
lib/libc/m32/sys/setsid.s	setsid()	create session & set process-group-id
lib/libc/m32/sys/setuid.s	setuid()	set user-id
lib/libc/m32/sys/sigaction.c	sigaction()	examine and change signal action
lib/libc/m32/sys/sigpending.s	sigpending()	examine pending signals
lib/libc/m32/sys/sigprocmsk.s	sigprocmask()	examine and change blocked signals
lib/libc/m32/sys/sigsuspend.s	sigsuspend()	wait for a signal
lib/libc/m32/sys/stat.s	stat()	get status of a file
lib/libc/m32/sys/time.s	time()	get system time
lib/libc/m32/sys/times.s	times()	get elapsed process times
lib/libc/m32/sys/umask.s	umask()	set/get file-mode-creation-mask
lib/libc/m32/sys/uname.s	uname()	get name of current operating system
lib/libc/m32/sys/unlink.s	unlink()	remove directory entry
lib/libc/m32/sys/utime.s	utime()	set file access & modification times
lib/libc/m32/sys/wait.s	wait()	wait for process to change state
lib/libc/m32/sys/write.s	write()	write onto a file
lib/libc/port/gen/cfgetispeed.c	cfgetispeed()	get input baud rate
lib/libc/port/gen/cfgetospeed.c	cfgetospeed()	get output baud rate
lib/libc/port/gen/cfsetispeed.c	cfsetispeed()	set input baud rate
lib/libc/port/gen/cfsetospeed.c	cfsetospeed()	set output baud rate
lib/libc/port/gen/closedir.c	closedir()	close a directory
lib/libc/port/gen/ctime.c	asctime()	convert time to character string
lib/libc/port/gen/dup2.c	dup2()	duplicate an open file-descriptor
lib/libc/port/gen/execvp.c	execlp()	execute a file
lib/libc/port/gen/execvp.c	execvp()	execute a file
lib/libc/port/gen/getcwd.c	getcwd()	get working directory path-name
lib/libc/port/gen/getenv.c	getenv()	access environment variable
lib/libc/port/gen/getgrnam.c	getgrgid()	access group file entry
lib/libc/port/gen/getgrnam.c	getgrnam()	access group file entry
lib/libc/port/gen/getlogin.c	getlogin()	get login-name of user
lib/libc/port/gen/getpwnam.c	getpwnam()	access password file entry
lib/libc/port/gen/getpwnam.c	getpwuid()	access password file entry
lib/libc/port/gen/isatty.c	isatty()	determine terminal device name
lib/libc/port/gen/mkfifo.c	mkfifo()	make a \s-2FIFO\s+2 special-file
lib/libc/port/gen/opendir.c	opendir()	open a directory
lib/libc/port/gen/readdir.c	readdir()	read a directory
lib/libc/port/gen/rename.c	rename()	rename a file
lib/libc/port/gen/rewinddir.c	rewinddir()	rewind a directory
lib/libc/port/gen/setlocale.c	setlocale()	get/set localization information
lib/libc/port/gen/sigsetops.c	sigaddset()	manipulate signal sets
lib/libc/port/gen/sigsetops.c	sigdelset()	manipulate signal sets
lib/libc/port/gen/sigsetops.c	sigemptyset()	manipulate signal sets
lib/libc/port/gen/sigsetops.c	sigfillset()	manipulate signal sets
lib/libc/port/gen/sigsetops.c	sigismember()	manipulate signal sets
lib/libc/port/gen/sleep.c	sleep()	delay execution for interval
lib/libc/port/gen/sysconf.c	sysconf()	get configurable system variables
lib/libc/port/gen/tcdrain.c	tcdrain()	drain input/output queues
lib/libc/port/gen/tcflow.c	tcflow()	enable/disable flow control
lib/libc/port/gen/tcflush.c	tcflush()	flush input/output queues
lib/libc/port/gen/tcgetattr.c	tcgetattr()	get terminal attributes
lib/libc/port/gen/tcgetpgrp.c	tcgetpgrp()	get foreground process-group-id
lib/libc/port/gen/tcsendbreak.c	tcsendbreak()	generate break condition
lib/libc/port/gen/tcsetattr.c	tcsetattr()	set terminal attributes
lib/libc/port/gen/tcsetpgrp.c	tcsetpgrp()	set foreground process-group-id
lib/libc/port/gen/time_comm.c	tzset()	set time zone
lib/libc/port/gen/ttyname.c	ttyname()	determine terminal device name
lib/libc/port/gen/waitpid.c	waitpid()	wait for process to change state
lib/libc/port/stdio/ctermid.c	ctermid()	generate path-name for terminal
lib/libc/port/stdio/cuserid.c	cuserid()	get character login-name of user
lib/libc/port/stdio/fdopen.c	fdopen()	open \f2stdio\fP-file for file-descriptor
lib/libc/port/stdio/fileno.c	fileno()	return file-descriptor for \f2stdio\fP-file
lib/libc/port/sys/execl.c	execl()	execute a file
lib/libc/port/sys/execle.c	execle()	execute a file
lib/libc/port/sys/execv.c	execv()	execute a file
.TE
.S
.XF
.SK
.HU "Source Code Exchange"
Previous to \*(R4, \*(SV source code licensees could only exchange code with other licensees if both had equivalent \*(SV licenses for the same implementation.
With \*(R4, source code licensees who have licensed the same release of \*(SV, but for different implementations, may now exchange \*(R4 code that is not implementation-specific.
.P
Source code in the following directories (and sub-directories thereof) in the 3B2 implementation of \*(U4 may \f2not\f1 be exchanged under the source code exchange provisions of the \*(R4 schedule unless the two licensees have equivalent licenses both in release and in implementation:
.P
.XS I N
.CW
cmd/cmd-3b2
cmd/nsadmin3b2
cmd/osadmin3b2
cmd/sccs/lib/mpwlib/u3b2
cmd/sdb
cmd/sgs
lib/libc/m32
lib/libdl/m32
lib/libm/m32
lib/libm/m32_sfm
lib/libm/m32mau
lib/rtld/m32
ucblib/libc/m32/sys
uts/3b2
.CN
.XF
.SK
.HU "Header Files"
\*(SV header files are not considered to belong exclusively to any individual Software
Technology and may be used to provide an interface to the Software Technologies in \*(R4
without payment of additional royalties.
.P
.XS I N
.CW
head/a.out.h
head/agent.h
head/aouthdr.h
head/ar.h
head/archives.h
head/arpa/ftp.h
head/arpa/inet.h
head/arpa/nameser.h
head/arpa/telnet.h
head/arpa/tftp.h
head/assert.h
head/bkrs.h
head/core.h
head/cpio.h
head/crypt.h
head/ctype.h
head/deflt.h
head/devmgmt.h
head/dial.h
head/dirent.h
head/dlfcn.h
head/elf.h
head/errno.h
head/fatal.h
head/fcntl.h
head/filehdr.h
head/float.h
head/fmtmsg.h
head/ftw.h
head/grp.h
head/ieeefp.h
head/langinfo.h
head/lastlog.h
head/ldfcn.h
head/libelf.h
head/libgenIO.h
head/limits.h
head/linenum.h
head/link.h
head/listen.h
head/locale.h
head/macros.h
head/malloc.h
head/math.h
head/math.h3b5x
head/memory.h
head/mnttab.h
head/mon.h
head/nan.h
head/netconfig.h
head/netdb.h
head/netdir.h
head/nl_types.h
head/nlist.h
head/nsaddr.h
head/nserve.h
head/pkgdev.h
head/pkginfo.h
head/pkglocs.h
head/pkgstrct.h
head/pkgtrans.h
head/pn.h
head/poll.h
head/prof.h
head/protocols/dumprestore.h
head/protocols/routed.h
head/protocols/rwhod.h
head/protocols/timed.h
head/pw.h
head/pwd.h
head/regexp.h
head/reloc.h
head/resolv.h
head/rje.h
head/rpcsvc/dbm.h
head/rpcsvc/mount.h
head/rpcsvc/rstat.h
head/rpcsvc/rusers.h
head/rpcsvc/rwall.h
head/rpcsvc/spray.h
head/rpcsvc/yp_prot.h
head/rpcsvc/ypclnt.h
head/rpcsvc/ypupd.h
head/sac.h
head/scnhdr.h
head/search.h
head/setjmp.h
head/sgtty.h
head/shadow.h
head/siginfo.h
head/signal.h
head/stand.h
head/std.h
head/stdarg.h
head/stddef.h
head/stdio.h
head/stdlib.h
head/storclass.h
head/string.h
head/stropts.h
head/sum.h
head/syms.h
head/sys.u3b15
head/sys.u3b5
head/syslog.h
head/table.h
head/tar.h
head/termio.h
head/termios.h
head/time.h
head/tiuser.h
head/tzfile.h
head/ucontext.h
head/ulimit.h
head/unistd.h
head/userdefs.h
head/ustat.h
head/utime.h
head/utmp.h
head/utmpx.h
head/valtools.h
head/values.h
head/values.h3b5x
head/varargs.h
head/wait.h
head/windows.h
.CN
.XF
.H 1 "Operating System Kernel"
\*(R4 significantly enhances the internals of the \*(UX operating system.
\*(R4 redesigned and reimplemented many portions of the \*(SV kernel to increase the extensibility and scalability of the operating system.
Some parts of the kernel changed to conform with industry standards, some changed to improve performance and maintainability of the system, and some to provide new features and capabilities for system users.
.HU "Kernel Modularity"
To cope with the increasing demands placed on the \*(UX system, in the variety of operating environments and user expectations, the kernel has become more modular.
\*(R4 redesigned many sections of the \*(SV kernel to make it much more modular that it was in the past.
The increased modularity provided by these changes also has the effect of making \*(SV much easier for system providers to maintain and repair the system and to port the kernel to new hardware, and also makes it easier for system programmers to extend and enhance the capabilities of the system.
For example, enhancing the security of the \*(UX system is greatly facilitated by this added modularity.
.P
An internal study conducted in preparation for B2 security certification of \*(SV described the kernel as consisting of six major \f2subsystems\f1:
.DS I F
.LB 20 0 1 0 \(em 1 1
.LI "System Services" 1
startup and shutdown, user/kernel interface and time services.
.LI "File Management" 1
file-descriptors, \f2v-nodes\f1, the buffer cache and file-system-types.
.LI "\s-2I\/O\s+2 Management" 1
\s-2STREAMS\s+2 \s-2I/O\s+2, \s-2TTY\s+2 subsystem, device-drivers and support facilities.
.LI "Memory Management" 1
allocation and management of both virtual and physical memory.
.LI "Process Management" 1
process creation, termination, scheduling and related functions.
.LI "Kernel Utilities" 1
support routines for use by other parts of the kernel.
.LE 1
.DE
Each of these six subsystems was further divided into functionally and/or structurally related \f2modules\f1, which were in turn composed of \f2source files\f1.
.P
For the purposes of Technology Licensing, the six subsystems described above were collapsed into five by moving the Kernel Utilities into the same subsystem as the System Services and giving the subsystem a new name, ``Kernel Management.''
Finally, Real-Time System Facilities are included in Kernel Software Technology.
.P
The \f2\*(dU Technology/File Mapping Guide\f1 classifies \*(SV kernel source-code files using the following categories:
.DS CB
.LB 3 0 1 0 \(bu 1 1
.LI
Virtual File Subsystem
.LI
\s-2STREAMS\s+2 \s-2I\/O\s+2 Subsystem
.LI
Memory Management Subsystem
.LI
Process Management Subsystem
.LI
Kernel Management Subsystem
.LI
Real-Time System Facilities
.LE 1
.DE
These subsystems and the interfaces between them establish the framework within which the \*(Co \*(UX Software Operation (\s-2USO\s+2) and \*(UX system-based vendors can innovate and provide enhanced capabilities without the disruption that results from software incompatibility.
.SK
.HU "File System"
\*(R4 replaces the earlier File System Switch (\s-2FSS\s+2) architecture introduced in \*(R3 with a new Virtual File Subsystem (\s-2VFS\s+2) architecture.
\s-2VFS\s+2 can simultaneously support different types of file-systems on the same system, and makes it easy for system vendors to design and configure support for new types of file-systems into the operating system without needing to discard old file-systems when new ones are developed and added.
.H 4 "File-system types"
Through \s-2VFS\s+2, \*(R4 supports two types of distributed file-systems, the Network File System (\s-2NFS\s+2) and Remote File Sharing (\s-2RFS\s+2); two disk file-systems, the traditional \*(SV File System (\*(Cws5fs\*(Cn) and the Unified File System (\s-2UFS\s+2) (based on and compatible with the \s-2BSD\s+2 4.2 Fast File System).
\s-2VFS\s+2 also supports the new \*(Cwspecfs\*(Cn and \*(Cwfifofs\*(Cn file-systems and the \*(Cw/proc\*(Cn file-system which provides kernel-independent access to information about processes and allows a debugger to control processes that were already running when the debugger started.
The fact that \*(R4 includes several different types of file-systems in the source-code release is evidence of the success of the \s-2VFS\s+2 interface.
.P
Another advantage of \s-2VFS\s+2 is that it can support special file-systems for custom applications.
\s-2VFS\s+2 provides a framework for new types of file-systems; hardware vendors or \s-2ISV\s+2s can build special-purpose file-systems that are ultra-reliable, have very high-performance, are tuned to a particular workload or have other desirable characteristics.
As long as they implement to the \s-2VFS\s+2 interface, file-system designers know their file-systems will work with other file-systems and they can fully exploit \*(UX system functions including remote access and mapped files.
.H 4 "File-system reliability"
\s-2VFS\s+2 improves file-system reliability by handling bad blocks dynamically, and by ordering writes to avoid leaving the disk in an inconsistent state.
A write-through option and more control of \*(Cwsync\*(Cning provide for applications that need more robust file \s-2I/O\s+2.
.H 4 "File-system disk quotas"
\s-2VFS\s+2 supports disk space quotas for individual users, which allows better administrative control of large numbers of users.
.H 4 "File and Record Locking"
\s-2VFS\s+2 provides mandatory and advisory locking both for records and for whole files.
With \s-2RFS\s+2, mandatory locking is available across the network.
.H 4 "Symbolic Links"
\s-2VFS\s+2 provides the capability of defining symbolic links, so that a name in the file-system can be linked to a file in a different physical file-system.
.HU "\s-2STREAMS\s+2 \s-2I/O\s+2"
\*(R4 significantly extends the \s-2STREAMS\s+2 \s-2I/O\s+2 mechanisms first introduced in \*(R3.
First, the entire \s-2TTY\s+2 subsystem has been reimplemented under \s-2STREAMS\s+2 \s-2I/O\s+2, including all terminal and console drivers and line disciplines as well as all multiplexing terminal drivers.
The \s-2STREAMS\s+2 \s-2I/O\s+2 \s-2TTY\s+2 subsystem maintains binary compatibility with existing user programs and provides seamless integration of user terminals into networking configurations.
\*(R4 adds some new \s-2STREAMS\s+2 \s-2I/O\s+2 capabilities including a persistent push feature, `named streams' and dynamic allocation for all data buffers used in \s-2STREAMS\s+2 \s-2I/O\s+2 drivers and modules.
Finally, the standard system accounting package now tracks \s-2STREAMS\s+2 \s-2I/O\s+2 parameters and activity reporting.
.HU "Virtual Memory"
\*(R4 provides paged memory management through the Virtual Memory (\s-2VM\s+2) architecture implemented in the kernel.
The \s-2VM\s+2 implementation is based on the \s-2BSD\s+2/Sun\s-2OS\s+2 virtual memory management; it replaces the \s-2REGIONS\s+2 paging implementation \s-2SVR2.1\s+2 first provided.
Programs can now access and share data by mapping files or parts of files into their address spaces.
Copy-on-write access supports fast \*(Cwfork\*(Cn as well as initializing program data.
The common memory pool provides a consistent view of data, whether accessed by file or memory operations.
Permitting page-level operations provides maximum flexibility. 
There are no arbitrary limitations on the portion of the file to be mapped or on the number of files that can be mapped.
.P
The \*(Cwmmap\*(Cn family of system-calls access the most important new capabilities provided by \s-2VM\s+2. 
The \*(Cwmmap\*(Cn system-calls allow a user-program to map a file (or part of a file) into the user program's own address space where it can be manipulated as local data.
This provides an efficient alternative to the \*(Cwread\*(Cn/\*(Cwwrite\*(Cn style of file \s-2I/O\s+2 that \*(SV has used exclusively in the past.
.P
The \s-2VM\s+2 implementation has been designed to be maximally portable through reliance on a 32-bit address space and through isolation of all machine dependencies in one small section of its source code.
Also, \s-2VM\s+2 has been designed to swap pages to an ordinary \*(UX System file rather than to a raw physical device.
This paging convention makes it easy to satisfy the needs of networked diskless workstations, as well as being more robust than other paging methods.
.P
Swap space is more flexible and scalable because paging can be done to files instead of to preallocated swap areas.
The swap areas are managed to provide proper resource control by notifying programs of space constraints when memory is allocated instead of arbitrarily terminating a process when space is exhausted.
.P
The \s-2VM\s+2 mechanism lets libraries and other code be shared among programs.
The ability to map libraries at arbitrary addresses gives programs complete control of their address spaces.
Shared libraries are marked with version numbers so that old binaries can run on new systems.
.HU "Process Scheduling"
\*(R4 has completely redesigned and reimplemented the kernel mechanisms responsible for process scheduling.
The new scheduler provides a modular interface to the rest of the system kernel and allows several different schedulers to reside in the system simultaneously.
\*(R4 includes two schedulers in the source-code release:  the traditional \*(SV process scheduler and a new fixed-priority scheduler.
System providers can also define and install new schedulers for \*(R4 systems.
A process can switch its own scheduling from one scheduler class to another on a running system, and several different scheduler classes can run simultaneously on the same system.
.HU "Kernel Management"
The management of kernel memory and data structures is crucial to the ability of the system to scale from \s-2PC\s+2s to supercomputers.
\*(SV continues to be the only operating system that spans so wide a range.
\*(R4 contains many improvements to the kernel to support both smaller and larger platforms.
.P
\*(R4 expands many variables inside \*(SV to accommodate the needs of larger \*(UX systems.
These include such values as process-\s-2ID\s+2 numbers, user-\s-2ID\s+2 numbers, major and minor device numbers as well as several others.
This change makes \*(SV more useful on large systems and large configurations of networked workstations.
.P
Most kernel data structures grow dynamically by increments, rather than being preallocated in real or kernel virtual memory.
\*(R4 dynamically allocates all major system tables inside the kernel, automatically expanding tables as new entries are needed.
This means that it is much easier to configure the system, and also that the system kernel is never occupying more space than is necessary.
This feature makes \*(SV work efficiently on systems of all sizes with a minimum of intervention from a system administrator.
In \*(R4, the same binary system code can run divergent workloads and immediately adapt its data structures to changing system demands.
This policy imposes the least demands on low-end systems, yet allows expansion to high-end systems with the same software.
.P
\*(R4 uses the virtual memory hardware to good advantage in providing a common memory pool for program text and data as well as file information.
It does so without requiring special hardware support or large kernel virtual address spaces, which makes very effective use of physical memory.
The flexibility of this approach is that both the kernel and the application can dynamically map files into their address spaces and use only as much space as is needed.
.P
\*(R4 has improved the organization of system data structures to support large numbers of users and larger applications and services.
For example, linear searches of data structures have been eliminated.
Applications can now have an arbitrary number of simultaneous open files.
The number of files a process may have open simultaneously is a per-process tunable parameter in \*(R4.
A process may modify the maximum number of files it is capable of holding open while it is running, and the system imposes no arbitrary limit on the size of this value.
.P
\*(R4 has further enhanced \*(SV with a new configuration and booting procedure that will allow \*(SV to initialize itself using any type of file-system, and will relink the \*(SV kernel more quickly than in previous releases.
.HU "Real Time"
\*(R4 supports high-resolution timing to the granularity of nanoseconds if the hardware has such resolution.
It also provides a real-time scheduler giving full control over priorities to user-processes, to allow high-priority processes to pre-empt lower priority or interactive programs.
.P
\*(R4 has substantially improved kernel responsiveness for real-time applications.
The insertion of many pre-emption points permits lower interrupt latency without introducing the overhead of locking for non-real-time environments.
.HU "Multi-processor"
\*(R4 continues to have an efficient kernel design for uni-processor systems.
To fully support multi-processor architectures, in general, requires more than just a pre-emptable kernel.
Other aspects include the design of data structures and algorithms with regard to locking protocols to avoid deadlock and starvation.
.HU "Internal Interfaces"
\*(R4 defines internal interfaces for major kernel components, including the file-system, the \s-2I/O\s+2 subsystem and traditional device drivers, virtual memory and the scheduler.
These interfaces are maintained across releases, so that, for example, a new file-system type can be implemented without the risk of becoming incompatible with future releases.
.P
Implementing all kernel facilities within common, well-defined internal interfaces also has the effect of optimizing system size and performance.
\*(R4 offers significantly more user program interfaces and capabilities than earlier releases, but is not significantly larger or slower.
.SK
The modular interfaces now defined inside the \*(R4 kernel are:
.BL
.LI
\f3\s-2VFS\s+2 Interface\f1.
The architecture of the Virtual File Subsystem (\s-2VFS\s+2) allows new file-system types to be easily designed, implemented and configured into the system.
Once present in the system, they can be used by all existing application programs, just as older file-system types are used.
The interface between a file-system and the rest of the kernel is clearly defined and documented.
.LI
\f3\s-2STREAMS\s+2 \s-2I/O\s+2 Interfaces\f1.
The \s-2STREAMS\s+2 \s-2I/O\s+2 and networking architecture offers unparalleled modularity and portability for character \s-2I/O\s+2 processing inside the kernel.
\s-2STREAMS\s+2 \s-2I/O\s+2 code not directly associated with a particular piece of hardware (including the drivers and modules that implement networking protocols) can be completely portable from system to system, needing only recompilation before being installed on a new hardware base.
.LI
\f3Device Driver Interface\f1.
\*(SV device drivers, including \s-2STREAMS\s+2 \s-2I/O\s+2 drivers, character-type drivers and block-type drivers are all implemented using a well-defined and documented Device Driver Interface (\s-2DDI\s+2) that promotes driver portability and protects other parts of the kernel by effectively isolating hardware-dependent \s-2I/O\s+2 portions in the kernel.
\s-2DDI\s+2 also isolates drivers from parts of the kernel that could change in the future.
.LI
\f3\s-2VM\s+2 Interface\f1.
The Virtual Memory (\s-2VM\s+2) subsystem of \*(SV is entirely new with \*(R4, and has been designed to be as self-contained as possible.
\s-2VM\s+2 has a well-defined interface with the remainder of the kernel to make porting and maintenance easier.
.LI
\f3\s-2MMU\s+2 Interface\f1.
The \*(R4 Memory Management subsystem incorporates a well-defined Memory Management Unit (\s-2MMU\s+2) interface that makes it easy for system providers to implement \*(R4 on top of a broad range of different \s-2MMU\s+2 hardware implementations.
.LI
\f3Process Scheduler Interface\f1.
The \*(SV process scheduler has a completely modular design that isolates it from other portions of the kernel, as well as allowing multiple classes of process schedulers to reside in the system simultaneously.
Control of the system switches from one class of scheduler to another while the system is running, in response to user-level commands.
.LE 1
All these interfaces serve to make \*(SV source-code more portable and to isolate it from other portions of the \*(SV kernel.
Furthermore, the interfaces in \*(R4 are \f2orthogonal\f1.
For example, the virtual memory system works equally well with any file-system, and the network file-systems work with a variety of network protocols.
.P
To support portability across the widest range of system platforms, the virtual memory subsystem of \*(R4 is further modularized by an interface to the hardware-dependent part of \*(R4.
This isolation of machine-specific code makes porting easier.
.P
To support a variety of computing workloads, the \*(R4 scheduler is also modular.
It is possible to define multiple scheduling classes that can run concurrently in the same system.
The scheduling classes already provided in \*(R4 include time-sharing and real-time.
.P
\s-2STREAMS\s+2 \s-2I/O\s+2 is a well-defined interface for implementing protocols in \*(R4.
\s-2STREAMS\s+2 \s-2I/O\s+2 unifies terminal control protocols, line disciplines, pseudo \s-2TTY\s+2s and serial line communications.
The modularity of the \s-2STREAMS\s+2 \s-2I/O\s+2 structure opens up many possibilities for networking.
Applications and servers can be written that are protocol independent.
Additional protocols can be implemented by third parties and integrated into many vendor systems.
The \s-2STREAMS\s+2 \s-2I/O\s+2 structure can support both the \s-2OSI\s+2 protocols and the \s-2DARPA\s+2 protocols (\s-2TCP\s+2/\s-2IP\s+2/\s-2UDP\s+2).
.SK
.DS L F
.S 9 11
.PS

scale = 100
arrowhead = 7
box_step = 4

BOX00: box invis wid 00*box_step ht 180*box_step with .c at (0,0)

BOX01: box invis wid 48*box_step ht 00*box_step with .nw at BOX00.ne
BOX11: box invis wid 48*box_step ht 20*box_step with .nw at BOX01.sw
BOX21: box invis wid 48*box_step ht 20*box_step with .nw at BOX11.sw
BOX31: box invis wid 48*box_step ht 20*box_step with .nw at BOX21.sw
BOX41: box invis wid 48*box_step ht 20*box_step with .nw at BOX31.sw
BOX51: box invis wid 48*box_step ht 20*box_step with .nw at BOX41.sw
BOX61: box invis wid 48*box_step ht 20*box_step with .nw at BOX51.sw
BOX71: box invis wid 48*box_step ht 20*box_step with .nw at BOX61.sw
BOX81: box invis wid 48*box_step ht 20*box_step with .nw at BOX71.sw
BOX91: box invis wid 48*box_step ht 20*box_step with .nw at BOX81.sw

BOX02: box invis wid 48*box_step ht 00*box_step with .nw at BOX01.ne
BOX12: box invis wid 48*box_step ht 20*box_step with .nw at BOX02.sw
BOX22: box invis wid 48*box_step ht 20*box_step with .nw at BOX12.sw
BOX32: box invis wid 48*box_step ht 20*box_step with .nw at BOX22.sw
BOX42: box invis wid 48*box_step ht 20*box_step with .nw at BOX32.sw
BOX52: box invis wid 48*box_step ht 20*box_step with .nw at BOX42.sw
BOX62: box invis wid 48*box_step ht 20*box_step with .nw at BOX52.sw
BOX72: box invis wid 48*box_step ht 20*box_step with .nw at BOX62.sw
BOX82: box invis wid 48*box_step ht 20*box_step with .nw at BOX72.sw
BOX92: box invis wid 48*box_step ht 20*box_step with .nw at BOX82.sw

BOX03: box invis wid 48*box_step ht 00*box_step with .nw at BOX02.ne
BOX13: box invis wid 48*box_step ht 20*box_step with .nw at BOX03.sw
BOX23: box invis wid 48*box_step ht 20*box_step with .nw at BOX13.sw
BOX33: box invis wid 48*box_step ht 20*box_step with .nw at BOX23.sw
BOX43: box invis wid 48*box_step ht 20*box_step with .nw at BOX33.sw
BOX53: box invis wid 48*box_step ht 20*box_step with .nw at BOX43.sw
BOX63: box invis wid 48*box_step ht 20*box_step with .nw at BOX53.sw
BOX73: box invis wid 48*box_step ht 20*box_step with .nw at BOX63.sw
BOX83: box invis wid 48*box_step ht 20*box_step with .nw at BOX73.sw
BOX93: box invis wid 48*box_step ht 20*box_step with .nw at BOX83.sw

box invis wid 60*box_step ht 00*box_step with .c at BOX22.c
line <-> from last box.e to last box.w

KMS: box wid 132*box_step ht 20*box_step with .s at BOX12.c
box dashed wid 40*box_step ht 16*box_step with .e at BOX11.ne "system initialization" "and termination"
box dashed wid 44*box_step ht 16*box_step with .c at BOX12.n "kernel/user services"
box dashed wid 40*box_step ht 16*box_step with .w at BOX13.nw "time services"

FMS: box wid 36*box_step ht 82*box_step with .n at BOX21.n
box dashed wid 32*box_step ht 18*box_step with .s at BOX21.s "file-descriptor" "level"
box dashed wid 32*box_step ht 18*box_step with .s at BOX31.s "file-system" "independent" "v-node level"
box dashed wid 32*box_step ht 18*box_step with .s at BOX41.s "file-system type" "dependent" "level"
box dashed wid 32*box_step ht 18*box_step with .s at BOX51.s "buffer" "management"

SMS: box wid 36*box_step ht 42*box_step with .n at BOX61.c
line <-> from SMS.n to FMS.s
box dashed wid 32*box_step ht 8*box_step with .s at BOX61.s "\s-2STREAMS\s+2 \s-2I/O\s+2 services"
box dashed wid 32*box_step ht 8*box_step with .s at BOX71.c "\s-2STREAMS\s+2 \s-2I/O\s+2 modules"
BX71A: box invis wid 8*box_step ht 20*box_step with .sw at BOX71.sw
box dashed wid 15*box_step ht 8*box_step with .sw at BX71A.se "device" "drivers"
BX71B: box invis wid 8*box_step ht 20*box_step with .se at BOX71.se
box dashed wid 15*box_step ht 8*box_step with .se at BX71B.sw "\s-2TTY\s+2" "drivers"
box dashed wid 32*box_step ht 8*box_step with .s at BOX81.c "\s-2I/O\s+2 support services"

MMS: box wid 36*box_step ht 82*box_step with .n at BOX42.n
box dashed wid 32*box_step ht 18*box_step with .s at BOX42.s "memory" "management"
box dashed wid 32*box_step ht 18*box_step with .s at BOX52.s "memory" "segmentation"
box dashed wid 32*box_step ht 18*box_step with .s at BOX62.s "memory" "paging"
box dashed wid 32*box_step ht 18*box_step with .s at BOX72.s "data" "movement"
box invis wid 10*box_step ht 00*box_step with .c at BOX42.se
line <-> from last box.e to last box.w
box invis wid 10*box_step ht 00*box_step with .c at BOX42.sw
line <-> from last box.e to last box.w

PMS: box wid 36*box_step ht 82*box_step with .n at BOX23.n
box dashed wid 32*box_step ht 18*box_step with .s at BOX23.s "process control" "primitives"
box dashed wid 32*box_step ht 18*box_step with .s at BOX33.s "process" "scheduling"
box dashed wid 32*box_step ht 18*box_step with .s at BOX43.s "process" "memory"
box dashed wid 32*box_step ht 18*box_step with .s at BOX53.s "inter-process" "communication"

box wid 132*box_step ht 18*box_step with .c at BOX92.c "kernel support routines"
line <-> from SMS.s to BOX91.n
line <-> from MMS.s to BOX92.n
line <-> from PMS.s to BOX93.n

.PE
.S
.SP
.FG "\f2\s+1Kernel Subsystems\s-1\f1"
.DE
.SK
.LB 3 0 0 0 \f3\(sq\fP 1 1
.LI
\s+1\f2Virtual File Subsystem Modules\f1\s-1
.LB 6 0 1 0 \f3\(em\fP 1 1
.LI "\*(CfFF\*(Cx" 1
File-descriptor level
.LI "\*(CfFV\*(Cx" 1
File-system independent v-node level
.LI "\*(CfFB\*(Cx" 1
Buffer management
.LI "\*(CfFS\*(Cx" 1
File-System-Type (\s-2FST\s+2ype) dependent level
.P
.DS L N
Unified \s-2FST\s+2ype \(em \*(Cwufs\*(Cn
System V \s-2FST\s+2ype \(em \*(Cws5\*(Cn
\s-2FIFO\s+2 \s-2FST\s+2ype \(em \*(Cwfifofs\*(Cn
Named \s-2STREAMS\s+2 \s-2FST\s+2ype \(em \*(Cwnamefs\*(Cn
Special \s-2FST\s+2ype \(em \*(Cwspecfs\*(Cn
Process \s-2FST\s+2ype \(em \*(Cwproc\*(Cn
Boot \s-2FST\s+2ype \(em \*(Cwbfs\*(Cn
File Descriptor \s-2FST\s+2ype \(em \*(Cwfd\*(Cn
.DE
.LE 1
.LI
\s+1\f2\s-2STREAMS\s+2 \s-2I/O\s+2 Subsystem Modules\f1\s-1
.LB 6 0 1 0 \f3\(em\fP 1 1
.LI "\*(CfSS\*(Cx" 1
\s-2STREAMS\s+2 \s-2I/O\s+2 services
.LI "\*(CfSM\*(Cx" 1
\s-2STREAMS\s+2 \s-2I/O\s+2 modules
.LI "\*(CfST\*(Cx" 1
\s-2STREAMS\s+2 \s-2TTY\s+2 subsystem
.LI "\*(CfSD\*(Cx" 1
\s-2STREAMS\s+2 device drivers
.LI "\*(CfSR\*(Cx" 1
\s-2STREAMS\s+2 support routines
.LE 1
.LI
\s+1\f2Memory Management Subsystem Modules\f1\s-1
.LB 6 0 1 0 \f3\(em\fP 1 1
.LI "\*(CfMM\*(Cx" 1
Memory management
.LI "\*(CfMS\*(Cx" 1
Memory segmentation
.LI "\*(CfMP\*(Cx" 1
Memory paging
.LI "\*(CfMX\*(Cx" 1
Memory transfer
.LE 1
.LI
\s+1\f2Process Management Subsystem Modules\f1\s-1
.LB 6 0 1 0 \f3\(em\fP 1 1
.LI "\*(CfPP\*(Cx" 1
Process creation, deletion and related functions
.LI "\*(CfPS\*(Cx" 1
Process scheduling
.LI "\*(CfPM\*(Cx" 1
Process memory management
.LI "\*(CfPI\*(Cx" 1
Inter-process communication
.LE 1
.LI
\s+1\f2Kernel Management Subsystem Modules\f1\s-1
.LB 6 0 1 0 \f3\(em\fP 1 1
.LI "\*(CfKK\*(Cx" 1
System initialization/termination
.LI "\*(CfKU\*(Cx" 1
Kernel/User interface (user services and assorted system-calls)
.LI "\*(CfKT\*(Cx" 1
Time services
.LI "\*(CfKS\*(Cx" 1
Kernel support routines
.LE 1
.LE
.H 2 "Virtual File Subsystem"
\*(R4 includes the Virtual File Subsystem (\s-2VFS\s+2), a third-generation file-system switch architecture that replaces the ``convertible'' 0.5K or 1K block file-system introduced in \*(R2 and its successor, the File-System Switch (\s-2FSS\s+2) architecture introduced in \*(R3.
The \s-2VFS\s+2 implementation is based on the \f2v-nodes\f1 architecture first implemented in \s-2BSD\s+2 versions of the \*(UX system.
.P
The \s-2VFS\s+2 architecture provides a modular, clearly-defined interface between the file-system and the rest of the \*(UX system kernel, and allows several different type of file-systems to exist simultaneously on the system.
These file-systems may have widely different characteristics and internal formats; for example, a set of remote files and another of traditional \*(SV files can co-exist on the system.
The modular nature of \s-2VFS\s+2 lets programmers design and install new types of file-systems in a clean, well-defined manner.
Configuring a new file-system-type into the system requires about the same effort as installing a new device driver.
.P
\s-2VFS\s+2 mediates access to the different file-system-types so that user programs need not know the type of files they access or modify.
File operations are managed in a manner appropriate for each particular file-system, and user programs manipulate files in all classes of file-systems through a common interface.
.HU "Different Types of File Systems"
In addition to providing programmers with the ability to define and install new types of file-systems, \*(4U provides several predefined file-system-types:
.BL
.LI
The \*(Cws5\*(Cn file-system-type provided by earlier releases of \*(SV supports disk storage in 0.5K, 1K or 2K byte blocks.
.LI
The \*(Cwufs\*(Cn file-system-type (introduced in \*(R4) supports disk storage in blocks as large as 8K bytes.
The \*(Cwufs\*(Cn type is based on and compatible with the \s-2BSD\s+2 ``fast file-system''.
.LI
The \*(Cwrfs\*(Cn file-system-type (introduced in \*(R3) supports Remote File Sharing capabilities with the ability to access files with full \*(SV \*(Cwread\*(Cn/\*(Cwwrite\*(Cn semantics across a network of computers running \*(SV.
.LI
The \*(Cwnfs\*(Cn file-system-type (introduced in \*(R4) supports Network File System capabilities with the ability for heterogeneous systems to share text and data files across a network.
.LI
The \*(Cwproc\*(Cn file-system-type (introduced in \*(R4) provides a mechanism with file-system semantics for accessing the address-space of running processes on a system.
The \*(Cwproc\*(Cn file-system-type is particularly useful for debuggers and similar utilities.
.LI
The \*(Cwfifofs\*(Cn file-system-type (introduced in \*(R4) provides common access to pipe files.
.LI
The \*(Cwspecfs\*(Cn file-system-type (introduced in \*(R4) provides a common-code interface to all device or ``special'' type files.
.LI
The \*(Cwbfs\*(Cn file-system-type (introduced in \*(R4) supports file-system independent booting.
The \*(Cwbfs\*(Cn file-system-type contains all the programs needed by the boot-process.
.LE
.HU "Data Integrity in File Systems"
Regardless of the type of a particular physical file-system or individual file, \*(R4 contains several safeguards that protect the integrity of the data they contain.
The specific features that provide this protection are common to all file-system-types supported on a given system, and are described in the sections that follow.
These features were added in Release 2.1 of \*(SV.
.HU "Dynamic Bad Block Handling"
When a portion of a physical disk works improperly on a running system due to some physical defect in the disk, the identity of that portion of the disk (that \f2block number\f1) is automatically recorded in a table of bad blocks, and is never used again.
Once a block is included in this table, the system will not use it for data storage.
.HU "Ordered Writes"
Creating a file requires several discrete steps in \*(SV, and the \f2ordered write\f1 feature ensures that these steps occur in an order that prevents danger to other files if the system crashes before an operation is complete.
Without this feature, a system crash can leave a file-system in an inconsistent state that may damage other files when reinitializing the system.
.HU "Automatic Cache Flushing"
In \*(UX systems, output to a file is normally written first to a buffer in the system's main memory.
At some later time, the system copies the contents of this buffer to the physical disk or tape where the file resides for permanent storage.
If the system crashes before these data are copied to the physical storage device, the data will be lost, even though the program that performed the output may have completed successfully.
The \f2Automatic Cache Flushing\f1 feature minimizes the possibility of this happening by copying the data contained in all modified buffers that have resided in main system memory for more than some fixed period of time to their intended destination on a physical storage device.
This reduces the time during which the contents of a file on a storage device and the same file in main memory are allowed to differ.
.HU "Automatic Integrity Check"
Whenever a file-system is attached (or, \f2mounted\f1) to \*(SV, the system performs a basic integrity check.
If the file-system does not pass this test, it is then rigorously tested and repaired before the file-system is attached to the running system.
The check is accomplished using a flag that is set when the system is shut down.
When \*(SV is shut down, all file-systems are removed from the system (or \f2unmounted\f1) one at a time.
When a system is cleanly removed, the integrity flag is set.
Later, when the system is re-initialized and the file-system is mounted, the integrity flag is tested.
If the flag is set, the system attaches the file-system and unsets the flag.
If the flag is unset, it means that the file-system was removed from the system irregularly (usually because of a system crash), and the rigorous testing and repair procedures are then executed.
This procedure minimizes the possibility of attaching a corrupted file-system to the system.
.HU "Synchronous Write Option"
If a critical user program such as a data base manager must be absolutely certain of the state of data in its physical files, it may perform output operations to those files synchronously.
.P
When a user program opens a file, it can set a flag to guarantee that an output call does not return control to the program invoking it until the output data has been completely copied to a physical storage device.
This means that the data is always copied to disk immediately, and not delayed in the system's buffer cache.
While this option can slow the execution of a user program, it guarantees that a critical program always knows the state of the data in files it manipulates.
This capability was first added in Release 2.1 of \*(SV.
.P
In \*(R4, the new \*(Cwfsync()\*(Cn routine lets a process explicitly force all data buffers it modified to be stored on disk.
This routine works without imposing any special semantic when opening a file, and further increases the capability of user programs to safeguard the integrity of their stored files.
.HU "File and Record Locking"
A file and record locking capability allows whole files or portions of files to be ``locked'' or protected from modification by other programs.
\*(SV implements several different varieties of file and record locking.
The supported capabilities are:
.BL
.LI
\f3Advisory Locking\f1, where cooperating processes can notify each other that the contents of a file or portion of a file should not be modified.
.LI
\f3Mandatory Locking\f1, where a process can absolutely prohibit the modification of a file or portion of a file by any other process.
.LI
\f3\s-2XENIX\s+2 Locking\f1, where a process can lock a file or portion of a file with the mandatory locking semantics supported by \s-2XENIX\s+2 systems [see \f2\s-2XENIX\s+2 System Compatibility Package\f1].
.LE
.HU "Symbolic Links"
Until \*(R4, the \*(UX system has allowed a single file to be assigned more than one name through the ``linking'' mechanism.
This mechanism was limited, though.
Directory files could not have more than one name, and all the names associated with a file had to reside within a single physical file-system.
The \f2symbolic link\f1 capability included in \*(R4 significantly expands the linking abilities of the \*(UX system.
The enhancements are:
.BL
.LI
Directory-type files can be linked, as well as all other types of files.
The result of this change is that the logical structure of a system's file tree can be rearranged without changing the physical locations of files.
.LI
Links to a physical file need not reside in the same physical file-system as the file itself.
A name can be associated with a file that resides in a different physical file-system.
Names can also be linked across file-systems that reside on different computers.
.LE
.HU "Virtual File Subystem Modules"
The Virtual File Subsystem Modules comprise source-code files from \*(Cw/usr/src/uts\*(Cn as listed under the following headings:
.XS L F
.LB 3 0 1 0 \(em 1 0
.LI "\*(CfFF\*(Cx" 1
File-descriptor level
.LI "\*(CfFV\*(Cx" 1
File-system independent v-node level
.LI "\*(CfFB\*(Cx" 1
File buffer management
.LI "\*(CfFS\*(Cx" 1
File-system dependent level
.LE 1
.XF
.SK
.HU "\*(CfFF\*(Cx \(em File-descriptor level"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/os/fio.c	file descriptors and file table management:  \*(Cwgetf\*(Cn, \*(Cwclosef\*(Cn, \*(Cwfalloc\*(Cn, etc.
uts/3b2/os/pipe.c	\*(Cwpipe\*(Cn syscall
uts/3b2/sys/fcntl.h	\*(Cwopen\*(Cn modes \*(CwO_\*(Cn\f2\s-2XXX\s+2\f1; \*(Cwfcntl\*(Cn requests \*(CwF_\*(Cn\f2\s-2XXX\s+2\f1; struct \*(Cwflock\*(Cn
uts/3b2/sys/file.h	file table:  struct \*(Cwfile\*(Cn with fields \*(Cwf_\*(Cn\f2xxx\f1; flags and \*(Cwopen\*(Cn modes \*(CwF\*(Cn\f2\s-2XXX\s+2\f1
.TE
.S
.XF
.HU "\*(CfFV\*(Cx \(em File-system independent v-node level"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/fs/dnlc.c	directory name lookup cache:  \*(Cwdnlc_enter\*(Cn, \*(Cwdnlc_lookup\*(Cn, etc.
uts/3b2/fs/fs.mk	make file for file-system routines
uts/3b2/fs/fs_subr.c	file-system routines:  \*(Cwfs_sync\*(Cn, \*(Cwfs_frlock\*(Cn, \*(Cwfs_setfl\*(Cn, \*(Cwfs_poll\*(Cn, etc.
uts/3b2/fs/fs_subr.h	declaration of common routines shared by all \s-2FST\s+2ypes
uts/3b2/fs/fsflush.c	file-system hardening daemon
uts/3b2/fs/lookup.c	path-name lookup routines:  \*(Cwlookupname\*(Cn, \*(Cwlookuppn\*(Cn, etc.
uts/3b2/fs/pathname.c	path-name management routines:  \*(Cwpn_get\*(Cn, \*(Cwpn_free\*(Cn, etc.
uts/3b2/fs/strcalls.c	\s-2STREAMS\s+2 \s-2I/O\s+2 syscalls:  \*(Cwgetmsg\*(Cn, \*(Cwputmsg\*(Cn, etc.
uts/3b2/fs/vfs.c	\s-2VFS\s+2 interface syscalls:  \*(Cwmount\*(Cn, \*(Cwumount\*(Cn, \*(Cwstatvfs\*(Cn, \*(Cwfstatvfs\*(Cn, etc.
uts/3b2/fs/vncalls.c	file related syscalls:  \*(Cwopen\*(Cn, \*(Cwclose\*(Cn, \*(Cwread\*(Cn, \*(Cwwrite\*(Cn, etc.
uts/3b2/fs/vnode.c	common v-node routines:  \*(Cwvn_rdwr\*(Cn, \*(Cwvn_open\*(Cn, etc.
uts/3b2/os/flock.c	file and record locking
uts/3b2/os/subr.c	assorted routines: \*(Cwstrncpy\*(Cn, \*(Cwbcmp\*(Cn, \*(Cwmemlow\*(Cn, \*(Cwstoi\*(Cn
uts/3b2/sys/conf.h	device switch tables and related defines
uts/3b2/sys/dir.h	same as \*(Cwsys/fs/s5dir.h\*(Cn for compatibility
uts/3b2/sys/dirent.h	file-system independent directory entry:  struct \*(Cwdirent\*(Cn
uts/3b2/sys/dnlc.h	directory name lookup cache structures
uts/3b2/sys/fblk.h	same as \*(Cwsys/fs/s5fblk.h\*(Cn for compatibility
uts/3b2/sys/filio.h	\s-2BSD\s+2 compatible file \*(Cwioctl\*(Cn commands:  \*(CwFIOCLEX\*(Cn, \*(CwFIONCLEX\*(Cn
uts/3b2/sys/filsys.h	same as \*(Cwsys/fs/s5filsys.h\*(Cn for compatibility
uts/3b2/sys/flock.h	kernel file/record locking structures:  struct \*(Cwfilock\*(Cn, \*(Cwflckinfo\*(Cn
uts/3b2/sys/fsiboot.h	file-system independent boot defines
uts/3b2/sys/fsid.h	\s-2FST\s+2ype names for use in \*(Cwfsinfo\*(Cn structure
uts/3b2/sys/fstyp.h	opcode for \*(Cwsysfs\*(Cn syscall
uts/3b2/sys/ino.h	same as \*(Cwsys/fs/s5ino.h\*(Cn for compatibility
uts/3b2/sys/ioctl.h	\*(Cwioctl\*(Cn commands \*(CwLIOC\*(Cn\f2\s-2XXX\s+2\f1, \*(CwDIOC\*(Cn\f2\s-2XXX\s+2\f1
uts/3b2/sys/mkdev.h	routines to handle device numbers:  \*(Cwmakedevice\*(Cn, \*(Cwmajor\*(Cn, \*(Cwminor\*(Cn
uts/3b2/sys/mntent.h	mount command options; not used in kernel
uts/3b2/sys/mnttab.h	mount table structure and defines; not used in kernel
uts/3b2/sys/mode.h	mode/type conversion macros for \*(Cwstat\*(Cn and \*(Cwmknod\*(Cn syscalls
uts/3b2/sys/mount.h	flags passed to \*(Cwmount\*(Cn syscall
uts/3b2/sys/pathname.h	path-name lookup structure:  struct \*(Cwpath-name\*(Cn
uts/3b2/sys/select.h	bit masks of file descriptor; macros \*(CwFD_\*(Cn\f2\s-2XXX\s+2\f1
uts/3b2/sys/stat.h	structure (\*(Cwstat\*(Cn) and defines (\*(CwS_\*(Cn\f2\s-2XXX\s+2\f1) for use with \*(Cwstat\*(Cn/\*(Cwfstat\*(Cn syscalls
uts/3b2/sys/statfs.h	structure (\*(Cwstatfs\*(Cn) returned by the \*(Cwstatfs\*(Cn syscall
uts/3b2/sys/statvfs.h	structure (\*(Cwstatvfs\*(Cn) returned by the \*(Cwstatvfs\*(Cn syscall
uts/3b2/sys/ustat.h	structure (\*(Cwustat\*(Cn) returned by the \*(Cwustat\*(Cn syscall
uts/3b2/sys/utime.h	\*(Cwutime\*(Cn syscall arguments:  struct \*(Cwutimbuf\*(Cn
uts/3b2/sys/vfs.h	struct \*(Cwvfs\*(Cn, \s-2VFS\s+2 operations, switch table and macros \*(CwVFS_\*(Cn\f2\s-2XXX\s+2\f1
uts/3b2/sys/vfstab.h	struct \*(Cwvfstab\*(Cn and related defines
uts/3b2/sys/vnode.h	struct \*(Cwvnode\*(Cn, v-node attributes, v-node operations and macros \*(CwVOP_\*(Cn\f2\s-2XXX\s+2\f1
.TE
.S
.XF
.HU "\*(CfFB\*(Cx \(em File buffer management"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/os/bio.c	block \s-2I/O\s+2 interface using buffer cache:  \*(Cwbread\*(Cn, \*(Cwbwrite\*(Cn, etc.
uts/3b2/os/fbio.c	block \s-2I/O\s+2 interface using memory mapping:  \*(Cwfbread\*(Cn, \*(Cwfbwrite\*(Cn, etc.
uts/3b2/sys/buf.h	struct \*(Cwbuf\*(Cn; flags \*(CwB_\*(Cn\f2\s-2XXX\s+2\f1; macros \*(Cwgeterror\*(Cn, \*(Cwnotavail\*(Cn
uts/3b2/sys/fbuf.h	file buffer structure using memory mapping:  struct \*(Cwfbuf\*(Cn
.TE
.S
.XF
.SK
.HU "\*(CfFS\*(Cx \(em File-System-Type (\s-2FST\s+2ype) dependent level"
.H 4 "Unified \s-2FST\s+2ype \(em \*(Cwufs\*(Cn"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.50i) l3f1.
uts/3b2/fs/ufs/*
uts/3b2/master.d/ufs	configuration file for \s-2UFS\s+2 boot module
uts/3b2/sys/fs/ufs_fs.h	structures and defines for \s-2UFS\s+2 \s-2FST\s+2ype
uts/3b2/sys/fs/ufs_fsdir.h	structures and defines for \s-2UFS\s+2 \s-2FST\s+2ype
uts/3b2/sys/fs/ufs_inode.h	structures and defines for \s-2UFS\s+2 \s-2FST\s+2ype
uts/3b2/sys/fs/ufs_quota.h	structures and defines for \s-2UFS\s+2 \s-2FST\s+2ype
.TE
.S
.XF
.H 4 "System V \s-2FST\s+2ype \(em \*(Cws5\*(Cn"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.50i) l3f1.
uts/3b2/fs/s5/*
uts/3b2/master.d/s5	configuration file for S5 boot module
uts/3b2/sys/fs/s5dir.h	structures and defines for System V \s-2FST\s+2ype
uts/3b2/sys/fs/s5fblk.h	structures and defines for System V \s-2FST\s+2ype
uts/3b2/sys/fs/s5filsys.h	structures and defines for System V \s-2FST\s+2ype
uts/3b2/sys/fs/s5ino.h	structures and defines for System V \s-2FST\s+2ype
uts/3b2/sys/fs/s5inode.h	structures and defines for System V \s-2FST\s+2ype
uts/3b2/sys/fs/s5macros.h	structures and defines for System V \s-2FST\s+2ype
uts/3b2/sys/fs/s5param.h	structures and defines for System V \s-2FST\s+2ype
.TE
.S
.XF
.H 4 "\s-2FIFO\s+2 \s-2FST\s+2ype \(em \*(Cwfifofs\*(Cn"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.50i) l3f1.
uts/3b2/fs/fifofs/*
uts/3b2/master.d/fifofs	configuration file for \s-2FIFO\s+2 \s-2FST\s+2ype boot module
uts/3b2/sys/fs/fifonode.h	struct \*(Cwfifonode\*(Cn and macros \*(CwVTOF\*(Cn, \*(CwFTOV\*(Cn
.TE
.S
.XF
.H 4 "Named \s-2STREAMS\s+2 \s-2FST\s+2ype \(em \*(Cwnamefs\*(Cn"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.50i) l3f1.
uts/3b2/fs/namefs/*
uts/3b2/master.d/namefs	configuration file for \s-2NAME\s+2 \s-2FST\s+2ype boot module
uts/3b2/sys/fs/namenode.h	struct \*(Cwnamefd\*(Cn, struct \*(Cwnamenode\*(Cn; macros \*(CwVTONM\*(Cn, \*(CwNMTOV\*(Cn
.TE
.S
.XF
.H 4 "Special \s-2FST\s+2ype \(em \*(Cwspecfs\*(Cn"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.50i) l3f1.
uts/3b2/fs/specfs/*
uts/3b2/master.d/specfs	configuration file for \s-2SPEC\s+2 \s-2FST\s+2ype boot module
uts/3b2/sys/fs/snode.h	struct \*(Cwsnode\*(Cn; macros \*(CwVTOS\*(Cn, \*(CwSTOV\*(Cn, \*(CwSNLOCK\*(Cn, \*(CwSUNLOCK\*(Cn
.TE
.S
.XF
.H 4 "Process \s-2FST\s+2ype \(em \*(Cwproc\*(Cn"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.50i) l3f1.
uts/3b2/fs/proc/*
uts/3b2/master.d/proc	configuration file for \s-2PROC\s+2 \s-2FST\s+2ype boot module
uts/3b2/sys/fault.h	3B2 hardware fault defines
uts/3b2/sys/procfs.h	\s-2PROC\s+2 \s-2FST\s+2ype \*(Cwioctl\*(Cn commands \*(CwPIOC\*(Cn\f2\s-2XXX\s+2\f1, process status \*(CwPR_\*(Cn\f2\s-2XXX\s+2\f1
.TE
.S
.XF
.H 4 "Boot \s-2FST\s+2ype \(em \*(Cwbfs\*(Cn"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.50i) l3f1.
uts/3b2/fs/bfs/*
uts/3b2/master.d/bfs	configuration file for \s-2BFS\s+2 \s-2FST\s+2ype boot module
uts/3b2/sys/fs/bfs.h	\s-2BFS\s+2 \s-2FST\s+2ype data structures:  struct \*(Cwbfsvattr\*(Cn, \*(Cwbfsdirent\*(Cn
uts/3b2/sys/fs/bfs_compact.h	\s-2BFS\s+2 \s-2FST\s+2ype macros \*(CwBFS_CCT_\*(Cn\f2\s-2XXX\s+2\f1
.TE
.S
.XF
.H 4 "File Descriptor \s-2FST\s+2ype \(em \*(Cwfd\*(Cn"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.50i) l3f1.
uts/3b2/fs/fd/*
uts/3b2/master.d/fd
.TE
.S
.XF
.H 2 "\s-2STREAMS\s+2 \s-2I/O\s+2 Subsystem"
The \s-2STREAMS\s+2 character \s-2I/O\s+2 and networking architecture provides many benefits over other, older architectures, and greatly enhances the generality and portability of user software:
.BL
.LI
Code for hardware drivers is decoupled from the code for \s-2I/O\s+2 data transformation (such as networking protocols and terminal line disciplines).
As a result, only a small portion of the code must be changed when new \s-2I/O\s+2 hardware is installed on a system.
.LI
The ``mix-and-match'' nature of \s-2STREAMS\s+2 \s-2I/O\s+2 modules and drivers in the kernel lets user-programs assemble and disassemble new networking configurations on a running system; processing modules can be ``pushed'' and ``popped'' on a stream at will.
.LI
Most \s-2STREAMS\s+2 \s-2I/O\s+2 modules are source-portable to new implementations, and only need recompilation to run on a new system.
.LI
The \s-2STREAMS\s+2 \s-2I/O\s+2 architecture integrates different sorts of \s-2I/O\s+2 operations (such as support for user terminals and networking) seamlessly and indistinguishably to user programs.
.LE 1
\s-2STREAMS\s+2 \s-2I/O\s+2, first added to \*(R3, provides a uniform interface for implementing character \s-2I/O\s+2 devices and networking protocols in the kernel.
\*(R4 converts the terminal subsystem and pipe mechanism to \s-2STREAMS\s+2 \s-2I/O\s+2, and expands \s-2STREAMS\s+2 \s-2I/O\s+2 with enhancements and added features:
.DS CB
.LB 3 0 1 0 \(bu 1 1
.LI
A \f2Kernel Memory Allocator\f1, (\s-2\f2KMA\f1\s+2), a single kernel memory manager that allows different features to allocate and free memory as their needs vary, replacing the pre-\*(R4 scheme that statically assigned the amount of memory dedicated to a process.
.LI
A new mechanism, using \s-2KMA\s+2, dynamically allocates various \s-2STREAMS\s+2 \s-2I/O\s+2 data structures within the system thereby providing a more flexible scheme that does not waste space by preallocating structures.
.LI
An extended buffer allocation mechanism that supports memory-mapped \s-2I/O\s+2 saves overhead in copying data between different parts of the operating system.
.LI
A general mechanism, ``autopush'', allows an administrator to predefine a set of specified modules that should be pushed on a stream when a specified \s-2STREAMS\s+2 \s-2I/O\s+2 driver is opened.
.LI
A new type of multiplexing configuration has persistent links set up below a multiplexor and that exist without having an open file descriptor associated with them.
.LI
\s-2STREAMS\s+2 \s-2I/O\s+2 supports expedited data service by providing separate data paths and flow control for normal and expedited data.
This feature supports \s-2TCP\s+2 urgent data and \s-2OSI\s+2 protocols that use expedited data.
.LE
.DE
.HU "Dynamic Buffer Allocation"
\s-2STREAMS\s+2 \s-2I/O\s+2 drivers and modules temporarily store data in \s-2STREAMS\s+2 \s-2I/O\s+2 buffers, a commodity allocated and managed within the kernel.
In \*(R4, a set of these buffers is allocated when the system is initialized, and more buffers are dynamically allocated if the system requires them.
This occurs automatically, requiring no intervention from users or the system administrator.
.HU "Persistent \s-2PUSH\s+2"
A stream is configured by opening a \s-2STREAMS\s+2 \s-2I/O\s+2 device, and then optionally ``pushing'' one or more modules onto the stream to transform input and output data.
In the original \s-2STREAMS\s+2 \s-2I/O\s+2 implementation, a \s-2STREAMS\s+2 \s-2I/O\s+2 configuration was always dismantled when it was closed.
In \*(R4, a ``persistent'' configuration can be established in which the modules are not removed and the stream is not dismantled when the stream is closed.
Instead, the stream remains set up indefinitely, and processes that open it receive access to a preconfigured stream.
.HU "Pipes and Related Features"
To provide greater support for networking features \*(R4 includes a \s-2STREAMS\s+2 \s-2I/O\s+2-based pipe facility.
In \*(R4, \s-2STREAMS\s+2 \s-2I/O\s+2-based pipes provide all the facilities available from pipes in \*(R3 as well as a number of enhancements.
Because of the inherent nature of \s-2STREAMS\s+2 \s-2I/O\s+2, pipes become bi-directional, enabling data to flow in both directions.
Programmers can push processing modules on a pipe, poll a pipe, and send file descriptors across a pipe.
The named stream feature enables a programmer to associate the name of an existing file with one end of a stream and to obtain a unique connection to a server using a specialized line discipline module.
.HU "Named \s-2STREAMS\s+2"
General-purpose \s-2STREAMS\s+2 \s-2I/O\s+2-based Inter-Process Communication (\s-2IPC\s+2) uses Named \s-2STREAMS\s+2, a communication channel that is accessed by just opening a file.
Named \s-2STREAMS\s+2 allows an \s-2I/O\s+2 configuration (such as a \s-2STREAMS\s+2 networking connection) to be built and established then associated with a name in the \*(R4 file system.
All processes that open the file then have access to a configured, open connection, without doing any of the set-up work.
The configuration remains in place and connected until it is explicitly dismantled.
By default, each process that opens a named stream gains access to a common channel; however, it is also possible to configure the stream (by pushing the \*(Cwconnld\*(Cn module supplied with the system) so that each opening process receives a unique connection.
.HU "\s-2STREAMS\s+2 \s-2TTY\s+2 Subsystem"
The entire \s-2TTY\s+2 subsystem, including drivers for the system console and user terminals, line disciplines and multiplexing drivers for windowing terminal support, have all been implemented under the \s-2STREAMS\s+2 \s-2I/O\s+2 architecture.
This allows user terminals to be seamlessly integrated into networking configurations and offers great flexibility.
The performance of the \s-2STREAMS\s+2 \s-2I/O\s+2-based \s-2TTY\s+2 subsystem is the same as for the older, character-type \s-2TTY\s+2 subsystem.
.H 4 "\s-2STREAMS\s+2 \s-2I/O\s+2-based \s-2TTY\s+2s"
This feature provides all the standard terminal capabilities that are available in \*(R3 and includes a standard line discipline module \*(CwLDTERM\*(Cn that can be pushed on any stream that requires a terminal interface.
Within this architecture,
users can customize their environments by pushing and popping
additional \s-2STREAMS\s+2 \s-2I/O\s+2
modules as needed.
The \s-2STREAMS\s+2 \s-2I/O\s+2-based \s-2TTY\s+2 subsystem also provides support for \*(IX job control and the \*(IX \*(Cwtermios\*(Cn terminal interface.
Implementing the \s-2TTY\s+2 subsystem in \s-2STREAMS\s+2 \s-2I/O\s+2 offers many advantages including:
.DS CB
.BL
.LI
Decrease in complexity of the kernel
.LI
Modularity and flexibility of code
.LI
Reusable line discipline modules
.LI
Customization
.LI
Ease in adding new features to the terminal subsystem
.LE
.DE
.H 4 "\s-2STREAMS\s+2 \s-2I/O\s+2-based Pseudo-\s-2TTY\s+2s"
To support a windowing system, \*(R4 supports a \s-2STREAMS\s+2 \s-2I/O\s+2-based pseudo-\s-2TTY\s+2 subsystem.
A pseudo-\s-2TTY\s+2 subsystem enables two processes on the same system to communicate so that one process (the slave) acts as if it is interfacing to a terminal device, while the other process (the master) implements the terminal functions on the other side of the pseudo-\s-2TTY\s+2.
Any data written on the slave side of the pseudo-\s-2TTY\s+2 is given to the master side as input and vice versa.
\*(R4 implements the pseudo-\s-2TTY\s+2 subsystem using \s-2STREAMS\s+2 \s-2I/O\s+2 to let user-processes push processing modules onto pseudo-\s-2TTY\s+2s.
.HU "Driver-Kernel Interface/Device Driver Interface (\s-2DKI\s+2/\s-2DDI\s+2)"
\*(R4 supports the Driver-Kernel Interface (\s-2DKI\s+2), an interface between the \*(SV kernel and device driver software.
The \s-2DKI\s+2 specification defines the interface between kernel and drivers in areas that are neither hardware-specific nor boot-specific.
\s-2DKI\s+2 takes the first step toward promoting driver source portability between \*(SV implementations, and it expands the possibilities for changing the kernel, without breaking drivers.
\s-2DKI\s+2 makes it easier to port driver code across implementations of \*(R4 for different hardware; if the driver writer conforms to the \s-2DKI\s+2 where possible, the portability of the driver to other \*(R4 implementations is greatly enhanced. 
\s-2DKI\s+2 also specifies interfaces to file-system-types.
.P
\*(R4 also supports the Device Driver Interface (\s-2DDI\s+2), a superset of the \s-2DKI\s+2 that is specific to the implementation of \*(SV for the \*(Co 3B2 line of computers.
The \s-2DDI\s+2 enhances driver binary compatibility across releases of \*(SV for the 3B2 computers.
.P
The \s-2DDI\s+2 specification provides and documents a stable interface between device driver software and the rest of the kernel.
With such an interface, programmers can develop device driver software that is object-compatible across releases of \*(SV.
This can substantially reduce the amount of time and money an organizations must spend porting device drivers to each new release of \*(SV.
.P
Device drivers most often break in a new \*(SV release because kernel utility functions have changed their syntax or are unavailable, or because the offsets of particular fields in kernel data structures have changed.
At best, these changes require the device drivers to be recompiled, or, at worst, they can require a major redesign of the software.
.P
The \s-2DDI\s+2 specification solves these problems by documenting and guaranteeing the availability and syntax of kernel utility functions used by device drivers, and by providing access functions to operate on the contents of system data structures.
The \s-2DDI\s+2 specification augments existing device driver writer's guides, and enumerates all kernel utility functions available to device drivers, access methods for all kernel data objects accessible to device drivers, and the syntax of all routines that device drivers must provide to be configured into the \*(SV kernel.
.P
See the \f2Device Driver Interface/Driver-Kernel Interface (\s-2DDI\s+2/\s-2DKI\s+2) Reference Manual\f1 for more information.
.HU "\s-2STREAMS\s+2 \s-2I/O\s+2 Subsystem Modules"
The \s-2STREAMS\s+2 \s-2I/O\s+2 Subsystem Modules comprise source-code files from \*(Cw/usr/src/uts\*(Cn as listed under the following headings:
.XS L F
.LB 3 0 1 0 \(em 1 0
.LI "\*(CfSS\*(Cx" 1
\s-2STREAMS\s+2 \s-2I/O\s+2 services
.LI "\*(CfSM\*(Cx" 1
\s-2STREAMS\s+2 \s-2I/O\s+2 modules
.LI "\*(CfST\*(Cx" 1
\s-2STREAMS\s+2 \s-2TTY\s+2 subsystem
.LI "\*(CfSD\*(Cx" 1
\s-2STREAMS\s+2 device drivers
.LI "\*(CfSR\*(Cx" 1
\s-2STREAMS\s+2 support routines
.LE 1
.XF
.SK
.HU "\*(CfSS\*(Cx \(em \s-2STREAMS\s+2 \s-2I/O\s+2 services"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/io/clone.c	\s-2STREAMS\s+2 clone driver
uts/3b2/io/log.c	\s-2STREAMS\s+2 log driver
uts/3b2/io/sad.c	\s-2STREAMS\s+2 admin driver (\*(Cwsad\*(Cn) for autopush and module name verification
uts/3b2/io/sp.c		\s-2STREAMS\s+2 pipe (\*(Cwsp\*(Cn) driver
uts/3b2/io/stream.c	\s-2STREAMS\s+2 message and data buffer management:  \*(Cwallocb\*(Cn, \*(Cwputq\*(Cn, etc.
uts/3b2/master.d/clone	configuration file for \*(Cwclone\*(Cn boot module
uts/3b2/master.d/log	configuration file for \*(Cwlog\*(Cn boot module
uts/3b2/master.d/sad	configuration file for \*(Cwsad\*(Cn boot module
uts/3b2/master.d/sp	configuration file for \*(Cwsp\*(Cn boot module
uts/3b2/os/streamio.c	\s-2STREAMS\s+2 \s-2I/O\s+2 interface and syscalls:  \*(Cwstropen\*(Cn, \*(Cwstrread\*(Cn, etc.
uts/3b2/os/strsubr.c	\s-2STREAMS\s+2 support routines:  \*(Cwstrinit\*(Cn, \*(Cwallocq\*(Cn, \*(Cwqueuerun\*(Cn, etc.
uts/3b2/sys/log.h	\s-2STREAMS\s+2 log driver structures
uts/3b2/sys/poll.h	structures and defines for use with the \*(Cwpoll\*(Cn syscall
uts/3b2/sys/sad.h	structures and defines for \s-2STREAMS\s+2 administrative driver (\*(Cwsad\*(Cn)
uts/3b2/sys/stream.h	\s-2STREAMS\s+2 data structures:  struct \*(Cwqueue\*(Cn, \*(Cwmodule_info\*(Cn, etc.
uts/3b2/sys/strlog.h	\s-2STREAMS\s+2 log driver interface defines
uts/3b2/sys/strmdep.h	machine dependent \s-2STREAMS\s+2 macros
uts/3b2/sys/stropts.h	\s-2STREAMS\s+2 options, \*(Cwioctl\*(Cn commands and macros
uts/3b2/sys/strppc.h	\s-2STREAMS\s+2 version of \s-2PORTS\s+2 board interface defines
uts/3b2/sys/strpump.h	3B2 \s-2PORTS\s+2 board firmware pump interface
uts/3b2/sys/strstat.h	\s-2STREAMS\s+2 statistics
uts/3b2/sys/strsubr.h	internal data structures for \*(Cwstrsubr.c\*(Cn
.TE
.S
.XF
.HU "\*(CfST\*(Cx \(em \s-2STREAMS\s+2 \s-2TTY\s+2 subsystem"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/io/gentty.c	indirect driver for user's controlling \s-2TTY\s+2
uts/3b2/io/partab.c	character parity table for \s-2TTY\s+2 drivers
uts/3b2/io/pckt.c	pseudo-terminal packetizing module
uts/3b2/io/pt.mk	make file for \s-2STREAMS\s+2 \*(Cwpt\*(Cn module
uts/3b2/io/ptem.c	pseudo-terminal hardware emulator
uts/3b2/io/ptm.c	pseudo-terminal master driver
uts/3b2/io/pts.c	pseudo-terminal slave driver
uts/3b2/io/ttcompat.c	terminal \*(Cwioctl\*(Cn compatibility module for \s-2XENIX\s+2, \s-2BSD\s+2 and V7
uts/3b2/io/ttcompat.mk	make procedure for \s-2STREAMS\s+2 \*(Cwttcompat\*(Cn module
uts/3b2/master.d/gentty	configuration file for \*(Cwgentty\*(Cn boot module
uts/3b2/master.d/pckt	configuration file for \*(Cwpckt\*(Cn boot module
uts/3b2/master.d/ptem	configuration file for \*(Cwptem\*(Cn boot module
uts/3b2/master.d/ptm	configuration file for \*(Cwptm\*(Cn boot module
uts/3b2/master.d/pts	configuration file for \*(Cwpts\*(Cn boot module
uts/3b2/master.d/ttcompat	configuration file for \*(Cwttcompat\*(Cn boot module
uts/3b2/sys/crtctl.h	\s-2CRT\s+2 control codes and attributes
uts/3b2/sys/ioccom.h	\s-2BSD\s+2 compatible common \*(Cwioctl\*(Cn commands
uts/3b2/sys/ptem.h	pseudo-terminal hardware emulation structure:  struct \*(Cwptem\*(Cn
uts/3b2/sys/ptms.h	structures and defines for pseudo-terminal driver
uts/3b2/sys/stermio.h	\*(Cwioctl\*(Cn commands for control channels, terminals, and printers
uts/3b2/sys/strtty.h	\s-2STREAMS\s+2 \s-2TTY\s+2 structures \*(Cwt_buf\*(Cn and \*(Cwstrtty\*(Cn; related defines
uts/3b2/sys/tcon.h	\s-2STREAMS\s+2 \*(Cwtcon\*(Cn driver for remote login; typedef struct \*(CwPACKET\*(Cn
uts/3b2/sys/termio.h	\s-2TTY\s+2 \*(Cwioctl\*(Cn interface:  struct \*(Cwtermio\*(Cn and related defines
uts/3b2/sys/termios.h	\s-2TTY\s+2 \*(Cwioctl\*(Cn interface:  struct \*(Cwtermios\*(Cn and related defines
uts/3b2/sys/termiox.h	extended \s-2TTY\s+2 \*(Cwioctl\*(Cn interface:  struct \*(Cwtermiox\*(Cn and related defines
uts/3b2/sys/ttcompat.h	terminal \*(Cwioctl\*(Cn compatibility structure
uts/3b2/sys/ttold.h	old \s-2TTY\s+2 \*(Cwioctl\*(Cn interface:  struct \*(Cwsgttyb\*(Cn and related defines
uts/3b2/sys/tty.h	\s-2TTY\s+2 subsystem structures and defines; struct \*(Cwclist\*(Cn
uts/3b2/sys/ttychars.h	User visible structures and constants for \s-2TTY\s+2 subsystem
uts/3b2/sys/ttydev.h	Hardware specific terminal definitions
.TE
.S
.XF
.SK
.HU "\*(CfSM\*(Cx \(em \s-2STREAMS\s+2 \s-2I/O\s+2 modules"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/io/connld.c	unique connection establishment module
uts/3b2/io/connld.mk	make file for connection establishment module
uts/3b2/io/ldterm.c	terminal line discipline module
uts/3b2/io/ldterm.mk	make file for terminal line discipline module
uts/3b2/io/pipemod.c	flush queues for \s-2STREAMS\s+2-based pipes
uts/3b2/io/pipemod.mk	make file for \s-2STREAMS\s+2 pipe module
uts/3b2/master.d/connld	configuration file for \*(Cwconnld\*(Cn boot module
uts/3b2/master.d/ldterm	configuration file for \*(Cwldterm\*(Cn boot module
uts/3b2/master.d/pipemod	configuration file for \*(Cwpipemod\*(Cn boot module
uts/3b2/sys/euc.h	expanded character set structure for line discipline module
uts/3b2/sys/eucioctl.h	\*(Cwioctl\*(Cn structure for expanded character set
uts/3b2/sys/ldterm.h	line discipline structure and translation tables
.TE
.S
.XF
.HU "\*(CfSD\*(Cx \(em \s-2STREAMS\s+2 device drivers"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/io/hde.c	hard disk error log driver
uts/3b2/io/id.c	3B2 integral disk driver stubs for \*(Cwsddrv.c\*(Cn
uts/3b2/io/if.c	3B2 integral floppy disk driver
uts/3b2/io/iuart.c	3B2 integral \s-2DUART\s+2 driver
uts/3b2/io/lla_ppc.c	3B2 \s-2PORTS\s+2 driver low-level access routines
uts/3b2/io/mem.c	driver for \*(Cw/dev/mem\*(Cn and \*(Cw/dev/kmem\*(Cn
uts/3b2/io/nppc.c	3B2 \s-2PORTS\s+2 board driver
uts/3b2/io/nppc.mk	make file for 3B2 \s-2PORTS\s+2 board driver
uts/3b2/io/physdsk.c	\*(Cwdma_breakup\*(Cn routine used by 3B2 integral hard/floppy disk drivers
uts/3b2/io/prf.c	kernel profiler driver
uts/3b2/io/sddrv.c	indirect access to disk driver routines based on device number
uts/3b2/io/sxt.c	shell layers multiplexed channel driver
uts/3b2/master.d/hdelog	configuration file for \*(Cwhdelog\*(Cn boot module
uts/3b2/master.d/idisk	configuration file for \*(Cwidisk\*(Cn boot module
uts/3b2/master.d/iuart	configuration file for \*(Cwiuart\*(Cn boot module
uts/3b2/master.d/mem	configuration file for \*(Cwmem\*(Cn boot module
uts/3b2/master.d/ports	configuration file for \s-2PORTS\s+2 boot module
uts/3b2/master.d/prf	configuration file for \*(Cwprf\*(Cn boot module
uts/3b2/master.d/sxt	configuration file for \*(Cwsxt\*(Cn boot module
uts/3b2/sys/ct.h	3B2 cartridge tape \*(Cwioctl\*(Cn commands, flags and error codes
uts/3b2/sys/ct_dep.h	3B2 cartridge tape firmware command structure
uts/3b2/sys/ct_lla.h	3B2 cartridge tape low level access defines
uts/3b2/sys/diskette.h	\*(Cwioctl\*(Cn commands \*(CwFORMAT\*(Cn and \*(CwVERIFY\*(Cn; related defines
uts/3b2/sys/dsd.h	3B2 floating console structures and defines
uts/3b2/sys/du_dep.h	\s-2PORTS\s+2 `dumb' \s-2I/O\s+2 defines
uts/3b2/sys/elog.h	error logging and disk \s-2I/O\s+2 statistics
uts/3b2/sys/ertyp.h	3B2 specific hardware error types; not used in kernel
uts/3b2/sys/hdeioctl.h	hard disk error log driver \*(Cwioctl\*(Cn interface
uts/3b2/sys/hdelog.h	hard disk error log structures and defines
uts/3b2/sys/id.h	3B2 integral disk structures and defines
uts/3b2/sys/idtab.h	\s-2RFS\s+2 \*(Cwuid\*(Cn/\*(Cwgid\*(Cn translation table
uts/3b2/sys/if.h	3B2 floppy disk structures and defines
uts/3b2/sys/io.h	hard disk partition map; not used in kernel
uts/3b2/sys/iu.h	3B2 \s-2DUART\s+2 structure and defines
uts/3b2/sys/lla_ppc.h	macros for low-level access to \s-2PORTS\s+2 boards
uts/3b2/sys/nsxt.h	shell layers structures and defines
uts/3b2/sys/pp_dep.h	\s-2PORTS\s+2 \s-2I/O\s+2 defines
uts/3b2/sys/ppc.h	\s-2PORTS\s+2 board interface defines
uts/3b2/sys/ppc_lla.h	\s-2PORTS\s+2 board low-level access macros
uts/3b2/sys/strlla_ppc.h	\s-2STREAMS\s+2 version of macros for low-level access to \s-2PORTS\s+2 boards
.TE
.S
.XF
.SK
.HU "\*(CfSR\*(Cx \(em \s-2STREAMS\s+2 support routines"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/io/drivers.mk	make file for \s-2STREAMS\s+2 \s-2I/O\s+2 drivers
uts/3b2/io/io.mk
uts/3b2/io/lib.io.mk
uts/3b2/os/ddi.c	standardized device driver interface (\s-2DDI\s+2)
uts/3b2/os/kperf.c	kernel performance logging routine \*(Cwkperf_write\*(Cn
uts/3b2/os/predki.c	dummy interface for pre-\s-2DDI\s+2 device drivers
uts/3b2/sys/cio_defs.h	common status and command defines for all 3B2 \s-2I/O\s+2
uts/3b2/sys/ddi.h	flags and undefines for standardized device driver interface (\s-2DDI\s+2)
uts/3b2/sys/devcode.h	3B2 device codes \*(CwD_\*(Cn\f2\s-2XXX\s+2\f1 and subdevice codes \*(CwSD_\*(Cn\f2\s-2XXX\s+2\f1
uts/3b2/sys/dlpi.h	data link protocol interface structures and defines
uts/3b2/sys/dma.h	3B2 \s-2DMA\s+2 controller and \s-2DMA\s+2 page registers
uts/3b2/sys/iobd.h	3B2 \s-2I/O\s+2 board slots and related defines
uts/3b2/sys/iobuf.h	struct \*(Cwiobuf\*(Cn:  list head for block device buffer queue
uts/3b2/sys/lihdr.h	data link level interface structures and defines
uts/3b2/sys/lla.h	macros for low-level access to smart \s-2I/O\s+2 boards
uts/3b2/sys/netconfig.h	network provider selection and configuration
uts/3b2/sys/netid.h	macros to manipulate network identifiers
uts/3b2/sys/open.h	types of \*(Cwopen\*(Cn/\*(Cwclose\*(Cn calls passed to drivers, \*(CwOTYP_\*(Cn\f2\s-2XXX\s+2\f1
uts/3b2/sys/protosw.h	protocol switch table: struct \*(Cwprotosw\*(Cn
uts/3b2/sys/pump.h	structure and defines used in pumping smart \s-2I/O\s+2 boards
uts/3b2/sys/queue.h	structures and macros for access to board request/completion queues
uts/3b2/sys/syslog.h	interface to \s-2STREAMS\s+2 log driver
uts/3b2/sys/trace.h	per trace structure; not used in kernel
uts/3b2/sys/uio.h	\s-2I/O\s+2 parameters:  struct \*(Cwuio\*(Cn, struct \*(Cwiovec\*(Cn
uts/3b2/sys/vtoc.h	3B2 volume table of contents and related structures
.TE
.S
.XF
.H 2 "Memory Management Subsystem"
\*(R4 incorporates a third-generation memory management architecture that replaces both the original \*(UX system swapping architecture and the \s-2REGIONS\s+2 demand-paged virtual memory architecture that superceded the swapping architecture and was first introduced in \s-2SVR2.1\s+2.
The \*(R4 memory management implementation is based on the \s-2VM\s+2 (for \f2Virtual Memory\f1) architecture previously provided in the Sun\s-2OS\s+2 operating system.
The \*(R4 memory management architecture provides valuable benefits and capabilities for system porters and providers who implement the operating system on new hardware architectures.
It also provides several valuable benefits for system users.
.P
The customary benefits of a demand-paged virtual memory implementation are the efficient use of a system's main memory and the capability to execute programs much larger than the physical memory provided by the system.
The \*(R4 \s-2VM\s+2 implementation provides these benefits, as well as the more distinctive advantages listed in the sections below.
.HU "Isolation of Hardware-Dependent Code"
The \*(R4 reference implementation of the virtual memory subsystem isolates all hardware-dependent portions of the subsystem in one small block of \*(Cc language source code.
This block comprises about 10% of the source code in the memory management system; the remainder of the code is portable across different hardware and system architectures.
This high degree of kernel code portability is a valuable benefit for system providers.
.P
Most of the hardware-dependent code comprises a well-defined Memory-Management Unit (\s-2MMU\s+2) interface.
This interface allows the architecture to be implemented on top of different \s-2MMU\s+2 hardware quite easily.
.HU "Flexible Use of Disk Space for Swapping"
\*(SV temporarily stores (or, \f2swaps\f1) pages of data from the system's main memory to an ordinary file on one of the \*(UX system's disks.
Older systems normally swap memory pages to a formatted physical device partition of fixed size.
Swapping to a file accommodates the needs of diskless systems and allows for the most efficient use of disk space.
.HU "Portable Implementation"
The ``multi-level store'' implementation of \s-2VM\s+2 allows a system to address extremely large ranges of virtual address space using only a 32-bit hardware address space.
A 32-bit physical address space is now the industry standard for central processors and hardware memory management units.
\*(R4 avoids introducing any low-level hardware dependencies that could be difficult or impossible to port to existing hardware architectures.
.HU "Mapped Files"
One by-product of the \s-2VM\s+2 architecture is that it makes an entirely new style of file \s-2I/O\s+2 possible for user programs.
This new style of input and output is called ``mapped-files,'' and is provided by the \*(Cwmmap()\*(Cn family of routines.
.P
This mapped-file capability allows a file to be explicitly mapped into the address space of a user program, where the file can then be manipulated just as local data within the program is manipulated.
Essentially, a mapped-file may be read from and written to as though it was a local character array.
There is no inherent limit on the number of files that may be mapped into a process's address space.
The \*(Cwmmap()\*(Cn routines allow an entire file, a portion of a file or a device file to be mapped into a process's address space.
.P
In addition to making user programs easier to write, this feature can also make them more efficient.
This optimization occurs because the system manages all input and output between the system's main memory and the physical disk.
All disk \s-2I/O\s+2 is optimized automatically, rather than relying on the skill of an application programmer and a particular set of local parameters for optimization within the user program.
.HU "Shared Memory"
\*(SV provides a variety of shared-memory capabilities for user programs:
.BL
.LI
The \f3Mapped File\f1 capability described earlier can be considered a form of shared memory, because the system maps the same copy of a file into all processes' memory space, if several processes map a file simultaneously.
.LI
The traditional \*(SV shared memory facilities provided by the \*(Cwshmat()\*(Cn family of routines continues to be available.
These mechanisms have been available since \*(R2.
.LI
\f3\s-2XENIX\s+2 shared memory\f1 semantics are supported in \*(R4, including full source-code compatibility with older \s-2XENIX\s+2 systems [see \f2\s-2XENIX\s+2 System Compatibility Package\f1].
.LE
.HU "Memory Management Subsystem Modules"
The Memory Management Subsystem Modules comprise source-code files from \*(Cw/usr/src/uts\*(Cn as listed under the following headings:
.XS L F
.LB 3 0 1 0 \(em 1 0
.LI "\*(CfMM\*(Cx" 1
Memory management
.LI "\*(CfMS\*(Cx" 1
Memory segmentation
.LI "\*(CfMP\*(Cx" 1
Memory paging
.LI "\*(CfMX\*(Cx" 1
Memory transfer
.LE 1
.XF
.SK
.HU "\*(CfMM\*(Cx \(em Memory management"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/sys/immu.h	3B2 memory management hardware defines and macros
uts/3b2/vm/as.h	struct \*(Cwas\*(Cn and defines for use with virtual address spaces
uts/3b2/vm/hat.h	address translation defines \*(CwHAT_\*(Cn\f2\s-2XXX\s+2\f1
uts/3b2/vm/reboot.h	reboot modes and flags to \*(Cwinit\*(Cn
uts/3b2/vm/vm_as.c	virtual address space manipulation
uts/3b2/vm/vm_hat.c	hardware address translation
uts/3b2/vm/vm_hat.h	struct \*(Cwhat\*(Cn and related defines
.TE
.S
.XF
.HU "\*(CfMS\*(Cx \(em Memory segmentation"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/vm/bootconf.h	boot time configuration information
uts/3b2/vm/kernel.h	defines a few global variables
uts/3b2/vm/seg.h	struct \*(Cwseg\*(Cn and defines for use with object independent segments
uts/3b2/vm/seg_dev.c	segment manipulation for character special devices
uts/3b2/vm/seg_dev.h	structures and defines for segment object type `\*(Cwdev\*(Cn'
uts/3b2/vm/seg_kmem.c	segment manipulation for misc kernel mapping
uts/3b2/vm/seg_kmem.h	structures and defines for segment object type `\*(Cwkmem\*(Cn'
uts/3b2/vm/seg_map.c	segment manipulation for kernel mapping to a file
uts/3b2/vm/seg_map.h	structures and defines for segment object type `\*(Cwmap\*(Cn'
uts/3b2/vm/seg_u.c	segment manipulation for U-area
uts/3b2/vm/seg_u.h	structures and defines for segment object type `\*(Cwu\*(Cn'
uts/3b2/vm/seg_vn.c	segment manipulation for user mapping to a file
uts/3b2/vm/seg_vn.h	structures and defines for segment object type `\*(Cwvn\*(Cn'
uts/3b2/vm/vm_seg.c	object independent segment manipulation
.TE
.S
.XF
.HU "\*(CfMP\*(Cx \(em Memory paging"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/io/kmacct.c	kernel memory allocator accounting interface code file
uts/3b2/io/kmacct.mk	kernel memory allocator accounting interface make file
uts/3b2/master.d/kma	configuration file for \s-2KMA\s+2 boot module
uts/3b2/master.d/kmacct	configuration file for \s-2KMACCT\s+2 boot module
uts/3b2/os/kma.c	kernel memory allocation routines \*(Cwkmem_alloc\*(Cn, \*(Cwkmem_free\*(Cn, etc.
uts/3b2/os/sched.c	physical memory scheduler:  \*(Cwswapout\*(Cn, \*(Cwsched\*(Cn
uts/3b2/os/vm_pageout.c	implements page replacement policy
uts/3b2/sys/kmacct.h	kernel memory allocator structures:  struct \*(Cwkmasym\*(Cn, \*(Cwkmabuf\*(Cn
uts/3b2/sys/kmem.h	kernel memory allocator defines \*(CwKM_SLEEP\*(Cn, \*(CwKM_NOSLEEP\*(Cn
uts/3b2/sys/swap.h	structures and defines for swap file manipulation
uts/3b2/sys/tuneable.h	memory-related tunable parameters:  struct \*(Cwtune\*(Cn, with fields \*(Cwt_\*(Cn\f2xxx\f1
uts/3b2/vm/anon.h	structures and defines for anonymous pages
uts/3b2/vm/page.h	struct \*(Cwpage\*(Cn and related defines
uts/3b2/vm/pvn.h	declares routines used to manage memory as a cache of paged v-nodes
uts/3b2/vm/vm_anon.c	management of anonymous pages
uts/3b2/vm/vm_page.c	management of physical pages
uts/3b2/vm/vm_pvn.c	support for v-node operations that deal with pages
uts/3b2/vm/vm_swap.c	routines for swap file manipulation
uts/3b2/vm/vm_vpage.c	virtual page utilities:  \*(Cwvpage_lock\*(Cn, \*(Cwvpage_unlock\*(Cn
uts/3b2/vm/vpage.h	information per virtual page:  struct \*(Cwvpage\*(Cn
.TE
.S
.XF
.SK
.HU "\*(CfMX\*(Cx \(em Memory transfer"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/os/move.c	data movement between kernel and user space:  \*(Cwiomove\*(Cn, \*(Cwcpass\*(Cn, etc.
uts/3b2/os/vm_meter.c	memory management statistical data collector
uts/3b2/os/vm_subr.c	miscellaneous memory management routines
uts/3b2/sys/mman.h	defines for use with memory management syscalls
uts/3b2/sys/sbd.h	3B2 system board defines
uts/3b2/sys/vm.h	includes \*(Cwvmparam.h\*(Cn, \*(Cwvmmac.h\*(Cn, \*(Cwvmmeter.h\*(Cn, \*(Cwvmsystm.h\*(Cn
uts/3b2/sys/vmmac.h	defines various macros for memory management
uts/3b2/sys/vmmeter.h	structures and defines used in memory management activity logging
uts/3b2/sys/vmparam.h	defines of various constants for memory management subsystem
uts/3b2/sys/vmsystm.h	memory management structures and global variables
uts/3b2/vm/debugger.h	kernel debugger interface
uts/3b2/vm/faultcode.h	\*(CwSIGBUS\*(Cn and \*(CwSIGSEGV\*(Cn exception codes
uts/3b2/vm/pte.h	empty file
uts/3b2/vm/rm.h	resource manager defines
uts/3b2/vm/trace.h	memory management trace point defines
uts/3b2/vm/vm.mk	memory management make file
uts/3b2/vm/vm_machdep.c	machine dependent virtual memory support
uts/3b2/vm/vm_rm.c	virtual memory resource manager
uts/3b2/vm/vmlog.h	memory management event logging interface
.TE
.S
.XF
.H 2 "Process Management Subsystem"
\*(R4 includes many features in its process management subsystem that enhance the portability as well as the usefulness of \*(SV.
These enhancements make this part of the kernel easier to port to new hardware and to extend, and also make \*(SV more useful for time-critical programs, such as real-time control applications.
.HU "Switchable Schedulers"
A process-scheduler is kernel code that determines what program will run, when and for how long.
\*(R4 includes a new process-scheduler architecture that features a modular, switchable interface to allow several different classes of process-schedulers to reside on the system simultaneously.
Control of the system is switched from one scheduler to another on a running system as a result of commands from user programs.
\*(R4 provides two different process-schedulers described below:
.BL
.LI
\f3Fair-Share Time-Sharing Scheduler\f1.
This is the traditional \*(SV process-scheduling mechanism.
.LI
\f3Fixed-Priority Tunable Scheduler\f1.
This scheduler is new in \*(R4, and features the ability to assign a fixed priority to a user process, and to tune the size of the time-slice assigned to the process when it runs.
These adjustments are both made by user programs, and are particularly useful for real-time applications and other time-critical programs.
.LE 1
.HU "User-Controlled Process Scheduler"
\*(R4 supports both the traditional scheduling policy and a new real-time scheduling policy.
Each process has its own scheduler properties, which a user can change while the process is running.
The scheduler runs each process for a configurable ``time slice,'' then gives other processes a chance to run.
The new scheduler can be visualized as a network of multi-level feedback queues in which each priority level has a time-slice associated with it, and this time-slice is tunable.
.P
Process scheduling priorities fall into two distinct categories, namely: \f2time-sharing\f1 and \f2real-time\f1.
Accordingly, a process is either a \f2time-sharing\fP process or a \f2real-time\fP process depending on its current priority.
The time-sharing scheduler policy manages processes in a traditional manner: it dynamically adjusts time-sharing process priorities to give good response to all interactive processes.
The priority of a real-time process stays fixed until a further explicit request via a system call.
With this new scheduler, a runnable \f2real-time\fP process always gets served by the \s-2CPU\s+2 before any \f2time-sharing\fP process.
Processes having the same real-time priorities are served in round-robin fashion.
Once a \f2real-time\fP process gets control of the \s-2CPU\s+2, it executes until one of the following events occurs:
.AL
.LI
The process is preempted by a higher priority process becoming runnable.
.LI
The process enters a resource or event wait state (i.e. sleeping).
.LI
The current time slice expires.
.LI
The process exits.
.LE 1
The real-time scheduler policy never changes a real-time process priority except as the result of an explicit user request to change it.
Moreover, all real-time processes run before any other processes.
Thus, applications can perform time-critical tasks using real-time processes with the assurance that these processes always get priority over all other processes.
Using real-time processes, an application can guarantee fast, deterministic response to its critical processes, on the order of microseconds rather than seconds.
.HU "Kernel Preemption"
Also to support real-time processing, \*(R4 provides new pre-emption points in the kernel \(en points at which the scheduler may switch control of the \s-2CPU\s+2 from one process to another.
The additional pre-emption points improve system response time for high-priority processes.
.P
The \*(SV kernel contains many discrete preemption points at which one process may relinquish control of the system to another.
In \*(R4, many new preemption points were added to greatly increase the responsiveness of the system.
This feature allows user programs to respond more quickly to external stimuli.
Discrete preemption points provide the required responsiveness in a clear, reliable implementation that minimizes the possibility of scheduling deadlocks and operates with very low overhead.
This increased responsiveness is particularly useful for real-time applications and other time-critical programs.
.HU "Process Management Subsystem Modules"
The Process Management Subsystem Modules comprise source-code files from \*(Cw/usr/src/uts\*(Cn as listed under the following headings:
.XS L F
.LB 3 0 1 0 \(em 1 0
.LI "\*(CfPP\*(Cx" 1
Process creation, deletion and related functions
.LI "\*(CfPS\*(Cx" 1
Process scheduling
.LI "\*(CfPM\*(Cx" 1
Process memory management
.LI "\*(CfPI\*(Cx" 1
Inter-process communication
.LE 1
.XF
.SK
.HU "\*(CfPP\*(Cx \(em Process creation, deletion and related functions"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/os/acct.c	process accounting:  \*(Cwacct\*(Cn syscall
uts/3b2/os/core.c	dump process memory to file `\*(Cwcore\*(Cn'
uts/3b2/os/exit.c	process termination:  \*(Cwexit\*(Cn, \*(Cwwait\*(Cn syscalls
uts/3b2/os/fork.c	process creation:  \*(Cwfork\*(Cn, \*(Cwvfork\*(Cn syscalls
uts/3b2/os/pgrp.c	process group management
uts/3b2/os/pid.c	process identification routines
uts/3b2/os/scalls.c	process management syscalls:  \*(Cwsetuid\*(Cn, \*(Cwkill\*(Cn, \*(Cwalarm\*(Cn, \*(Cwumask\*(Cn
uts/3b2/os/session.c	process session management
uts/3b2/os/sig.c	process signalling:  \*(Cwptrace\*(Cn syscall
uts/3b2/os/slp.c	process synchronization:  \*(Cwsleep\*(Cn, \*(Cwwakeup\*(Cn, \*(Cwsetrun\*(Cn, etc.
uts/3b2/sys/acct.h	process accounting:  struct \*(Cwacct\*(Cn, with fields \*(Cwac_\*(Cn\f2xxx\f1
uts/3b2/sys/pcb.h	3B2 process control block:  struct \*(Cwpcb\*(Cn, \*(Cwkpcb\*(Cn
uts/3b2/sys/proc.h	process data:  struct \*(Cwproc\*(Cn, with fields \*(Cwp_\*(Cn\f2xxx\f1
uts/3b2/sys/prsystm.h	declarations of \*(Cw/proc\*(Cn file-system routines
uts/3b2/sys/reg.h	location of saved 3B2 registers in U-area \*(Cwu.u_ar0[]\*(Cn
uts/3b2/sys/regset.h	3B2 general purpose register set
uts/3b2/sys/resource.h	struct \*(Cwrlimit\*(Cn and defines for resource limit syscalls
uts/3b2/sys/session.h	defines for session control; struct \*(Cwsess\*(Cn
uts/3b2/sys/siginfo.h	reason codes for various signals, macros \*(Cwsi_\*(Cn\f2xxx\f1, and struct \*(Cwsiginfo\*(Cn
uts/3b2/sys/signal.h	signal numbers \*(CwSIG\*(Cn\f2\s-2XXX\s+2\f1 and macros \*(CwSIG_\*(Cn\f2\s-2XXX\s+2\f1
uts/3b2/sys/sysconfig.h	commands for \*(Cw_sysconfig\*(Cn syscall
uts/3b2/sys/ucontext.h	user process context:  struct \*(Cwucontext\*(Cn
uts/3b2/sys/user.h	process data not needed while swapped:  struct \*(Cwuser\*(Cn, with fields \*(Cwu_\*(Cn\f2xxx\f1
uts/3b2/sys/wait.h	defines for use with \*(Cwwait\*(Cn and \*(Cwwaitid\*(Cn syscalls
.TE
.S
.XF
.HU "\*(CfPS\*(Cx \(em Process scheduling"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/disp/disp.c	class-independent process scheduler code file
uts/3b2/disp/disp.mk	class-independent process scheduler make file
uts/3b2/disp/priocntl.c	process priority control:  \*(Cwpriocntlsys\*(Cn, \*(Cwnice\*(Cn
uts/3b2/disp/rt.c	real-time class specific scheduler:  \*(Cwrt_init\*(Cn, \*(Cwrt_fork\*(Cn
uts/3b2/disp/sysclass.c	system-class process interface:  \*(Cwsys_fork\*(Cn, \*(Cwsys_sleep\*(Cn, \*(Cwsys_wakeup\*(Cn
uts/3b2/disp/ts.c	time-sharing class specific scheduler:  \*(Cwts_init\*(Cn, \*(Cwts_fork\*(Cn, \*(Cwts_preempt\*(Cn
uts/3b2/master.d/rt	configuration file for \*(Cwrt\*(Cn boot module
uts/3b2/master.d/ts	configuration file for \*(Cwts\*(Cn boot module
uts/3b2/ml/cswitch.s	non-local goto:  \*(Cwsetjmp\*(Cn and \*(Cwlongjmp\*(Cn
uts/3b2/os/cred.c	process credential manipulation routines \*(Cwcrget\*(Cn, \*(Cwsuser\*(Cn, etc.
uts/3b2/os/procset.c	process set management:  \*(Cwprocinset\*(Cn, \*(Cwcheckprocset\*(Cn
uts/3b2/sys/class.h	struct \*(Cwclass\*(Cn, \*(Cwclassfuncs\*(Cn and macros \*(CwCL_\*(Cn\f2\s-2XXX\s+2\f1
uts/3b2/sys/cred.h	process credentials:  struct \*(Cwcred\*(Cn
uts/3b2/sys/disp.h	scheduler queue entry:  struct \*(Cwdispq\*(Cn, macro \*(CwPREEMPT\*(Cn
uts/3b2/sys/priocntl.h	structs and defines (\*(CwPC_\*(Cn\f2\s-2XXX\s+2\f1) for use with the \*(Cwpriocntl\*(Cn syscall
uts/3b2/sys/procset.h	structs and defines for dealing with sets of processes
uts/3b2/sys/rt.h	real-time scheduler structs \*(Cwrtdpent\*(Cn, \*(Cwrtproc\*(Cn
uts/3b2/sys/rtpriocntl.h	real-time priority control structs \*(Cwrtparms\*(Cn, \*(Cwrtinfo\*(Cn, \*(Cwrtadmin\*(Cn
uts/3b2/sys/ts.h	time-sharing scheduler structs \*(Cwtsdpent\*(Cn, \*(Cwtsproc\*(Cn
uts/3b2/sys/tspriocntl.h	time-sharing priority control structs \*(Cwtsparms\*(Cn, \*(Cwtsinfo\*(Cn, \*(Cwtsadmin\*(Cn
.TE
.S
.XF
.SK
.HU "\*(CfPM\*(Cx \(em Process memory management"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/exec/coff/coff.c	routines to handle Common Object File Format (\s-2COFF\s+2) object files
uts/3b2/exec/coff/coff.mk	make file for routines to handle \s-2COFF\s+2 object files
uts/3b2/exec/elf/elf.c	routines to handle Extensible Linker Format (\s-2ELF\s+2) object files
uts/3b2/exec/elf/elf.mk	make file for routines to handle \s-2ELF\s+2 object files
uts/3b2/exec/exec.mk	make file for process execution routines
uts/3b2/exec/intp/intp.c	routines to deal with `\*(Cw#!\*(Cn' interpreter files
uts/3b2/exec/intp/intp.mk	make file for interpreter routines
uts/3b2/master.d/coff	configuration file for \s-2COFF\s+2 boot module
uts/3b2/master.d/elf	configuration file for \s-2ELF\s+2 boot module
uts/3b2/master.d/intp	configuration file for \*(Cwintp\*(Cn boot module
uts/3b2/os/exec.c	process execution:  \*(Cwexece\*(Cn, \*(Cwexec\*(Cn syscalls
uts/3b2/os/grow.c	process memory management:  \*(Cwbrk\*(Cn, \*(Cwmmap\*(Cn, \*(Cwmunmap\*(Cn, etc.
uts/3b2/os/lock.c	process, text and data segment locks
uts/3b2/sys/auxv.h	type \*(Cwauxv_t\*(Cn and related defines
uts/3b2/sys/elf.h	\s-2ELF\s+2 object file format and related defines
uts/3b2/sys/elf_386.h	\s-2ELF\s+2 relocation types for 386 machines
uts/3b2/sys/elf_M32.h	\s-2ELF\s+2 relocation types for 3B2 machines
uts/3b2/sys/elf_SPARC.h	\s-2ELF\s+2 relocation types for \s-2SPARC\s+2 machines
uts/3b2/sys/elftypes.h	typedefs for \s-2ELF\s+2 object files
uts/3b2/sys/exec.h	process execution stack:  struct \*(Cwuarg\*(Cn
uts/3b2/sys/lock.h	flags for process and text locking
uts/3b2/sys/sgs.h	defines for 3B2 software generation system
.TE
.S
.XF
.HU "\*(CfPI\*(Cx \(em Inter-process communication"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/master.d/ipc	configuration file for \s-2IPC\s+2 boot module
uts/3b2/master.d/msg	configuration file for \*(Cwmsg\*(Cn boot module
uts/3b2/master.d/sem	configuration file for \*(Cwsem\*(Cn boot module
uts/3b2/master.d/shm	configuration file for \*(Cwshm\*(Cn boot module
uts/3b2/os/ipc.c	common routines for System V \s-2IPC\s+2
uts/3b2/os/msg.c	System V message-queue \s-2IPC\s+2
uts/3b2/os/sem.c	System V semaphore \s-2IPC\s+2
uts/3b2/os/shm.c	System V shared memory \s-2IPC\s+2
uts/3b2/sys/ipc.h	common \s-2IPC\s+2 access structure \*(Cwipc_perm\*(Cn; common defines \*(CwIPC_\*(Cn\f2\s-2XXX\s+2\f1
uts/3b2/sys/msg.h	structures and defines for message-queue \s-2IPC\s+2 facility
uts/3b2/sys/sem.h	structures and defines for semaphore \s-2IPC\s+2 facility
uts/3b2/sys/shm.h	structures and defines for shared memory \s-2IPC\s+2 facility
.TE
.S
.XF
.H 2 "Kernel Management Subsystem"
\*(SV began as an operating system for minicomputers, but now is used as the native operating system on computers of all sizes, from medium-sized personal computers based on the Intel 80286 processor to the largest supercomputers, such as the Cray-3.
\*(R4 includes many characteristics that make \*(SV work efficiently across this large range of system sizes.
.P
\*(R4 expands many variables inside \*(SV to accommodate the needs of larger \*(UX systems.
These include such values as process-\s-2ID\s+2 numbers, user-\s-2ID\s+2 numbers, and major and minor device numbers, as well as several others.
This change makes the \*(UX System more useful on large systems and large configurations of networked workstations.
.HU "Swapping the User Area"
\*(SV maintains a data structure for each system user called the \f2user area\f1 or \f2u-block\f1.
Older \*(UX systems keep this data in the system's main memory constantly for all current users.
\*(SV has been modified so that the \f2u-block\f1 for users whose processes are not running can be swapped out of main memory, thus freeing more system memory for user programs.
This feature was added to \*(SV in Release 3.1.
.HU "Restructuring and Hashing System Tables"
\*(SV continuously maintains internal tables containing data on its internal state.
On large systems, these tables can become very long, and searching through them can consume a significant amount of processor time, unnecessarily increasing system overhead.
\*(SV has taken two steps toward eliminating this problem:
.BL
.LI
System tables (such as the \*(Cwproc\*(Cn structure) have been redesigned so that there are no linear searches of major tables inside the kernel.
This restructuring includes the addition of extra links to related table entries and more intelligent searching algorithms.
.LI
Access to some system tables has been \f2hashed\f1, so that the system can numerically compute the location of an entry, and not be required to search exhaustively for it.
.LE 1
These features were first added to \*(SV in Release 2.1.
.HU "Dynamic Allocation of System Tables"
Before \*(R4, the number of processes allowed to run on a system and other such parameters were limited to statically-configured values built into a system.
In \*(4U, all major system tables are expanded dynamically as extra entries are required, and reduced in size when many unused slots are available.
.P
This feature optimizes the use of system memory by dynamically altering the size of the kernel.
There are always enough system table entries available for the system's current work load, and the kernel is never larger than it has to be; the remaining memory space is available for user programs, not locked into statically-allocated tables within the kernel.
.HU "\*(Cwnfile\*(Cn Tunability"
In past \*(UX systems, the number of files a single process may have open simultaneously was a static parameter; \*(R3 made this parameter adjustable on a system-wide basis, while \*(R4 makes it dynamically tunable for each process with no inherent upper limit.
This capability makes it possible for a program to monitor many files, devices or network ports simultaneously.
.HU "Kernel Memory Management"
The \*(R4 kernel uses the virtual memory hardware to good advantage in providing a common memory pool for program text and data as well as file information.
It does so without requiring special hardware support or large kernel virtual address spaces, which makes very effective use of physical memory.
The flexibility of this approach is that both the kernel and the application can dynamically map files into their address spaces and use only as much space as is needed.
.HU "Expanded Fundamental Types (\s-2EFT\s+2)"
Expanded Fundamental Types (\s-2EFT\s+2) expand the size of certain data types, such as user-\s-2ID\s+2 (\^\*(Cwuid\*(Cn\^), group-\s-2ID\s+2 (\^\*(Cwgid\*(Cn\^), process-\s-2ID\s+2 (\^\*(Cwpid\*(Cn\^) and device-\s-2ID\s+2.
The intent is to increase the capacities of fundamental system data types that have been operating under the artificial constraints imposed by the \*(UX operating system's original hardware implementation. 
.HU "System Initialization"
\*(R4 has further enhanced \*(SV with a new configuration and booting procedure that will allow \*(SV to initialize itself using any type of file-system, and will relink the \*(SV kernel more quickly than in previous releases.
.HU "File-system Independent Booting"
Earlier releases for \*(SV used the \*(Cwlboot\*(Cn method of booting the operating system.
This procedure read the \*(UX system from the root device that was ``hard-coded'' into the \*(Cwlboot\*(Cn program, reconfigured it, if it was out of date, both linking and loading it.
Post-Release 3 \*(UX systems are intended to be able to boot from any device containing a bootable file-system-type.
To accomplish this, \*(R4 provides for so-called ``File-system independent booting'' as well as a separate \*(Cwcunix\*(Cn program to link the operating system, since this combination that has proved to be more efficient and faster than \*(Cwlboot\*(Cn alone.
.P
File-system independent booting lets a user boot any standalone program, regardless of type of the root file-system [see section on \f2Virtual File Subsystem\f1].
Programs can boot from any device readable by the firmware.
Along with this new procedure, a new partition, \*(Cw/stand\*(Cn appears.
This partition contains all standalone files and text files required for booting.
.HU "Auto-configuration"
In concert with the new capability to perform file-system independent booting, \*(R4 replaces the auto-configuration process, that automatically detected software or hardware changes, to allow a customer to generate a new bootable.
The new \*(R4 auto-configuration method offers the same features as \*(Cwlboot\*(Cn\^, but in a file-system independent environment.
.HU "Kernel Management Subsystem Modules"
The Kernel Management Subsystem Modules comprise source-code files from \*(Cw/usr/src/uts\*(Cn as listed under the following headings:
.XS L F
.LB 3 0 1 0 \(em 1 0
.LI "\*(CfKK\*(Cx" 1
System initialization/termination
.LI "\*(CfKU\*(Cx" 1
Kernel/User interface (user services and assorted system-calls)
.LI "\*(CfKT\*(Cx" 1
Time services
.LI "\*(CfKS\*(Cx" 1
Kernel support routines
.LE 1
.XF
.SK
.HU "\*(CfKK\*(Cx \(em System initialization/termination"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/boot/*	system bootstrap programs
.TE
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/io/icd.c	in-core disk driver
uts/3b2/io/stubs.c	stub definitions used by \*(Cwcunix\*(Cn in system configuration
uts/3b2/master.d/icd	configuration file for \s-2ICD\s+2 boot module
uts/3b2/master.d/start	configuration file for \*(Cwstart\*(Cn boot module
uts/3b2/master.d/stubs	configuration file for \*(Cwstubs\*(Cn boot module
uts/3b2/ml/cdump.c	routines to dump main memory after a crash
uts/3b2/ml/pstart.c	physical startup routine, first \*(Cc code executed after boot
uts/3b2/ml/syms.s	for \s-2ELF\s+2 compilation; assigns system board addresses
uts/3b2/ml/uprt.s	runtime startup for the part of kernel boot that runs in physical mode
uts/3b2/os/getsizes.c	dummy file compiled for symbol table information
uts/3b2/os/main.c	perform system initialization, fork to create \*(Cw/etc/init\*(Cn
uts/3b2/os/name.c	initializes system version and release name strings
uts/3b2/os/space.c	defines a set of assorted global variables
uts/3b2/os/startup.c	machine dependent startup code
uts/3b2/sys/boot.h	system boot devices and modes (auto/demand)
uts/3b2/sys/boothdr.h	format of boot module headers, etc.
uts/3b2/sys/cdump.h	crash dump header and related defines
uts/3b2/sys/edt.h	3B2 equipped device table
uts/3b2/sys/extbus.h	3B2 common extended bus defines
uts/3b2/sys/lboot.h	defines for system boot program \*(Cwolboot\*(Cn
uts/3b2/sys/nvram.h	structure of 3B2 non-volatile \s-2RAM\s+2; related defines
uts/3b2/sys/sysgdb.h	sysgen data block; not used in kernel
.TE
.S
.XF
.HU "\*(CfKU\*(Cx \(em Kernel/User interface (user services and assorted system-calls)"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/master.d/gate	configuration file for \*(Cwgate\*(Cn boot module (\s-2ELF\s+2 only)
uts/3b2/ml/gate.c	gate tables and interrupt vectors
uts/3b2/ml/ttrap.s	trap interface and related routines
uts/3b2/os/sys3b.c	3B2-specific \*(Cwsys3b\*(Cn syscall
uts/3b2/os/sysent.c	defines the syscall table, \*(Cwsysent[]\*(Cn
uts/3b2/os/trap.c	trap and syscall handling; syscall stubs
uts/3b2/sys/errno.h	syscall error codes \*(CwE\*(Cn\f2\s-2XXX\s+2\f1
uts/3b2/sys/gate.h	3B2 gate table structures
uts/3b2/sys/info.h	version and release number of the operating system
uts/3b2/sys/libxedt.h	library interface to \s-2EDT\s+2 tables
uts/3b2/sys/sys3b.h	structures and defines for use with the \*(Cwsys3b\*(Cn syscall
uts/3b2/sys/syscall.h	syscall numbers
uts/3b2/sys/systm.h	syscall interface:  struct \*(Cwsysent\*(Cn, with fields \*(Cwsy_\*(Cn\f2xxx\f1; assorted declarations
uts/3b2/sys/uadmin.h	header for \*(Cwuadmin\*(Cn syscall command arguments
uts/3b2/sys/ulimit.h	header for \*(Cwulimit\*(Cn syscall command arguments
uts/3b2/sys/unistd.h	implementation-specific counterpart of \*(Cwhead/unistd.h\*(Cn.
uts/3b2/sys/utsname.h	struct \*(Cwutsname\*(Cn, containing system name, release, version, etc.
uts/3b2/sys/utssys.h	header for \*(Cwutssys\*(Cn syscall arguments
.TE
.S
.XF
.HU "\*(CfKT\*(Cx \(em Time services"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/os/clock.c	clock interrupt handler
uts/3b2/os/todc.c	read and write hardware time-of-day clock
uts/3b2/sys/callo.h	callout table:  struct \*(Cwcallo\*(Cn, with fields \*(Cwc_\*(Cn\f2xxx\f1
uts/3b2/sys/clock.h	not needed by kernel; defines \*(CwSECHR\*(Cn, \*(CwSECDAY\*(Cn, \*(CwSECYR\*(Cn
uts/3b2/sys/sit.h	3B2 programmable interval timer structure and defines
uts/3b2/sys/time.h	structure (\*(Cwtimeval\*(Cn) returned by the \*(Cwgettimeofday\*(Cn syscall
uts/3b2/sys/times.h	structure (\*(Cwtms\*(Cn) returned by the \*(Cwtimes\*(Cn syscall
uts/3b2/sys/todc.h	hardware time-of-day clock structure and defines
.TE
.S
.XF
.SK
.HU "\*(CfKS\*(Cx \(em Kernel support routines"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/debug/*	kernel debugger
uts/3b2/io/mau.c	3B2 math accelerator unit (\s-2MAU\s+2) support routines
uts/3b2/io/monitor.c	internal trace facility to record system events
uts/3b2/master.d/README
uts/3b2/master.d/debug	configuration file for \*(Cwdebug\*(Cn boot module
uts/3b2/master.d/kernel	configuration file for \*(Cwkernel\*(Cn boot module
uts/3b2/master.d/mau	configuration file for \s-2MAU\s+2 boot module
uts/3b2/ml/kpcbs.c	kernel fixed process control blocks
uts/3b2/ml/misc.s	assorted set of routines:  \*(Cwaddupc\*(Cn, \*(Cwsplx\*(Cn, etc.
uts/3b2/ml/ml.mk	make file for machine language routines
uts/3b2/ml/string.s	assembly language versions of \*(Cwstrcmp\*(Cn, \*(Cwstrlen\*(Cn, \*(Cwstrcpy\*(Cn
uts/3b2/os/bitmap.c	routines to manipulate bitmaps of arbitrary size
uts/3b2/os/bitmasks.c	bitmask arrays \*(Cwsetmask[]\*(Cn, \*(Cwsbittab[]\*(Cn, \*(Cwcbittab[]\*(Cn
uts/3b2/os/cmn_err.c	code for \*(Cwcmn_err\*(Cn, \*(Cwprintf\*(Cn, \*(Cwpanic\*(Cn and related routines
uts/3b2/os/list.c	generic doubly-linked circular list manipulation routines \*(Cwls_\*(Cn\f2xxx\f1
uts/3b2/os/machdep.c	encapsulates low-level machine dependencies
uts/3b2/os/malloc.c	general space management:  \*(Cwrmalloc\*(Cn, \*(Cwrmfree\*(Cn
uts/3b2/os/os.mk	make file for operating system kernel
uts/3b2/sys/bitmap.h	macros to manipulate bitmaps of arbitrary size
uts/3b2/sys/bitmasks.h	declares bitmask arrays \*(Cwsetmask[]\*(Cn, \*(Cwsbittab[]\*(Cn, \*(Cwcbittab[]\*(Cn
uts/3b2/sys/cmn_err.h	severity levels \*(CwCE_\*(Cn\f2\s-2XXX\s+2\f1 and output destinations for \*(Cwcmn_err\*(Cn
uts/3b2/sys/csr.h	3B2 Control/Status register and defines \*(CwCSR\*(Cn\f2\s-2XXX\s+2\f1
uts/3b2/sys/debug.h	debugging macros \*(CwASSERT\*(Cn and \*(CwMONITOR\*(Cn
uts/3b2/sys/diagnostic.h	3B2 firmware diagnostic header
uts/3b2/sys/disasm.h	defines for 3B2 disassembler
uts/3b2/sys/err.h	3B2 error structures; not used in kernel
uts/3b2/sys/firmware.h	3B2 firmware defines and firmware routine macros
uts/3b2/sys/inline.h	3B2 inline assembler routines \*(Cwstrlen\*(Cn, \*(Cwsplx\*(Cn, etc.
uts/3b2/sys/istk.h	empty file
uts/3b2/sys/list.h	generic doubly-linked circular list structures 
uts/3b2/sys/macro.h	empty file
uts/3b2/sys/map.h	for use with \*(Cwrmalloc\*(Cn:  struct \*(Cwmap\*(Cn, with fields \*(Cwm_\*(Cn\f2xxx\f1; related macros
uts/3b2/sys/mau.h	3B2 math acceleration unit structures and defines
uts/3b2/sys/panregs.h	3B2 registers used by \*(Cwcmn_err\*(Cn
uts/3b2/sys/param.h	various kernel parameters
uts/3b2/sys/psw.h	3B2 Program Status Word register and related defines
uts/3b2/sys/sccsid.h	macros to declare \s-2SCCS\s+2 identification strings
uts/3b2/sys/sysinfo.h	system statistics:  struct \*(Cwsysinfo\*(Cn, etc. for \*(Cwsar\*(Cn command
uts/3b2/sys/sysmacros.h	various kernel macros
uts/3b2/sys/systeminfo.h	header for \*(Cwsysinfo\*(Cn commands and globals \*(Cwarchitecture[]\*(Cn, \*(Cwhw_serial[]\*(Cn, etc.
uts/3b2/sys/types.h	various kernel \*(Cwtypedef\*(Cns:  \*(Cwcaddr_t\*(Cn, \*(Cwulong\*(Cn, etc.
uts/3b2/sys/var.h	system configuration information:  struct \*(Cwvar\*(Cn, with fields \*(Cwv_\*(Cn\f2xxx\f1/\*(Cwve_\*(Cn\f2xxx\f1
uts/3b2/unix.mk	top-level makefile
uts/3b2/vm/cpu.h	empty file
uts/3b2/vm/mp.h	typedef and defines for multiprocessor support
uts/3b2/vm/vm_mp.c	synchronization primitives for multiprocessor support
uts/3b2/vuifile	linker control file for \s-2COFF\s+2 compilation; assigns system board addresses
.TE
.S
.XF
.H 1 "System Services & Libraries"
.HU "\f(HB\s-2UNIX\s+2\fP System Services"
.LB 3 0 1 0 \(bu 1 1
.LI
File System Services
.LI
\s-2I/O\s+2 System Services
.LI
Memory System Services
.LI
Process System Services
.LE
.HU "\f(HB\s-2C\s+2\fP Language Libraries"
\*(Cc is a general-purpose programming language used for system-level code as well as commercial and scientific applications.
The \*(Cc language bridges the realm of assembly-language programming and that of block-structured procedure-oriented languages by combining the advantages of low-level languages with the benefits and features of high-level languages.
Programmers using \*(Cc can deal easily with machine-level facilities at a low-level, while at the same time having the high-control and data structures found in other modern, structured programming languages.
Using \*(Cc as a low-level language, programmers can achieve maximum efficiency by exploiting specific machine characteristics; using \*(Cc as a high-level language, programmers can hide the details of the underlying computer to promote software portability.
.P
The \*(Cc library, which accompanies the \*(Cc language, adds function to the otherwise very compact and spare \*(Cc programming language, and makes \*(Cc flexible and efficient as well as highly consistent across different systems.
The functions in the \*(Cc library satisfy the need for various commonly used operations, and programmers can create new \*(Cc functions to meet specific needs.
Programmers may use \*(Cc library functions in a program and link the functions into the program when preparing it for execution.
.P
\*(Cc Language Libraries comprise most of the libraries that fall into the Technology License \f(HIBase\fP category.
They include:
.LB 3 0 1 0 \(bu 1 1
.LI
Run-Time Loader Library Routines
.LI
Standard \s-2I/O\s+2 (\*(Cwstdio\*(Cn) Library Routines
.LI
Character and String Handling Library Routines
.LI
Searching and Sorting Library Routines
.LI
Floating-Point Library Routines
.LI
Mathematical Library Routines
.LI
Miscellaneous Library Routines
.LE 1
.HU "Shared Libraries and Dynamic Linking"
The key technology that makes past and future compatibility possible is the \*(R4 virtual memory and dynamic linking.
At present, there is the choice of implementing facilities in the kernel, servers, applications or libraries.
With dynamic linking, the application is insulated from the details of exactly how a functionality is implemented.
.P
Dynamic linking also supports modern software development with incremental programming environments and object-oriented programming.
There may be special dynamic linkers for some applications that provide more dynamic access to system services.
.P
With dynamic linking, shared libraries and mapped files, it is possible to construct facilities out of shared libraries rather than implementing them in the kernel or server process.
Windowing system tool kits are good examples of this sort of service.
.P
Shared libraries and executable files are marked with version numbers to identify the expected interface.
As the system evolves, it is easy to support old interfaces by providing a compatibility veneer on the current library.
The version numbers allow the dynamic linker to bind the application with the proper library, routine, and interface.
.P
Shared libraries are also useful for structuring system software.
They efficiently support tool kits for window systems, libraries of network services and alternate implementations of functions.
Shared libraries and dynamic linking are transparent to the user, and do not change the semantics of programs.
Thus it is possible for a range of implementations that optimize the performance, debuggability, interposibility or other property of the program.
.P
The \*(R4 dynamic linker is not built into the kernel, but is rather a user-mode program that allows modern programming environments to exploit the dynamic linking technology.
The linker is not a separate process, but becomes part of the virtual address space of the application and is, therefore, available for dynamic use.
.H 2 "File System Services"
A \*(SV file-system consists of files and directories of files arranged in a tree-like structure.
The internal structure of a file is consistent throughout, with all input/output and file access handled uniformly.
Files can be accessed by a ``full'' or ``relative'' path-name, have independent protection-modes, are automatically allocated and deallocated, and can be linked across directories.
\*(SV also allows mounting and unmounting an arbitrary number of file-systems of varying sizes anywhere in the directory tree-structure.
.P
The \*(SV file-system builds hierarchically from \*(Cw/\*(Cn the root-directory.
\*(SV places few restrictions on what the file-system must contain; the root-directory normally contains certain standard sub-directories: \*(Cwbin\*(Cn\^, \*(Cwtmp\*(Cn and \*(Cwusr\*(Cn because the functions they perform are necessary for the operation of the system.
Frequently, an installation includes additional directories such as \*(Cwbck\*(Cn\^, \*(Cwboot\*(Cn\^, \*(Cwsrc\*(Cn\^, \*(Cwlib\*(Cn and \*(Cwlost+found\*(Cn as well as other sub-directories to the root-directory.
.P
Some of the features of the \*(SV file-system include:
.BL
.LI
Simple and consistent file-naming conventions.
The same file-naming conventions work for ordinary-files, device-files and directories.
File-names can be fully qualified (i.e., an absolute file-name) or relative to any directory in the file-system hierarchy.
.LI
Automatic file space allocation performed invisibly to users.
Files expand to contain the amount of data written to them, without the need for preallocation.
When a file is removed, the disk space it used is freed.
.LI
A complete set of flexible directory and file-protection modes allow all combinations of \f2read\f1, \f2write\f1 and \f2execute\f1 access-permissions, independently for the \f2owner\f1 of each file or directory, for a \f2group\f1 of users (such as members of a project-team) and for all \f2other\f1 users.
The file-protection-modes can be set dynamically.
.LI
Facilities for creating, accessing, moving and processing files, directories or sets of these in a simple, uniform and straight-forward way.
.LI
Each peripheral input/output device from interactive terminals to main memory is treated like a file, allowing uniform file and device input/output.
.LI
Mounting and unmounting file-systems and disk-volumes for easy administration of disk-storage.
.LI
File linking across directories of the same file-system.
.LI
Symbolic links to files and directories in the same or different file-systems.
.LE
.P
Symbolic links, unlike hard links, work across file-systems.
Symbolic links are created with \*(Cwsymlink()\*(Cn\^, accessed with \*(Cwreadlink()\*(Cn and queried with \*(Cwlstat()\*(Cn\^.
Symbolic links are useful for networking because they can span machine boundaries as well as file-systems to create both inter-system and intra-system directory structures.
.SK
.HU "File Directory Functions"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
lib/libc/m32/sys/chdir.s
lib/libc/m32/sys/fchdir.s
lib/libc/m32/sys/getdents.s
lib/libc/m32/sys/mkdir.s
lib/libc/m32/sys/rmdir.s
lib/libc/port/gen/closedir.c
lib/libc/port/gen/opendir.c
lib/libc/port/gen/readdir.c
lib/libc/port/gen/rewinddir.c
lib/libc/port/gen/seekdir.c
lib/libc/port/gen/telldir.c
lib/libgen/dirname.c
lib/libgen/mkdirp.c
lib/libgen/rmdirp.c
.TE
.S
.XF
.HU "File Status Functions"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
lib/libc/m32/sys/fstat.s
lib/libc/m32/sys/fstatf.s
lib/libc/m32/sys/fstatfs.s
lib/libc/m32/sys/fstatvfs.s
lib/libc/m32/sys/fxstat.s
lib/libc/m32/sys/lstat.s
lib/libc/m32/sys/lxstat.s
lib/libc/m32/sys/stat.s
lib/libc/m32/sys/statf.s
lib/libc/m32/sys/statfs.s
lib/libc/m32/sys/statvfs.s
lib/libc/m32/sys/ustat.s
lib/libc/m32/sys/xstat.s
.TE
.S
.XF
.HU "File Creation & Removal Functions"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
lib/libc/m32/sys/creat.s
lib/libc/m32/sys/link.s
lib/libc/m32/sys/mknod.s
lib/libc/m32/sys/open.s
lib/libc/m32/sys/unlink.s
lib/libc/m32/sys/xmknod.s
lib/libc/port/gen/mkdev.c
lib/libc/port/gen/mkfifo.c
lib/libc/port/gen/mktemp.c
.TE
.S
.XF
.SK
.HU "File System Functions"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
lib/libc/m32/sys/_rename.s
lib/libc/m32/sys/access.s
lib/libc/m32/sys/chmod.s
lib/libc/m32/sys/chown.s
lib/libc/m32/sys/chroot.s
lib/libc/m32/sys/fchmod.s
lib/libc/m32/sys/fchown.s
lib/libc/m32/sys/fpathconf.s
lib/libc/m32/sys/lchown.s
lib/libc/m32/sys/mount.s
lib/libc/m32/sys/pathconf.s
lib/libc/m32/sys/readlink.s
lib/libc/m32/sys/symlink.s
lib/libc/m32/sys/sync.s
lib/libc/m32/sys/umask.s
lib/libc/m32/sys/umount.s
lib/libc/m32/sys/utime.s
lib/libc/port/gen/_xftw.c
lib/libc/port/gen/ftw.c
lib/libc/port/gen/getcwd.c
lib/libc/port/gen/getmntent.c
lib/libc/port/gen/getvfsent.c
lib/libc/port/gen/nftw.c
lib/libc/port/gen/realpath.c
lib/libc/port/gen/rename.c
lib/libc/port/gen/tell.c
lib/libgen/basename.c
lib/libgen/pathfind.c
.TE
.S
.XF
.H 2 "\s-2I/O\s+2 System Services"
The lowest level of \s-2I/O\s+2 in \*(SV provides no buffering or other such services, but it offers the most control over \s-2I/O\s+2.
System-calls that are direct entries to the kernel control all user \s-2I/O\s+2.
\*(SV makes these calls simple, uniform and regular to eliminate differences between ordinary disk-files and \s-2I/O\s+2 devices such as terminals, tape-drives and line-printers.
.P
In \*(R3, \s-2STREAMS\s+2 \s-2I/O\s+2 introduced a flexible coroutine-based design to replace the traditional rigid connection between processes and terminals or networks.
\s-2STREAMS\s+2 \s-2I/O\s+2 defines standard programming interfaces in the kernel for character \s-2I/O\s+2 processing modules that implement device-drivers, protocol-handlers and other line-disciplines.
User-processes may dynamically insert \s-2STREAMS\s+2 \s-2I/O\s+2 processing modules into the stream of data that flows between a user-process and a \s-2STREAMS\s+2 \s-2I/O\s+2 device or another user-process.
.P
A stream is a full-duplex connection between a user-process and an open device or pseudo-device.
A stream resembles a Shell pipeline, except that data flows in both directions.
A stream may include one or more \s-2I/O\s+2 processing modules interposed between the user-process at the ``upstream'' end of the stream and the device-driver (or pseudo-device-driver) at the ``downsteam'' end of the stream.
The stream and its modules reside entirely within the kernel and present to a user-process an interface both consistent and compatible with the \*(SV character \s-2I/O\s+2 subsystem.
.P
Opening a \s-2STREAMS\s+2 \s-2I/O\s+2 device creates a stream between the
``stream head'' at the user end of the stream and the device driver (or
pseudo-device-driver) at the device end of the stream.
These two ends of a stream are connected automatically when the device is opened; intermediate modules are attached dynamically using \*(Cwioctl()\*(Cn calls to ``push'' new modules onto the stream one at a time in Last-In, First-Out (\s-2LIFO\s+2) style, as though the stream was a push-down stack.
.P
\s-2STREAMS\s+2 \s-2I/O\s+2 works on \f2messages\f1 that flow in both directions through a stream.
Calls to \*(Cwwrite()\*(Cn\^, \*(Cwputmsg()\*(Cn and \*(Cwioctl()\*(Cn cause messages to be sent down the stream; calls to \*(Cwread()\*(Cn and \*(Cwgetmsg()\*(Cn take data from messages arriving at the stream-head and return them to a user-process.
The stream-head packages data into messages and sends them down the stream to the device-driver.
At the device end of the stream, the device driver takes data, state
transitions and signals received from the device, composes them into messages,
and sends the messages upstream.
Intermediate modules receive all messages going upstream and downstream,
optionally process them and pass them on to the next module in the stream.
.P
Each \s-2STREAMS\s+2 \s-2I/O\s+2 module is self-contained and functionally isolated from any other module in the stream except its two neighboring modules.
The modules in a stream communicate through a well defined message passing
interface.
A module takes a message from one of its neighboring modules, inspects the type, processes it or just passes it on to the other neighbor.
A given module may not recognize and process every message in the stream, but every module in the stream handles every message.
\s-2STREAMS\s+2 \s-2I/O\s+2 processing modules are symmetrical, with identical read (upstream) and write (downstream) interfaces.
.SK
.HU "File Descriptor Functions"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
lib/libc/m32/sys/close.s
lib/libc/m32/sys/dup.s
lib/libc/m32/sys/pipe.s
lib/libc/port/gen/dup2.c
lib/libc/port/gen/fattach.c
lib/libc/port/gen/fdetach.c
lib/libc/port/gen/isastream.c
lib/libc/port/gen/select.c
.TE
.S
.XF
.HU "Data Transfer Functions"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
lib/libc/m32/sys/getmsg.s
lib/libc/m32/sys/getpmsg.s
lib/libc/m32/sys/putmsg.s
lib/libc/m32/sys/putpmsg.s
lib/libc/m32/sys/read.s
lib/libc/m32/sys/readv.s
lib/libc/m32/sys/write.s
lib/libc/m32/sys/writev.s
.TE
.S
.XF
.HU "\s-2I/O\s+2 Control Functions"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
lib/libc/m32/sys/fcntl.s
lib/libc/m32/sys/fsync.s
lib/libc/m32/sys/ioctl.s
lib/libc/m32/sys/lseek.s
lib/libc/m32/sys/poll.s
lib/libc/m32/sys/uadmin.s
lib/libc/m32/sys/ulimit.s
lib/libc/port/gen/truncate.c
lib/libc/port/sys/lockf.c
.TE
.S
.XF
.HU "\s-2TTY\s+2 Control Functions"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
lib/libc/m32/sys/gtty.s
lib/libc/m32/sys/stty.s
lib/libc/port/gen/cfgetispeed.c
lib/libc/port/gen/cfgetospeed.c
lib/libc/port/gen/cfsetispeed.c
lib/libc/port/gen/cfsetospeed.c
lib/libc/port/gen/pt.c
lib/libc/port/gen/tcdrain.c
lib/libc/port/gen/tcflow.c
lib/libc/port/gen/tcflush.c
lib/libc/port/gen/tcgetattr.c
lib/libc/port/gen/tcgetpgrp.c
lib/libc/port/gen/tcgetsid.c
lib/libc/port/gen/tcsendbreak.c
lib/libc/port/gen/tcsetattr.c
lib/libc/port/gen/tcsetpgrp.c
.TE
.S
.XF
.H 2 "Memory System Services"
Memory System Services implement Virtual Memory (\s-2VM\s+2) operations that support a ``single-level store'' which lets processes access files and devices as ranges of bytes within the virtual address space of the process.
A single-level store creates a seamless transition between access to primary storage in main memory and secondary storage on disk; this can eliminate copying data buffers to and from the kernel and the process address space.
When a process maps a file into the process's own virtual address space, it can access data stored in the file as though the data resided in an array in memory independent of the location of data on primary or secondary storage.
.P
Some programs benefit greatly by mapping a file or device into the process address space because it simplifies input/output for the program; it can even make some programs possible that would otherwise require writing kernel code.
For example, a ``lightweight process'' library can use Virtual Memory System Services to let a number of processes to work from the same address space by sharing the same page frames.
.P
In order to respond quickly to internal and external events, a program can lock a portion of itself into memory.
Using the \*(Cwplock()\*(Cn system-call, processes can lock text segments, data segments or both into memory.
Locking a process-segment into memory renders it immune to swapping or paging.
A program can lock arbitrary memory segments of its address space into memory using the new \*(Cwmemcntl()\*(Cn system-call; otherwise, the program must either lock its entire address space in memory, thereby consuming a large amount of memory, or suffer any potential delays caused by paging the process.
Many real-time applications find memory-locking a necessary feature.
.P
Enhanced Memory Locking offers an extension to the existing \*(Cwplock()\*(Cn function for applications that require more deterministic response. 
A new \*(Cwmemcntl()\*(Cn function allows an application to lock arbitrary memory segments of its address space into memory.
An application can thus lock a portion of itself in order to respond to internal or external events quickly.
Otherwise, the application must either lock its entire address space in memory, which imposes higher memory requirements on the system, or incur potential delay caused by swapping the process into main memory. 
.HU "Virtual Memory Functions"
.XS I N
.CW
lib/libc/m32/sys/mincore.s
lib/libc/m32/sys/mmap.s
lib/libc/m32/sys/mprotect.s
lib/libc/m32/sys/munmap.s
lib/libc/port/gen/memalign.c
lib/libc/port/gen/msync.c
lib/libc/port/gen/valloc.c
.CN
.XF
.HU "Memory Control Functions"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
lib/libc/m32/sys/memcntl.s
lib/libc/port/gen/mlock.c
lib/libc/port/gen/mlockall.c
lib/libc/port/gen/munlock.c
lib/libc/port/gen/munlockall.c
lib/libc/port/gen/swapctl.c
.TE
.S
.XF
.H 2 "Process System Services"
A primary function of the \*(SV kernel is to control and oversee the execution of user-processes and to manage system resources.
Process-creation is essential to the basic operation of \*(SV because each command run by the \*(SV Shell executes in its own process.
This scheme makes a number of services easy to provide; for example, \s-2I/O\s+2 redirection is a simple operation performed entirely in the child-process that executes the command.
No memory in the Shell parent-process is required to rescind the change in standard input and output.
Background processes likewise require no new mechanism; the Shell merely refrains from waiting for commands executing in the background to complete.
Finally, recursive use of the Shell to interpret a sequence of commands stored in a file is in no way a special operation.
.P
New processes are created by the \*(Cwfork()\*(Cn system-call, which creates a child-process with code and data copied from the parent-process that created the child-process.
The child inherits the open files of the parent, and executes independently of it unless the parent explicitly waits for the termination of the child.
Each new process receives a set of character-string arguments from its creator, and returns a byte of status information when it terminates.
.P
Signals are the most common way for a process to receive notification that an event has occurred.
Interrupts from the terminal, for example, cause a signal to be sent to the processes attached to that terminal; faults such as addressing errors are also turned into signals.
In addition, one process can send signals to another process.
Signals interrupt the normal flow of control in a process; thus, a process must prearrange how to handle signals via the \*(Cwsignal\*(Cn system-calls (the default action is termination).
Signals ordinarily force termination, but may, at the choice of the program, be ignored or cause a simulated hardware interrupt.
.P
To identify individual users and groups of users, \*(SV assigns each user a numeric \f2user-id\f1 and \f2group-id\f1 as well as any supplementary group-id for job-control.
Each process inherits the user-id and group-id of the user (or process) that created it.
\*(SV grants permission to read, write or execute files based on the user-id and group-id of a process.
.P
\*(SV uniquely identifies each active-process by a positive-integer called a \f2process-id\f1.
By convention, process-id \*(Cw0\*(Cn and \*(Cw1\*(Cn are reserved for special system-processes.
\*(SV uses the process-id to identify system resources allocated to a process; especially open files shared by multiple processes.
In addition to a process-id, each active-process possesses a \f2parent-process-id\f1.
The parent-process-id of a process is the process-id of its creator, for the lifetime of its creator.
.P
Although \*(SV identifies individual processes by a unique process-id number, it must sometimes identify processes as a group; thus, each process belongs to a ``process-group.''
A \f2process-group-id\f1 uniquely identifies a process-group using the process-id of the process-group-leader, which is a process with the same process-group-id as its process-id.
Any process other than a process-group-leader may detach itself from its current process-group and become a new process-group-leader by calling the \*(Cwsetpgrp()\*(Cn system-call.
.P
Grouping processes permits related processes to receive the same signal.
For instance, processes created by a common login Shell are related; hence, all such processes receive signals when a user hits the ``delete'' or ``break'' key or when the terminal line hangs up.
The process-group-id identifies the group of related processes that receive common signals for certain events.
All processes belonging to the same process-group share the same process-group-id which each process inherits from the process that created it.
A process can belong to more than one process-group at a time.
The \*(Cwgetgroups()\*(Cn system-call yields the group-access-list for a process, while \*(Cwsetgroups()\*(Cn alters the group-access-list.
.P
For synchronizing the activities of independent processes and process-groups, \*(SV offers three methods of inter-process communication (\s-2IPC\s+2):
.DS CB
.LB 3 0 0 0 \(bu 1 1
.LI
message-queues
.LI
semaphores
.LI
shared-memory
.LE 1
.DE
All of these use a common structure type, \*(Cwipc_perm\*(Cn defined in the \*(Cw<ipc.h>\*(Cn header file, to pass information about permission to use an \s-2IPC\s+2-operation.
.P
The message-queue facility provides a form of inter-process communication through which unrelated processes can conveniently share data using messages.
When processes only share messages, they keep their internal data structures independent of each another.
The message-queue facility establishes one or more queues to place messages on for other processes to retrieve.
A control data structure associated with each message-queue can restrict access to that specific message-queue.
.P
The semaphore facility provides a synchronization mechanism for controlling access by multiple processes to shared system resources.
Operations on semaphores lock resources for updating by one process at a time, and can support update ordering.
.P
The shared-memory facility provides for processes to share data using common areas of memory.
These facilities control access to shared-memory segments and synchronize updates done by multiple processes.
Database applications often exploit the shared-memory facility.
.SK
.HU "Process Execution & Control Functions"
.XS I N
.CW
lib/libc/m32/gen/cuexit.s
lib/libc/m32/gen/getctxt.c
lib/libc/m32/gen/makectxt.c
lib/libc/m32/gen/setjmp.s
lib/libc/m32/gen/siginfolst.c
lib/libc/m32/gen/sigsetjmp.c
lib/libc/m32/gen/swapctxt.c
lib/libc/m32/sys/_sigaction.s
lib/libc/m32/sys/_signal.s
lib/libc/m32/sys/adjtime.s
lib/libc/m32/sys/alarm.s
lib/libc/m32/sys/execl.s
lib/libc/m32/sys/execle.s
lib/libc/m32/sys/execv.s
lib/libc/m32/sys/execve.s
lib/libc/m32/sys/exit.s
lib/libc/m32/sys/fork.s
lib/libc/m32/sys/kill.s
lib/libc/m32/sys/nice.s
lib/libc/m32/sys/pause.s
lib/libc/m32/sys/plock.s
lib/libc/m32/sys/profil.s
lib/libc/m32/sys/ptrace.s
lib/libc/m32/sys/sigaction.c
lib/libc/m32/sys/sigaltstk.s
lib/libc/m32/sys/signal.s
lib/libc/m32/sys/sigpending.s
lib/libc/m32/sys/sigprocmsk.s
lib/libc/m32/sys/sigsendset.s
lib/libc/m32/sys/sigsuspend.s
lib/libc/m32/sys/ucontext.s
lib/libc/m32/sys/vfork.s
lib/libc/m32/sys/wait.s
lib/libc/m32/sys/waitid.s
lib/libc/port/gen/abort.c
lib/libc/port/gen/atexit.c
lib/libc/port/gen/execvp.c
lib/libc/port/gen/import_def.c
lib/libc/port/gen/psiginfo.c
lib/libc/port/gen/psignal.c
lib/libc/port/gen/raise.c
lib/libc/port/gen/sigflag.c
lib/libc/port/gen/siglist.c
lib/libc/port/gen/sigsend.c
lib/libc/port/gen/sigsetops.c
lib/libc/port/gen/sleep.c
lib/libc/port/gen/ssignal.c
lib/libc/port/gen/str2sig.c
lib/libc/port/gen/waitpid.c
lib/libc/port/sys/execl.c
lib/libc/port/sys/execle.c
lib/libc/port/sys/execv.c
lib/libc/port/sys/makefile
.CN
.XF
.SK
.HU "Process Status & Resource Functions"
.XS I N
.CW
lib/libc/m32/sys/acct.s
lib/libc/m32/sys/getegid.s
lib/libc/m32/sys/geteuid.s
lib/libc/m32/sys/getgid.s
lib/libc/m32/sys/getgroups.s
lib/libc/m32/sys/getpid.s
lib/libc/m32/sys/getppid.s
lib/libc/m32/sys/getrlimit.s
lib/libc/m32/sys/getuid.s
lib/libc/m32/sys/nuname.s
lib/libc/m32/sys/sbrk.s
lib/libc/m32/sys/seteguid.s
lib/libc/m32/sys/setgid.s
lib/libc/m32/sys/setgroups.s
lib/libc/m32/sys/setpgrp.s
lib/libc/m32/sys/setrlimit.s
lib/libc/m32/sys/setsid.s
lib/libc/m32/sys/setuid.s
lib/libc/m32/sys/stime.s
lib/libc/m32/sys/sysconfig.s
lib/libc/m32/sys/time.s
lib/libc/m32/sys/times.s
lib/libc/m32/sys/uname.s
lib/libc/port/gen/calloc.c
lib/libc/port/gen/cfree.c
lib/libc/port/gen/getenv.c
lib/libc/port/gen/getlogin.c
lib/libc/port/gen/initgroups.c
lib/libc/port/gen/isatty.c
lib/libc/port/gen/mallint.h
lib/libc/port/gen/malloc.c
lib/libc/port/gen/putenv.c
lib/libc/port/gen/str2id.c
lib/libc/port/gen/sysconf.c
lib/libc/port/gen/ttyname.c
lib/libmalloc/*
.CN
.XF
.HU "Inter-Process Communication"
.XS I N
.CW
lib/libc/m32/sys/msgsys.c
lib/libc/m32/sys/semsys.c
lib/libc/m32/sys/shmsys.c
lib/libc/port/sys/msgsys.c
lib/libc/port/sys/semsys.c
lib/libc/port/sys/shmsys.c
.CN
.XF
.HU "Kernel System Functions"
.XS I N
.CW
lib/libc/m32/sys/sys3b.s
lib/libc/m32/sys/syscall.s
lib/libc/m32/sys/sysfs.s
lib/libc/m32/sys/sysinfo.s
lib/libc/m32/sys/sysmulti.c
lib/libc/m32/sys/utssys.s
lib/libxedt/*
.CN
.XF
.H 2 "\f(HB\s-2C\s+2\fP Language Libraries"
The \*(Cc library, which accompanies the \*(Cc language, adds function to the otherwise very compact and spare \*(Cc programming language, and makes \*(Cc flexible and efficient as well as highly consistent across different systems.
The functions in the \*(Cc library satisfy the need for various commonly used operations, and programmers can create new \*(Cc functions to meet specific needs.
Programmers may use \*(Cc library functions in a program and link the functions into the program when preparing it for execution.
.HU "Run-Time Loader Library"
\*(R4 provides for run-time dynamic linking of shared library routines with user programs.
Dynamic linking is provided through a user-level linker program implemented using the interfaces provided by the virtual memory subsystem.
Dynamic linking guarantees that an application always uses the latest version of all library routines, and provides assurance that applications will continue to run properly as the underlying operating system evolves.
The capability of compiling programs using traditional archive libraries continues to be available.
.P
.XS I N
.CW
lib/rtld/*
.CN
.XF
.XK
.HU "Standard \s-2I/O\s+2 Library"
Standard \s-2I/O\s+2 (\f2stdio\f1) implements an efficient, user-level buffering scheme to provide portable input/output services for most \*(Cc programs.
Standard \s-2I/O\s+2 is available on every computer system that supports the \*(Cc language; thus, \*(Cc programs that confine their input/output to facilities of Standard \s-2I/O\s+2 can be transported from one system to another essentially without change.
The formatted input, \*(Cwscanf()\*(Cn\^, and formatted output, \*(Cwprintf()\*(Cn\^, families of functions use a format-specification string along with a list of variables.
The format-specification consists of normal characters that are transferred from standard input in the case of \*(Cwscanf()\*(Cn or onto standard output in the case of \*(Cwprintf()\*(Cn and special specification sequences that begin with a percent sign.
Furthermore, format-specifications can include field-width and justification format controls as well as controls for new-lines, horizontal and vertical tabbing, back-spaces, form-feeds, etc.
.P
.XS I N
.CW
lib/libc/m32/print.defs
lib/libc/m32/print/*
lib/libc/port/print/*
lib/libc/port/stdio/*
lib/libgen/p2open.c
lib/libgenIO/*
.CN
.XF
.SK
.HU "Character and String Handling Library"
The string-handling functions manipulate strings which are arrays of characters.
Some string-handling functions attach one string to the end of another to create a longer string (catenation), others search strings for specific characters or do lexicographic comparisons, such as testing the equality of two strings.
The routines that do regular-expression pattern-matching also fall into the same category as string-handling functions.
.P
The character processing functions take a single argument and perform a logical operation.
For example, the function \*(Cwisascii()\*(Cn returns a logical result stating whether the argument is an \s-1\f4ASCII\f1\s+1 character (\^\*(Cw0\*(Cn to \*(Cw177\*(Cn octal).
The other functions return a logical result stating whether the argument is a particular type of \s-1\f4ASCII\f1\s+1 character.
.P
.XS I N
.CW
lib/libc/m32/gen/memcpy.s
lib/libc/m32/gen/strcmp.s
lib/libc/m32/gen/strcpy.s
lib/libc/m32/gen/strlen.s
lib/libc/m32/gen/strtod.c
lib/libc/port/gen/_ctype.c
lib/libc/port/gen/_set_tab.c
lib/libc/port/gen/_shrd_data.c
lib/libc/port/gen/_wchar.h
lib/libc/port/gen/cat_init.c
lib/libc/port/gen/catclose.c
lib/libc/port/gen/catgets.c
lib/libc/port/gen/catopen.c
lib/libc/port/gen/cftime.c
lib/libc/port/gen/ctime.c
lib/libc/port/gen/ctype.c
lib/libc/port/gen/ctypefcns.c
lib/libc/port/gen/getdate.c
lib/libc/port/gen/getdate_data.c
lib/libc/port/gen/getdate_gd.c
lib/libc/port/gen/mbstowcs.c
lib/libc/port/gen/mbtowc.c
lib/libc/port/gen/memccpy.c
lib/libc/port/gen/memchr.c
lib/libc/port/gen/memcmp.c
lib/libc/port/gen/memcpy.c
lib/libc/port/gen/memmove.c
lib/libc/port/gen/memset.c
lib/libc/port/gen/old_tolower.c
lib/libc/port/gen/old_toupper.c
lib/libc/port/gen/strcat.c
lib/libc/port/gen/strchr.c
lib/libc/port/gen/strcmp.c
lib/libc/port/gen/strcpy.c
lib/libc/port/gen/strcspn.c
lib/libc/port/gen/strdup.c
lib/libc/port/gen/strerror.c
lib/libc/port/gen/strftime.c
lib/libc/port/gen/strlen.c
lib/libc/port/gen/strncat.c
lib/libc/port/gen/strncmp.c
lib/libc/port/gen/strncpy.c
lib/libc/port/gen/strpbrk.c
lib/libc/port/gen/strrchr.c
lib/libc/port/gen/strspn.c
lib/libc/port/gen/strstr.c
lib/libc/port/gen/strtod.c
lib/libc/port/gen/strtok.c
lib/libc/port/gen/strtol.c
lib/libc/port/gen/strtoul.c
lib/libc/port/gen/strxfrm.c
lib/libc/port/gen/swab.c
lib/libc/port/gen/time_data.c
lib/libc/port/gen/time_gdata.c
lib/libc/port/gen/tolower.c
lib/libc/port/gen/toupper.c
lib/libc/port/gen/wcstombs.c
lib/libc/port/gen/wctomb.c
lib/libgen/_range.h
lib/libgen/_regexp.h
lib/libgen/_wchar.h
lib/libgen/gmatch.c
lib/libgen/reg_compile.c
lib/libgen/reg_step.c
lib/libgen/regcmp.c
lib/libgen/regex.c
lib/libgen/regexpr.h
lib/libgen/strccpy.c
lib/libgen/strecpy.c
lib/libgen/strfind.c
lib/libgen/strrspn.c
lib/libgen/strtrns.c
lib/libgen/synonyms.h
lib/libw/*
.CN
.XF
.HU "Searching and Sorting Library"
.P
.XS I N
.CW
lib/libc/port/gen/bsearch.c
lib/libc/port/gen/ffs.c
lib/libc/port/gen/hsearch.c
lib/libc/port/gen/insque.c
lib/libc/port/gen/lfind.c
lib/libc/port/gen/lsearch.c
lib/libc/port/gen/qsort.c
lib/libc/port/gen/tfind.c
lib/libc/port/gen/tsearch.c
.CN
.XF
.HU "Wide Character Library"
.XS I N
.CW
lib/libw/_wchar.h
lib/libw/getwidth.c
lib/libw/libw.h
lib/libw/libw.mk
lib/libw/mbftowc.c
lib/libw/scrwidth.c
lib/libw/wisprint.c
.CN
.XF
.SK
.HU "Mathematical Library"
The mathematical functions of the \*(Cc library perform calculations used in engineering and scientific applications.
The mathematical functions include trigonometric and hyperbolic trigonometric functions, exponential, logarithmic and power functions as well as floating-point and other mathematical functions like Bessel and Gamma functions.
.P
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
lib/libc/m32/gen/abs.s
lib/libc/m32/gen/atof.c
lib/libc/m32/gen/biglitpow.s
lib/libc/m32/gen/dtop.c
lib/libc/m32/gen/ecvt.c
lib/libc/m32/gen/frexp.s
lib/libc/m32/gen/ladd.s
lib/libc/m32/gen/lconstants.c
lib/libc/m32/gen/ldexp.s
lib/libc/m32/gen/ldivide.c
lib/libc/m32/gen/lexp10.c
lib/libc/m32/gen/llog10.c
lib/libc/m32/gen/lmul.c
lib/libc/m32/gen/lshiftl.s
lib/libc/m32/gen/lsign.s
lib/libc/m32/gen/lsub.s
lib/libc/m32/gen/ltostr.c
lib/libc/m32/gen/ptod.c
lib/libc/m32/gen/sim.c
lib/libc/port/gen/a64l.c
lib/libc/port/gen/abs.c
lib/libc/port/gen/atof.c
lib/libc/port/gen/atoi.c
lib/libc/port/gen/atol.c
lib/libc/port/gen/div.c
lib/libc/port/gen/drand48.c
lib/libc/port/gen/ecvt.c
lib/libc/port/gen/frexp.c
lib/libc/port/gen/gcvt.c
lib/libc/port/gen/l3.c
lib/libc/port/gen/l64a.c
lib/libc/port/gen/ldexp.c
lib/libc/port/gen/modf.c
lib/libc/port/gen/modff.c
lib/libc/port/gen/rand.c
lib/libm/*
uts/3b2/io/ladd.s	double long add routine
uts/3b2/io/ldivide.c	double long divide routine
uts/3b2/io/lmul.c	double long multiply routine
uts/3b2/io/lshiftl.s	double long shift left/right routine
uts/3b2/io/lsign.s	double long sign routine
uts/3b2/io/lsub.s	double long subtract routine
uts/3b2/sys/dl.h	double long structure and routines:  struct \fIdl\fP
.TE
.S
.XF
.XK
.HU "Floating-point Library"
.P
.XS I N
.CW
lib/libc/m32/fp/*
.CN
.XF
.SK
.HU "Miscellaneous Library"
.P
.XS I N
.CW
lib/.lib.mk
lib/.libmk.temp
lib/libc/inc/*
lib/libc/libc.mk
lib/libc/m32/abi_objects
lib/libc/m32/crt/*
lib/libc/m32/gen/m32_data.s
lib/libc/m32/gen/sh_data.c
lib/libc/m32/m4.def
lib/libc/m32/makefile
lib/libc/m32/mcount.def
lib/libc/m32/nonpic.def
lib/libc/m32/pic.def
lib/libc/m32/shared_objects
lib/libc/port/gen/clock.c
lib/libc/port/gen/errlist
lib/libc/port/gen/errlist.awk
lib/libc/port/gen/ftok.c
lib/libc/port/gen/gethz.c
lib/libc/port/gen/makefile
lib/libc/port/gen/perror.c
lib/libc/port/gen/syslog.c
lib/libc/port/gen/time_comm.c
lib/libc/port/gen/values-Xa.c
lib/libc/port/gen/values-Xc.c
lib/libc/port/gen/values-Xt.c
lib/libc/port/makefile
lib/libcmd/*
lib/libgen/bgets.c
lib/libgen/bufsplit.c
lib/libgen/copylist.c
lib/libgen/eaccess.c
lib/libgen/libgen.h
lib/libgen/libgen.mk
lib/libgen/mklib-dot-h
.CN
.XF
.H 2 "\s-2XENIX\s+2 System Compatibility Package"
The \s-2XENIX\s+2 System Compatibility Package contains (in a library called \*(Cwlibx\*(Cn\^) system-calls for \s-2XENIX\s+2 shared-memory and semaphores as well as the \s-2XENIX\s+2 File and Record Locking interface (\^\*(Cwlocking\*(Cn\^).
See the \f2\s-2BSD\s+2/\s-2XENIX\s+2 Compatibility Guide\f1 for more information.
.P
.XS I N
.CW
pkg/xcp/*
.CN
.XF
.HU "\s-2XENIX\s+2 System Services"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(3.00i) l3f1.
uts/3b2/os/cxenix.c	\s-1XENIX\s+1 syscall dispatcher
uts/3b2/os/local.c	\fIclocal\fP syscall interface
uts/3b2/os/xsys.c	\s-1XENIX\s+1 compatibility syscalls
uts/3b2/sys/locking.h	\s-1XENIX\s+1 \fIlocking\fP syscall requests
uts/3b2/sys/proctl.h	\s-1XENIX\s+1 \fIproctl\fP syscall requests
uts/3b2/sys/sd.h	structure and defines for \s-1XENIX\s+1 shared data
uts/3b2/sys/timeb.h	structure (\fItimeb\fP) returned by the \fIftime\fP syscall
.TE
.S
.XF
.HU "\s-2XENIX\s+2 System \s-2FST\s+2ype \(em \*(Cwxnamfs\*(Cn"
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(3.00i) l3f1.
uts/3b2/fs/xnamfs/*
uts/3b2/master.d/xnamfs	configuration file for \*(Cwxnamfs\*(Cn boot module
uts/3b2/sys/fs/xnamnode.h	\s-2XENIX\s+2 shared data and semaphore structures
.TE
.S
.XF
.HU "\s-2XENIX\s+2 System Libraries"
.XS I N
.CW
:mkxcplib
xcplib/libx/libx.mk
xcplib/libx/m32/m4.def
xcplib/libx/m32/makefile
xcplib/libx/m32/mcount.def
xcplib/libx/m32/sys/_sdget.c
xcplib/libx/m32/sys/chsize.c
xcplib/libx/m32/sys/creatsem.c
xcplib/libx/m32/sys/cxenix.s
xcplib/libx/m32/sys/ftime.c
xcplib/libx/m32/sys/locking.c
xcplib/libx/m32/sys/nap.c
xcplib/libx/m32/sys/nbwaitsem.c
xcplib/libx/m32/sys/opensem.c
xcplib/libx/m32/sys/proctl.c
xcplib/libx/m32/sys/rdchk.c
xcplib/libx/m32/sys/scalls.h
xcplib/libx/m32/sys/sdenter.c
xcplib/libx/m32/sys/sdfree.c
xcplib/libx/m32/sys/sdgetv.c
xcplib/libx/m32/sys/sdleave.c
xcplib/libx/m32/sys/sdwaitv.c
xcplib/libx/m32/sys/sigsem.c
xcplib/libx/m32/sys/waitsem.c
xcplib/libx/port/makefile
xcplib/libx/port/sys/lock.c
xcplib/libx/port/sys/makefile
xcplib/libx/port/sys/sdget.c
.CN
.XF
.H 2 "\s-2BSD\s+2 System Compatibility Package"
The \s-2BSD\s+2 System Compatibility Package contains commands, libraries and system-calls specific to the Berkeley Software Distribution (\s-2BSD\s+2) that were not merged with the \*(SV base product.
It also includes software support for \*(Cwsendmail\*(Cn and the \s-2BSD\s+2 versions of \*(Cwnroff\*(Cn\^, \*(Cwtroff\*(Cn and \*(Cwlp\*(Cn\^.
See the \f2\s-2BSD\s+2/\s-2XENIX\s+2 Compatibility Guide\f1 for more information.
.HU "\s-2BSD\s+2 Header Files"
.XS I N
.CW
:mkucbhead
ucbhead/*
.CN
.XF
.XK
.HU "\s-2BSD\s+2 System Libraries"
.XS I N
.CW
:mkucblib
ucblib/*
.CN
.XF
.H 2 "Real-Time System Facilities"
Historically, the \*(UX system has been a general-purpose time-sharing system.
Today, however, \*(UX systems see more and more use in environments that require real-time processing.
\*(R4 introduces significant new capabilities to support real-time processing:
.AL 1
.LI
The first of these capabilities is a tunable, fixed-priority process scheduler that a user-process can invoke.
The new scheduler module allows a process to tune the system to provide the level of service it requires, while allowing other processes to coexist on the system.
.LI
The second capability is a high-resolution timing service.
While the absolute resolution of system timers is limited by the hardware clock speed on each system, all user programs will have access to timing services with a resolution no coarser than 1 msec.
This significantly improves on existing \*(SV capabilities.
.LE 1
The \*(R4 kernel has been substantially improved to increase its responsiveness for real-time applications.
The insertion of many preemption points permits lower interrupt latency without introducing the overhead of locking for non-real-time environments.
.P
The Real-Time and Transaction Processing environments, although two separate application areas, overlap in several critical functional areas.
While the low-level design and implementation may require some differences for the two, many of the high-level features are common.
Therefore, the approach used to penetrate these markets is to provide the low-level operating system features necessary to support both environments, rather than trying to make \*(SV a real-time or transaction processing operating system, per se.
That is, the objective is to provide support for these environments, not necessarily to build new versions of the operating system.
.P
The real-time and transaction processing features are partitioned into the following categories:
.DS CB N
.BL
.LI
User-controlled Process Scheduling
.LI
High-resolution timing services
.LE
.DE
.SK
.HU "User-controlled Process Scheduling"
User-controlled Process Scheduling restructures the basic mechanisms \*(SV uses to schedule process activity.
The underlying kernel mechanisms must be robust, and allow for a wide range of tunable parameters.
The two important options are traditional timesharing, and a new real-time option.
Specifically, support of \f2real-time\fP processes requires a scheduling mechanism that is based on process priorities controlled by user-programs.
.P
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
lib/libc/m32/sys/priocntlset.s
lib/libc/port/gen/priocntl.c
.TE
.S
.XF
.HU "High-Resolution Timing Services"
For applications that deal with very short time intervals, \*(R4 offers \s-2BSD\s+2 timing services, which give microsecond resolution.
While the hardware clock speed on each system limits the absolute resolution of system timers, all user programs can access timing services with a resolution no coarser than 1 microsecond.
These services include alarms, interval timers and a time-of-day clock.
(Some of these services were available on earlier System V releases, but with lower-timing resolution.)
.P
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/io/hrt.mk
uts/3b2/io/hrtimers.c	make file for high resolution timer routines
uts/3b2/master.d/hrt	configuration file for the \*(Cwhrt\*(Cn boot module
uts/3b2/sys/hrtcntl.h	high resolution timer interface and control structures
uts/3b2/sys/hrtsys.h	kernel structure for high resolution timers
uts/3b2/sys/asyncio.h	asynchronous \s-2I/O\s+2 header and flag defines \*(CwAIOF_\*(Cn\s-2\f2XXX\f1\s+2
uts/3b2/sys/asyncsys.h	asynchronous \s-2I/O\s+2 syscall interface
uts/3b2/sys/evecb.h	general events control block and related defines
uts/3b2/sys/events.h	general events interface
uts/3b2/sys/evsys.h	structs and defines for general events \s-2FST\s+2ype
uts/3b2/sys/evsyscall.h	defines for general events syscalls
lib/libc/port/gen/getsetitimer.c
lib/libc/port/gen/gettimeofday.c
lib/libc/port/gen/hrtcftime.c
lib/libc/port/gen/hrtctime.c
lib/libc/port/gen/hrtnewres.c
lib/libc/port/gen/hrtstrftime.c
lib/libc/port/sys/hrtsys.c
.TE
.S
.XF
.HU "Real-Time System Commands"
.P
.XS I N
.CW
cmd/priocntl/*
.CN
.XF
.H 2 "Extended Terminal Interface (\s-2ETI\s+2)"
\*(R4 provides the Extended Terminal Interface (\s-2ETI\s+2), a standard programming interface for character mode screen management and text operations.
\s-2ETI\s+2 consists of three facilities, the \*(Cwcurses\*(Cn library, the \*(Cwterminfo\*(Cn data base and a high-level function library which provides \*(Cc language functions for creating and editing forms, menus and panels.
.P
Basic \s-2ETI\s+2 functions cover the standard set of terminal input/output routines defined by the \*(Cwcurses\*(Cn/\*(Cwterminfo\*(Cn package for the many different types of asynchronous character-oriented terminals on the market today.
The \*(Cwcurses\*(Cn/\*(Cwterminfo\*(Cn package features window control, highlighting, scrolling, multiple terminals and support for special keys.
The \*(Cwcurses\*(Cn functions work with the \*(Cwterminfo\*(Cn database which describes the hardware features and escape sequences used by different terminals.
Thus, programmers can write terminal-independent applications that use the terminal-dependent capabilities specified in a common database, allowing application-programs to perform terminal-handling functions in a way independent of the type of terminal used.
.P
The \*(Cwterminfo\*(Cn database describes terminals, by giving a set of capabilities possessed by the terminal, by describing how operations are performed, by describing padding requirements and by specifying initialization sequences.
The Terminal Information Utilities package contains a database (\^\*(Cwterminfo\*(Cn\^) that allows programmers to write programs to manipulate screens (and parts of screens, such as function keys and soft labels) of video display terminals.
As delivered, the \*(Cwterminfo\*(Cn database contains descriptions of over 150 terminals.
.P
The \*(Cwcurses\*(Cn library routines give the user a method of updating screens with reasonable optimization.
The \*(Cwcurses\*(Cn library permits manipulation of data structures called \f2windows\f1 which can be thought of as two-dimensional arrays of characters representing all or part of a \s-2CRT\s+2 screen; it also supplies a default window called \*(Cwstdscr\*(Cn\^.
Special windows called \f2pads\f1 may also be manipulated.
These are windows which are not constrained to the size of the screen and whose contents need not be completely displayed.
.P
In addition to drawing characters on the screen, video attributes may be included which cause the characters to show up in such modes as underlined or in reverse video on terminals that support such display enhancements.
On input, \*(Cwcurses\*(Cn also can translate arrow and function keys that transmit escape sequences into single values.
.P
High-level \s-2ETI\s+2 functions work on character-oriented screen-displays through data-structures that represent \f2panels\f1, \f2menus\f1 and \f2forms\f1.
The \s-2ETI\s+2 functions provide application-programmers with functions to create and interact with the panels, menus and forms and that allow programmers to tailor the forms and menus for specific applications.
\s-2ETI\s+2 also includes functions to define help, error and other types of messages and to allow users to display and change messages quickly and easily.
.P
\s-2ETI\s+2 defines the following data-structures for character-oriented screen-displays:
.DS L F
.LB 9 0 0 0 \(em 1 1
.LI "\f2Panels\f1" 1
overlapping \*(Cwcurses\*(Cn windows with relations of depth to other windows so that regions hidden behind other windows are invisible.
.LI "\f2Forms\f1" 1
screen-displays of one or more pages composed of fields used for data entry by the user or for messages to guide the user.
.LI "\f2Menus\f1" 1
screen-displays that present a set of items from which the user selects one or more items with the program responding to the selections.
.LE 1
.DE
\s-2ETI\s+2 functions manipulate these screen-display data-structures in the following ways:
.DS L F
.LB 3 0 0 0 \(bu 1 1
.LI
Panel functions can create, move, hide and re-order panels, and set and fetch other panel attributes.
.LI
Form functions can create and free form fields, and set the types of fields, establish field options and set and fetch other field attributes.
.LI
Form functions can create and free display forms, and create form titles and borders, change field associated with a form, process end-user form requests and set and fetch other form attributes.
.LI
Menu functions can create and free menu items, establish item options and set and fetch other item attributes.
.LI
Menu functions can create and free menus, process end-user menu requests (including movement between menu items, menu scrolling and item matching) and set and fetch other item attributes.
.LE 1
.DE
See the \f2Programmer's Guide: Character User Interfaces (\s-2ETI\s+2)\f1 for more information.
.XK
.HU "Character Terminal Interface (\^\*(Cwcurses\*(Cn\^) Library"
.XS I N
.CW
lib/xlibcurses/*
.CN
.XF
.XK
.HU "Forms, Menus & Panels Library"
.XS I N
.CW
lib/zlibeti/*
lib/zlibetitam/*
.CN
.XF
.XK
.HU "Terminal Information (\^\*(Cwterminfo\*(Cn\^) Utilities"
.XS I N
.CW
cmd/clear/*
cmd/terminfo/*
.CN
.XF
.H 1 "Shells, Commands & Utilities"
Shells, Commands & Utilities encompass operating system software that builds on and surrounds the operating system kernel.
Shells, Commands & Utilities provide most end-user functionality (excluding Programming Tools & Languages used by software developers) and comprises a wide range of libraries, commands and utilities, including printing and plotting facilities and character user interfaces.
.HU "\f(HB\s-2UNIX\s+2\fP System Shells"
The Shell acts as the primary user-interface for \*(SV.
The Shell accepts input from the user and interprets it as commands to the operating system.
The Shell works both as an interactive command line interpreter and as a powerful programming language.
.P
The Shell allows users to enhance and build on \*(SV capabilities and to adapt the operating system to many applications without needing a compiler, loader or other language translation steps.
The user can quickly write custom ``shell procedures'' or ``scripts'' to do simple or complex tasks.
Because Shell scripts are easy to create and use, they can avoid much of the drudgery associated with a programming language compiler.
The flexible command language lets users make the system appear the way they want it to; that is, they can tailor the user-interface to meet the specific needs, and each user can have a different interface.
.HU "Commands & Utilities"
\*(SV commands and utilities represent programs the Shell can execute at the request of the user.
Each \*(UX program typically implements one simple and general function that different applications can use (including many the original programmer never imagined).
Different commands serve different purposes and perform separate functions.
Separate commands, for example, rename files, delete them or report on their size and other relevant statistics.
\*(SV commands and utilities work as ``tools'' that do generic data processing tasks.
.P
\*(SV offers a wide variety of commands and utilities.
Commands that operate on files let users create, organize and remove files and directories as well as provide the means to copy, edit and print files.
Commands include text-editing utilities such as line and screen editors for creating and changing text and pattern-matching utilities for extracting data from files.
Commands exist that process and compare the contents of files and that perform more sophisticated information processing techniques.
.HU "Character User Interfaces"
For character terminal applications, the Framed Access Command Environment (\s-2FACE\s+2) and the Form and Menu Language Interpreter (\s-2FMLI\s+2) provide terminal independent access to forms and menus.
.H 2 "\s-2BSD\s+2 System Utilities"
.HU "\s-2BSD\s+2 System Commands"
.if \np \{
.in +.25i
.CW
:mkucb
:mkucbcmd
pkg/compat/*
ucb.dirs
ucbcmd/arch/*
ucbcmd/basename/*
ucbcmd/biff/*
ucbcmd/cc/*
ucbcmd/checkeq/*
ucbcmd/checknr/*
ucbcmd/chown/*
ucbcmd/df/*
ucbcmd/diffmk/*
ucbcmd/du/*
ucbcmd/echo/*
ucbcmd/expand/*
ucbcmd/fastboot/*
ucbcmd/fasthalt/*
ucbcmd/fsirand/*
ucbcmd/groups/*
ucbcmd/grpck/*
ucbcmd/halt/*
ucbcmd/hostid/*
ucbcmd/hostname/*
ucbcmd/install/*
ucbcmd/lastcomm/*
ucbcmd/ld/*
ucbcmd/lint/*
ucbcmd/ln/*
ucbcmd/logger/*
ucbcmd/look/*
ucbcmd/ls/*
ucbcmd/mach/*
ucbcmd/mt/*
ucbcmd/pagesize/*
ucbcmd/plot/*
ucbcmd/printenv/*
ucbcmd/prt/*
ucbcmd/ps/*
ucbcmd/pwck/*
ucbcmd/reboot/*
ucbcmd/renice/*
ucbcmd/sccscmd/*
ucbcmd/sendmail/*
ucbcmd/shutdown/*
ucbcmd/stty/*
ucbcmd/sum/*
ucbcmd/tcopy/*
ucbcmd/test/*
ucbcmd/tr/*
ucbcmd/tset/*
ucbcmd/ul/*
ucbcmd/unifdef/*
ucbcmd/users/*
ucbcmd/w/*
ucbcmd/which/*
ucbcmd/whoami/*
ucbcmd/xstr/*
.CN
.in -.25i
\}
.XK
.HU "\s-2BSD\s+2 System Text Processing Utilities"
.XS I N
.CW
ucbcmd/deroff/*
ucbcmd/eqn/*
ucbcmd/man/*
ucbcmd/refer/*
ucbcmd/soelim/*
ucbcmd/tbl/*
ucbcmd/troff/*
.CN
.XF
.H 2 "Encryption Facilities"
The Encryption Facilities provide an encryption mechanism for protecting information.
These facilities provide additional protection beyond that obtained through login-ids, passwords and permission modes.
The Encryption Facilities are used by the \*(Cwcrypt\*(Cn command, as well as in the editors \*(Cwed\*(Cn, \*(Cwedit\*(Cn, \*(Cwex\*(Cn and \*(Cwvi\*(Cn.
New in \*(R4 are \s-2DES\s+2 encryption facilities, which are used by Remote Procedure Call \*(Cwrpc\*(Cn.
.P
Export regulations restrict distribution of the Encryption Facilities package only to licensees within the United States, and forbid export to other countries.
.P
For more information, see the \f2crypt(1)\f1, \f2ed(1)\f1, \f2edit(1)\f1, \f2ex(1)\f1 and \f2vi(1)\f1 manual pages in the \f2User's Reference Manual\f1.
.HU "Encryption Library"
.XS I N
.CW
.XX < ../syscmd/crypt/uts
lib/libc/port/gen/crypt.c
lib/libcrypt/*
lib/libgen/isencrypt.c
.CN
.XF
.HU "Encryption Commands"
.XS I N
.CW
cmd/crypt/*
cmd/makekey/*
.CN
.XF
.H 2 "Localization Facilities"
\*(R4 provides several new features that facilitate localization of application programs.
\*(R4 conforms to all \s-2ANSI\s+2 X3J11 international conventions, which provides basic programming facilities for developing international programs.
This includes the ability to set the locale of a program so that it can use locale specific date and time formats and character classification information.
Functions and library routines provide information in formats consistent with local conventions, and system facilities are modified to work properly with multibyte character sets.
The locale routines handle localization, character classification and translation functions as well as multi-byte character and string conversions that support internationalization.
Other routines affecting internationalization include date and time routines that keep track of the local time and time zones and which change the format of date strings depending on locale.
In addition, \*(R4 provides a message library facility that lets programs print messages in different languages without recompilation.
.HU "Localization Library"
.XS I N
.CW
lib/libc/port/gen/_loc_data.c
lib/libc/port/gen/_locale.c
lib/libc/port/gen/_locale.h
lib/libc/port/gen/colldata.c
lib/libc/port/gen/colldata.h
lib/libc/port/gen/fmtmsg.c
lib/libc/port/gen/gettxt.c
lib/libc/port/gen/localeconv.c
lib/libc/port/gen/nl_langinfo.c
lib/libc/port/gen/setlocale.c
.CN
.XF
.XK
.HU "Localization and Message String Handling Utilities"
.XS I N
.CW
cmd/exstr/*
cmd/gencat/*
cmd/gettxt/*
cmd/iconv/*
cmd/localedef/*
cmd/mkmsgs/*
cmd/srchtxt/*
cmd/zdump/*
cmd/zic/*
.CN
.XF
.H 2 "Command Line Interpreters"
The Shell acts as the primary user-interface for \*(SV.
The Shell accepts input from the user and interprets it as commands to the operating system.
The Shell works both as an interactive command line interpreter and as a powerful programming language.
.P
As a command line interpreter, the Shell executes commands that are read either from a terminal or from a file, and the Shell can modify the environment in which commands run.
Files containing commands may be created, allowing users to build their own commands.
These newly defined commands may be parameterized and can have the same status as existing system commands because users can define the sequence in which to search directories in the file-system to find commands.
In this way a new environment can be established reflecting the requirements or style of an individual user or group of users.
.P
As a programming language, the Shell offers several features found in algorithmic languages such as string-valued variables, parameter passing and control-flow primitives including iteration and branching.
Constructs such as \*(Cwwhile\*(Cn\^, \*(Cwif\*(Cn\^, \*(Cwfor\*(Cn and \*(Cwcase\*(Cn are available.
Shell commands resemble function calls in high-level languages, like \*(Cc.
String-valued parameters, typically file-names or flags, may be passed to the command.
The output from an arbitrary command may be used as a string, enabling arithmetic and other facilities not provided by the Shell to be accessed as commands.
Two-way communication is possible between the Shell and commands.
A return code is set by commands and may be used to determine the flow of control, and the standard output from a command may be used as input to the Shell.
Users can redirect command input and output and can invoke processes that communicate through ``pipes.''
.HU "Bourne Shell (\^\*(Cwsh\*(Cn\^)"
.P
.XS I N
.CW
cmd/sh/*
.CN
.XF
.XK
.HU "\*(Cc Shell (\^\*(Cwcsh\*(Cn\^)"
.P
.XS I N
.CW
cmd/csh/*
.CN
.XF
.XK
.HU "Korn Shell (\^\*(Cwksh\*(Cn\^)"
The Korn Shell is a popular command interpreter for the \*(UX System
that provides compatibility with the standard \*(SV shell, plus additional
capabilities, including command line editing, command history, powerful
alias and function capabilities, and more.
.P
.XS I N
.CW
cmd/ksh/*
.CN
.XF
.XK
.HU "Shell Layers (\^\*(Cwshl\*(Cn\^)"
.P
.XS I N
.CW
cmd/shl/*
.CN
.XF
.H 2 "Core System Utilities"
Core System Utilities contains Basic and Advanced commands and utilities drawn from the ``User Environment'' and ``Core Commands and Utilities'' packages in previous releases.
This includes the most essential and commonly-used commands, including installation and configuration management utilities as well as message management and monitoring utilities.
Core System Utilities also include commands to do the following:
.BL
.LI
perform mathematical calculations
.LI
check or change the executing environment of commands
.LI
schedule commands to be executed at a later time
.LI
interact with more than one session from any terminal and switch easily between these virtual layers, as if logged in from several terminals simultaneously (this feature works with any terminal, whereas the Windowing Utilities package works only with terminals that have specific capabilities, such as the \*(Co 630 \s-2MTG\s+2, a dot-matrix display terminal).
.LE 1
For additional information about Core System Utilities package and how to use them, see the \f2User's Guide\f1, the Essential Utilities manual pages in the \f2User's Reference Manual\f1 and \f2System Administrator's Reference Manual\f1.
.HU "Basic Commands & Utilities"
Basic Commands and Utilities are included in the Basic Utilities (\*(CfBU\*(Cx) section of \s-2SVID3\s+2.
.P
.if \np \{
.in +.25i
.CW
cmd/banner/*
cmd/basename/*
cmd/cal/*
cmd/calendar/*
cmd/cat/*
cmd/chmod/*
cmd/cmp/*
cmd/cpio/*
cmd/date/*
cmd/diff/*
cmd/dirname/*
cmd/du/*
cmd/echo/*
cmd/expr/*
cmd/false/*
cmd/file/*
cmd/find/*
cmd/fold/*
cmd/kill/*
cmd/line/*
cmd/ls/*
cmd/mkdir/*
cmd/mkfifo/*
cmd/mv/*
cmd/nohup/*
cmd/pg/*
cmd/pr/*
cmd/ps/*
cmd/pwd/*
cmd/rm/*
cmd/rmdir/*
cmd/sleep/*
cmd/sort/*
cmd/streams/strcmd/*
cmd/tee/*
cmd/true/*
cmd/uname/*
cmd/wc/*
.CN
.in -.25i
\}
.XK
.HU "Advanced Commands & Utilities"
Advanced Commands and Utilities are included in the Advanced Utilities (\*(CfAU\*(Cx) section of \s-2SVID3\s+2.
.P
.XS I N
.CW
cmd/bc/*
cmd/chgrp/*
cmd/chown/*
cmd/cron/*
cmd/dc/*
cmd/dd/*
cmd/factor/*
cmd/getopt/*
cmd/groups/*
cmd/id/*
cmd/logname/*
cmd/mesg/*
cmd/newgrp/*
cmd/news/*
cmd/passwd/*
cmd/regcmp/*
cmd/strings/*
cmd/su/*
cmd/tabs/*
cmd/tar/*
cmd/tty/*
cmd/units/*
cmd/wall/*
cmd/who/*
cmd/write/*
.CN
.XF
.H 2 "Directory & File Management Utilities"
The Directory & File Management Utilities package consists of more than twenty-five commands that provide enhanced file and directory manipulation capabilities.
With these commands, a user can do the following things:
.BL
.LI
search directories or files
.LI
compare the contents of directories or files
.LI
manipulate the contents of files.
.LE 1
For more information, see the \f2User's Guide\f1 and the Directory & File Management Utilities manual pages in the \f2User's Reference Manual\f1.
.P
The Directory & File Management Utilities are divided into two sections: Basic and Advanced, to conform with the \s-2SVID\s+2 \*(CfBU\*(Cx and \*(CfAU\*(Cx categories.
.HU "Basic File Management Utilities"
.XS I N
.CW
cmd/awk/*
cmd/col/*
cmd/comm/*
cmd/compress/*
cmd/cut/*
cmd/diff3/*
cmd/fmt/*
cmd/grep/*
cmd/head/*
cmd/nl/*
cmd/oawk/*
cmd/pack/*
cmd/paste/*
cmd/split/*
cmd/sum/*
cmd/tail/*
cmd/touch/*
cmd/tr/*
cmd/uniq/*
cmd/unpack/*
.CN
.XF
.XK
.HU "Advanced File Management Utilities"
.XS I N
.CW
cmd/bdiff/*
cmd/bfs/*
cmd/csplit/*
cmd/dircmp/*
cmd/egrep/*
cmd/fgrep/*
cmd/join/*
cmd/more/*
cmd/newform/*
cmd/od/*
cmd/sdiff/*
.CN
.XF
.H 2 "Text Processing Utilities"
The Text Processing Utilities include the following Technology Groups:
.BL
.LI
Spell Checking Utilities
.LI
Basic Text Editing Utilities
.LI
Advanced Text Editing Utilities
.LE
.HU "Spell Checking Utilities"
The Spell Checking Utilities package contains a program and dictionary files that enable a user to check for misspelled words in a file.
The performance of \*(Cwspell\*(Cn can be monitored by reviewing a file that contains a history of misspelled words.
.P
For more information, see the Spell Checking Utilities manual pages in the \f2User's Reference Manual\f1.
.P
.XS I N
.CW
.XX < ../syscmd/textp/head.spell
.XX < ../syscmd/textp/uts.spell
.XX < ../syscmd/textp/lib.spell
cmd/deroff/*
cmd/spell/*
.CN
.XF
.HU "Basic Text Editing Utilities"
.P
.XS I N
.CW
.XX < ../syscmd/textp/head.edit
.XX < ../syscmd/textp/uts.edit
.XX < ../syscmd/textp/lib.edit
cmd/ed/*
cmd/sed/*
.CN
.XF
.XK
.HU "Advanced Text Editing Utilities"
The Advanced Text Editing Utilities package provides three related editors: two line editors (\*(Cwedit\*(Cn and \*(Cwex\*(Cn) and a screen editor (\*(Cwvi\*(Cn).
The \*(Cwedit\*(Cn editor is mainly for novice users.
The \*(Cwex\*(Cn editor is an advanced version of \*(Cwedit\*(Cn and is for experienced users.
The \*(Cwvi\*(Cn editor is intended for all users;
it allows the user to view a screen of text at one time and move the terminal's cursor directly to any position in the file.
.P
For more information, see the Editing Utilities manual pages in the \f2User's Reference Manual\f1.
.P
.XS I N
.CW
.XX < ../syscmd/textp/head.edit
.XX < ../syscmd/textp/uts.edit
.XX < ../syscmd/textp/lib.edit
cmd/vi/*
.CN
.XF
.H 2 "Printing Facilities"
The Line Printer (\s-2LP\s+2) Spooling Utilities package provides the temporary storing (spooling) of data until it can be printed.
With \s-2LP\s+2 spooling, print requests can be entered at a terminal and printing can take place without tying up the terminal.
Spooling also enables many users to share a printer or several printers, efficiently.
The commands in this package can perform the following functions:
.BL
.LI
customize the system so that it will spool to a group of line printers
.LI
group printers into logical classes to maximize the throughput of the printers
.LI
queue print requests, thus allowing a print request (job) to get printed on the next available printer in the appropriate class
.LI
cancel print requests, so a job that is no longer needed will not be printed
.LI
start and stop the \s-2LP\s+2 spooling software from processing requests
.LI
change the configuration of printers
.LI
find the status of the \s-2LP\s+2 scheduler
.LI
restart any printing that was not completed when the system was powered down
.LI
connect multiple computers (running either \*(R4 or Sun\s-2OS\s+2) into a network so that the users of one computer can use any of the printers connected to the other computers in the network.
.LE 1
For information about using this package, see the \f2User's Guide\f1 and the \f2User's Reference Manual\f1.
For information about administering this package, see the \f2System Administrator's Guide\f1 and the \f2System Administrator's Reference Manual\f1.
.XK
.HU "Line Printer Spooling Utilities"
.XS I N
.CW
.XX < ../syscmd/lp/head.lp
.XX < ../syscmd/lp/uts.lp
.XX < ../syscmd/lp/lib.lp
cmd/lp.admin/*
cmd/lp/cmd/*
cmd/lp/common.mk
cmd/lp/crontab/*
cmd/lp/etc/*
cmd/lp/include/*
cmd/lp/lib/*
cmd/lp/lp.mk
cmd/lp/model/*
cmd/lp/terminfo/*
.CN
.XF
.XK
.HU "Line Printer PostScript\*(Rg Filters"
.XS I N
.CW
.XX < ../syscmd/lp/head.postscript
.XX < ../syscmd/lp/uts.postscript
.XX < ../syscmd/lp/lib.postscript
cmd/lp/filter/*
.CN
.XF
.H 2 "Plotting Facilities"
\*(SV Plotting Facilities include commands and library routines used by the System Performance Analysis Utilities (\s-2SPAU\s+2).
.HU "Plotting Library"
.XS I N
.CW
lib/libplot/*
.CN
.XF
.HU "Plotting Commands"
.XS I N
.CW
cmd/graph/*
cmd/spline/*
cmd/tplot/*
.CN
.XF
.H 2 "Character User Interfaces"
.HU "Form & Menu Language Interpreter (\s-2FMLI\s+2)"
An earlier release of \*(UX System V introduced the Form and Menu Language Interpreter (\s-2FMLI\s+2)\(ema high-level language interpreter that allows developers to write user-friendly interfaces to their applications.
\*(V4 provides extensions to the Form and Menu Language, including a way to interrupt executables, a conditional statement (if-then-else), new built-in functions \*(Cwtest\*(Cn and \*(Cwexpr\*(Cn as well as other improvements that give \s-2FMLI\s+2 programmers more control over the appearance and behavior of their application interface.
.P
For more information about \s-2FMLI\s+2, see the \f2Programmer's Guide: Character User Interfaces (\s-2FMLI\s+2 and \s-2ETI\s+2)\f1.
.P
.XS I N
.CW
cmd/fmli/*
.CN
.XF
.XK
.HU "Framed Access Command Environment (\s-2FACE\s+2)"
Framed Access Command Environment (\s-2FACE\s+2) is a package that provides a character-based menu interface to the \*(UX system intended for non-expert computer users.
\s-2FACE\s+2 allows a user to see the \*(UX system through frames containing menus and forms.
It provides a hierarchy of forms and menus through which a user can execute basic \*(UX system commands for file editing and text manipulation.
It also includes tools for creating a menu of services through which a user can access application packages.
In \*(R4 \s-2FACE\s+2 has been enhanced to be more consistent with the version of \s-2FACE\s+2 developed for \*(SV/386 Release 3.2, and adding applications to \s-2FACE\s+2 has been made easier.
.P
See the \f2User's Guide\f1 for more information about \s-2FACE\s+2 and a tutorial that explains how to use \s-2FACE\s+2.
.P
.XS I N
.CW
cmd/face/*
.CN
.XF
.H 1 "System Administration Facilities"
One of the goals of \*(R4 is to simplify system administration and maintenance, while at the same time adding functionality to meet the demands of increasingly complex computer and network configurations.
Toward that goal, \*(R4 provides new capabilities in backup and restore operations, and software installation.
Commands have been defined or augmented for software installation and removal, configuration management and file-system backup and restore.
The \s-2BSD\s+2 administrative commands are also incorporated.
\s-2SVR4\s+2 also introduces an enhanced administration interface that makes it easier for a novice administrator to set up and maintain a system.
\*(R4 has enhanced many aspects of system administration and maintenance.
.P
A greatly enhanced and unified set of system administration tools is part of \*(R4.
The programs present a consistent, extensible, menu-driven, interface to the array of administrative tools.
.P
For detailed information about these features and for information about system administration in general, see the \f2System Administrator's Guide\f1 and the System Administration Utilities manual pages in the \f2System Administrator's Reference Manual\f1.
The system administration features new in \*(R4 are described in the following sections:
.HU "\s-2OA&M\s+2 Interface"
\*(R4 provides an enhanced and more extensible administrator's interface.
The new interface is ``form and menu'' based, and incorporates a much broader set of administrative tasks than did its predecessor.
System Administration Menus (accessed using the \*(Cwsysadm\*(Cn command) allow a user to administer a \*(UX system without knowing the exact commands and utilities needed.
Context-sensitive help messages make it possible for an administrator to explore the interface with a minimum of documentation.
The system also provides tools to use when extending the interface to new tasks.
.HU "Software Installation and Configuration Management"
Software installation, and configuration management are two independent, but inter-related features.
As a group, they allow the customer to load software in their systems (either manually or via a network) and to easily access information on the system configuration.
The following sections describe the plans for each feature included in \*(R4.
.H 4 "Software Installation"
This feature installs and removes operating system releases (both major and maintenance), package updates and tools/add-on packages.
It is aimed at providing installation procedures that are consistent across software packages, releases and machines.
.P
The installation procedure is powerful enough to handle the needs of a wide range of software and hardware combinations, as well as provide a simple end-user view of installation and a simple interface for developers.
Current problems involving consistency, reliability, maintainability and security are  addressed.
More functionality and control mechanisms are placed in the system, requiring less sophistication in the software installation scripts provided with the package.
.P
Compatibility is guaranteed for packages that comply with the standard installation procedures.
Add-ons that were installable and removable on previous releases and that followed the porting base standard installation procedure will also work properly on future releases of \*(SV.
.H 4 "Configuration Management"
Configuration Management has the following functions:
.BL
.LI
Displaying user, software, system and hardware configuration information,
.LI
Allowing application developers to easily access system and hardware configuration information,
.LI
Checking for package hardware and software dependencies at installation time,
.LI
Changing the system name through the \*(Cwsetuname\*(Cn command instead of \*(Cwuname -S\*(Cn\^.
.LE 1
There are three main areas for which the Configuration Management feature will provide displays:  user and system logins, software information and system and hardware information.
This new feature accesses information on each area (user, software, hardware) via a single command for each type of information. 
.P
In addition, an application developer's interface is provided to access hardware information.
This interface consists of routines to access information on the system memory and physically installed boards.
Furthermore, configuration management interacts with the Installation Tool to determine package hardware dependencies at installation time.
A new command changes the information displayed by \*(Cwuname\*(Cn\^.
.P
\*(R4 provides an entirely new software packaging and installation method, together with the utilities needed to construct and install software packages.
The installation mechanism maintains a local database on each system, and is capable of tracking cross-package dependencies, storing information on all installed packages, and managing file version numbers inside packages.
.HU "Backup and Restore"
\*(R4 provides a new backup and restore utility that can store backups on any medium, and which supports on-line restore requests from system users.
The utility automatically keeps and maintains all backup history records as well.
.HU "Message Management"
\*(R4 includes all the underlying mechanisms required for all programs to provide user messages of uniform format and consistent content.
.HU "Command Line Interpreters"
\*(R4 provides and supports the \s-2BSD\s+2 \*(Cc-shell and the Korn shell, though the standard \*(SV shell remains the default for users and system scripts.
.HU "The Directory Tree"
\*(R4 substantially rearranges the layout of files in the \*(SV file tree to better meet the needs of distributed computing environments.
In \*(R4, the \*(SV directory-tree has been arranged to facilitate sharing files, directories and file-systems in a networked environment.
\*(R4 divides files in the system into four standard file-systems: \*(Cw/\*(Cn (called ``root''), \*(Cw/usr\*(Cn\^, \*(Cw/home\*(Cn and \*(Cw/var\*(Cn\^.
Within the standard file-systems, files are organized by type, with each type occupying a separate branch of the tree.
The directory-tree defines three file types: machine private files, architecture dependent files and architecture independent files.
Because the directory-tree separates private files from shareable files, a system administrator can easily mount a complete file-system for distribution over a network.
.H 2 "Operation, Administration & Maintenance (\s-2OA&M\s+2) Facilities"
\*(R4 introduces an enhanced and more extensible administrator's interface that makes it easier for a novice administrator to set up and maintain a system.
The new interface is ``form and menu'' based, and incorporates a much broader set of administrative tasks than did its predecessor.
The System Administration Menus (accessed using the \*(Cwsysadm\*(Cn command) allow a user to administer a \*(UX system without knowledge of the exact commands and utilities needed.
Context-sensitive help messages make it possible for an administrator to explore the interface with a minimum of documentation.
The \*(Cwedsysadm\*(Cn and \*(Cwdelsysadm\*(Cn commands for customizing the \*(Cwsysadm\*(Cn interface provides tools to use when extending the interface to new tasks.
.P
For more information, see the \f2System Administrator's Guide\f1 and the System Administration Utilities manual pages in the \f2System Administrator's Reference Manual\f1.
.HU "\s-2OA&M\s+2 Interface Libraries"
.XS I N
.CW
lib/libadm/ckdate.c
lib/libadm/ckgid.c
lib/libadm/ckint.c
lib/libadm/ckitem.c
lib/libadm/ckkeywd.c
lib/libadm/ckpath.c
lib/libadm/ckrange.c
lib/libadm/ckstr.c
lib/libadm/cktime.c
lib/libadm/ckuid.c
lib/libadm/ckyorn.c
lib/libadm/data.c
lib/libadm/getinput.c
lib/libadm/libadm.mk
lib/libadm/memory.c
lib/libadm/puterror.c
lib/libadm/puthelp.c
lib/libadm/putprmpt.c
lib/libadm/puttext.c
lib/libadm/regexp.c
lib/libadm/space.c
.CN
.XF
.SK
.HU "\s-2OA&M\s+2 Interface Utilities"
.XS I N
.CW
cmd/fmtmsg/*
cmd/oamintf/edsysadm/*
cmd/oamintf/interface/*
cmd/oamintf/intf_include/*
cmd/oamintf/intf_install/*
cmd/oamintf/intf_reloc/*
cmd/oamintf/intf_remove/*
cmd/oamintf/libintf/*
cmd/oamintf/oamintf.mk
cmd/osadmin/README
cmd/osadmin/admin/Makefile
cmd/osadmin/admin/menu/DESC
cmd/osadmin/admin/menu/diagnostics/*
cmd/osadmin/admin/menu/machinemgmt/*
cmd/osadmin/admin/menu/syssetup/*
cmd/osadmin/admin/menu/ttymgmt/*
cmd/osadmin/admin/shade.c
cmd/osadmin/admin/sysadm
cmd/osadmin/check/*
cmd/osadmin/cmain/*
cmd/osadmin/csub/*
cmd/osadmin/include/*
cmd/osadmin/osadmin.mk
cmd/osadmin/shell/*
cmd/printf/*
cmd/valtools/*
.CN
.XF
.H 2 "Virtual File System Administration Facilities"
.HU "File System Independent Utilities"
.P
.XS I N
.CW
cmd/dfsck/*
cmd/fs.d/df.c
cmd/fs.d/ff.c
cmd/fs.d/fs.d.mk
cmd/fs.d/fsck.c
cmd/fs.d/mount.c
cmd/fs.d/ncheck.c
cmd/fs.d/switchout.c
cmd/fs.d/umount.c
cmd/fs.d/volcopy.c
cmd/fsba/*
cmd/fsinfo/*
cmd/fsstat/*
cmd/fstyp/*
cmd/fuser/*
cmd/grpck/*
cmd/link/*
cmd/mvdir/*
cmd/oamintf/files/*
cmd/osadmin/admin/menu/filemgmt/*
cmd/pwck/*
cmd/setmnt/*
cmd/unlink/*
cmd/vmkfs/*
.CN
.XF
.HU "Unified File System (\^\*(Cwufs\*(Cn\^) Utilities"
The \s-2UFS\s+2 Utilities package includes software support for \*(Cwufs\*(Cn \(em a file system type based on Berkeley's ``fast file system'' that stores data in blocks as large as 8K bytes.
.P
For information about \*(Cwufs\*(Cn, see the \f2System Administrator's Guide\f1.
.P
.XS I N
.CW
cmd/fs.d/ufs/*
.CN
.XF
.HU "System V (\^\*(Cws5\*(Cn\^) File System Utilities"
.P
.XS I N
.CW
cmd/fs.d/s5/*
.CN
.XF
.HU "File Descriptor (\^\*(Cwfd\*(Cn\^) File System Utilities"
.P
.XS I N
.CW
cmd/fs.d/fd/*
.CN
.XF
.HU "Boot File System (\^\*(Cwbfs\*(Cn\^) Utilities"
.P
.XS I N
.CW
cmd/fs.d/bfs/*
.CN
.XF
.HU "Process (\^\*(Cwproc\*(Cn\^) File System Utilities"
.P
.XS I N
.CW
cmd/fs.d/proc/*
.CN
.XF
.H 2 "Backup and Restore Facilities"
\*(R4 provides hardware independent backup and restore procedures (supporting multiple bus architectures and multiple destination types, such as tapes, floppy diskettes, and hard disks).
Multiple commands used as part of the backup procedure have been integrated in \*(R4 into a single backup service.
.P
Key features of the backup and restore service include:
.BL
.LI
a backup history log
.LI
on-line backups
.LI
automated backup initiation
.LI
mechanized restore requests.
.LE
.HU "Backup and Restore Libraries"
.XS I N
.CW
lib/libTL/*
.CN
.XF
.XK
.HU "Backup and Restore Utilities"
.XS I N
.CW
cmd/bkrs/*
cmd/ckbupscd/*
cmd/finc/*
cmd/frec/*
cmd/oamintf/backup_serv/*
cmd/oamintf/restore_serv/*
.CN
.XF
.H 2 "Configuration Management Facilities"
.HU "System Configuration Utilities"
.XS I N
.CW
cmd/autoconfig/*
cmd/cfgintf/*
cmd/cfgmgmt/*
cmd/dsconfig/*
cmd/mkboot/*
cmd/oamintf/machinemgmt/*
cmd/oamintf/syssetup/*
cmd/prtconf/*
cmd/setuname/*
cmd/sysdef/*
.CN
.XF
.XK
.HU "Software Packaging Utilities"
Packaging utilities contains scripts used to produce the binary
packaging for the 3B2 computer.
.P
.XS I N
.CW
:mk
:mkcmd
:mkhead
:mklib
:mkstand
:mksyshead
:mktarget
:mkuts
arglist
ldflags
pkg/bnu/*
pkg/cds/*
pkg/core/*
pkg/crypt
pkg/crypt/*
pkg/dfm/*
pkg/dfs/*
pkg/ed/*
pkg/emd/*
pkg/epu/*
pkg/face/*
pkg/inet/*
pkg/ipc/*
pkg/lp/*
pkg/nfs/*
pkg/nsu/*
pkg/perf/*
pkg/rfs/*
pkg/rpc/*
pkg/spell/*
pkg/sys/*
pkg/sysadm/*
pkg/terminf/*
pkg/ufs/*
pkg/usrenv/*
pkg/windowing/*
scripts/core.tape/*
scripts/core/*
.CN
.XF
.H 2 "Software Installation Facilities"
A software installation facility in \*(R4 provides a system administrator with installation procedures that are consistent across software packages, releases and machines.
It also provides tools and guidelines for developing add-on packages that take advantage of the standard software installation script and menu interface.
Configuration tools allow an administrator easy access to information on system configuration.
.HU "Software Installation Libraries"
.XS I N
.CW
lib/libadm/pkginfo.c
lib/libadm/pkgnmchk.c
lib/libadm/pkgparam.c
lib/libpkg/*
.CN
.XF
.XK
.HU "Software Installation Utilities"
.XS I N
.CW
cmd/install/*
cmd/oamintf/Install
cmd/oamintf/Prototype
cmd/oamintf/applications/*
cmd/oamintf/softwaremgmt/*
cmd/oampkg/*
cmd/osadmin/admin/menu/packagemgmt/*
cmd/osadmin/admin/menu/softwaremgmt/*
.CN
.XF
.H 2 "Device Management Facilities"
.HU "Device Management Libraries"
.XS I N
.CW
lib/libadm/devattr.c
lib/libadm/devreserv.c
lib/libadm/devtab.c
lib/libadm/devtab.h
lib/libadm/dgrpent.c
lib/libadm/getdev.c
lib/libadm/getdgrp.c
lib/libadm/getvol.c
lib/libadm/listdev.c
lib/libadm/listdgrp.c
lib/libadm/putdev.c
lib/libadm/putdgrp.c
.CN
.XF
.HU "Device Management Utilities"
.XS I N
.CW
cmd/bbh/*
cmd/conv-cmd/*
cmd/devinfo/*
cmd/devintf/*
cmd/devmgmt/*
cmd/disks/*
cmd/drvinstal/*
cmd/fmtflop/*
cmd/fmthard/*
cmd/format/*
cmd/getedt/*
cmd/getmajor/*
cmd/gettype/*
cmd/lnttys/lnsxts.sh
cmd/lnttys/lnttys.mk
cmd/lnttys/lnttys.sh
cmd/mknod/*
cmd/oamintf/devices/*
cmd/osadmin/admin/menu/diskmgmt/*
cmd/prtvtoc/*
cmd/pt_chmod/*
cmd/pump/*
cmd/script/*
.CN
.XF
.H 2 "User Management Facilities"
.HU "User Management Libraries"
.XS I N
.CW
lib/libc/port/gen/getgrent.c
lib/libc/port/gen/getgrnam.c
lib/libc/port/gen/getpw.c
lib/libc/port/gen/getpwent.c
lib/libc/port/gen/getpwnam.c
lib/libc/port/gen/getspent.c
lib/libc/port/gen/getut.c
lib/libc/port/gen/getutx.c
lib/libc/port/gen/lckpwdf.c
lib/libc/port/gen/putpwent.c
lib/libc/port/gen/ttyslot.c
.CN
.XF
.HU "User Management Utilities"
.XS I N
.CW
cmd/last/*
cmd/login/*
cmd/logins/*
cmd/oamintf/usermgmt/*
cmd/oamuser/*
cmd/osadmin/admin/menu/usermgmt/*
cmd/passmgmt/*
cmd/pwconv/*
cmd/setpgrp/*
cmd/users/*
.CN
.XF
.H 2 "Service Access Facilities (\s-2SAF\s+2)"
\*(R4 provides a single point of access to networking facilities for user programs called the \f2Service Access Facility\f1 or \f2\s-2SAF\s+2\f1.
The \s-2SAF\s+2 allows user programs to be written in a transport-independent and device-independent manner, and to work properly with whatever networking facilities are installed on a system.
.P
The design of the \s-2SAF\s+2 is modular, and, as extra types of peripheral devices are added to the system, it is easy to incorporate their connection handlers into this mechanism.
This feature is new in \*(R4.
.HU "Core \s-2SAF\s+2 Utilities"
.XS I N
.CW
cmd/saf/*
.CN
.XF
.HU "Port Management Utilities"
.P
\*(SV also provides a single process (or set of identical processes) that manage all external access to the system.
These daemon processes (or \f2port monitors\f1) monitor all access points to the system, including network ports, the system console, user terminals and other peripherals, for connection requests and manage all types of connections to the system.
This architecture unifies the handling of connections to the system, minimizes system overhead, and makes connection management easier to maintain and enhance.
.P
.XS I N
.CW
cmd/portmgmt/*
.CN
.XF
.XK
.HU "\s-2TTY\s+2 Monitor (\^\*(Cwttymon\*(Cn\^) Utilities"
.P
The new Unified Access Management feature provides a central manager for all access to the system, and replaces the \*(Cwgetty\*(Cn programs used to manage user terminal lines and the many network-specific daemon processes formerly used to manage network access to the system.
This feature centralizes control of access to the system through all entry points, and reduces system overhead.
.P
.XS I N
.CW
cmd/ttymon/*
.CN
.XF
.H 2 "System Administration Facilities"
The System Administration Utilities package contains system administration commands and utilities intended to be used by someone with responsibility for managing the hardware, software and users on a \*(UX system.
The commands provided in the package perform functions similar to those available through the System Administration Menus described in the \f2System Administrator's Guide\f1; however, these commands offer more flexibility and their use requires a greater understanding of how the \*(UX system works.
.P
For more information, see the \f2System Administrator's Guide\f1 and the System Administration Utilities manual pages in the \f2System Administrator's Reference Manual\f1.
.HU "Run-Time Administration Utilities"
.XS I N
.CW
cmd/dispadmin/*
cmd/init/*
cmd/initpkg/*
cmd/ipc/*
cmd/killall/*
cmd/nice/*
cmd/sulogin/*
cmd/swap/*
cmd/sync/*
cmd/whodo/*
.CN
.XF
.XK
.HU "System Performance Analysis Utilities"
The System Performance Analysis Utilities (\s-2SPAU\s+2) package provides performance tools that measure and display the following kinds of information: processor utilization, buffer and file access activity, terminal device activity, disk input/output activity, system calls, process switching, swapping activity, queue activity as well as inter-process communication (\s-2IPC\s+2) activity.
.P
To make the best use of these tools, follow the strategies outlined in the \f2System Administrator's Guide\f1.
See also the related manual pages in the \f2User's Reference Manual\f1 and the \f2System Administrator's Reference Manual\f1.
.P
.XS I N
.CW
cmd/acct/*
cmd/profiler/*
cmd/sa/*
cmd/syslogd/*
.CN
.XF
.XK
.HU "Diagnostic Utilities"
.XS I N
.CW
cmd/.adm/*
cmd/crash/*
cmd/oamintf/diagnostics/*
.CN
.XF
.XK
.HU "\s-2STREAMS\s+2 Administration Utilities"
\s-2STREAMS\s+2 Administration Facilities include several utilities related to administration of \s-2STREAMS\s+2 \s-2I/O\s+2 facilities.
.P
.XS I N
.CW
cmd/autopush/*
cmd/fdetach/*
cmd/streams/kmacct/*
cmd/streams/log/*
cmd/streams/streams.mk
.CN
.XF
.XK
.HU "\s-2XENIX\s+2 System Utilities"
.XS I N
.CW
:mkxcp
:mkxcpcmd
xcpcmd/backup/*
xcpcmd/copy/*
xcpcmd/hd/*
xcpcmd/lc/*
xcpcmd/message/*
xcpcmd/random/*
xcpcmd/restore/*
xcpcmd/settime/*
xcpcmd/tset/*
xcpcmd/xinstall/*
xcpcmd/xtract/*
xcpcmd/yes/*
.CN
.XF
.XK
.HU "3B2 Specific Utilities"
.XS I N
.CW
cmd/cmd-3b2/*
cmd/edittbl/*
cmd/errdump/*
cmd/fltboot/*
cmd/led/*
cmd/newboot/*
cmd/osadmin3b2/*
cmd/ports/*
cmd/setclk/*
cmd/uadmin/*
.CN
.XF
.H 1 "Programming Tools & Languages"
\*(R4 incorporates enhancements to packages known by the following names in earlier releases:
\*(Cc Programming Language Utilities (\s-2CPLU\s+2), Advanced Programming Utilities (\s-2APU\s+2) and \*(Cc Programmer Productivity Tools (\s-2CPPT\s+2) packages. 
The major features are:
.BL
.LI
Compilation modes corresponding to degrees of compliance with \s-2ANSI\s+2 \*(Cc.
.LI
Dynamic linking, which allows different processes to share library code at run time.
.LI
Dynamic tables, which provide the necessary support for compilation of applications with very large tables (e.g. macros, symbols, etc.).
.LI
Additional international support, allowing the international date and time to be set as a default, and support for customized internal character sets.
.LI
A new transparent object file format, \s-2ELF\s+2 (Extensible Linking Format), which supports extensions to the \*(Cc language, such as new types. 
\s-2ELF\s+2 is flexible enough to support other programming languages, particularly \*(Cc++.
.LI
Support tools for \s-2ELF\s+2 and conversion tools for converting \s-2COFF\s+2 (Common Object File Format) to \s-2ELF\s+2.
All tools handle both \s-2COFF\s+2 and \s-2ELF\s+2 objects and archives.
.LE 1
.HU "\f(HB\s-2C\s+2\fP Language and Program Execution"
\*(4U is constructed using a new \*(Cc compilation system, \*(Cc Issue 5.
The new compilation system supports the new, industry-standard \s-2ANSI\s+2 \*(Cc language as well as the traditional Kernighan & Ritchie \*(Cc language.
.P
The object-file format supported by the operating system has been changed to the Extensible Linking Format (\s-2ELF\s+2) from the older Common Object File Format (\s-2COFF\s+2).
\s-2ELF\s+2 files contain fewer machine-dependent sections than the old \s-2COFF\s+2 files, are easier to adapt to the needs of different processor architectures, and better serve the needs of run-time dynamic linking.
Of course, old \s-2COFF\s+2 executable binaries continue to run properly on \*(R4, as well.
.P
\*(R4 supports dynamic linking of shared system resources to executable files at run-time.
Dynamic-linking replaces the earlier static shared library facility first provided in \s-2SVR3.0\s+2, and provides great flexibility for system providers while maximizing the potential lifetime of compiled programs.
.P
\*(R4 provides major system libraries (e.g., \*(Cwlibc\*(Cn\^) both in dynamically-linkable form and in traditional archive form.
Program developers can choose which of these formats they wish to use at the time a program is compiled.
.HU "Application Binary Interface (\s-2ABI\s+2)"
A new set of specifications, the \*(SV Application Binary Interfaces (\s-2ABI\s+2), define a binary interface for application software.
The \s-2ABI\s+2s consist of a generic component and several different processor-specific components.
These specifications facilitate the binary portability of application software across systems provided by different manufacturers that share a common processor architecture.
.P
The definition and support of \s-2ABI\s+2 is the enabling technology for shrink-wrapped software.
In today's environment of rapidly evolving technology and many competing vendors, it has become essential to provide ways for today's software to survive in the future.
\s-2ABI\s+2 is the foundation on which third-party applications can be built, and the primary standard for vendor conformance.
It is the doorway that gives the \s-2ISV\s+2 access to a variety of hardware platforms, and the hardware vendor access to a diverse and growing software base.
.P
The \s-2ABI\s+2 also provides a mechanism for technological progress in hardware and operating systems.
By precisely defining the standard interface, \s-2ABI\s+2 encourages innovation.
.P
\s-2ABI\s+2 specifies more than just the operating system interface.
It completely describes the run-time environment that an application can depend on, including which programs and libraries are guaranteed to be available, where system files are located and so forth.
It also describes the standard distribution format, installation and configuration procedures, and conventions for file organization.
Applications that meet \s-2ABI\s+2 requirements will always be consistent and easy to install and manage.
.HU "Shared Libraries and Dynamic Linking"
The key technology that makes past and future compatibility possible is the \*(R4 virtual memory and dynamic linking.
At present, there is the choice of implementing facilities in the kernel, servers, applications or libraries.
With dynamic linking, the application is insulated from the details of exactly how a functionality is implemented.
.P
Dynamic linking also supports modern software development with incremental programming environments and object-oriented programming.
There may be special dynamic linkers for some applications that provide more dynamic access to system services.
.P
With dynamic linking, shared libraries and mapped files, it is possible to construct facilities out of shared libraries rather than implementing them in the kernel or server process.
Window system tool kits are good examples of this sort of service.
.P
Shared libraries and executable files are marked with version numbers to identify the expected interface.
As the system evolves, it is easy to support old interfaces by providing a compatibility veneer on the current library.
The version numbers allow the dynamic linker to bind the application with the proper library, routine, and interface.
.P
Shared libraries are also useful for structuring system software.
They efficiently support tool kits for window systems, libraries of network services and alternate implementations of functions.
Shared libraries and dynamic linking are transparent to the user, and do not change the semantics of programs.
Thus it is possible for a range of implementations that optimize the performance, debuggability, interposibility or other property of the program.
.P
The \*(R4 dynamic linker is not built into the kernel, but is rather a user-mode program that allows modern programming environments to exploit the dynamic linking technology.
The linker is not a separate process, but becomes part of the virtual address space of the application and is, therefore, available for dynamic use.
.HU "Extensible Linking Format (\s-2ELF\s+2)"
The Extensible Linking Format (\s-2ELF\s+2) is an advanced format for executables and object files.
Designed for machine architecture and compiler technology independence, it provides a solid base for dynamic linking and cross-development environments.
Also, \s-2ELF\s+2 is designed to be extensible and support new language features and even new languages.
.P
\s-2ELF\s+2 assures that executable and object-file binaries are portable across all instances of a particular architecture regardless of operating system or compilation system changes.
Although it does assume an architecture with a 32-bit linear address space, it is not otherwise tied to any particular hardware architecture.
Extension to a 64-bit architecture would require changes in the assumptions about the address space and would result in a new version of \s-2ELF\s+2.
.SK
Features provided by \s-2ELF\s+2 include:
.BL
.LI
Extensible headers and tables, including section, symbol and relocation tables.
.LI
Addition and deletion of user-defined sections.
.LI
Extensible \*(Cwa.out\*(Cn files.
.LI
Flexibility to support new types and other programming languages.
.LE 1
Changes have been made to the assembler, code generator and optimizer, \*(Cwld\*(Cn\^, \*(Cwsdb\*(Cn\^, \*(Cwar\*(Cn\^, \*(Cwdis\*(Cn\^, \*(Cwdump\*(Cn\^, \*(Cwlorder\*(Cn\^, \*(Cwmcs\*(Cn\^, \*(Cwnm\*(Cn\^, \*(Cwsize\*(Cn and \*(Cwstrip\*(Cn utilities, as well as to the \*(Cwexec()\*(Cn system-call.
Several tools, such as \*(Cwconv\*(Cn\^, \*(Cwconvert\*(Cn\^, \*(Cwcprs\*(Cn\^, \*(Cwgencc\*(Cn\^, and \*(Cwlist\*(Cn\^, are obsolete and are no longer provided.
Other tools, such as \*(Cwlprof\*(Cn and \*(Cwprof\*(Cn\^, have also been changed, as have object-file format-sensitive \*(Cc library routines such as \*(Cwmonitor()\*(Cn\^.
\s-2ELF\s+2 access libraries provide a unified programmer interface to the new object format, and conversion tools from \s-2COFF\s+2 to \s-2ELF\s+2 format.
.P
\*(Cc Issue 5 provides tools for the support of both \s-2ELF\s+2 and \s-2COFF\s+2 object-files and for the execution of both \s-2COFF\s+2 and \s-2ELF\s+2 \*(Cwa.out\*(Cn\^s.
.H 2 "Software Development Facilities"
.HU "Software Development Libraries"
Software Development Library routines provide for program diagnostics as well as for monitoring and profiling the execution of \*(Cc language programs.
The Software Development Library also has routines to access user-accounting and other system data-files with information about users and groups of users.
.P
.XS I N
.CW
lib/libc/m32/ansi.def
lib/libc/m32/csu/*
lib/libc/m32/nonansi.def
lib/libc/port/gen/assert.c
lib/libc/port/gen/getopt.c
lib/libc/port/gen/getsubopt.c
lib/libc/port/gen/mon.c
lib/libc/port/gen/opt_data.c
lib/libc/tstansi.c
lib/libdl/*
lib/libl/*
lib/liby/*
.CN
.XF
.XK
.HU "Software Development Utilities"
Software Development Utilities provide facilities for compiling and maintaining \*(Cc language software.
.P
.XS I N
.CW
cmd/cb/*
cmd/cflow/*
cmd/chroot/*
cmd/cscope/*
cmd/ctrace/*
cmd/cxref/*
cmd/env/*
cmd/gcore/*
cmd/ldd/*
cmd/make/*
cmd/prof/*
cmd/time/*
cmd/truss/*
cmd/xargs/*
.CN
.XF
.XK
.HU "Source Code Control System (\s-2SCCS\s+2)"
.XS I N
.CW
cmd/sccs/hdr/*
cmd/sccs/lib/cassi/*
cmd/sccs/lib/comobj/*
cmd/sccs/lib/lib.mk
cmd/sccs/lib/mpwlib/*
cmd/sccs/chk_fsync
cmd/sccs/cmd/*
cmd/sccs/help.d/*
cmd/sccs/sccs.mk
.CN
.XF
.H 2 "\f(HB\s-2C\s+2\fP Programming Language Utilities (\s-2CPLU\s+2)"
\*(Cc is a general-purpose programming language used for system-level code as well as commercial and scientific applications.
The \*(Cc language bridges the realm of assembly-language programming and that of block-structured procedure-oriented languages by combining the advantages of low-level languages with the benefits and features of high-level languages.
Programmers using \*(Cc can deal easily with machine-level facilities at a low-level, while at the same time having the high-control and data structures found in other modern, structured programming languages.
Using \*(Cc as a low-level language, programmers can achieve maximum efficiency by exploiting specific machine characteristics; using \*(Cc as a high-level language, programmers can hide the details of the underlying computer to promote software portability.
.P
\*(Cc Compilation System software offers a complete software development environment composed of \*(Cc Programming Language Utilities (\s-2CPLU\s+2), Advanced Programming Utilities (\s-2APU\s+2) and \*(Cc Programmer's Productivity Tools (\s-2CPPT\s+2).
\s-2CPLU\s+2 contains the \*(Cc Compiler and compiler-related tools; \s-2APU\s+2 contains popular programming and debugging tools; while \s-2CPPT\s+2 consists of two complementary tools:  a source code browser and an execution profiler.
.P
Issue 3.1 of \*(Cc compilation System software added support for shared libraries, which are files containing object-code that several users on a system can share.
The currently available \*(Cc Issue 5 extends shared libraries to dynamic linking, and introduces the Extensible Linking Format (\s-2ELF\s+2), a more advanced object file format to replace the older Common Object File format (\s-2COFF\s+2), although it continues to support the use of \s-2COFF\s+2 files.
.HU "Software Generation System (\s-2SGS\s+2)"
The Software Generation System (\s-2SGS\s+2) provides the tools necessary to compile and link applications for the \*(UX system.
Also included is the \*(Cc Language Compilation System.
.P
.XS I N
.CW
.XX < ../progm/sgs/head.ccs
cmd/sgs/*
.CN
.XF
.XK
.HU "Symbolic Debugger (\s-2SDB\s+2)"
.P
.XS I N
.CW
cmd/sdb/inc/common/*
cmd/sdb/inc/i386/*
cmd/sdb/inc/m32/*
cmd/sdb/libC/*
cmd/sdb/libdbgen/*
cmd/sdb/libexecon/*
cmd/sdb/libexp/*
cmd/sdb/libint/*
cmd/sdb/libmachine/*
cmd/sdb/libsymbol/*
cmd/sdb/libutil/*
cmd/sdb/sdb.d/*
cmd/sdb/sdb.mk
cmd/sdb/util/*
.CN
.XF
.SK
.HU "\f(HB\s-2C\s+2\fP++ Translator"
The \*(Cc++ programming language, invented at \*(Co Bell Laboratories, incorporates the latest advancements in object-oriented programming technology.
As an upwardly compatible enchancement to the standard \*(Cc programming language, \*(Cc++ brings the advantages of object-oriented programming to \*(SV while maintaining the flexibility and efficiency of \*(Cc.
The most recent release of the \*(Cc++ Translator, \*(Cc++ Release 2.0, completes implementation of all features planned for what is quickly becoming a standard programming language for the \*(UX operating system.
.P
\*(R4 supplies the \*(Cc++ Translator \f(BIonly\fP for the purpose of building \*(Cwsdb\*(Cn\^, the symbolic debugger; \f(BInone\fP of the files below may be used in a \*(DP.
.P
.XS I N
.CW
cmd/sdb/cfront/*
cmd/sdb/inc/CC/*
.CN
.XF
.H 1 "Networking Software Technology"
\*(R4 significantly expands the networking capabilities of \*(SV with both improvements to existing capabilities and the addition of new features.
All networking capabilities in \*(SV are implemented under the \s-2STREAMS\s+2 \s-2I/O\s+2 architecture.
Because all protocol suites under \s-2STREAMS\s+2 \s-2I/O\s+2 have been
implemented to incorporate the \f2Transport Protocol Interface\f1 (or,
\f2\s-2TPI\s+2\f1) and the \f2Data Link Protocol Interface\f1 (or,
\f2\s-2DLPI\s+2\f1), all user programs and system utilities can be
written in a protocol-independent and media-independent manner.
The structure matches the \s-2OSI\s+2 layers, and an increasing number of protocols are becoming available using the \s-2STREAMS\s+2 \s-2I/O\s+2 structure.
.HU "Protocols"
Earlier releases of \*(SV provided tools for developing network protocols and applications, specifically \s-2STREAMS\s+2 \s-2I/O\s+2 and the Transport Layer Interface (\s-2TLI\s+2).
\s-2STREAMS\s+2 \s-2I/O\s+2 defines standard programming interfaces for character \s-2I/O\s+2 processing within the kernel.
Using \s-2STREAMS\s+2 \s-2I/O\s+2 to implement network architectures and higher-level protocols can make them independent of underlying protocols, drivers and media.
\s-2TLI\s+2 defines an interface between applications and transport-level network protocols, relieving user programs of the need to know the characteristics of the transport-protocol.
.HU "Transport Level Interface (\s-2TLI\s+2)"
The \*(SV \f2Transport-Level Interface\f1 (\f2\s-2TLI\s+2\f1) provides a library of routines for user programs that are used to communicate with a documented \s-2OSI\s+2 level-4 transport interface inside the system kernel.
\*(SV networking protocol suites are all implemented as transport-providers that work with the Transport Provider Interface (\s-2TPI\s+2).
As a result, user programs written using \s-2TLI\s+2 work properly no matter what network transport provider happens to be present on a system.
The user program does not need to know any special characteristics of the networking protocol suite, and has greatly expanded portability and generality as a result.
\s-2TLI\s+2 was first provided in \*(R3.
.HU "Transport-Independent \*(Cwuucp\*(Cn"
\*(R3 reimplemented the \*(Cwuucp\*(Cn family of commands using the \s-2TLI\s+2 library routines and standard interface, so that they all function properly no matter what networking medium is present on a system.
While they were originally limited to using telephone lines, these commands now run using \f4Ethernet\f1 or Star\s-2LAN\s+2 connections or whatever other \s-2TLI\s+2-conforming transport provider is available.
.HU "\s-2TCP\s+2/\s-2IP\s+2 and Utilities"
\*(R4 contains all of the networking functionality of \s-2BSD\s+2 and Sun\s-2OS\s+2 systems, including \f2sockets\f1.
There is a complete implementation of the \s-2DARPA\s+2 protocols (\s-2TCP\s+2/\s-2IP\s+2/\s-2UDP\s+2), which are improved by integration into the \s-2STREAMS\s+2 \s-2I/O\s+2 framework.
All of the \s-2BSD\s+2 networking commands (\^\*(Cwrlogin\*(Cn\^, \*(Cwrsh\*(Cn\^, \*(Cwrexec\*(Cn\^, etc.) are provided.
Because all \*(SV networking services are implemented to the \s-2TLI\s+2 interface, including \s-2TCP\s+2/\s-2IP\s+2, existing programs can use this set of networking protocols without being modified or recompiled.
.P
\*(R4 provides the popular \s-2TCP\s+2/\s-2IP\s+2 protocol suite, and all of its associated utilities, such as the ``\*(Cwr\*(Cn-commands'' (e.g., \*(Cwrlogin\*(Cn, \*(Cwrexec\*(Cn, etc.).
The \*(SV implementation of the protocol suite is entirely new, and is implemented under \s-2STREAMS\s+2 \s-2I/O\s+2.
This means that all the user programs written to use the \s-2TLI\s+2 library routines and interface will all automatically run over this networking medium without modification.
It also means that system-provided networking services, like the \s-2RFS\s+2 and \s-2NFS\s+2 resource-sharing utilities, will all run without being changed on this suite of networking protocols.
.HU "Remote Procedure Call (\s-2RPC\s+2)"
\*(R4 provides the Remote Procedure Call (\s-2RPC\s+2) and eXternal Data Representation (\s-2XDR\s+2) libraries along with \*(Cwrpcgen\*(Cn\^, a compiler for generating servers and libraries that use \s-2RPC\s+2.
These libraries expand the networking capabilities of \*(SV, and provide a foundation for remote execution service and distributed processing.
Secure \s-2RPC\s+2 uses encryption to provide client authentication.
Network services are built using the \s-2RPC\s+2 protocol with an extended port monitor for administration of servers.
.HU "Distributed File Systems"
\*(R4 supports the two most widely used distributed file-systems:
.BL
.LI
The Network File System (\s-2NFS\s+2) provides the interoperability and robustness of a loosely coupled file-system for a network of computers running different operating systems.
.LI
Remote File Sharing (\s-2RFS\s+2) provides the central administration and control of an integrated file-system for a network of computers all running \*(SV.
.LE 1
By providing both \s-2NFS\s+2 and \s-2RFS\s+2, \*(R4 demonstrates how \*(SV can provide multiple services, each with the same application interface, but with useful differences in implementation.
\*(R4 provides a new set of common administrative utilities to manage both \s-2NFS\s+2 and \s-2RFS\s+2.
.P
In \*(R4, \s-2NFS\s+2 is transport-independent, and can run over different networks.
Diskless operation is supported, and the requirement of dedicated root partitions for diskless clients has been eliminated.
\s-2NFS\s+2 can be configured to use Secure \s-2RPC\s+2 to increase the security of the network.
Because \s-2NFS\s+2 is stateless, clients can survive reboots of servers without loss of data.
.P
For environments that require centralized administrative control or more tightly-coupled file-systems, \s-2RFS\s+2 provides full \*(UX system semantics across the network.
A program can access a device on a remote machine, can trust file locking across the network, and can open named pipes or streams to connect programs on different machines.
Multiple administrative domains are possible, with distinct user names and identifiers.
.P
\s-2NFS\s+2 and \s-2RFS\s+2 provide distinct, largely complementary services.
Both are implemented within the framework of \s-2VFS\s+2, and both are administered with a unified set of administrative commands.
Generally, a binary program works with any remote or local file-system completely transparently.
.H 2 "Basic Networking Facilities"
.HU "Transport Layer Interface (\s-2TLI\s+2) Library"
The Transport Layer Interface (\s-2TLI\s+2) defines a set of functions for a protocol-independent programming interface to networking services based on the service definitions of the Open Systems Interconnection (\s-2OSI\s+2) Reference Model.
\*(Rf
.RS
\s-2ISO\s+2 7498, \f2Information Processing Systems \(em Open Systems Interconnection \(em Reference Model\f1, 1983.
.RF
\*(Rf
.RS
\s-2CCITT\s+2 Recommendation X.200, \f2Reference Model of Open Systems Interconnection for \s-2CCITT\s+2 Applications\f1, 1984.
.RF
\s-2TLI\s+2 functions provide end-to-end data transmission using the services of an underlying network to support both the connection-oriented and connectionless transport-services of the \s-2OSI\s+2 Transport Layer Service Definition.\*(Rf
.RS
\s-2ISO\s+2 8072, \f2Information Processing Systems \(em Open Systems Interconnection \(em Transport Service Definition\f1, 1984.
.RF
These transport-services enable two user-processes to transfer data between them without concern for the protocol implementation providing those services.
Programs using the transport-interface work independently of the underlying protocols.
By providing media and protocol independence, the Transport Layer Interface gives networking applications the flexibility to use a wide variety of transmission facilities.
.P
The Network Support Library contains the Transport Interface Library and the Kernel Transport Layer Interface (\^\*(Cwktli\*(Cn\^).
.P
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/io/ticlts.c	transport interface loopback driver:  datagram service
uts/3b2/io/ticlts.mk	transport interface connection-less transport service
uts/3b2/io/ticots.c	transport interface loopback driver:  virtual circuit
uts/3b2/io/ticots.mk	transport interface connection-oriented transport service
uts/3b2/io/ticotsord.mk	transport interface connection-oriented transport service with orderly-release
uts/3b2/io/timod.c	transport interface library co-operating module
uts/3b2/io/tirdwr.c	transport interface library read/write module
uts/3b2/ktli/*
uts/3b2/master.d/ktli	configuration file for KTLI boot module
uts/3b2/master.d/ticlts	configuration file for TICLTS boot module
uts/3b2/master.d/ticots	configuration file for TICOTS boot module
uts/3b2/master.d/ticotsord	configuration file for TICOTSORD boot module
uts/3b2/master.d/timod	configuration file for TIMOD boot module
uts/3b2/master.d/tirdwr	configuration file for TIRDWR boot module
uts/3b2/sys/t_kuser.h	transport services kernel data structures
uts/3b2/sys/ticlts.h	transport interface connectionless structures
uts/3b2/sys/ticots.h	transport interface virtual circuit structures
uts/3b2/sys/ticotsord.h	transport interface virtual circuit with orderly release structures
uts/3b2/sys/tihdr.h	transport services user-level interface
uts/3b2/sys/timod.h	transport interface user level structures and defines
uts/3b2/sys/tiuser.h	user-level transport interface structures and defines
lib/libnsl/nsl/*
.TE
.S
.XF
.SK
.HU "Basic Networking Utilities"
The Basic Networking Utilities package enables a \*(UX system to communicate with other systems.
With the utilities and commands provided by the package, users can:
.BL
.LI
transfer files to other \*(UX systems (\*(Cwuucp\*(Cn)
.LI
communicate interactively with others using \*(UX systems or non-\*(UX systems
.LI
execute a restricted set of commands on a remote system without directly logging in on the remote system (\*(Cwuux\*(Cn)
.LI
call and log in to a remote system (\*(Cwcu\*(Cn)
.LI
call a remote terminal and allow the user of the terminal to log in on a \*(UX system (\*(Cwct\*(Cn)
.LE 1
For information about using this package, see the \*(U4 \f2User's Guide\f1.
For information about administering this package, see the \f2System Administrator's Guide\f1 and the Basic Networking Utilities manual pages in the \f2System Administrator's Reference Manual\f1.
.P
.XS I N
.CW
lib/libnsl/dial/*
cmd/bnu.admin/*
cmd/bnu/*
.CN
.XF
.H 2 "Electronic Mail Facilities"
.HU "Basic Mail Utilities"
.XS I N
.CW
cmd/mail/Dout.c
cmd/mail/STD_VAC_MSG
cmd/mail/Tout.c
cmd/mail/_mail_pipe.c
cmd/mail/abspath.c
cmd/mail/add_recip.c
cmd/mail/alias.c
cmd/mail/arefwding.c
cmd/mail/basename.c
cmd/mail/binarsys
cmd/mail/casncmp.c
cmd/mail/cat.c
cmd/mail/ckbinarsys.c
cmd/mail/ckdlivopts.c
cmd/mail/cksaved.c
cmd/mail/cksurg_rc.c
cmd/mail/clr_hinfo.c
cmd/mail/cmdexpand.c
cmd/mail/config.c
cmd/mail/config.h
cmd/mail/copyback.c
cmd/mail/copylet.c
cmd/mail/copymt.c
cmd/mail/copystream.c
cmd/mail/createmf.c
cmd/mail/del_recipl.c
cmd/mail/delempty.c
cmd/mail/delete.c
cmd/mail/doFopt.c
cmd/mail/done.c
cmd/mail/doopen.c
cmd/mail/dumpaff.c
cmd/mail/dumprcv.c
cmd/mail/errmsg.c
cmd/mail/findSurg.c
cmd/mail/gendeliv.c
cmd/mail/getarg.c
cmd/mail/getcomment.c
cmd/mail/getdomain.c
cmd/mail/gethead.c
cmd/mail/getsurr.c
cmd/mail/goback.c
cmd/mail/init.c
cmd/mail/initsurr.c
cmd/mail/isheader.c
cmd/mail/isit.c
cmd/mail/islocal.c
cmd/mail/istext.c
cmd/mail/legal.c
cmd/mail/libmail.h
cmd/mail/llib-lmail
cmd/mail/lock.c
cmd/mail/ma.sl
cmd/mail/maid.c
cmd/mail/mail.h
cmd/mail/mail.mk
cmd/mail/mailcomp.c
cmd/mail/maillock.c
cmd/mail/maillock.h
cmd/mail/mailsurr
cmd/mail/main.c
cmd/mail/mkdead.c
cmd/mail/mta_ercode.c
cmd/mail/my_open.c
cmd/mail/myregexpr.c
cmd/mail/myregexpr.h
cmd/mail/namefiles
cmd/mail/new_recipl.c
cmd/mail/notify.sh
cmd/mail/notify2.c
cmd/mail/notifyu.c
cmd/mail/notme.c
cmd/mail/parse.c
cmd/mail/pckaffspot.c
cmd/mail/pckrcvspot.c
cmd/mail/pickFrom.c
cmd/mail/pipletr.c
cmd/mail/pmkid
cmd/mail/popenvp.c
cmd/mail/poplist.c
cmd/mail/printhdr.c
cmd/mail/printmail.c
cmd/mail/pushlist.c
cmd/mail/s_string.c
cmd/mail/s_string.h
cmd/mail/savehdrs.c
cmd/mail/sel_disp.c
cmd/mail/send.c
cmd/mail/sendlist.c
cmd/mail/sendmail.c
cmd/mail/sendsurg.c
cmd/mail/setsig.c
cmd/mail/setsurg_bt.c
cmd/mail/setsurg_rc.c
cmd/mail/setup_exec.c
cmd/mail/skipspace.c
cmd/mail/stamp.c
cmd/mail/strmove.c
cmd/mail/substr.c
cmd/mail/systemvp.c
cmd/mail/tokdef.c
cmd/mail/translate.c
cmd/mail/trimnl.c
cmd/mail/vacation.sh
cmd/mail/vacation2.sh
cmd/mail/xgetenv.c
.CN
.XF
.XK
.HU "Advanced Mail Utilities"
.XS I N
.CW
cmd/mailx/*
.CN
.XF
.H 2 "Network Service Facilities"
The Network Services Utilities (\s-2NSU\s+2) work with Network Selection and Service Access Facility (\s-2SAF\s+2) utilities including the network daemon \*(Cwlisten\*(Cn\^, as well as commands for administering it.
.HU "Network Listener Library"
.XS I N
.CW
lib/libnls/*
.CN
.XF
.HU "Network Service Utilities"
.XS I N
.CW
cmd/dbfconv/*
cmd/listen/*
cmd/netadm/*
cmd/netsel.adm/*
cmd/nlsadmin/*
cmd/oamintf/networks/*
.CN
.XF
.H 2 "Network Administration Facilities"
.HU "Network Selection Library"
\*(R4 introduces a feature to \*(SV called ``Network Selection''.
Network Selection allows network applications to choose the network over which they will communicate.
An application can select a network from a directory of networks that are available to the system.
If an application fails to connect with its first choice, it can select different networks until it finds one that meets its service requirements and allows the connection.
.P
Network Selection frees an application from needing a network selection embedded in its code.
This allows the application to run without modification on different systems that support different networks.
.P
Name-to-Address Mapping is a mechanism that allows network clients to determine the addresses of servers on a network in a network-independent manner.
The mechanism makes it possible for clients to reach a server, even if the address on which the server is listening should change.
Name-to-Address Mapping also allows a client to reach a server over different networks.
.P
For more information about Network Selection and Name-to-Address Mapping, see the \f2System Administrator's Guide\f1 and the \f2Programmer's Guide: Networking Interfaces\f1.
.P
.XS I N
.CW
lib/libnsl/libnsl.mk
lib/libnsl/netdir/*
lib/libnsl/netselect/*
lib/libnsl/saf/*
lib/nametoaddr/*
.CN
.XF
.HU "Distributed File System (\s-2DFS\s+2) Administration"
The Distributed File System Administration Utilities (\s-2DFS\s+2) package provides a common administrative interface to Remote File Sharing (\s-2RFS\s+2) and Network File System (\s-2NFS\s+2).
Commands installed by the \s-2DFS\s+2 Administration Utilities package allow an administrator to share and mount both \s-2RFS\s+2 and \s-2NFS\s+2 resources.
\s-2DFS\s+2 utilities must be installed to run \s-2RFS\s+2 and \s-2NFS\s+2.
.P
See the \f2Network User's and Administrator's Guide\f1 for more information.
.P
.XS I N
.CW
.XX < ../netwk/netadm/head.dfs
.XX < ../netwk/netadm/uts.dfs
.XX < ../netwk/netadm/lib.dfs
cmd/dfs.cmds/*
cmd/nadmin.dfs/*
.CN
.XF
.H 2 "\s-2YP\s+2 Name Server Facilities"
.HU "\s-2YP\s+2 Name Server Library"
.XS I N
.CW
lib/libnsl/yp/*
.CN
.XF
.HU "\s-2YP\s+2 Name Server Utilities"
.XS I N
.CW
cmd/ypcmd/*
.CN
.XF
.H 2 "Resource Sharing Facilities"
.HU "Remote File Sharing (\s-2RFS\s+2)"
The Remote File Sharing Utilities package provides the facilities needed to share resources transparently among computers running \*(SV.
It requires the Networking Support Utilities package, the Distributed File System Administration Utilities and a transport provider that conforms to the \*(Co Transport Provider Interface (\s-2TPI\s+2), such as the Star\s-2LAN\s+2 network or \s-2TCP\s+2/\s-2IP\s+2 (provided in the Internet Utilities package).
.P
For more information about Remote File Sharing, see the \f2Network User's and Administrator's Guide\f1.
.P
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
.XX < ../netwk/rfs/head.rfs
uts/3b2/fs/rfs/*
uts/3b2/master.d/rfs	configuration file for RFS boot module
uts/3b2/sys/fs/rf_acct.h	RFS accounting data structures
uts/3b2/sys/fs/rf_vfs.h	RFS filesystem data structures
uts/3b2/sys/hetero.h	defines for RFS heterogeneity
uts/3b2/sys/nserve.h	RFS name server string definitions and error numbers
uts/3b2/sys/rf_adv.h	structures and defines for RFS
uts/3b2/sys/rf_cirmgr.h	structures and defines for RFS
uts/3b2/sys/rf_comm.h	structures and defines for RFS
uts/3b2/sys/rf_debug.h	structures and defines for RFS
uts/3b2/sys/rf_messg.h	structures and defines for RFS
uts/3b2/sys/rf_sys.h	structures and defines for RFS
lib/libc/m32/sys/rfsys.s
lib/libns/*
cmd/adv/*
cmd/dname/*
cmd/fs.d/rfs/*
cmd/fumount/*
cmd/fusage/*
cmd/idload/*
cmd/nadmin.rfs/*
cmd/nsadmin/*
cmd/nsadmin3b2/*
cmd/nserve/*
cmd/nsquery/*
cmd/rfadmin/*
cmd/rfpasswd/*
cmd/rfsetup/*
cmd/rfstart/*
cmd/rfstop/*
cmd/rfuadmin/*
cmd/rfudaemon/*
cmd/rmntstat/*
cmd/rmount/*
cmd/unadv/*
.XX < ../netwk/rfs/cmd.as
.TE
.S
.XF
.SK
.HU "Network File System (\s-2NFS\s+2)"
The Network File System (\s-2NFS\s+2) provides the facilities for sharing resources and files in a distributed environment of heterogeneous computer system hardware, operating system software and network architectures.
\s-2NFS\s+2 shares resources and files by mounting a remote file system then reading or writing files in place.
Users can directly access files they want without knowing the network address of the data.
To the user, all \s-2NFS\s+2-mounted file systems look like private disks.
There are no apparent differences between reading or writing a file on a local disk, and reading or writing a file on a disk in another location.
.P
\s-2NFS\s+2 requires the Networking Support Utilities, \s-2UDP\s+2/\s-2IP\s+2 (transport protocols provided by the \s-2TCP/IP\s+2 package) and the Distributed File System (\s-2DFS\s+2) Administration Utilities package.
.P
See the \f2Network User's and Administrator's Guide\f1 for more information about \s-2NFS\s+2.
.P
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
.XX < ../netwk/rfs/head.nfs
uts/3b2/fs/nfs/*
uts/3b2/klm/*
uts/3b2/master.d/klm	configuration file for KLM boot module
uts/3b2/master.d/nfs	configuration file for NFS boot module
uts/3b2/nfs/*
lib/libc/m32/sys/_nfssys.s
lib/libc/port/sys/nfssys.c
cmd/fs.d/nfs/*
cmd/nadmin.nfs/*
.TE
.S
.XF
.SK
.HU "Remote Procedure Call (\s-2RPC\s+2)"
\*(R4 includes Remote Procedure Call (\s-2RPC\s+2) which supports client/server operations using a protocol that allows a process to call a procedure on a remote machine of a different architecture, using the syntax and semantics of a local procedure call.\*(Rf
.RS
\s-2DARPA\s+2 \s-2RFC\s+2-1050, \s-2RPC\s+2 specification
.RF
\s-2RPC\s+2 enables a client process executing on a ``local'' system to invoke a server-process executing on a ``remote'' system, using a syntax based on ordinary (i.e. local) procedure calls in a high-level language as opposed to a message-based send/receive syntax.
\s-2RPC\s+2 allows a server program to use procedures on remote machines like building blocks in complex applications.
\s-2RPC\s+2 features a globally administered name-space and a versioning mechanism.
For client and server processes on different types of computer systems to exchange data, \s-2RPC\s+2 uses eXternal Data Representation (\s-2XDR\s+2), a machine-independent transfer-syntax with encoding rules.\*(Rf
.RS
\s-2DARPA\s+2 \s-2RFC\s+2-1014, \s-2XDR\s+2 specification
.RF
\s-2XDR\s+2 lets programs on different computer systems (possibly with different operating systems) transfer data by hiding implementation-dependent details such as word byte-order and alignment.
The \*(Cwrpcgen\*(Cn command runs an \s-2RPC\s+2 protocol compiler that accepts a special \f2\s-2RPC\s+2/\s-2XDR\s+2 language\f1 used to develop \s-2RPC\s+2 applications.
\s-2RPC\s+2 and its related facilities operate over any \s-2STREAMS\s+2 \s-2I/O\s+2-based and \s-2TLI\s+2-conforming transport-provider.
.P
\s-2RPC\s+2 uses eXternal Data Representation (\s-2XDR\s+2) to encode data passed between machines.
\s-2XDR\s+2 represents data in a standard way, so that a local process can call a procedure residing on a machine of different architecture that is running the same or a different operating system.
.P
See the \f2Programmer's Guide: Networking Interfaces\f1 for more information about \s-2RPC\s+2 and \s-2XDR\s+2.
.P
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
head/ctype.h
head/errno.h
head/fcntl.h
head/grp.h
head/memory.h
head/netconfig.h
head/netdir.h
head/nsaddr.h
head/poll.h
head/pwd.h
head/rpcsvc/*
head/signal.h
head/stdio.h
head/string.h
head/time.h
head/tiuser.h
uts/3b2/des/*
uts/3b2/master.d/des	configuration file for DES boot module
uts/3b2/master.d/ides	configuration file for IDES boot module
uts/3b2/master.d/krpc	configuration file for KRPC boot module
uts/3b2/rpc/*
lib/libnsl/des/*
lib/libnsl/rpc/*
lib/librpcsvc/*
cmd/keyserv/*
cmd/rpcbind/*
cmd/rpcgen/*
cmd/rpcinfo/*
cmd/rpcsvc/*
.TE
.S
.XF
.H 2 "\s-2STREAMS\s+2 Networking Facilities"
The \s-2STREAMS\s+2 \s-2I/O\s+2-based networking facilities provide \*(R4 a range of solutions.
The networking software is designed to increase the orthogonality of different components, encouraging protocol-independent applications and services, supporting transport-independent protocols and allowing \*(R4 applications to run in a wide variety of network environments.
The \s-2STREAMS\s+2 \s-2I/O\s+2 structure increases the quality, orthogonality, and portability of network applications as well as protocol implementations.
.HU "\s-2TCP\s+2/\s-2IP\s+2 Modules"
In \*(R4, \*(SV supports the Transmission Control Protocol/Internet Protocol (\s-2TCP\s+2/\s-2IP\s+2), a family of network protocols frequently identified as the \s-2DARPA\s+2 Internet Protocol Suite.
\s-2TCP\s+2/\s-2IP\s+2 is a comprehensive set of protocols and commands that support networking among systems of different types.
.P
For more information about \s-2TCP\s+2/\s-2IP\s+2, see the \f2Network User's and Administrator's Guide\f1.
.P
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/master.d/app	configuration file for APP protocol boot module
uts/3b2/master.d/arp	configuration file for ARP protocol boot module
uts/3b2/master.d/icmp	configuration file for ICMP protocol boot module
uts/3b2/master.d/ip	configuration file for IP protocol boot module
uts/3b2/master.d/llcloop	configuration file for LLCLOOP protocol boot module
uts/3b2/master.d/rawip	configuration file for RAWIP protocol boot module
uts/3b2/master.d/tcp	configuration file for TCP protocol boot module
uts/3b2/master.d/udp	configuration file for UDP protocol boot module
uts/3b2/net/*
uts/3b2/netinet/*
.TE
.S
.XF
.HU "\s-2ETHERNET\s+2\*(Tm Media Driver"
The \s-2ETHERNET\s+2* Media Driver Utilities package provides the software to drive an \s-2ETHERNET\s+2 board on an \*(Co 3B2 computer.
.FS *
\s-2ETHERNET\s+2 is a trademark of Xerox Corporation
.FE
.P
.XS I N
.CW
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
.XX < ../netwk/streams/head.emd
uts/3b2/io/emd.c	3B2 Ethernet Media Driver
uts/3b2/io/emd.mk
uts/3b2/master.d/emd	configuration file for EMD boot module
uts/3b2/sys/emd.h	3B2 Ethernet driver structures and defines
uts/3b2/sys/emduser.h	3B2 Ethernet driver user interface
.XX < ../netwk/streams/lib.emd
cmd/emd/*
.TE
.S
.XF
.H 2 "Internet Networking Facilities"
\*(R4 adds support for the \s-2TCP\s+2/\s-2IP\s+2 suite of networking protocols together with the set of associated utilities (e.g., \*(Cwtelnet\*(Cn\^, \*(Cwsmtp\*(Cn\^, \*(Cwftp\*(Cn\^) that are normally used with this protocol suite.
Because all \*(SV networking services are implemented to the \s-2TLI\s+2 interface, including the \s-2TCP\s+2/\s-2IP\s+2 implementation, all existing programs can use this set of networking protocols without being modified or recompiled.
.HU "Sockets Compatibility Library"
Sockets is a networking interface widely used in \s-2BSD\s+2 versions of the \*(UX system.
Functionally similar to \*(SV's Transport Level Interface (\s-2TLI\s+2), sockets define how a process accesses a transport-service based on \s-2TCP\s+2/\s-2IP\s+2.
\*(R4 provides sockets compatibility through a library so that \s-2BSD\s+2 applications using sockets can migrate easily to \*(SV.
.P
For more information on \f2sockets\f1, see the \f2Programmer's Guide: Networking Interfaces\f1.
.P
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
uts/3b2/io/sockmod.c	socket interface module
uts/3b2/master.d/sockmod	configuration file for SOCKMOD boot module
uts/3b2/sys/byteorder.h	macros for conversion between host and (internet) network byte order
uts/3b2/sys/socket.h	various socket defines:  types, address families, options
uts/3b2/sys/socketvar.h	struct \fIsocket\fP and related defines
uts/3b2/sys/sockio.h	socket \fIioctl\fP commands
uts/3b2/sys/sockmod.h	socket interface structures
uts/3b2/sys/un.h	socket IPC domain; struct \fIsockaddr_un\fP
lib/libsocket/*
.TE
.S
.XF
.XK
.HU "Internet Networking Utilities"
Internet Networking Utilities include the \s-2DARPA\s+2 commands that allow users to login to remote systems, execute commands on remote systems and copy files from  remote systems.
These utilities work in conjunction with the \s-2TCP\s+2/\s-2IP\s+2 network protocols, also known as the \s-2DARPA\s+2 Internet Protocol Suite, which in the Technology File Mapping Guide is listed under \s-2STREAMS\s+2 Networking Facilities.
.P
.XS I N
.CW
.XX < ../netwk/inet/head.inet
.XX < ../netwk/inet/lib.inet
.XX < ../netwk/inet/uts.inet
cmd/cmd-inet/*
cmd/mail/smtp/*
.CN
.XF
.H 1 "Windowing Software Technology"
\*(R4 contains Windowing Software Technology that addresses the requirements of both naive and sophisticated users.
Windowing Software Technology simplifies the development of applications that directly interact with end-users by supporting device-independent display management for both character-oriented and bit-mapped graphic display devices.
Style guidelines and development tool-kits help programmers maintain consistency in the ``look'' and ``feel'' of the user-interface to promote ``user portability'' between different applications that follow the guidelines.
This further reduces software costs by insulating applications from display device dependencies and reduces user training costs and loss of productivity as users move between different applications.
Software developers benefit from a rich and robust set of tools for developing applications that share the same ``look'' and ``feel.''
End-users benefit because they can transfer existing skills and knowledge of how to use one application to the use of another and thereby avoid the need to learn new and different user-interface. 
.P
\*(R4 supports graphical terminals through two standard interfaces, the \s-2MIT\s+2 X.11 Window Interface and the \*(XN Window Interface.
The X Window System and \s-2XT\s+2 toolkit provide access to the industry standard window system.
In addition, the \s-2NDE\s+2 toolkit makes available a \f4PostScript\f1-based window system.
Both an \s-2X11\s+2 server and an \*(XN server are also available.
\*(R4 provides toolkits for both systems, together with \*(Co \*(OL\(tm toolkits for both systems that will allow programmers to use the \*(OL ``look and feel'' with either of these systems.
In addition, the system provides a window manager and other necessary utilities.
.P
The \*(OL\*(Tm Graphical User Interface (\s-2GUI\s+2) is supported by both window systems in \*(R4.
\*(OL \s-2GUI\s+2 is a window system designed specifically for the \*(UX system environment, and defines a consistent look and feel for \*(UX system applications.
\*(R4 provides \*(OL \s-2GUI\s+2 toolkits that allow programmers to use the \*(OL ``look and feel'' with the X Window System or \*(XN.
In addition, the system provides a window manager and other necessary utilities.
.H 2 "X Window System"
\s-2XWIN\s+2\*(Tm provides an enhanced and supported implementation of the MIT X Window System\*(Tm.*
It provides a standard graphical windowing platform and a way to write device-independent applications.  
.FS *
X Window System is a trademark of MIT
.FE
X Window System technology allows a number of graphical windows, generated anywhere in the network, to appear on a single screen.  
.P
The software that is provided includes the standard components of the MIT X Window System Version 11 Release 3 (\s-2X11R3\s+2). It includes:
.P
.AL
.LI
\s-2XWIN\s+2 \s-2X11R3\s+2 server, which manages the display for client applications.
.LI
\s-2XWIN\s+2 Xlib, which is the low level \*(Cc language interface to the X Window System.
.LI
\s-2XWIN\s+2 X Intrinsics, which are the utility layer for creating, deleting and managing widgets.
.LI
Ethernet and ISO StarLAN drivers
.LE 1
.HU "X Window System Headers"
.XS I N
.CW
X11R3/X11/DECkeysym.h
X11R3/X11/Imakefile
X11R3/X11/JUSkeysym.h
X11R3/X11/X.h
X11R3/X11/XWDFile.h
X11R3/X11/Xatom.h
X11R3/X11/Xmd.h
X11R3/X11/Xos.h
X11R3/X11/Xproto.h
X11R3/X11/Xprotostr.h
X11R3/X11/Xstreams.h
X11R3/X11/copyright.h
X11R3/X11/keysym.h
X11R3/X11/keysymdef.h
X11R3/X11/xtestext1.h
.CN
.XF
.XK
.HU "X Window System Server"
.XS I N
.CW
X11R3/server/*
.CN
.XF
.SK
.HU "X Window System Clients"
.XS I N
.CW
X11R3/att/Imakefile
X11R3/att/clients/*
X11R3/clients/Imakefile
X11R3/clients/bitmap/*
X11R3/clients/lib/*
X11R3/clients/tmon/*
X11R3/clients/xauth/*
X11R3/clients/xbiff/*
X11R3/clients/xcalc/*
X11R3/clients/xclock/*
X11R3/clients/xdm/*
X11R3/clients/xdpyinfo/*
X11R3/clients/xedit/*
X11R3/clients/xev/*
X11R3/clients/xfd/*
X11R3/clients/xhost/*
X11R3/clients/xinit/*
X11R3/clients/xkill/*
X11R3/clients/xload/*
X11R3/clients/xlogo/*
X11R3/clients/xlsfonts/*
X11R3/clients/xlswins/*
X11R3/clients/xmag/*
X11R3/clients/xmodmap/*
X11R3/clients/xnetaccess/*
X11R3/clients/xpr/*
X11R3/clients/xprop/*
X11R3/clients/xrdb/*
X11R3/clients/xrefresh/*
X11R3/clients/xset/*
X11R3/clients/xsetroot/*
X11R3/clients/xterm/*
X11R3/clients/xwd/*
X11R3/clients/xwud/*
.CN
.XF
.XK
.HU "X Window System Library (\*(CwXlib\*(Cn)"
.XS I N
.CW
X11R3/lib/X/*
.CN
.XF
.XK
.HU "Old X Window System Library (\*(CwXlib\*(Cn)"
.XS I N
.CW
X11R3/lib/oldX/*
.CN
.XF
.XK
.HU "X Window System Intrinsics (\*(CwXt\*(Cn)"
.XS I N
.CW
X11R3/lib/Xt/*
.CN
.XF
.XK
.HU "X Window System Utilities (\*(CwXmu\*(Cn & \*(CwXau\*(Cn)"
.XS I N
.CW
X11R3/lib/Xau/*
X11R3/lib/Xmu/*
.CN
.XF
.SK
.HU "X Window System Athena Widgets (\*(CwXaw\*(Cn)"
.XS I N
.CW
X11R3/lib/Xaw/*
.CN
.XF
.XK
.HU "X Window System Fonts"
.XS I N
.CW
X11R3/fonts/*
.CN
.XF
.XK
.HU "X Window System Bitmaps & Pixmaps"
.XS I N
.CW
X11R3/X11/bitmaps/*
X11R3/X11/pixmaps/*
.CN
.XF
.XK
.HU "X Window System Misc \(em Examples"
.XS I N
.CW
X11R3/examples/*
.CN
.XF
.XK
.HU "X Window System Misc \(em Demos"
.XS I N
.CW
X11R3/att/demos/*
X11R3/demos/*
.CN
.XF
.XK
.HU "X Window System Misc \(em Contributed"
.XS I N
.CW
X11R3/att/games/*
X11R3/contrib/*
.CN
.XF
.XK
.HU "X Window System Misc \(em Local"
.XS I N
.CW
X11R3/local/*
.CN
.XF
.XK
.HU "X Window System Misc \(em Pkg"
.XS I N
.CW
X11R3/pkg/*
.CN
.XF
.XK
.HU "X Window System Misc \(em Extensions"
.XS I N
.CW
X11R3/extensions/*
.CN
.XF
.XK
.HU "X Window System Misc \(em Nameserver"
.XS I N
.CW
X11R3/nameserver/*
.CN
.XF
.XK
.HU "X Window System Misc \(em Utilities"
.XS I N
.CW
X11R3/Imakefile
X11R3/X.man
X11R3/boot.sh
X11R3/lib/Imakefile
X11R3/mtg/*
X11R3/rgb/*
X11R3/util/*
.CN
.XF
.H 2 "\*(XN Facilities"
.HU "\*(XN Server \(em Headers"
.XS I N
.CW
usr.bin/xnews/xnews/server/include/*
.CN
.XF
.XK
.HU "\*(XN Server \(em Nucleus"
.XS I N
.CW
usr.bin/xnews/xnews/server/nucleus/*
.CN
.XF
.XK
.HU "\*(XN Server \(em \s-2X11\s+2"
.XS I N
.CW
usr.bin/xnews/xnews/server/X11/*
.CN
.XF
.XK
.HU "\*(XN Server \(em Cscript"
.XS I N
.CW
usr.bin/xnews/xnews/server/cscript/*
.CN
.XF
.XK
.HU "\*(XN Server \(em \s-2NPSI\s+2"
.XS I N
.CW
usr.bin/xnews/xnews/server/npsi/*
.CN
.XF
.XK
.HU "\*(XN Server \(em Porting Help"
.XS I N
.CW
usr.bin/xnews/xnews/server/portinghelp/*
.CN
.XF
.XK
.HU "\*(XN Client \(em \s-2N\s+2e\s-2WS\s+2"
.XS I N
.CW
usr.bin/xnews/xnews/client/NeWS/*
.CN
.XF
.XK
.HU "\*(XN Client \(em \s-2X11\s+2"
.XS I N
.CW
usr.bin/xnews/xnews/client/X11/*
.CN
.XF
.XK
.HU "\*(XN Libraries \(em \s-2X11\s+2"
.XS I N
.CW
usr.lib/libX11/*
.CN
.XF
.XK
.HU "\*(XN Libraries \(em \s-2CPS\s+2"
.XS I N
.CW
usr.lib/libcps/*
.CN
.XF
.XK
.HU "\*(XN Development Environment (\s-2NDE\s+2)"
.XS I N
.CW
usr.bin/xnews/xnews/etc/*
.CN
.XF
.XK
.HU "\*(XN Utilities"
.XS I N
.CW
usr.bin/xnews/xnews/utilities/*
.CN
.XF
.XK
.HU "\*(XN Graphics"
.XS I N
.CW
usr.bin/xnews/xnews/server/graphics/*
.CN
.XF
.XK
.HU "\*(XN Images"
.XS I N
.CW
usr.bin/xnews/images/*
usr.bin/xnews/xnews/images/*
.CN
.XF
.XK
.HU "\*(XN \f(HB\s-2OPEN LOOK\s+2\fP Window Manager"
.XS I N
.CW
usr.bin/xnews/olwm/*
.CN
.XF
.XK
.HU "\*(XN Miscellaneous"
.XS I N
.CW
.startup.ps
Makefile
Master.cfg
README
portable/*
runtime.setup
setup
tools/*
usr.bin/Makefile
usr.bin/xnews/Makefile
usr.bin/xnews/xnews/Makefile
usr.bin/xnews/xnews/client/extensions/*
usr.bin/xnews/xnews/fonts/Makefile
usr.bin/xnews/xnews/fonts/Makefile.orig
usr.bin/xnews/xnews/malloc/*
usr.bin/xnews/xnews/man/*
usr.bin/xnews/xnews/palloc/*
usr.bin/xnews/xnews/server/BUGS
usr.bin/xnews/xnews/server/Core/*
usr.bin/xnews/xnews/server/Makefile
usr.bin/xnews/xnews/server/RUNNING
usr.bin/xnews/xnews/server/Server.cfg
usr.bin/xnews/xnews/server/extensions/*
usr.bin/xnews/xnews/server/f_malloc.c
usr.bin/xnews/xnews/server/getwd.c
usr.bin/xnews/xnews/server/initialize.c
usr.lib/Makefile
usr.lib/libext/*
usr.lib/libwire/*
usr.lib/misc/*
.CN
.XF
.H 2 "\*(XN Fonts"
.HU "\*(XN Fonts \(em \*(CwCursor\*(Cn"
.XS I N
.CW
usr.bin/xnews/xnews/fonts/Cursor/*
.CN
.XF
.XK
.HU "\*(XN Fonts \(em \*(CwIcon\*(Cn"
.XS I N
.CW
usr.bin/xnews/xnews/fonts/Icon/*
.CN
.XF
.XK
.HU "\*(XN Fonts \(em \*(CwOLCursor\*(Cn"
.XS I N
.CW
usr.bin/xnews/xnews/fonts/OLCursor/*
.CN
.XF
.XK
.HU "\*(XN Fonts \(em \*(CwOpenLook\*(Cn"
.XS I N
.CW
usr.bin/xnews/xnews/fonts/OpenLook/*
.CN
.XF
.XK
.HU "\*(XN Fonts \(em \*(CwTextFont\*(Cn"
.XS I N
.CW
usr.bin/xnews/xnews/fonts/TextFonts/*
.CN
.XF
.XK
.HU "\*(XN Fonts \(em \*(CwXFonts\*(Cn"
.XS I N
.CW
usr.bin/xnews/xnews/fonts/XFonts/*
.CN
.XF
.XK
.HU "\*(XN Fonts \(em \*(CwFolioFonts\*(Cn"
.XS I N
.CW
usr.bin/xnews/xnews/fonts/FolioFonts/*
.CN
.XF
.XK
.HU "\*(XN TypeScaler"
.XS I N
.CW
usr.bin/xnews/xnews/server/folio/*
.CN
.XF
.H 2 "\f(HB\s-2OPEN LOOK\s+2\fP Graphical User Interface (\s-2GUI\s+2)"
.HU "\f(HB\s-2OPEN LOOK\s+2\fP Toolkit (\*(CwXol\*(Cn)"
The \*(OL X Toolkit is built on the industry-standard \s-2X11R3\s+2 networked, graphical windowing system.
The toolkit provides an extensive set of ``widgets'' and convenience utilities.
They include the following primary widgets: menu, control area, button stack, scroll bar, pop-up window and pushpin, as well as others.
.P
.XS I N
.CW
X11R3/lib/Xol/*
.CN
.XF
.XK
.HU "\f(HB\s-2OPEN LOOK\s+2\fP User Packaging \*(Cwolpkg\*(Cn"
The \*(OL \s-2GUI\s+2 User Packaging files provide the basis for setup, addition of users, and initialization of the \*(OL Graphical User Interface.
.P
.XS I N
.CW
X11R3/olpkg/*
.CN
.XF
.XK
.HU "\f(HB\s-2OPEN LOOK\s+2\fP Administration Manager (\*(Cwolam\*(Cn)"
.XS I N
.CW
X11R3/clients/olam/*
.CN
.XF
.XK
.HU "\f(HB\s-2OPEN LOOK\s+2\fP File Manager (\*(Cwolfm\*(Cn)"
The \s-2OPEN LOOK\s+2 File Manager provides a graphical interface to the file system that allows an end-user to create, move, copy, delete, and rename directories and files.
The File Manager also provides the ability to change directories, reassign ownership and change access permissions.
.P
.XS I N
.CW
X11R3/clients/olfm/*
.CN
.XF
.XK
.HU "\f(HB\s-2OPEN LOOK\s+2\fP Window Manager (\*(Cwolwm\*(Cn)"
The \*(OL \s-2GUI\s+2 Window Manager enables an end-user to display and manipulate windows.
The Window Manager provides the following operations:
.BL
.LI
Open an icon to a window and close a window to an icon.
.LI
Move windows to different locations on a screen.
.LI
Position windows in front of or behind other windows.
.LI
Resize and redraw windows
.LE
.P
.XS I N
.CW
X11R3/clients/olwm/*
.CN
.XF
.XK
.HU "\f(HB\s-2OPEN LOOK\s+2\fP Workspace Manager (\*(Cwolwsm\*(Cn)"
The \*(OL Workspace Manager provides the ability to control workspace properties such as color, keyboard and mouse assignment.
In addition the Workspace Manager functions as a session manager to control program execution.
.P
.XS I N
.CW
X11R3/clients/olwsm/*
.CN
.XF
.XK
.HU "\f(HB\s-2OPEN LOOK\s+2\fP Utilities"
The \f(HB\s-2OPEN LOOK\s+2\fP Utilities include the
olpixmap and olprintscreen programs.
.P
.XS I N
.CW
X11R3/clients/olpixmap/*
X11R3/clients/olprintscreen/*
.CN
.XF
.H 2 "Other \s-2GUI\s+2 Technologies"
.HU "XView"
.XS I N
.CW
usr.lib/libxview/*
usr.bin/xnews/xview/*
.CN
.XF
.XK
.HU "Dot-Mapped Display (\s-2DMD\s+2) Utilities"
The Dot-Mapped Display (\s-2DMD\s+2) Utilities provide the software that is commonly required by \*(Co windowing terminals (such as the 630 \s-2MTG\s+2) to create, delete and manipulate terminal windows, query terminal window status as well as display statistics about usage of windowing routines.
.P
For more information about the \s-2DMD\s+2 Utilities, see the \f2layers\f1(1) manual page in the \f2User's Reference Manual\f1, the \f2libwindows\f1(3X) manual page in the \f2Programmer's Reference Manual\f1 and the \f2User's Guide\f1.
.P
.XS I N
.S -1 -2
.TS
tab(	);
l3f5w(2.25i) l3f1.
head/windows.h
lib/libwindows/*
uts/3b2/io/xt.c	3B2 windowing terminal packet protocol driver
uts/3b2/io/xt.mk
uts/3b2/master.d/xt	configuration file for XT boot module
uts/3b2/sys/jioctl.h	3B2 windowing terminal \fIioctl\fP interface
uts/3b2/sys/nxt.h	windowing terminal driver control structures
uts/3b2/sys/nxtproto.h	windowing terminal packet protocol structure
cmd/layers/*
cmd/lnttys/lnxts.sh
.TE
.S
.XF
.H 1 "Appendix"
.HU "References"
.RP
.de TY
.S +9 +9
.tl '''\f(HBTable of\f1'
.tl '''\f(HBContents\f1'
.S -9 -9
.OF "'\f2\*(DT\f1''\f(HI\s-2UNIX\s+2\f2 Software Technology\f1'"
.EF "'\f(HI\s-2UNIX\s+2\f2 Software Technology\f1''\f2\*(DT\f1'"
.PF "''\f(BIAT&T USO Proprietary\fP''"
..
.TC 2 1 2 0
.OF "'\f2\*(DT\f1''\f(HI\s-2UNIX\s+2\f2 Software Technology\f1'"
.EF "'\f(HI\s-2UNIX\s+2\f2 Software Technology\f1''\f2\*(DT\f1'"
.PF "''\f(BIAT&T USO Proprietary\fP''"
.CS
