AA ME85D TE_Ultrix_4.1_Rel_Notes_1990 TE Ultrix 4.1 Rel Notes 1990

AA-ME85D-TE_Ultrix_4.1_Rel_Notes_1990 AA-ME85D-TE_Ultrix_4.1_Rel_Notes_1990

User Manual: AA-ME85D-TE_Ultrix_4.1_Rel_Notes_1990

Open the PDF directly: View PDF PDF.
Page Count: 276

DownloadAA-ME85D-TE_Ultrix_4.1_Rel_Notes_1990 AA-ME85D-TE Ultrix 4.1 Rel Notes 1990
Open PDF In BrowserView PDF
ULTRIX/UWS

Release Notes

Order Number: AA-ME85D-TE

Product Version:

ULTRIX/UWS Version 4.1

Operating System and Version:

ULTRIX Version 4.1

This manual contains notes critical to the installation and use of ULTRIX/UWS
Version 4.1. Read these notes before installing ULTRIX/UWS Version 4.1.

digital equipment corporation
maynard, massachusetts

Restricted Rights: Use, duplication, or disclosure by the U.S. Government is subject to restrictions as set forth in
subparagraph (c) (1) (ii) of the Rights in Technical Data and Computer Software clause of DFARS 252.227-7013.
! Digital Equipment Corporation 1990
All rights reserved.

! Massachusetts Institute of Technology, Cambridge, Massachusetts, 1984, 1985, 1986, 1988.

The information in this document is subject to change without notice and should not be construed as a commitment
by Digital Equipment Corporation. Digital Equipment Corporation assumes no responsibility for any errors that may
appear in this document.
The software described in this document is furnished under a license and may be used or copied only in accordance
with the terms of such license.
No responsibility is assumed for the use or reliability of software on equipment that is not supplied by Digital or its
afliated companies.

The following are trademarks of Digital Equipment Corporation:

digi tal
CDA
DDIF
DDIS
DEC
DECnet
DECstation
DECsystem

DECUS
DECwindows
DTIF
LSE
MASSBUS
MicroVAX
Q-bus
ULTRIX
ULTRIX Mail Connection

ULTRIX Worksystem Software
UNIBUS
VAX
VAXstation
VMS
VMS/ULTRIX Connection
VT
XUI

Apple, LaserWriter, and Macintosh are registered trademarks of Apple Computer, Inc.
Domain/OS and AEGIS are registered trademarks of Apollo Systems Division of Hewlett Packard Corporation.
Ethernet is a registered trademark of Xerox Corporation.
IBM is a registered trademark of International Business Machines Corporation.
INGRES is a trademark of Ingres Corporation.
Network File System and NFS are trademarks of Sun Microsystems, Inc.
PostScript and Display PostScript are registered trademarks of Adobe Systems, Inc.
SunOS, NeWs, and Open Look are registered trademarks of Sun Microsystems.
Tektronix is a trademark of Tektronix, Inc.
UNIX is a registered trademark of AT&T in the USA and other countries.
X/Open is a trademark of X/Open Company Ltd.
X Window System version 11, and its derivatives (X, X11, and X version 11) are trademarks of Massachusetts
Institute of Technology.

Contents

About This Manual
Audience

.........................................................................................................

Organization

.....................................................................................................

Related Documentation
Text Conventions

1
1.1

1.2

1.3

xxi
xxi

......................................................................................

xxii

..............................................................................................

xxii

Installation Notes
Hardware

................................................................................................

1–1

1.1.1
1.1.2
1.1.3
1.1.4
1.1.5
1.1.6
1.1.7
1.1.8
1.1.9
1.1.10
1.1.11
1.1.12

KDB50 ECO Level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
RQDX Q-bus Controller Jumper Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TK50 and TK70 Tape Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Data Corruption from Programs Accessing Tape Units . . . . . . . . . . . . . . . . . . . . . . .
Required Switch Settings for TSV05 Tape Drive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Installing from a TE16 Tape Drive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
TU81 Tape Drive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
MSCP Disks Remain Off Line If Switched Off Line While in Use . . . . . . .
HSC Microcode ECO Level for MSCP Disks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
No Bad Block Replacement on MASSBUS Disk Media . . . . . . . . . . . . . . . . . . . .
Eight-Bit Terminal Driver Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Scrambled Stack Printouts on System Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1–1
1–1
1–1
1–2
1–2
1–2
1–2
1–3
1–3
1–3
1–3
1–4

Boot

.......................................................................................................

1–4

1.2.1

Conversational Boot Problem on MSCP-Type Disk

............................

1–4

..................................................................................

1–4

Media Labels for ULTRIX/UWS Version 4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ULTRIX/UWS Version 4.1 Subset Sizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1–4
1–5

General Installation
1.3.1
1.3.2

1.3.2.1
1.3.2.2
1.3.2.3
1.3.3
1.3.4

ULTRIX/UWS Version 4.1 Supported Subsets . . . . . . . . . . . . . . . . . . . . . . . .
ULTRIX/UWS Version 4.1 Mandatory Upgrade Subset Sizes . . .
ULTRIX/UWS Version 4.1 Unsupported Subsets . . . . . . . . . . . . . . . . . . . .

1–5
1–8
1–11

Time Set During System Installation May Be Incorrect for GMT Offsets .
Installing Layered Products and Unsupported Software . . . . . . . . . . . . . . . . . . . . . . .

1–13
1–14

1.3.5

Installing the Mandatory Upgrade

....................................................

1–14

Installing the Mandatory Upgrade from TK50 or MT9 Tape . . . . .
Installing from an RA60 or CDROM Disk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Installing from the Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1–15
1–16
1–16

Removing Subsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Unsupported Subsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1–17
1–18

1.3.5.1
1.3.5.2
1.3.5.3
1.3.6
1.3.7
1.4

Conguration
1.4.1
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.4.10
1.4.11
1.4.12
1.4.13

...........................................................................................

1–18

Secure Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dump Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conguration of Q-bus Terminal Multiplexer Lines . . . . . . . . . . . . . . . . . . . . . . . . . . .
System Conguration When Disk Controllers Are in Floating Address
Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conformance to CSR Address Space Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The Console Entry in the ttys File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Synchronization Errors for Autodial Modem on a DMF32 Interface . . . . .
Shared Lines Do Not Work over Direct Connections . . . . . . . . . . . . . . . . . . . . . . . . . .
Reactivating Hardwired Terminals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Terminals Should Be Left Powered On . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Changes to Swap Space and Program Size Parameters . . . . . . . . . . . . . . . . . . . . . .
Conguration File Options for Audit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tuning File System Performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1–18
1–19
1–19

1.4.13.1
1.4.13.2
1.4.13.3
1.5

Diskless Management Services (DMS)
1.5.1
1.5.2
1.5.3
1.5.4
1.5.5

1–25

DMS Servers and Reference Page Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diskless Clients Cannot Update the apropos Index or Use catman . . . . . . . .
DMS Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Diskless Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DMS Server with pre-ULTRIX/UWS Version 4.0 Clients . . . . . . . . . . . . . . . . . . .

1–25
1–26
1–26
1–26
1–27

DMS Clients and /etc/exports Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The makpkt File Location Has Changed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DMS Clients and Time Zone Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Different Versions of ULTRIX, DMS, and BIND . . . . . . . . . . . . . . . . . . . .

Remote Installation Services (RIS)
1.6.1
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8

iv Contents

1–23
1–24
1–24

........................................................

1.5.5.1
1.5.5.2
1.5.5.3
1.5.5.4
1.6

The bufcache Conguration File Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . .
ULTRIX Write-Back Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The update Daemon Time Interval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1–20
1–21
1–21
1–21
1–22
1–22
1–22
1–22
1–23
1–23

1–27
1–28
1–28
1–28

.............................................................

1–29

RIS Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Client Name Length . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Previous Versions of ULTRIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
CDROM Usage in the RIS Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optional Removal of the Kernel Object Subset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Installation of RIS Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mounting a RIS Area Using NFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Extracting Software or Creating a Symbolic Link from a CDROM . . . . . . .

1–29
1–29
1–29
1–29
1–29
1–30
1–30
1–30

2
2.1

Processor-Specific Notes
MicroVAX II, VAXstation II, and VAXstation II/GPX
2.1.1
2.1.2
2.1.3

.................................

2–1

Disabling Bootable Disks on MicroVAX II, VAXstation II, and
VAXstation II/GPX Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Console Port Printer Procedure: MicroVAX Systems . . . . . . . . . . . . . . . . . . . . . . . . . .
VAX Color Workstations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2–1
2–2
2–2

2.1.3.1
2.1.3.2
2.2

VAXstation 2000 and MicroVAX 2000
2.2.1
2.2.2
2.2.3

2–3

Special File Usage: VAXstation 2000 and MicroVAX 2000 . . . . . . . . . . . . . . .
Changing Speed on the Console Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VAX Color Workstations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2–3
2–3
2–3

2–4

Advanced Installations Required for VAXstation 3520 and 3540 Systems.
The X Server and Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The Xgb Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VAX Color Workstations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2–4
2–4
2–5
2–5

2.5

2–5

VAX 6000 Model 400 and Model 500 Series Processors

...............................

2–6

Installation Instructions for the VAX 6000 Model 500 . . . . . . . . . . . . . . . . . . . . . . . .
Missing Boot Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Installation Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2–6
2–6
2–7

VAX 8700 and VAX 8800 Systems

............................................................

Maximum Memory Support for VAX 8700 VAX 8800 Systems

2–7

......................................................

2–7

Getting a Memory Dump from a Hung DECstation/DECsystem 3100 . . .
Terminal Emulator Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Xcfb Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Invoking dxmail from the User Executive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2–7
2–8
2–8
2–8

DECstation/DECsystem 5000 Model 200 Series
2.8.1

2–7

..........

DECstation/DECsystem 2100 and 3100
2.7.1
2.7.2
2.7.3
2.7.4

2.8

2–5

...............................

2.6.1
2.7

...........................................................................

2–5
2–5

Boot Command for the VAX 11/780 and 11/785

2.5.1
2.5.2
2.5.3
2.6

The Xqdsg Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Console Messages on VAX Color Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . .

VAX 11/780 and 11/785
2.4.1

2–3
2–3

......................................................

2.3.4.1
2.3.4.2
2.4

The Xqdsg Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Console Messages on VAX Color Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . .

VAXstation 3520 and VAXstation 3540
2.3.1
2.3.2
2.3.3
2.3.4

2–2
2–2

.......................................................

2.2.3.1
2.2.3.2
2.3

The Xqdsg Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Console Messages on VAX Color Displays . . . . . . . . . . . . . . . . . . . . . . . . . . . .

...........................................

Booting the DECstation/DECsystem 5000 Model 200 Series Processor

.

2–8
2–8

Contents v

2.8.1.1

Determining the Slot and Device Numbers of Your Boot Device .

2.8.1.1.1
2.8.1.1.2
2.8.1.2

Setting the Console Environmental Variables

2.8.1.2.1
2.8.1.2.2
2.8.1.3

2.8.4
2.8.5

2–11

Setting the boot Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Setting the haltaction Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2–11
2–12

............................................................

2–13

Booting from the System Disk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Booting from an Alternate Disk or Kernel . . . . . . . . . . . . . . . . . . . .

2–13
2–13

Booting
Booting
Booting
Booting

from a TK50 Tape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
from a CDROM Optical Disk Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
from the Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
During the Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2–14
2–14
2–15
2–15

Installing as a Standalone Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Installing as a Diskless Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2–15
2–17

Installation Instructions for the Greyscale Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Interrupting the ULTRIX Operating System on a
DECstation/DECsystem 5000 Model 200 Series Processor . . . . . . . . . . . . . . . .
Custom Kernel Problem with DECstation/DECsystem 5000 Model 200
Series Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Writing, Adding, and Conguring a Device Driver for the
TURBOchannel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2–19

2.8.1.7.1
2.8.1.7.2
2.8.2
2.8.3

2.8.5.1
2.8.5.2
2.8.5.3

2–20
2–21
2–21
2–22
2–23

Xcfb Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Setting an Application’s Visual Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PostScript Previewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Display PostScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Image Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exceeding the Per-Process Virtual Size Limit in the
DECstation/DECsystem 5000 Model 200PXG Server . . . . . . . . . . . . . . . . . . . . . . .
2.8.12 Off-Screen Memory Limitations Involving Large Pixmaps . . . . . . . . . . . . . . . .

2–24
2–24
2–24
2–25
2–25

DECsystem 5100

.....................................................................................

2–25

Installation Instructions for the DECsystem 5100 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Default Boot Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Backplate Labeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conguring Terminal Devices for the KN230 Asynchronous
Communications Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Adding Support for a New Option Card . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Using the Halt Button on the DECsystem 5100 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Characters Output to Terminal Line Connections on Power Up . . . . . . . . . . . .

2–25
2–26
2–26

2.9.1
2.9.2
2.9.3
2.9.4
2.9.5
2.9.6
2.9.7
2.10

2–19

Writing a Device Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Adding a User-Written Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conguration of the TURBOchannel User-Written Device Driver .

2.8.6
2.8.7
2.8.8
2.8.9
2.8.10
2.8.11

2.9

2–9
2–10

..........................

Booting from a Disk

2.8.1.3.1
2.8.1.3.2
2.8.1.4
2.8.1.5
2.8.1.6
2.8.1.7

Determining the Slot Number (Default) . . . . . . . . . . . . . . . . . . . . . . .
Determining the Boot Device Number . . . . . . . . . . . . . . . . . . . . . . . . .

2–9

DECsystem 5400

vi Contents

....................................................................................

2–25
2–25

2–28
2–29
2–30
2–31
2–31

2.10.1
2.10.2
2.10.3
2.10.4
2.10.5
2.11

Possible Segmentation Faults During System Use . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Possible Performance Problem During N-Buffered I/O Use . . . . . . . . . . . . . . . .
Server Logs Out During Daemon Startup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Forcing a Crash Dump on the DECsystem 5400 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Performance of dump(8) on DECserver 5800 and 5400 Series
Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

DECsystem 5500
2.11.1

Installation Instructions for the DECsystem 5500

2.11.1.1
2.11.1.2
2.11.1.3
2.11.1.4
2.12

2.12.5

3
3.1

2–34
2–34

The boot Command for SCSI Tapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The boot Command for QBUS Tapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Boot Command for the CDROM Optical Disc Kit . . . . . . . . . . . . . . . . .
Default Boot Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2–34
2–34
2–34
2–35

....................................................................................

2–35

Possible Segmentation Faults During System Use . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Possible Performance Problem During N-Buffered I/O Use . . . . . . . . . . . . . . . .
Server Logs Out During Daemon Startup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Interrupting the Operating System on a DECsystem 5800 Series
Processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Performance of dump(8) on DECserver 5800 and 5400 Series
Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2–35
2–35
2–36
2–36
2–37

ULTRIX Software Notes
User Commands
3.1.1
3.1.2
3.1.3
3.1.4
3.1.5
3.1.6
3.1.7
3.1.8

.......................................................................................

3–1

The ar(1) Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The cp(1) Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Alias Causes csh(1) to Dump Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The csh(1) Command Hangs on Double Quotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The dd(1) Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Caution on Using ln(1) Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The make(1) Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The sh(1) Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3–1
3–1
3–2
3–2
3–2
3–2
3–3
3–3

3.1.8.1
3.1.8.2

3.2

2–33

.............................

DECsystem 5800
2.12.1
2.12.2
2.12.3
2.12.4

....................................................................................

2–31
2–31
2–32
2–32

Command Substitution Failure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Version 7 Bourne Shell Not 8-bit Clean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3–3
3–3

3.1.9 The size(1) Command Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.10 The talk(1) Command Is Not 8-bit Clean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.11 Using 8-bit Characters During telnet(1) or rlogin(1) Sessions . . . . . . . . . . . . .
3.1.12 The vi(1) Screen Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3–3
3–3
3–4
3–4

Administrative Commands

........................................................................

3–5

3.2.1

........................................................................

3–5

Crash Dumps and the ps(1) Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dump Device Conguration Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3–5
3–5

The crash(8) Utility
3.2.1.1
3.2.1.2

Contents vii

3.2.2

The fsck(8) Command
3.2.2.1
3.2.2.2

3.2.3

3.3

3.4

License Management Facility Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Error in lmfsetup(8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3–6
3–6

The mkfs(8) Command (RISC Processors Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Changes to the rwhod(8) Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Errors with tapex(8) Utility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3–7
3–7
3–7

Failures Using SCSI TZK10 Tape Drive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Record Size Validate Errors on DECsystem 5100 . . . . . . . . . . . . . . . . . . . .
SCSI Command Timeout Failure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3–7
3–7
3–8

Layered Products and the setld(8) Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The snmpsetup(8) Command Requires a Community Name . . . . . . . . . . . . . . . .
System Exerciser and syscript(8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3–8
3–8
3–8

...........................................................................................

The ptrace(2) System Call

3–9

......................................................................................

3–9

The execvp(3) Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The lint Library strncmp(3) Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A printf(3) Problem (RISC Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Certain Comparison Routines Do Not Work with the qsort(3) Function .

3–9
3–9
3–9
3–9

DECrpc

..................................................................................................

3–9

The NIDL Compiler Does Not Preserve Case Distinctions Correctly . . . .
Servers Generate an Error When Terminated with an Interrupt . . . . . . . . . . . . .
The NIDL Compiler Does Not Generate Unique Names For Array
Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.4 The error_$c_text(3ncs) Routine Does Not Translate All nca_status
Codes to ASCII Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.5 Use of the max_is and last_is Attributes Produces Errors Across
Hardware Architectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.6 The comm_status Parameter Must Be Declared As Both an Input and
Output Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.7 The lb_admin Utility Must be Restarted After Deletion of an Interface .
3.5.8 Bank Example Crashes with Illegal Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.9 Longjmp Botch Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.10 rpc_$bind Can Never Execute the rpc_$free_handle Call . . . . . . . . . . . . . . . . . . .
3.5.11 rrpc Routines Require an Explicit Call into the
Entry Point Vector Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3–9
3–10

Mail

.......................................................................................................

3–13

3.6.1

The sendmail Program Does Not Set the $x Macro on Received Mail

3–13

3.5.1
3.5.2
3.5.3

3.6

3–9

...............................................................

Library Routines
3.4.1
3.4.2
3.4.3
3.4.4

3.5

3–5
3–5
3–6

System Calls
3.3.1

Mounted File Systems and fsck(8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Effects of New File System Timeout Algorithm on fsck(8) . . . . . . .
................................................

3.2.6.1
3.2.6.2
3.2.6.3
3.2.7
3.2.8
3.2.9

3–5

License Management Facility (LMF)
3.2.3.1
3.2.3.2

3.2.4
3.2.5
3.2.6

....................................................................

viii Contents

...

3–10
3–11
3–11
3–12
3–12
3–12
3–13
3–13
3–13

3.6.2
3.6.3
3.6.4
3.6.5
3.7

Creating Aliases That Exceed 1024 Characters in /usr/ucb/mail . . . . . . . . . . .
sendmail Address Parsing Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
sendmail Sender Name Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The Rand Mail Handler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Network and Communications

...................................................................

3–15

The ne Network Device . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Writing to a Remote a.out File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Nonexisting Pathnames in /etc/exports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Login and Security Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Address Change for the Network Information Center (NIC) . . . . . . . . . . . . . . . . .
Maintaining the BIND/Hesiod Root Name Server Data File . . . . . . . . . . . . . . . .
Automatic daemon startup on BIND/Hesiod Primary Server Using
bindsetup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7.8 Using the Packetlter with Multiple Ethernet Interfaces . . . . . . . . . . . . . . . . . . . . . .
3.7.9 Protecting YP and BIND/Hesiod Files and Directories . . . . . . . . . . . . . . . . . . . . . . . .
3.7.10 Improve Your Yellow Pages Makele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7.11 Recommendation For Placement of NFS Mount Points . . . . . . . . . . . . . . . . . . . . .
3.7.12 NFS Filesystems and Named Pipes Incompatibility . . . . . . . . . . . . . . . . . . . . . . . . . .

3–15
3–15
3–15
3–16
3–16
3–17

3.7.1
3.7.2
3.7.3
3.7.4
3.7.5
3.7.6
3.7.7

3.7.12.1
3.7.12.2

3–20
3–20

DLI Programs Must Be Recompiled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DLI/802 Passes Up Packets That Should Be Dropped . . . . . . . . . . . . . . . . . . . . . . .
MOP Request Counters Function Does Not Work for VAX Systems
with DEBNAs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The snmpsetup Command Requires a Community Name . . . . . . . . . . . . . . . . . . .
DEMNA Adapter Not in netsetup Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3–21
3–21

...................................................................................................

3–23

The lpr(1) Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Notes on lprsetup(8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3–23
3–23

3.7.16
3.7.17
Printing
3.8.1
3.8.2

3.8.2.1
3.8.2.2
3.8.3
3.8.4
3.8.5
3.8.6

Sample Patch Procedure for a VAX Machine
Sample Patch Procedure for a RISC Machine

3–18
3–18
3–19
3–19
3–19
3–19

........................
........................

3.7.13
3.7.14
3.7.15

3.8

3–14
3–14
3–15
3–15

3–22
3–22
3–22

Default Values Set by lprsetup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
lprsetup Command Defaults to No Parity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3–23
3–23

Printing Large Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Retrying Print Jobs Indenitely . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Spool Directories for Remote Printers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PrintServer Client Software for ULTRIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3–24
3–24
3–24
3–24

3.8.6.1
3.8.6.2
3.8.6.3
3.8.6.4
3.8.6.5
3.8.6.6
3.8.6.7
3.8.6.8
3.8.6.9
3.8.6.10

The lpr –D Option . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problems Printing over TCP/IP Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Job Fails with PostScript Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Sample Setup Modules for PrintServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modication to lprsetup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
New Entries in the printcap File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ct= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
uv=4.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ps=LPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Unknown Message from TCP/IP PrintServer . . . . . . . . . . . . . . . . . . . . . . . . .

3–25
3–25
3–26
3–26
3–29
3–30
3–30
3–31
3–31
3–31

Contents ix

3.8.6.11
3.8.7
3.8.8
3.9

3.9.4
3.9.5
3.9.6
3.9.7

3.10.2
3.10.3
3.10.4
3.10.5

4.1

PrintServer Layup Files Missing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conguring the System for an LA324 Printer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3–33
3–34

..............................................................................

3–35

Customer Device Drivers: Recompile Potential . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LANCE Driver Name Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BSD curses: Multiple Calls to initscr(), nocrmode() and nl() Cause
Window Problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Floating Point Emulation (RISC Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VAX pcc Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
RISC C Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
RISC Program Size Defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3–35
3–35
3–36
3–38
3–38
3–38
3–38

........................................................................................

3–39

ULTRIX/SQL Commands Dump Core When the II_SYSTEM Variable
Is Not Dened . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Layered Products Compatible with ULTRIX/SQL Version 1.1 . . . . . . . . . . .
New ULTRIX System Parameters Provided to Tune Priority Handling .
ULTRIX/SQL rc.local Startup File Includes Multi-User Reentry Fix . .
ULTRIX/SQL Error Log File May Grow Very Large . . . . . . . . . . . . . . . . . . . . . . .

3–39
3–39
3–39
3–40
3–40

VAX C
3.11.1
3.11.2

4

3–32

ULTRIX/SQL
3.10.1

3.11

....................

Software Development
3.9.1
3.9.2
3.9.3

3.10

ANSI Preamble Loading for TCP/IP PrintServer

.................................................................................................

3–40

VAX C/ULTRIX (vcc) and pcc Calling Conventions . . . . . . . . . . . . . . . . . . . . . . . .
VAX C/ULTRIX (vcc) Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3–40
3–40

ULTRIX Worksystem Software Notes
X Window System
4.1.1

ULTRIX/UWS Version 4.1 X Servers
4.1.1.1
4.1.1.2
4.1.1.3
4.1.1.4
4.1.1.5
4.1.1.6
4.1.1.7
4.1.1.8
4.1.1.9
4.1.1.10
4.1.1.11
4.1.1.12
4.1.1.13
4.1.1.14

4–1

..............................................

4–1

Server-Client Interaction and DECnet Addressing . . . . . . . . . . . . . . . . . . . .
Default Keyboard Keymap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Save-Unders and Backing Store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Problems to Due Swap Space Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Invalid Font Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Host Names in X Server Access Control List . . . . . . . . . . . . . . . . . . . . . . . . . .
X Server Messages File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
How to Restart the X Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LockDisplay and UnLockDisplay Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Memory Allocation Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ULTRIX System V Emulation Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XCopyArea Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XDrawArc(s) Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Data Structures and Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4–1
4–2
4–2
4–3
4–3
4–3
4–4
4–4
4–5
4–5
4–6
4–6
4–6
4–6

4.1.1.14.1
4.1.1.14.2

x Contents

...................................................................................

X Size Hints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XStandardColormap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4–6
4–7

4.1.1.14.3
4.1.1.14.4
4.2

Display PostScript System
4.2.1
4.2.2
4.2.3
4.2.4
4.2.5
4.2.6
4.2.7

4.3

Fonts
4.3.1
4.3.2

4.3.3
4.3.4
4.3.5
4.3.6

4–8

Example Programs Using the Display PostScript System . . . . . . . . . . . . . . . . . . . .
Additional Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Allocating a Colormap for Use with Display PostScript . . . . . . . . . . . . . . . . . . . . . .
setrgbXactual Operator Name Change . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Contexts Created Using the Default Colormaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Changing the Default XStandardColormap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Automatic PostScript Garbage Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4–8
4–8
4–8
4–9
4–9
4–10
4–10

......................................................................................................

4–10

Fonts and Font Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Default Font Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4–11
4–11

75 dpi Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
100 dpi Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Font Directory Contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Installation Subsets and Server Font Directories . . . . . . . . . . . . . . . . . . . . . .

4–11
4–12
4–12
4–13

Application-Specic and Custom Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Display PostScript Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Application Font Information for Developers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Font Names and Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4–14
4–15
4–15
4–15

4.3.6.1
4.3.6.2
4.3.6.3
4.3.6.4
4.3.6.5
4.3.6.6
4.3.6.7

Font Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Specifying Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Font Name Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Example Font Aliases File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Font Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Changes to the Terminal Font . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Viewing/Mailing DDIF Files with Missing External References .

User Environment
4.4.1

4–15
4–17
4–17
4–18
4–27
4–28
4–28
4–29

..............................................................

4–29

Delay in Appearance of Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Naming Windows and Icons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4–29
4–29

Operator Cannot Log in to Session Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Delay in an Application’s Appearance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Calendar - dxcalendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Visual Differences Program - dxdiff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DECwindows Debugger - dxdb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mail - dxmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Paint - dxpaint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4–30
4–30
4–30
4–31
4–31
4–31
4–31

4.4.8.1
4.4.8.2
4.4.9

....................................................................................

Window Manager - dxwm
4.4.1.1
4.4.1.2

4.4.2
4.4.3
4.4.4
4.4.5
4.4.6
4.4.7
4.4.8

4–8
4–8

.........................................................................

4.3.2.1
4.3.2.2
4.3.2.3
4.3.2.4

4.4

XTextProperty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
WithdrawnState Constant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Drawing Rectangles or Squares Using a Small Line Width . . . . . . .
Specifying a Tilde (~) as Part of a File Specication . . . . . . . . . . . . . . . .

PostScript Previewer - dxpsview

......................................................

4–32
4–32
4–32

Contents xi

4.4.9.1
4.4.9.2
4.4.9.3
4.4.10

Session Manager - dxsession

4.4.10.1
4.4.10.2
4.4.10.3
4.4.11

5.1

4–33

Pause Feature Does not Use Updated Password . . . . . . . . . . . . . . . . . . . . .
Intensity Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Setting the Window Screen Background Using the Customize
Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4–33
4–33
4–33

............................................

4–33

User-Dened Key Denitions (UDKs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Command-Line Resource Specication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
dxterm Does Not Clear Out /etc/utmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Using ioctl with sigio Hangs dxterm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Using System V Shell (sh5) as Default . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4–33
4–37
4–37
4–37
4–38

Layered Products Notes
DECphigs
5.1.1
5.1.2
5.1.3
5.1.4
5.1.5
5.1.6
5.1.7
5.1.8
5.1.9
5.1.10
5.1.11
5.1.12
5.1.13
5.1.14
5.1.15
5.1.16
5.1.17
5.1.18
5.1.19
5.1.20

5.2

4–33
4–33
4–33

.........................................................

DECterm Terminal Emulator - dxterm

4.4.11.1
4.4.11.2
4.4.11.3
4.4.11.4
4.4.11.5

5

Scale Factors Larger than 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PostScript File Identication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Viewing Uncommented PostScript Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

...............................................................................................

5–1

Anti-Aliasing Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Clipped Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Polygons with Nonlinear Vertex Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Adjacent Concave Polygons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Colinear Vertices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dening Points with Identical Coordinates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Overlapping Polygons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Z-Buffering and Edges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Trailing Pixels of Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mapping a Pattern to a Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Graphics Primitive Clipping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Unimplemented PHIGS Primitives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Recursive Structures in PHIGS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Weighting Control Points for NURBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pixel Dropout in Polygons and NURBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tessellating a NURBS into Polygons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Knot Vectors in a NURBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Supported Color Approximation Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Using a ColorRange . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Structure Storage Limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5–1
5–2
5–2
5–2
5–2
5–2
5–2
5–2
5–2
5–2
5–3
5–3
5–3
5–3
5–3
5–3
5–3
5–4
5–4
5–5

ULTRIX Mail Connection
5.2.1

xii Contents

.........................................................................

5–5

Installing ULTRIX Mail Connection Version 1.1 on ULTRIX/UWS
Version 4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5–5

6
6.1

Documentation Notes
ULTRIX Documentation
6.1.1

...........................................................................

6–1

....................................................................................

6–1

Installation Guides and Product Authorization Keys (PAKs) . . . . .
Creating Copies of Sparse Dump Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Estimating Disk Space for Partial Crash Dumps . . . . . . . . . . . . . . . . . . . . . .
Guide to Diskless Management Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6–1
6–1
6–3
6–5

Installation
6.1.1.1
6.1.1.2
6.1.1.3
6.1.1.4

6.1.1.4.1
6.1.1.4.2
6.1.2

Software Development
6.1.2.1

6.1.3

Subset Sizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Boot Command for DECstation/DECsystem 5000 Model
200 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Additions to the Kernel Messages Manual

6.1.5

....................................................

6–6

Corrections to the Guide to Kerberos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Correction to Root Name Server Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Documentation for DEMNA XNA Interface . . . . . . . . . . . . . . . . . . . . . . . . . . .
Corrections to Guide to Preparing Software for Distribution on
ULTRIX Systems and the kitcap(5) Reference Page . . . . . . . . . . . . . . . . .

6–6
6–7
6–7

Security

6–7
6–8
6–8

........................................................................................

6–8

Incorrect Subset in Security Guide for Administrators
Controlling Network Access to Workstation Displays

..............
..............

6–8
6–8

...........................................................................

6–9

The cpio Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The tcsendbreak Library Call . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The tar Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6–9
6–9
6–10

6.1.5.3.1
6.1.5.3.2
6.1.5.3.3
6.1.6

6.1.7

6–10
6–10
6–11

...............................................................................

6–11

VAX Kernel Conguration Parameter Specied Incorrectly in
ULTRIX/SQL Operations Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6–11

Reference Pages
6.1.7.1
6.1.7.2

6.2

Prex usage and le names of 100 to 256 characters . . . . .
Permissions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Multiple Volumes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

ULTRIX/SQL
6.1.6.1

6–7

Section 5.8, Building /etc/kitcap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Section 5.9.1, Making Tape Media . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Section 5.9.2, Making RA60 Disk Media . . . . . . . . . . . . . . . . . . . . .

POSIX and XPG
6.1.5.1
6.1.5.2
6.1.5.3

6–6
6–6

6.1.3.4.1
6.1.3.4.2
6.1.3.4.3
6.1.4.1
6.1.4.2

6–6

..............................

Networking and Communications
6.1.3.1
6.1.3.2
6.1.3.3
6.1.3.4

6.1.4

...................................................................

6–5

............................................................................

6–11

New and Changed Reference Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Reference Pages Available Only Online . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6–11
6–12

ULTRIX Worksystem Software Documentation

...........................................

6–12

Contents xiii

6.2.1
6.2.2

Online Software Product Description (SPD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Xlib Manual Additions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2.2.1
6.2.2.2
6.2.2.3
6.2.2.4
6.2.2.5
6.2.2.6

6.2.3

XVisualIDFromVisual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XDisplayKeyCodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XResourceManagerString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XAddExtension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XRead Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XLookupString . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6–13
6–13
6–14
6–14
6–14
6–15

Discrepancies Between DECwindows Toolkit and the Toolkit
Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6–15

6.2.3.1
6.2.3.2
6.2.4

DwtGetNextSegment Function

UID File Descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Reference Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6–16
6–16

X Server Reference Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DwtMainWindow Reference Page (DwtNcolormap Attribute) . . .
...............................................................

Correction to Encryption Upgrade Installation Instructions

6–17
6–17

.........................................

A–1

Problems Resolved Since Last Release
ULTRIX Problems Resolved Since Last Release

A.2

ULTRIX Worksystem Software Problems Resolved Since Last Release

B.1

6–16
6–16

..................

A.1

B

6–16
6–16

Layered Products Documentation
6.3.1

A

......................................................................

6–15
6–15

..............................................

6.2.6.1
6.2.6.2
6.3

XtRegisterClass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XtDisplayInitialize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

XUI Toolkit Manual
6.2.4.1

6.2.5
6.2.6

6–12
6–13

..........

A–5

..........................................................

B–1

Conformance to Standards and Specications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Compatibility With Earlier Versions of the Operating System . . . . . . . . . . . . .
New Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
New Hardware Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Software Component Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

B–1
B–2
B–2
B–2
B–2

Changes and New Features in Version 4.1
ULTRIX Changes and New Features
B.1.1
B.1.2
B.1.3
B.1.4
B.1.5

B.1.5.1
B.1.6
B.1.7
B.1.8
B.1.9

xiv Contents

ULTRIX System Conguration and Management Program
(SCAMP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

B–2

Documentation Component Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Customer Services Component Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Software Features No Longer Supported . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hardware No Longer Supported . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

B–3
B–3
B–4
B–4

B.2

ULTRIX Worksystem Software Changes and New Features
B.2.1

..........................

B–4

...........................................................

B–4

Undocumented Xlib Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Xlib Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Xlib Function Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

B–4
B–4
B–4

Shared-Memory Transport (SMT) Support for DECstation/DECsystem
5000 Model 200 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

B–4

Using the SMT Extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Guidelines for Using SMT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SMT Usage Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SMT Error Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

B–5
B–5
B–6
B–6

Three-Dimensional Graphics Support for DECstation/DECsystem 5000
Model 200 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Changes to Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

B–7
B–7

Release X11R4 Xlib support
B.2.1.1
B.2.1.2
B.2.1.3

B.2.2

B.2.2.1
B.2.2.2
B.2.2.3
B.2.2.4
B.2.3
B.2.4

B.2.4.1

DECterm Changes

B.2.4.1.1
B.2.4.1.2
B.2.4.1.3
B.2.4.1.4
B.2.4.1.5
B.2.4.1.6
B.2.4.1.7
B.2.4.1.8
B.2.4.2

C
C.1

..............................................................

B–7

DECterm Grey Levels on Monochrome Systems . . . . . . . . . .
DECterm ReGIS Locator Reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DECterm Conformance Level Checking . . . . . . . . . . . . . . . . . . . . . .
DECterm Answerback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DECterm VT52 Mode Cursor Addressing . . . . . . . . . . . . . . . . . . .
DECterm Conformance Level Report Escape Sequence .
DECterm Color Table Report Prex . . . . . . . . . . . . . . . . . . . . . . . . . . .
DECterm Memory Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

B–7
B–7
B–7
B–7
B–7
B–7
B–8
B–8

Visual Differences Program - dxdiff

......................................

B–8

..........................................................

C–1

Changes and New Features in Version 4.0
ULTRIX Changes and New Features
C.1.1

Conformance To Standards and Specications
C.1.1.1
C.1.1.2

..................................

C–1

Industry Standards Conformance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Changes to Header Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–1
C–2

C.1.1.2.1
C.1.1.2.2
C.1.2

Typical Program Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Specic Header File Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Porting Version 3.1 Applications to ULTRIX/UWS Version 4.0
C.1.2.1
C.1.2.2

C–2
C–2

..........

C–5

Levels of Portability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Program Features that Affect Portability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–6
C–6

C.1.2.2.1
C.1.2.2.2
C.1.2.2.3
C.1.2.2.4
C.1.2.2.5
C.1.2.2.6

Direct Access of Kernel Data Structures . . . . . . . . . . . . . . . . . . . . . .
Header File Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
File Protection Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optional New Password File Format . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optional Security Subset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Distributed Environment Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–6
C–7
C–7
C–7
C–7
C–8

Contents xv

C.1.2.2.7
C.1.2.2.8
C.1.2.2.9
C.1.2.3

POSIX and X/OPEN Programming Environments

C.1.2.3.1

...................

C–10

Correct Declaration for environ Global Variable . . . . . . . . . . . . . . . . . . . . .
The /etc/group File Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Changes to tty Special File Defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–11
C–11
C–12

New Processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
New Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Software Component Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–12
C–12
C–12

Distributed System Services (DSS)–YP, BIND/Hesiod,
Kerberos, timed, NTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C.1.5.1.1
C.1.5.1.2
C.1.5.1.3
C.1.5.1.4
C.1.5.2
C.1.5.3
C.1.5.4
C.1.5.5
C.1.5.6
C.1.5.7
C.1.5.8
C.1.5.9
C.1.5.10

C.1.5.11

C–12

Name Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Congurable Security Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Kerberos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Network Time Protocol (NTP) and timed . . . . . . . . . . . . . . . . . . . .

C–13
C–13
C–14
C–14

Packet Filter Pseudo-device Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Digital Remote Procedure Call (DECrpc) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
X/OPEN Transport Interface (XTI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Simple Network Management Protocol (SNMP) . . . . . . . . . . . . . . . . . . . . .
License Management Facility . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LMF and Capacity Upgrade Kit Distinctions . . . . . . . . . . . . . . . . . . . . . . . . . .
BSD curses and X/Open curses Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
BSD curses Enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Changes in Terminfo Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–14
C–14
C–15
C–15
C–15
C–15
C–16
C–16
C–16

C.1.5.10.1 The Binary Terminfo Database is Split into Two
Subsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.1.5.10.2 The Source Terminfo Database is Split into Two
Subsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.1.5.10.3 Supported DEC Terminals Missing from the Terminfo
Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Changes to the Termcap Database

C–16
C–17
C–17

.......................................

C–18

C.1.5.11.1 The Termcap Database Contains Unsupported Entries .
C.1.5.11.2 Supported DEC Terminals Missing from the Termcap
Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–18

C.1.5.12
C.1.5.13
C.1.5.14
C.1.5.15
C.1.5.16
C.1.5.17
C.1.5.18
C.1.5.19

xvi Contents

C–10
C–10

C.1.5.1

POSIX Environment and Trusted Path Handling

C–9
C–10

..........

C.1.2.4
C.1.2.5
C.1.2.6
C.1.3
C.1.4
C.1.5

Modied System Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
New System Call Return Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dependencies on Undocumented Features or Software
Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Terminfo Terminal Capabilities Database Compiler and Sources.
Commands and Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Streaming Tape Devices and restore(8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tape Exerciser, tapex(8) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Caching Support for TMSCP Tape Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conguration Support for 96 MSCP Disks . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exclusive Access Support for HSC Disks . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
New /sys Directory Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–18
C–19
C–19
C–20
C–20
C–20
C–20
C–20
C–21

C.1.5.20

Tuning File System Performance

........................................

C–21

The bufcache Conguration File Parameter . . . . . . . . . . . . . . . .
ULTRIX Write-Back Scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
The update Daemon Time Interval . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–21
C–22
C–22

PrintServer Client Software for ULTRIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
New /etc/exports Semantics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–22
C–23

C.1.5.20.1
C.1.5.20.2
C.1.5.20.3
C.1.5.21
C.1.5.22

C.1.5.22.1
C.1.5.22.2
C.1.5.22.3
C.1.5.23
C.1.5.24
C.1.5.25
C.1.5.26
C.1.5.27
C.1.5.28
C.1.5.29
C.1.5.30

C.1.6
C.1.7
C.1.8
C.1.9
C.1.10
C.2

Differences and Benets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Preserving Current Export Behavior . . . . . . . . . . . . . . . . . . . . . . . . . .
Subtle Differences in Determining Access . . . . . . . . . . . . . . . . . .

C–23
C–24
C–24

SCSI Drivers Support Dynamic Bad Block Replacement
(DBBR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SCSI Driver Logs Errors in Binary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Time Zone Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Support for Multiple Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
New Features for Writing International Software . . . . . . . . . . . . . . . . . . .
Security Enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Symmetric Multiprocessing (SMP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VAX C/ULTRIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–24
C–24
C–25
C–25
C–25
C–26
C–26
C–27

C.1.5.30.1 New Object Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.1.5.30.2 Function Inlining . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.1.5.30.3 Access to Specialized VAX Instructions . . . . . . . . . . . . . . . . . . . .
C.1.5.30.4 New Behavior for -E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.1.5.30.5 Function Pointer Syntax Now Accepted . . . . . . . . . . . . . . . . . . . . .
C.1.5.30.6 Minor ANSI C Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.1.5.30.7 Pragma for enabling/disabling -V
STANDARD=PORTABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–27
C–28
C–28
C–28
C–29
C–29

Documentation Component Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Reference Pages Subsections Dened . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Customer Services Components Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Software Features No Longer Supported . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hardware No Longer Supported . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–29
C–30
C–32
C–33
C–33

ULTRIX Worksystem Software Changes and New Features
C.2.1

..........................

C–33

........................................................................

C–33

Xlib Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
New Xlib Programming Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–33
C–33

X Window System
C.2.1.1
C.2.1.2

C.2.1.2.1
C.2.1.2.2
C.2.1.2.3
C.2.1.2.4
C.2.1.2.5
C.2.1.2.6
C.2.1.2.7
C.2.1.2.8
C.2.1.2.9
C.2.1.3

C–29

Allocating Structures for Property Data . . . . . . . . . . . . . . . . . . . . . . .
Manipulating Top-Level Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
String Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Manipulating Text Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Size Hints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Window Manager Protocols List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Window Manager Colormap Windows List . . . . . . . . . . . . . . . . .
Standard Colormaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Convenience Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Obsolete Functions in Xlib

..................................................

C–33
C–34
C–35
C–35
C–37
C–38
C–38
C–39
C–40
C–41

Contents xvii

C.2.1.4
C.2.1.5
C.2.1.6

Obsolete Constants in Xutil.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Convenience Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Changes to Xlib Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C.2.1.6.1
C.2.1.6.2
C.2.1.6.3
C.2.1.6.4
C.2.2

Getting Screen Number from Screen Pointer . . . . . . . . . . . . . . . .
Pixmap Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Returning Old Error Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Getting XGCValues from a GC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

DECwindows Toolkit Programming
C.2.2.1

C–43

...................................................

C–43

Pulldown Menu Entry Gadgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Color Mix Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–43
C–43

C.2.2.1.2
C.2.2.1.3
C.2.2.1.4
C.2.2.1.5
C.2.2.2

C.2.2.3

xviii Contents

Hue Lightness Saturation (HLS) Colormodel

.......

C–43

Colormix Red, Green and Blue Labels . . . . . . . . . . . . . . . . . . . . . . . .
Attached Dialog Box Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Compound String Text Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–44
C–44
C–44

New Routines

C.2.2.2.1
C.2.2.2.2
C.2.2.2.3
C.2.2.2.4

C–41
C–42
C–42
C–42

................................................

New Widgets and Gadgets

C.2.2.1.1
C.2.2.1.2

C–41
C–41
C–41

....................................................................

C–45

New Resources for Low-Level Toolkit Routines . . . . . . . . . .
New Compound String Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Cut and Paste Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
New Convenience Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–45
C–49
C–49
C–49

Bug Fixes and Other Changes

..............................................

C–50

C.2.2.3.1 Changes to Existing Convenience Routines . . . . . . . . . . . . . . . . .
C.2.2.3.2 DEC Windows Resource Manager (DRM) . . . . . . . . . . . . . . . . . . .
C.2.2.3.3 Internal Format of Compound Strings . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.4 Performance of INIT GET Segment . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.5 dwtappli.h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.6 Font Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.7 Destroy Callback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.8 Listbox Dynamic Sizing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.9 Help Widget Listbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.10 DECwindows Toolkit and the MIT R3 Intrinsics. . . . . . . .
C.2.2.3.11 Selection Pushbuttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.12 Using Accelerators on Pushbutton and Togglebutton
Gadgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.13 Generating Widget/Gadget Exposes . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.14 Toggle Button Set State Routine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.15 Toggle Button Gadgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.16 Dialog Box Race Condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.17 Right to Left Compound Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.18 DwtResolvePartOffsets Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.19 Delete Sub-Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.20 Size of Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.21 DwtWidget.h File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.22 Option Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.23 Popup Dialog Boxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–50
C–50
C–50
C–50
C–50
C–50
C–50
C–50
C–51
C–51
C–51
C–51
C–51
C–51
C–52
C–52
C–52
C–52
C–52
C–52
C–53
C–53
C–53

C.2.2.3.24 New and Omitted Widget Arguments . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.25 Constraint Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.26 Large Value Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.27
DEC_KANJI or DEC_HANZI as the Default Character
Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.3.28 Large Pixmaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
C.2.2.4
C.2.3

User Interface Language (UIL)

C–54

................................................

C–55

CDA Viewer - dxvdoc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Calculator - dxcalc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Cardler - dxcardler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Clock - dxclock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Notepad - dxnotepad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PostScript Previewer - dxpsview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Puzzle - dxpuzzle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Session Manager - dxsession . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–55
C–55
C–56
C–56
C–56
C–56
C–57
C–57

C.2.3.8.1
C.2.3.8.2
C.2.3.8.3
C.2.3.9
C.2.4
C.2.5

D

C–54
C–54

.............................................

DECwindows Applications Changes
C.2.3.1
C.2.3.2
C.2.3.3
C.2.3.4
C.2.3.5
C.2.3.6
C.2.3.7
C.2.3.8

C–53
C–54
C–54

Customize Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Customize Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
New Per-View Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

User Executive - dxue

C–57
C–57
C–57

.........................................................

C–58

Font Format Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Conformance to Standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

C–58
C–58

RISC-VAX System Differences and Porting Hints

D.1

Differences Between RISC-Based and VAX-Based Systems

..........................

D–1

D.2

Hints for Porting Software to RISC-Based Systems

.....................................

D–5

...................................................

2–16

......................................................

2–18

Figures
2-1: Bootstrap Command Sequence: Standalone
2-2: Bootstrap Command Sequence: Diskless

2-3: DECsystem 5100 Console and Terminal Ports

...............................................

2-4: DECsystem 5100 KN230 with Async Terminal Ports

2–26

.....................................

2–27

1-1: ULTRIX/UWS Version 4.1 Media Labels

.....................................................

1–4

1-2: ULTRIX Supported Subset Sizes (RISC)

......................................................

1–5

...........................................................

1–6

Tables

1-3: UWS Supported Subset Sizes (RISC)

Contents xix

1-4: ULTRIX Supported Subset Sizes (VAX)
1-5: UWS Supported Subset Sizes (VAX)

......................................................

1–7

...........................................................

1–8

1-6: ULTRIX Mandatory Upgrade Subset Sizes (RISC)
1-7: UWS Mandatory Upgrade Subset Sizes (RISC)

........................................

1–8

.............................................

1–9

1-8: ULTRIX Mandatory Upgrade Subset Sizes (VAX)

........................................

1–10

.............................................

1–10

1-10: SQL Subset Sizes (RISC)

.........................................................................

1–11

1-11: SQL Subset Sizes (VAX)

.........................................................................

1–11

1-9: UWS Mandatory Upgrade Subset Sizes (VAX)

1-12: ULTRIX Unsupported Subset Sizes (RISC)
1-13: UWS Unsupported Subset Sizes (RISC)

................................................

1–11

.....................................................

1–12

1-14: ULTRIX Unsupported Subset Sizes (VAX)

.................................................

1–12

......................................................

1–13

................................................................................

2–10

1-15: UWS Unsupported Subset Sizes (VAX)
2-1: Default SCSI Devices

2-2: Default Network Devices

............................................................................

2-3: DECsystem 5100 Console and Terminal Ports

...............................................

2-4: DECsystem 5100 KN230 with Async Terminal Ports

2–27

.....................................

2–27

........................................................

3–17

..............................................................

6–5

3-1: Network Information Center Addresses
6-1: Approximate Disk Space Required

2–10

A-1: ULTRIX Problems Resolved Since Last Release

..........................................

A–1

A-2: UWS Problems Resolved Since the Last Release

..........................................

A–5

xx Contents

About This Manual

These release notes list the major new features and changes to the software and
documentation for ULTRIX/UWS Version 4.1. The release notes also describe
problems in the ULTRIX/UWS Version 4.1 software and documentation that were
discovered too late to document elsewhere. The changes and new features described
here are based on how ULTRIX/UWS Version 4.1 differs from ULTRIX/UWS
Version 4.0 and how ULTRIX/UWS Version 4.0 differs from ULTRIX–32 Version
3.1 and UWS Versions 2.1 and 2.2.
Read these release notes before you install the ULTRIX/UWS Version 4.1 software.
If you discover errors, omissions, or inaccuracies as you use the software and
documentation, submit a Software Performance Report (SPR).

Audience
This document is written for the person responsible for installing, managing, and
maintaining the ULTRIX/UWS Version 4.1 operating system and its documentation.
Programmers and other users of ULTRIX/UWS Version 4.1 facilities will nd
information in these release notes that affects their work as well.

Organization
This document contains six chapters and four appendixes:
Chapter 1 – Installation Notes
Discusses the overall installation of ULTRIX/UWS Version 4.1, and
provides workarounds to software and hardware problems, if
workarounds exist.
Chapter 2 – Processor–Specic Notes
Provides installation instructions and notes, as well as workarounds for
software and hardware problems for specic processors.
Chapter 3 – ULTRIX Software Notes
Discusses problems with the ULTRIX operating system and provides
workarounds to these problems, if workarounds exist.
Chapter 4 – ULTRIX Worksystem Software Notes
Discusses problems with ULTRIX Worksystem Software and provides
workarounds to these problems, if workarounds exist.
Chapter 5 – Layered Products Notes
Discusses problems with layered products and provides workarounds
to these problems, if workarounds exist.
Chapter 6 – Documentation Notes
Discusses problems with ULTRIX/UWS Version 4.1 documentation
and provides corrections to these problems.

Appendix A – Problems Resolved Since Last Release
Lists the software and documentation problems that have been
resolved in this release.
Appendix B – Changes and New Features: Version 4.1
Discusses the new and changed features in
ULTRIX/UWS Version 4.1.
Appendix C – Changes and New Features: Version 4.0
Discusses the new and changed features in
ULTRIX/UWS Version 4.0.
Appendix D – RISC-VAX System Differences and Porting Hints
Discusses how to port software from VAX to RISC systems.

Related Documentation
You should have the printed documentation kit for the ULTRIX/UWS Version 4.1
release and your hardware documentation.
Aside from this document, the four documents in the ULTRIX/UWS Version 4.1
release that are most likely to help you get started are:
ULTRIX/UWS Version 4.1 Software Product Description
Basic Installation Guide
Advanced Installation Guide
Introduction to System and Network Management
In addition, you should refer to the ULTRIX Optional Products Cross Reference
Table for information about the separately-licensed products supported by
ULTRIX/UWS Version 4.1.

Text Conventions
The following conventions are used in this document:
%

The default user prompt is your system name followed by a right
angle bracket. In this manual, a percent sign ( % ) is used to
represent this prompt.

#

A number sign is the default superuser prompt.

>>>
CPUnn>>

The console subsystem prompt is two right angle brackets on
RISC systems, or three right angle brackets on VAX systems.
On a system with more than one central processing unit (CPU),
the prompt displays two numbers: the number of the CPU, and
the number of the processor slot containing the board for that
CPU.

user input

This bold typeface is used in interactive examples to indicate
typed user input.

system output This typeface is used in interactive examples to indicate system
output and also in code examples and other screen displays. In
text, this typeface is used to indicate the exact name of a
xxii About This Manual

command, option, partition, pathname, directory, or le.
UPPERCASE
lowercase

The ULTRIX system differentiates between lowercase and
uppercase characters. Literal strings that appear in text,
examples, syntax descriptions, and function denitions must be
typed exactly as shown.

rlogin

In syntax descriptions and function denitions, this typeface is
used to indicate terms that you must type exactly as shown.

macro

In text, bold type is used to introduce new terms.

filename

In examples, syntax descriptions, and function denitions, italics
are used to indicate variable values; and in text, to give references
to other documents.

[ ]

In syntax descriptions and function denitions, brackets indicate
items that are optional.

{|}

In syntax descriptions and function denitions, braces enclose
lists from which one item must be chosen. Vertical bars are used
to separate items.

...

In syntax descriptions and function denitions, a horizontal
ellipsis indicates that the preceding item can be repeated one or
more times.

.
.
.

A vertical ellipsis indicates that a portion of an example that
would normally be present is not shown.

cat(1)

Cross-references to the ULTRIX Reference Pages include the
appropriate section number in parentheses. For example, a
reference to cat(1) indicates that you can nd the material on the
cat command in Section 1 of the reference pages.

RETURN

This symbol is used in examples to indicate that you must press
the named key on the keyboard.

CTRL/x

This symbol is used in examples to indicate that you must hold
down the CTRL key while pressing the key x that follows the
slash. When you use this key combination, the system sometimes
echoes the resulting character, using a circumex ( ^ ) to represent
the CTRL key (for example, ^C for CTRL/C). Sometimes the
sequence is not echoed.

ESC X

This symbol is used in examples to indicate that you must press
the rst named key and then press the second named key. In text,
this combination is indicated as ESC-X.

MB1,MB2,MB3

Unless the mouse buttons have been redened, MB1 indicates the
left mouse button, MB2 indicates the middle mouse button, and
MB3 indicates the right mouse button.

About This Manual xxiii

Installation Notes

1

This chapter discusses issues and known problems with the installation procedure
and, when possible, provides solutions or workarounds to the problems. Read this
chapter before you install ULTRIX/UWS Version 4.1.
For additional installation notes specic to individual processors, see Chapter 2,
Processor-Specic Notes, as well.
The notes in this chapter cover the following topics:
Hardware
Boot
General Installation
Conguration
Diskless Management Services (DMS)
Remote Installation Services (RIS)

1.1 Hardware
This section contains notes about hardware and peripheral devices.

1.1.1

KDB50 ECO Level
If you use KDB50s on a BI-based VAX system, we recommend that customer
service ensure that the BIIC chip on the KDB50 is revision level 5 or higher.
Otherwise, there is a small chance that machine checks will be generated by the BI
bus.

1.1.2

RQDX Q-bus Controller Jumper Settings
If there are multiple RQDX controllers and the RQDX2 is the last controller on the
bus, ignore the jumper conguration stated in the hardware manual. The jumper
setting should be one (1), not four (4) as stated in the hardware manual.

1.1.3

TK50 and TK70 Tape Usage
When a blank TK50 or TK70 tape is inserted into the drive, calibration marks are
written on the tape. These calibration marks determine the tape format. The tape
format can only be changed by a bulk tape eraser.

When using TK50 and TK70 tapes, the following rules apply:
A TK50 formatted tape can be written and read on a TK50 drive.
A TK50 formatted tape can be read but not written on a TK70 drive. The TK70
drive considers TK50 tapes to be hardware write-protected.
A TK70 formatted tape can be written or read on a TK70 drive.
A TK70 tape is completely unusable on a TK50 drive.
Violation of these rules results in command failure and drive error log messages.

1.1.4

Data Corruption from Programs Accessing Tape Units
The TK70, TS11, and TU81 tape units require the data buffers to be aligned on a
machine word boundary. Data corruption can occur if the data buffer boundaries are
not aligned properly. When the buffer is declared as a local variable, the buffer will
be on the user’s program stack; alignment is therefore not ensured and may cause
data corruption.
To ensure that the data buffer is correctly aligned, all programs that access tapes must
declare the data buffer as a type static or as a global variable. The compilers then
assure proper alignment of the data buffer and data.

1.1.5

Required Switch Settings for TSV05 Tape Drive
The switch settings for the TSV05 controller (M7196 and M7206) as described in the
manuals TSV05 Tape Transport – Pocket Service Guide (EK-TSV05-PS-005) and
TSV05 Tape Transport Subsystem – Technical Manual (EK-TSV05-TM-004) are
incorrect.
The factory switch setting information for the M7206-PA module in the manuals lists
switch E61-9 OFF. This factory switch setting does not work on systems running
ULTRIX Version 3.0 and higher. The tape device always appears off line to the
operating system if the switch is set OFF.

1.1.6

Installing from a TE16 Tape Drive
During installation, you are asked to identify the software distribution device. If you
are using a TE16 tape drive, choose the TU77 tape drive option. When your system
is booted, the TE16 will be identied correctly.

1.1.7

TU81 Tape Drive
A problem in the TU81 tape unit can cause data transfers to fail. All users that have
TU81 tape units should contact a customer service representative to ensure that FCO
number TU81 R-005 is applied and that the revision level is up to at least D1. Units
that do not have this FCO applied will experience hard errors logged and the unit’s
controller fault light will light.

1–2 Installation Notes

1.1.8

MSCP Disks Remain Off Line If Switched Off Line While in Use
If a disk unit served by the MSCP driver (any RA disk) is switched off line while
operations are in progress, the disk cannot be brought back on line. If this happens,
in-progress and subsequent data transfer operations to the unit will fail. The system
call that failed will return an EIO error.
This condition can be cleared only by setting the unit back on line and rebooting the
system.

1.1.9

HSC Microcode ECO Level for MSCP Disks
Proper operation of the MSCP disk subsystem requires that the HSC software
subsystem microcode ECO level should be level Version 3.9A or higher.

1.1.10

No Bad Block Replacement on MASSBUS Disk Media
The VMB boot driver used throughout the new boot path cannot handle bad blocks
on the media. Therefore, components of the boot path, superblocks, directories, and
/vmunix, cannot cross a bad sector on the disk. If they encounter a bad sector on
the disk, you will receive fatal controller errors. ULTRIX bad block replacement
strategies do not exist in the VMB boot driver.

1.1.11

Eight-Bit Terminal Driver Support
You must set up your hardware and software properly if you intend to use a terminal
in full eight-bit mode. Refer to gettytab(5) for instructions on how to enable
logins on terminal lines that require eight-bit characters. The p8 and pd ags have
been added to gettytab to facilitate the use of eight-bit characters.
DEC VT100 series terminals are capable of displaying only the lower half of the
DEC Multinational Character Set. Standard seven-bit ASCII characters are included
in the lower half of the Multinational Character Set and ISO-8859/2.
DEC VT200 and VT300 series terminals are capable of displaying the full DEC
Multinational Character Set and ISO-8859/2. However, they do not display eight-bit
characters when they are in VT100 mode. To determine the current terminal mode,
call up the terminal’s Set-Up Directory menu and select the General setup option.
For example, to change your VT220 terminal set up into eight-bit mode, follow these
steps:
1.

Call up the terminal’s setup menu by pressing the Setup (F3) key. Select the
General menu option.

2.

Move to the eld that allows you to select the terminal mode. Select the option
VT200 mode 8 bit controls.

3.

Select the To Directory option to return you to top level.

4.

Call up the Comm menu. Select the 8 Bits No Parity option.

5.

Exit from setup mode by pressing the Setup key again.

Note that when you change a VT200 or VT300 series terminal from VT100 mode,
the F11 key no longer represents the escape key. Refer to your terminal’s installation
guide for a complete description of terminal setup.

Installation Notes 1–3

The DECwindows terminal emulator, dxterm(1X), can also be set up for use with
eight-bit characters. In this case, the terminal mode must be set to VT300 mode, 8bit control.

1.1.12

Scrambled Stack Printouts on System Console
Kernel and interrupt stacks that are printed at the consoles may become scrambled.
If this happens, lower the baud rate of the console.

1.2 Boot
This section contains notes about booting.

1.2.1

Conversational Boot Problem on MSCP-Type Disk
On MSCP-type disk drives, it is possible for the booted drive to go off line during a
conversational boot. If you do not supply input to the Enter image name:
prompt within several minutes, the booted MSCP drive will go off line and
subsequent reads will fail. To prevent this problem, enter the image name before the
timeout period. Otherwise, a reboot will be required. See the Guide to System
Shutdown and Startup for information on the conversational boot procedure.

1.3 General Installation
The following notes apply to the installation of ULTRIX/UWS Version 4.1. For
additional installation notes specic to individual processors, see the appropriate
section under Processor–Specic Notes.

1.3.1

Media Labels for ULTRIX/UWS Version 4.1
Table 1-1 lists the media labels for ULTRIX/UWS Version 4.1.
Table 1-1: ULTRIX/UWS Version 4.1 Media Labels
Media Type
(RISC)

Media Label

Media Type
(VAX)

Media Label

TK50

ULTRIX/UWS V4.1 (RISC)
SUPPORTED VOL 1
ULTRIX/UWS V4.1 (RISC)
SUPPORTED VOL 2
ULTRIX/UWS V4.1 (RISC)
MANDATORY UPGRADE
ULTRIX/SQL V1.1 (RISC)
ULTRIX/UWS V4.1 (RISC)
UNSUPPORTED

TK50

ULTRIX/UWS V4.1 (VAX)
SUPPORTED
ULTRIX/UWS V4.1 (VAX)
UNSUPPORTED
ULTRIX/UWS V4.1 (VAX)
MANDATORY UPGRADE
ULTRIX/SQL V1.1 (VAX)

1–4 Installation Notes

Table 1-1:

(continued)

Media Type
(RISC)

Media Label

Media Type
(VAX)

Media Label

MT9

ULTRIX/UWS V4.1 (RISC)
SUPPORTED VOL 1
ULTRIX/UWS V4.1 (RISC)
SUPPORTED VOL 2

MT9

ULTRIX/UWS V4.1 (VAX)
SUPPORTED VOL 1
ULTRIX/UWS V4.1 (VAX)
SUPPORTED VOL 2

ULTRIX/UWS V4.1 (RISC)
SUPPORTED VOL 3

ULTRIX/UWS V4.1 (VAX)
MANDATORY UPGRADE

ULTRIX/UWS V4.1 (RISC)
SUPPORTED VOL 4

ULTRIX/SQL V1.1 (VAX)
ULTRIX/UWS V4.1 (VAX)
UNSUPPORTED

ULTRIX/UWS V4.1 (RISC)
MANDATORY UPGRADE
ULTRIX/SQL V1.1 (RISC)
ULTRIX/UWS V4.1 (RISC)
UNSUPPORTED

1.3.2

CDROM

ULTRIX/UWS V4.1
SUPP/UNSUPP (RISC)
Includes Mandataory UPG

CDROM

ULTRIX/UWS V4.1
SUPP/UNSUPP (VAX)
Includes Mandataory UPG

RA60

–-

RA60

ULTRIX/UWS V4.1
SUPP/UNSUPP (VAX)
Includes Mandataory UPG

ULTRIX/UWS Version 4.1 Subset Sizes
The following sections list the subset sizes for the Supported and Unsupported
subsets that make up ULTRIX/UWS Version 4.1. For a description of each subset,
please refer to the Advanced Installation Guide.

1.3.2.1

ULTRIX/UWS Version 4.1 Supported Subsets – The following tables list the
supported RISC and VAX subsets that make up ULTRIX/UWS Version 4.1.
Table 1-2 lists the supported RISC ULTRIX subset sizes in kilobytes for the root,
/usr, and /var directories.
Table 1-2: ULTRIX Supported Subset Sizes (RISC)
Subset
RISC

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

0.043

266.240

–-

266.283

–-

871.891

–-

871.891

4577.730

24073.700

33.506

28684.900

UDTBIN410

12.412

28623.900

–-

28636.300

UDTCOMM410

13.066

1024

–-

1037.070

UDTDCMT410

0.017

1433.870

–-

1433.890

UDTACCT410
UDTAFM410
UDTBASE410

Installation Notes 1–5

Table 1-2:

(continued)

Subset
RISC

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

140.232

4124.110

–-

4264.340

–-

1461.670

–-

1461.670

UDTINET410

356.124

5074.090

152.551

5582.770

UDTINTL410

–-

501.734

–-

501.734

UDTDL410
UDTEXER410

UDTKERB410

–-

2715.020

764.416

3479.440

UDTMAN410

–-

4298.660

–-

4298.660

UDTMH410

0.512

7427.400

1.024

7428.940

UDTMOP410

26.043

577.584

139.776

743.403

UDTNFS410

209.514

1426.910

478.299

2114.720

0.016

7344.650

–-

7344.670

UDTPGMR410
UDTPRESTO410

0.034

208.896

–-

208.930

36.362

2955.740

0.512

2992.610

UDTRPCDEV410

–-

607.904

90.112

698.016

UDTRPCRT410

–-

281.795

1191.330

1473.130

UDTSCCS410

–-

1255.780

–-

1255.780

81.463

893.658

–-

975.121

–-

99.873

–-

99.873

28.041

668.830

–-

696.871

0.020

581.632

1031.180

1612.830

5481.630

98799.500

3882.710

108164

UDTPRINT410

UDTSEC410
UDTSMSCAMP410
UDTUMAIL410
UDTUUCP410
TOTALS

Table 1-3 lists the supported RISC UWS subset sizes in kilobytes for the root,
/usr, and /var directories.
Table 1-3: UWS Supported Subset Sizes (RISC)
Subset
RISC
UDWDECW410

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

–-

12616.200

–-

12616.200

UDWFONT15410

–-

2815.470

–-

2815.470

UDWFONT410

–-

2475.180

–-

2475.180

UDWFONTSTR410

–-

162.304

–-

162.304

UDWMAN410

–-

1468.470

–-

1468.470

5.120

9062.310

–-

9067.430

UDWSER410

1–6 Installation Notes

Table 1-3:

(continued)

Subset
RISC

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

UDWX11410

–-

7133.340

–-

7133.340

UDWXDEV410

–-

15274.200

–-

15274.200

5.120

51007.500

–-

51012.600

TOTALS

Table 1-4 lists the supported VAX ULTRIX subset sizes in kilobytes for the root,
/usr, and /var directories.
Table 1-4: ULTRIX Supported Subset Sizes (VAX)
Subset
VAX
ULTACCT410
ULTAFM410
ULTBASE410

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

0.043

145.408

–-

145.451

–-

871.891

–-

871.891

2796.730

12630.800

33.506

15461.000

ULTBIN410

12.411

6295.840

–-

6308.250

ULTBSC410

0.036

208.896

–-

208.932

ULTCOMM410

13.066

628.736

–-

641.802

ULTDCMT410

0.017

1038.270

–-

1038.290

81.864

1462.440

–-

1544.300

ULTDL410
ULTEXER410

–-

862.629

–-

862.629

ULTINET410

218.908

2971.820

106.471

3297.200

ULTINTL410

–-

286.238

–-

286.238

ULTKERB410

–-

1308.540

538.112

1846.650

ULTMAN410

–-

4365.240

–-

4365.240

ULTMH410

0.512

4500.470

1.024

4502.010

ULTMOP410

26.043

329.776

84.532

440.351

ULTNFS410

115.306

769.502

261.211

1146.020

–-

721.450

–-

721.450

0.016

3882.280

–-

3882.300

ULTPASCAL410
ULTPGMR410
ULTPRESTO410

0.034

119.808

–-

119.842

18.954

2160.210

0.512

2179.680

ULTRPCDEV410

–-

418.032

53.248

471.280

ULTRPCRT410

–-

281.795

739.745

1021.540

ULTSCCS410

–-

732.087

–-

732.087

251.447

547.546

–-

798.993

–-

99.873

–-

99.873

28.041

425.118

–-

453.159

ULTPRINT410

ULTSEC410
ULTSMSCAMP410
ULTUMAIL410

Installation Notes 1–7

Table 1-4:

(continued)

Subset
VAX

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

ULTUUCP410

0.020

339.968

630.793

970.781

ULTVAXC410

–-

878.598

–-

878.598

3563.450

49283.300

2449.150

55295.900

TOTALS

Table 1-5 lists the supported VAX UWS subset sizes in kilobytes for the root,
/usr, and /var directories.
Table 1-5: UWS Supported Subset Sizes (VAX)
Subset
VAX

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

UWSDECW410

–-

8066.570

–-

8066.570

UWSFONT15410

–-

2796.910

–-

2796.910

UWSFONT410

–-

2456.620

–-

2456.620

UWSMAN410

–-

1560.570

–-

1560.570

UWSPSVIEW410

–-

3689.460

–-

3689.460

UWSSER410

5.120

5080.070

–-

5085.190

UWSX11410

–-

4102.310

–-

4102.310

UWSXDEV410

–-

5990.430

–-

5990.430

5.120

37665.500

–-

37670.700

TOTALS

1.3.2.2

ULTRIX/UWS Version 4.1 Mandatory Upgrade Subset Sizes – The following
tables list the RISC and VAX subsets that make up the ULTRIX/UWS Version 4.1
Mandatory Upgrade.
Table 1-6 lists the RISC ULTRIX Mandatory Upgrade subset sizes in kilobytes for
the root, /usr, and /var directories.
Table 1-6: ULTRIX Mandatory Upgrade Subset Sizes (RISC)
Subset
RISC

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

5167.410

9073.750

22.842

14264

UDTBIN402

–-

28523.800

–-

28523.800

UDTCOMM402

–-

172.032

–-

172.032

UDTDL402

–-

4088.260

–-

4088.260

UDTEXER402

–-

77.824

–-

77.824

UDTBASE402

1–8 Installation Notes

Table 1-6:

(continued)

Subset
RISC

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

UDTINET402

–-

1528.380

–-

1528.380

UDTINTL402

–-

16.437

–-

16.437

UDTKERB402

–-

18.299

–-

18.299

UDTMAN402

–-

4300.030

–-

4300.030

UDTMH402

–-

1045.300

–-

1045.300

25.927

499.712

–-

525.639

UDTNFS402

–-

184.320

–-

184.320

UDTPGMR402

–-

2317.060

–-

2317.060

UDTPRESTO402

–-

1479.680

0.539

1480.220

UDTPRINT402

–-

446.464

–-

446.464

UDTSMSCAMP402

–-

99.873

–-

99.873

UDTUMAIL402

–-

270.336

–-

270.336

5193.340

54141.600

23.381

59358.300

UDTMOP402

TOTALS

Table 1-7 lists the RISC UWS Mandatory Upgrade subset sizes in kilobytes for the
root, /usr, and /var directories.
Table 1-7: UWS Mandatory Upgrade Subset Sizes (RISC)
Subset
RISC

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

UDWDECW402

–-

12616.200

–-

12616.200

UDWMAN402

–-

1468.470

–-

1468.470

UDWSER402

3.584

9091.510

–-

9095.090

UDWX11402

–-

7133.330

–-

7133.330

UDWXDEV402

–-

15274

–-

15274

3.584

45583.500

–-

45587.100

TOTALS

Installation Notes 1–9

Table 1-8 lists the VAX ULTRIX Mandatory Upgrade subset sizes in kilobytes for
the root, /usr, and /var directories.
Table 1-8: ULTRIX Mandatory Upgrade Subset Sizes (VAX)
Subset
VAX

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

2258.770

5413.640

22.842

7695.250

ULTBIN402

–-

6241.230

–-

6241.230

ULTCOMM402

–-

106.496

–-

106.496

ULTDL402

–-

1429.140

–-

1429.140

ULTEXER402

–-

17.408

–-

17.408

ULTINET402

–-

1146.430

–-

1146.430

ULTINTL402

–-

16.437

–-

16.437

ULTKERB402

–-

18.299

–-

18.299

ULTMAN402

–-

4427.420

–-

4427.420

ULTMH402

–-

631.808

–-

631.808

25.927

282.624

–-

308.551

ULTNFS402

–-

113.664

–-

113.664

ULTPGMR402

–-

1490.090

–-

1490.090

ULTPRESTO402

–-

119.808

–-

119.808

ULTPRINT402

–-

269.312

–-

269.312

ULTSMSCAMP402

–-

99.873

–-

99.873

ULTUMAIL402

–-

145.408

–-

145.408

2284.700

21969.100

22.842

24276.600

ULTBASE402

ULTMOP402

TOTALS

Table 1-9 lists the VAX UWS Mandatory Upgrade subset sizes in kilobytes for the
root, /usr, and /var directories.
Table 1-9: UWS Mandatory Upgrade Subset Sizes (VAX)
Subset
VAX

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

UWSDECW402

–-

7846.410

–-

7846.410

UWSMAN402

–-

1560.570

–-

1560.570

UWSSER402

5.120

5111.310

–-

5116.430

UWSX11402

–-

4102.320

–-

4102.320

UWSXDEV402

–-

5990.380

–-

5990.380

5.120

24611

–-

24616.100

TOTALS

1–10 Installation Notes

Table 1-10 lists the RISC SQL subset sizes in kilobytes for the root, /usr, and
/var directories.
Table 1-10: SQL Subset Sizes (RISC)
Subset
RISC

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

QLRBASE110

–

26874.800

1510.140

28384.900

QLRDEVT110

–

6622.340

–

6622.340

QLRERRMSG110

–

745.951

–

745.951

QLRMAN110

–

86.337

–

86.337

TOTALS

–

34329.4

1510.140

35839.600

Table 1-11 lists the VAX SQL subset sizes in kilobytes for the root, /usr, and
/var directories.
Table 1-11: SQL Subset Sizes (VAX)
Subset
VAX

1.3.2.3

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

QLVBASE110

–-

12856.700

1560.800

14417.500

QLVDEVT110

–-

1847.520

–-

1847.520

QLVERRMSG110

–-

745.951

–-

745.951

QLVMAN110

–-

86.337

–-

86.337

TOTALS

–-

15536.500

1560.800

17097.300

ULTRIX/UWS Version 4.1 Unsupported Subsets – The following tables list
the unsupported subsets in ULTRIX/UWS Version 4.1.
Table 1-12 lists the RISC ULTRIX unsupported subset sizes in kilobytes for the
root, /usr, and /var directories.
Table 1-12: ULTRIX Unsupported Subset Sizes (RISC)
Subset
RISC

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

94.400

3511.820

0.512

3606.730

UDXBIB410

–-

291.745

–-

291.745

UDXCOURIER410

–-

164.438

–-

164.438

UDXDOC410

–-

3447.050

–-

3447.050

UDXBASE410

Installation Notes 1–11

Table 1-12:

(continued)

Subset
RISC

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

UDXEDIT410

–-

6266.650

–-

6266.650

UDXGAMES410

–-

2510.780

–-

2510.780

UDXLEARN410

–-

733.757

–-

733.757

UDXMAN410

–-

128.685

–-

128.685

UDXNEWS410

–-

1310.500

–-

1310.500

UDXNOTES410

–-

1884.920

–-

1884.920

UDXRCS410

–-

212.539

–-

212.539

UDXSHELLS410

–-

94.160

–-

94.160

UDXTOOLS410

–-

111.554

–-

111.554

94.400

20668.600

0.512

20763.500

TOTALS

Table 1-13 lists the RISC UWS unsupported subset sizes in kilobytes for the root,
/usr, and /var directories.
Table 1-13: UWS Unsupported Subset Sizes (RISC)
Subset
RISC

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

UDXUNCOMP410

–-

1690.300

–-

1690.300

UDXUNMAN410

–-

148.501

–-

148.501

UDXUNMIT410

–-

16454.800

–-

16454.800

TOTALS

–-

18293.600

–-

18293.600

Table 1-14 lists the VAX ULTRIX unsupported subset sizes in kilobytes for the
root, /usr, and /var directories.
Table 1-14: ULTRIX Unsupported Subset Sizes (VAX)
Subset
VAX

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

–-

269.805

–-

269.805

55.783

2285.560

0.512

2341.860

ULXBIB410

–-

194.465

–-

194.465

ULXCOURIER410

–-

103.618

–-

103.618

ULXCPM410

–-

28.934

–-

28.934

ULXDOC410

–-

3447.050

–-

3447.050

ULXAPL410
ULXBASE410

1–12 Installation Notes

Table 1-14:

(continued)

Subset
VAX

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

ULXEDIT410

–-

6266.650

–-

6266.650

ULXF77410

–-

732.498

–-

732.498

ULXGAMES410

–-

2232.120

–-

2232.120

ULXHYPER410

–-

78.723

–-

78.723

ULXICON410

–-

346.396

–-

346.396

ULXINGRES410

–-

2637.600

–-

2637.600

ULXLEARN410

–-

652.284

–-

652.284

ULXLISP410

–-

3962.890

–-

3962.890

ULXMAN410

–-

318.958

–-

318.958

ULXMOD2410

–-

1035.540

–-

1035.540

ULXNEWS410

–-

1310.500

–-

1310.500

ULXNOTES410

–-

1178.360

–-

1178.360

ULXRCS410

–-

226.655

–-

226.655

ULXSHELLS410

–-

55.248

–-

55.248

ULXSPMS410

–-

1238.100

–-

1238.100

ULXTOOLS410

–-

54.210

–-

54.210

ULXVARIAN410

–-

2735.770

–-

2735.770

55.783

31391.900

0.512

31448.200

TOTALS

Table 1-15 lists the VAX UWS unsupported subset sizes in kilobytes for the root,
/usr, and /var directories.
Table 1-15: UWS Unsupported Subset Sizes (VAX)
Subset
VAX

1.3.3

root size
(kbytes)

/usr size
(kbytes)

/var size
(kbytes)

Total
(kbytes)

ULXUNCOMP410

–-

1514.170

–-

1514.170

ULXUNMAN410

–-

148.501

–-

148.501

ULXUNMIT410

–-

9457.380

–-

9457.380

TOTALS

–-

11120.100

–-

11120.100

Time Set During System Installation May Be Incorrect for GMT
Offsets
During the installation of ULTRIX/UWS Version 4.1, you are asked to specify the
current date, time, and time zone. If you specify the time zone as a number of hours
east of Greenwitch Mean Time (GMT) and specify that your area does not alternate
Installation Notes 1–13

between Daylight Savings Time and Standard Time, the ULTRIX operating system
will set its clock one hour earlier than the time you specied.
To work around this problem, reset your local time manually using the date(1)
command after you complete your installation.

1.3.4

Installing Layered Products and Unsupported Software
Some layered products and unsupported software expect ULTRIX/UWS Version 4.0
lock les to be present on the system when they are installed. Because
ULTRIX/UWS Version 4.1 software contains no ULTRIX/UWS Version 4.0 lock
les, you must create the lock les before you install layered products or unsupported
software.
Follow these steps to create the lock les:
1.

Log in as root or become superuser.

2.

Change to the /usr/etc/subsets directory as follows:
# cd /usr/etc/subsets

3.

Issue the following commands to create a ULTRIX/UWS Version 4.0 subset
lock le for each ULTRIX/UWS Version 4.1 subset you have installed and to
set the correct permissions on the les:
#
?
?
?
?
#

foreach i (U*410.lk)
touch ‘ echo $i | sed -e ’s/410/400/’ ‘
touch ‘ echo $i | sed -e ’s/410/400/’ | sed -e ’s/lk$/ctrl/’ ‘
touch ‘ echo $i | sed -e ’s/410/400/’ | sed -e ’s/lk$/scp/’ ‘
end
chmod 744 U*400.scp

Once you create the ULTRIX/UWS Version 4.0 subset lock les, you can install
layered products or unsupported software. For instructions on installing layered
products, see the installation guide for the layered product. For instructions on
installing unsupported software, see the Advanced Installation Guide.

1.3.5

Installing the Mandatory Upgrade
The installation of the Mandatory Upgrade is now supported in the installation of
ULTRIX/UWS Version 4.1. This section explains how to install the Mandatory
Upgrade if you are installing ULTRIX/UWS Version 4.1 from the following
distribution devices:
TK50 Tape
9-track Magnetic Tape (MT9)
CDROM Optical Disk
RA60 Disk Pack
Network

1–14 Installation Notes

Note
If you are upgrading your Remote Installation Server (RIS) area or
upgrading your Diskless Server environments, refer to the Mandatory
Upgrade Installation Instructions after you have installed the ULTRIX
operating system on your server.

1.3.5.1

Installing the Mandatory Upgrade from TK50 or MT9 Tape – During the
installation of ULTRIX/UWS Version 4.1, you are prompted with the following
message:
Do you have a Mandatory Upgrade to be installed at this time? (y/n) [n]:

Answer yes to the prompt.
You are then asked to remove the tape from the tape drive and load the tape with the
word UPGRADE on its label into the tape drive.
Please mount the tape containing the Mandatory Upgrade subsets.

After the tape is loaded, you are asked if the tape is ready and online.
Please make sure your installation tape is mounted and online.

When the tape is mounted and online, the system begins loading the Mandatory
Upgrade subsets depending on whether you are performing a basic or an advanced
installation.
Basic Installation
If you are performing a basic installation, the standard Mandatory Upgrade
subsets are automatically installed.
Advanced Installation
If you are performing an advanced installation, the standard Mandatory Upgrade
subsets are automatically installed and you are given a menu from which you
may choose to install Mandatory Upgrade subsets for optional subsets.
*** SUPPORTED SOFTWARE INSTALLATION ***
*** Enter Subset Selections ***
The following subsets are mandatory and will be installed automatically:
* Base System UPGRADE
* Kernel Config Files UPGRADE
* X11/DECwindows User Envrment UPGRADE
The subsets listed below are optional:
1) On Line Manual Pages UPGRADE
2) Prestoserve Utilities UPGRADE
3) Additional DECwindows Appl UPGRADE 4) UWS References Pages UPGRADE
5) Worksystem Development S/W UPGRADE
6) All of the Above
7) None of the Above
8) Exit without installing subsets
Enter your choice(s):
After you make your selection, you are prompted to confirm
your choices.
Is this correct? (y/n):

Installation Notes 1–15

* TC

If you answer no, the system reprints the menu and you may select the optional
Mandatory Upgrade subsets again. If you answer yes, the system installs the upgrade
subsets.
If for some reason the system is unable to install the mandatory upgrade subsets, you
will receive the following error message:
The installation procedure was unable to install
the Mandatory Upgrade subsets.

The system will then attempt to install the Mandatory Upgrade subsets a second time.
*** Attempting again to install the Mandatory Upgrade subsets ***

If the system is still unable to install the mandatory upgrade subsets, you will receive
the following error message:
The installation procedure failed to install the Mandatory Upgrade subsets.
This causes the installation procedure to stop.
Contact your DIGITAL representative.

1.3.5.2

Installing from an RA60 or CDROM Disk – If you are installing from an RA60
or CDROM Disk, the standard mandatory upgrade subsets will be automatically
installed during the installation of ULTRIX/UWS Version 4.1 and the system will
display the following message:
Installing Mandatory Upgrade

If for some reason the system is unable to install the mandatory upgrade subsets, you
will receive the following error message:
The installation procedure was unable to install
the Mandatory Upgrade subsets.

The system will then attempt to install the Mandatory Upgrade subsets a second time.
*** Attempting again to install the Mandatory Upgrade subsets ***

If the system is still unable to install the mandatory upgrade subsets, you will receive
the following error message:
The installation procedure failed to install the Mandatory Upgrade subsets.
This causes the installation procedure to stop.
Contact your DIGITAL representative.

1.3.5.3

Installing from the Network – If you are installing ULTRIX/UWS Version 4.1
from the network, the system will begin loading the Mandatory Upgrade subsets
based on the whether you are performing a basic or an advanced installation.
Basic Installation
If you are performing a basic installation from the network, the standard
Mandatory Upgrade subsets are automatically installed.
Advanced Installation
If you are performing an advanced installation, the standard Mandatory Upgrade
subsets are automatically installed and you are given a menu from which you
may choose to install Mandatory Upgrade subsets for optional subsets.

1–16 Installation Notes

After you make your selection, you are prompted to confirm
your choices.
*** SUPPORTED SOFTWARE INSTALLATION ***
*** Enter Subset Selections ***
The following subsets are mandatory and will be installed automatically:
* Base System
* Kernel Configuration Files
* TCP/IP Networking Utilities
* Network File System Utilities
* Extended (Berkeley) Mailer
* Base System UPGRADE
* Kernel Config Files UPGRADE
* TCP/IP Networking Utilities UPGRADE
* X11/DECwindows Servers
* X11/DECwindows User Environment
* X11/DECwindows 75dpi Fonts
* X11/DECwindows Servers UPGRADE
* X11/DECwindows User Envrment UPGRADE
The
1)
3)
5)
7)
9)
11)
13)
15)
17)
19)
21)
23)
25)
27)
29)
31)

subsets listed below are optional:
System Exerciser Package
Kerberos Network Authentication
SCAMP sys config and mgmt program
Document Preparation Software
Adobe Font Metric Files
RPC Runtime Environment
Internationalization Tools
Pascal Development Package
On Line Manual Pages
Communications Utilities
Maintenance Operations Protocol
On Line Manual Pages UPGRADE
X11/DECwindows 100dpi Fonts
Additional DECwindows Applications
UWS Reference Pages
UWS References Pages UPGRADE

2)
4)
6)
8)
10)
12)
14)
16)
18)
20)
22)
24)
26)
28)
30)
32)

RAND Mail Handler
Enhanced Security Features
Prestoserve Utilities
Printer Support Environment
Software Development Utilities
RPC Development Environment
Source Code Control System
VAX C/ULTRIX
Accounting Software
Bisynchronous Communications
Unix-to-Unix Copy Facility
Prestoserve Utilities UPGRADE
VS35XX X11/DECwindows Fonts
Worksystem Development Software
Additional DECwindows Appl UPGRADE
Worksystem Development S/W UPGRADE

33) All of the Above
34) None of the Above
35) Exit without installing subsets
Enter your choice(s):

If you answer no, the system reprints the menu and you may select the optional
Mandatory Upgrade subsets again. If you answer yes, the system installs the upgrade
subsets.

1.3.6

Removing Subsets
ULTRIX/UWS Version 4.1 comes with several thousand les, which are organized
into discrete functional units, called subsets. If you need to remove any of the les
that were placed on your system when you installed ULTRIX/UWS Version 4.1, use
the setld utility with the -d option. Failure to use the setld command may
degrade the usability of the software.
The setld utility tracks the les installed on your system by using data that it
stores in /usr/etc/subsets. Do not remove any of the les in that directory,
because you will lose the ability to install and delete system and layered product
software.
For more information on the setld utility, see the ULTRIX Reference Pages.

Installation Notes 1–17

1.3.7

Unsupported Subsets
To install the unsupported subsets from tape, load the unsupported tape. To install
subsets from your CDROM or RA60 distribution, mount the c partition of the
CDROM on /mnt and load subsets from /mnt/RISC/UNSUPPORTED or
/mnt/VAX/UNSUPPORTED, as is appropriate.
Note
The unsupported software subset descriptions, including sizes and
dependencies, can be found in the Advanced Installation Guide.

1.4 Configuration
This section contains notes about system conguration.

1.4.1

Secure Console
Even a system that is running in secure console mode can be interrupted during a
reboot and brought up in single-user mode. Thus, if your system is running in secure
console mode, the system administrator should edit the /etc/rc le to prevent
reboots from being interrupted.
To edit the /etc/rc le to prevent reboots from being interrupted, follow these
steps:
1.

Add the following line to the top of the /etc/rc le. This line should be the
rst line in the le.
trap ’’ 1 2 3

2.

Find the case statement in the /etc/rc le that reboots the system after
fsck(8) is performed on the le system. The case statement looks like this:
echo Automatic reboot in progress... >/dev/console
/etc/fsck -p >/dev/console
case $? in
0)
;;
4)
/etc/reboot -n
;;
8)
echo "Automatic reboot failed... help!" >/dev/console
exit 1
;;
12)
echo "Reboot interrupted" >/dev/console
exit 1
;;
*)
echo "Unknown error in reboot" > /dev/console
exit 1
;;
esac

3.

Change all occurrences of exit 1 in the preceding case statement to
/etc/halt. Making this change will cause the system to shut down again if
there are any attempts to gain access to the system by interrupting the boot.

1–18 Installation Notes

After you have edited the preceding case statement, it should look like this:
echo Automatic reboot in progress... >/dev/console
/etc/fsck -p >/dev/console
case $? in
0)
;;
4)
/etc/reboot -n
;;
8)
echo "Automatic reboot failed... help!" >/dev/console
/etc/halt
;;
12)
echo "Reboot interrupted" >/dev/console
/etc/halt
;;
*)
echo "Unknown error in reboot" > /dev/console
/etc/halt
;;
esac

If a system problem arises that warrants booting to single-user mode, you can change
the console secure mode and boot the system to single-user mode at the console
command line as follows:
>> boot -s

1.4.2

Dump Device
If your boot device is an RA disk and the dump device is also an RA disk, both disks
must reside on the same controller because the disk class driver uses VMB to dump
core. In the past, these device drivers contained part of the special design dump
code; this is no longer true.

1.4.3

Configuration of Q-bus Terminal Multiplexer Lines
The installation process creates 8 terminal lines for each cxa16 or cxb16 terminal
multiplexer and 16 lines for the cxf32 terminal multiplexer. The correct number of
lines is 16 for a cxa16 or cxb16 and 32 lines for a cxf32.
To correct this problem, remake the lines as follows:
1.

Log in as root or become superuser.

2.

Remove the /dev/tty lines that correspond to the cxa16, cxb16, or
cxf32 multiplexers by using the rm command. You can identify the lines that
need to be removed by using the ls -l command and looking for the major
number 33, as follows:
# ls -l /dev/tty* | grep 33,

Installation Notes 1–19

Note
The dhv, dhq, and cxy08 also share the major number, 33. If
you delete these lines, they will also have to be remade.
3.

Remake the correct number of terminal lines with the MAKEDEV(8) command.
For example, if your system has only two cxa16 devices, type the following
command in the /dev directory:
# MAKEDEV cxa0 cxa1

The cxf32 is congured as two cxa16 devices. If your system has a
cxf32, type the following command in the /dev directory:
# MAKEDEV cxa0 cxa1

4.

1.4.4

After you create the correct number of lines, update the /etc/ttys le to
include the previously missing lines. For more information on updating the
/etc/ttys le, see the Guide to System Environment Setup.

System Configuration When Disk Controllers Are in Floating
Address Space
When performing system conguration for systems that have UNIBUS/QBUS
ADAPTERS with devices in oating address space, the following will now occur.
If the device in oating address space is a disk controller, sizer will no longer assume
that any drives are attached to it. The reason for this is that sizer cannot correctly size
the number of drives attached to this disk controller in oating address space.
Here is an example of the incorrect conguration le:
controller uda0
controller uq0
disk ra0 at
controller uda1
controller uq17
disk ra1 at
disk ra2 at
disk ra3 at
disk ra5 at

at
at
uq0
at
at
uq17
uq17
uq17
uq17

uba0
uda0 csr 0172150
drive 0
uba1
uda1 csr 0160334
drive 0
drive 1
drive 2
drive 3

vector

uqintr

vector

uqintr

In this example we see a disk controller "uq17" at "uda1" in oating address space.
As we can see, the old sizer utility assumes that four disk drives are attached to this
controller. For the KFQSA controller, this is a wrong assumption by sizer. Since
sizer cannot correctly determine the number of drives connected to this disk
controller, it will assume none.
Here is an example of the correct conguration le:
controller uda0
controller uq0
disk ra0 at
controller uda1
controller uq17

at
at
uq0
at
at

uba0
uda0 csr 0172150
drive 0
uba1
uda1 csr 0160334

vector

uqintr

vector

uqintr

In this example we see a disk controller "uq17" at "uda1" in oating address space.
However, sizer now assumes that no drives are attached to it.

1–20 Installation Notes

Note that this will require the user to edit the conguration le during the installation
process to add the correct number of drives for disk controllers that exist in oating
address space.
Select the ADVANCED installation option during installation, and when the system
asks you if you want to edit the conguration le, type y.
Then, do the following:
1.

For all disk controllers in oating address space add the correct number of ra
and rz drives attached to it.

2.

Make the ra and rz numbers sequential.
Note
The drive number is the same as the unit plug number on the front panel
of the system used to identify the drive. If you are unable to determine
what the correct drive numbers are, contact customer service.

1.4.5

Conformance to CSR Address Space Conventions
When you install the ULTRIX software, the UNIBUS and Q-bus devices that reside
in oating address space are automatically sized. Therefore, the placement of devices
in this space is critical to the success of your installation.
If your conguration does not conform to CSR address assignment rules, you must
do an advanced installation. The advanced installation allows you to edit the system
conguration le built by the installation software. If you have questions about the
accuracy of your oating address space conguration, contact customer service.

1.4.6

The Console Entry in the ttys File
The default terminal type for the console entry in the /etc/ttys le is set to
VT100. This works if you have a CRT console. However, if you have a hardcopy
console, you must change the entry in the ttys le to match your console terminal
type.

1.4.7

Synchronization Errors for Autodial Modem on a DMF32 Interface
If you have an autodial modem connected to a DMF32 interface and you are using
the generic dialer routines in acucap, tip, or uucp, the system may not be able
to open the modem and may print either of the following messages:
tip: can’t synchronize
uucp: can’t synchronize

The problem occurs because the DMF32 interface cannot return characters to the
system until a carrier is detected by the modem.
If you encounter this problem, edit each entry in /etc/acucap that refers to a
modem connected to a DMF32 interface to include the si Boolean ag. The si
Boolean ag disables checking of responses from the modem until the carrier is
detected. For more information, see acucap(5) in the ULTRIX Reference Pages.

Installation Notes 1–21

1.4.8

Shared Lines Do Not Work over Direct Connections
The use of shared lines requires modem control. Carrier detection must be raised
upon receipt of an incoming connection and must be dropped when the remote party
hangs up. Direct connects that use modem eliminators do not obey this protocol and
cannot be used for shared lines. If you try to use shared lines on a direct connect line
that has Carrier Detect strapped high, you will disable the line.

1.4.9

Reactivating Hardwired Terminals
Hardwired terminal ports other than the console port may hang as a result of
electrical noise appearing on the line when the terminal is turned off and then turned
back on. When the port is hung, the terminal does not respond to keyboard input. To
reactivate the terminal line, follow these steps:
1.

Log in to the console as root or become superuser.

2.

Determine the number of the hung terminal line by entering the last
command with the user’s login name as an argument.

3.

Determine the process identication (PID) of the getty process associated
with the hung terminal line by entering the ps command with the -ax option.

4.

Use the kill command with the -9 option to kill the process.

The following example shows how to reactivate a hung terminal line. Assume that
the login name of the user is kafka:
# last kafka
kafka
tty03
kafka
tty03
kafka
tty03

Mon Nov 18 10:00
still logged in
Mon Nov 18 08:35 - 09:08 (00:33)
Mon Nov 18 00:26 - 02:00 (01:33)

# ps -ax
PID
0
1
2

TT
?
?
?

STAT
D
I
D

159 03 I
160 04 I

TIME
0:01
0:34
0:00

COMMAND
swapper
init
pagedaemon

0:00 – 2 tty03 (getty)
0:00 – 2 tty04 (getty)

# kill –9 159

1.4.10

Terminals Should Be Left Powered On
Improperly terminated terminal lines can cause the associated getty process to use
the CPU heavily. Line interference causes the getty process to assume that a user
is attempting to log in. This problem will be repeated continuously, causing
degradation in system performance. Either keep your terminals powered on at all
times, or if a terminal line is not used, specify it as "off" in the /etc/ttys le to
prevent a getty process from being started on the line.

1.4.11

Changes to Swap Space and Program Size Parameters
It is now possible to set the maximum data and stack size that a program may grow
without affecting the swap conguration parameters.

1–22 Installation Notes

A few new congurable parameters are added for dynamic swap. The default values,
and how to use them in the conguration le, are discussed in the Guide to
Configuration File Maintenance.
The conguration parameters dmmin and dmmax are no longer supported. Anyone
who uses these conguration variables to increase the data/stack segment sizes is
advised to use the new conguration parameters maxdsiz and maxssiz.

1.4.12

Configuration File Options for Audit
The conguration le AUDIT option loads the optional audit subsystem les into the
kernel. The base size of the system audit buffers is described as being congurable at
build time by specifying AUDIT=xxx, where xxx is a size. Note that this size is not
congurable. The audit subsystem is always congured with its default system audit
buffer size.
There is no workaround. Default system audit buffer size cannot be adjusted.

1.4.13

Tuning File System Performance
You can modify the following three system parameters to improve ULTRIX le
system performance and demonstrate that improvement in certain types of tests, such
as single-process, single-le, cache-sensitive benchmarks:
Buffer cache size
ULTRIX write-back scheduling
The update daemon time interval
However, before modifying these parameters, you should be knowledgeable about the
ULTRIX operating system. Individual users should analyze their needs by varying
the values for each parameter and measuring the effect on performance. Optimal
values will differ between workstations, le servers, and timesharing systems.
Note
Unless you understand the value of modifying these parameters and can
detect a performance improvement after doing so, you should use their
default values.
The following sections describe how to modify each of the parameters.

1.4.13.1

The bufcache Configuration File Parameter – A new conguration le
parameter, bufcache , allows a specied percentage of physical memory to be set
aside by the le system for use by the le system buffer cache. The percentage must
be 10 or greater, but less than 100.
By default, buffer cache occupies 10% of main memory. Increasing the buffer cache
size means that more le system data is stored in memory. While a large buffer
cache may make a benchmark test run faster, there are tradeoffs. The ULTRIX
operating system uses a static buffer cache allocation methodology. Main memory
that is allocated at boot time for the le system buffer cache cannot be used for user
program text or data. Therefore, actual performance depends on the application.

Installation Notes 1–23

For example, to set the cache buffer size to 25% of memory, add the following line
to your system’s conguration le located in the directory /sys/conf/mips for
RISC processors or /sys/conf/vax for VAX processors:
bufcache

25

After editing the conguration le, you need to rebuild your kernel. See the Guide to
Configuration File Maintenance for more information on the conguration le and its
options and for instructions on rebuilding your kernel.
Optimal values for bufcache will differ among large timesharing systems, midrange le servers, and workstations. However, you should not alter bufcache if
you have a workstation with 8 megabytes of memory. Workstations with 16
megabytes of memory should have a value of no more than 30. If you specify a value
greater than 30, your system’s le system performance may suffer because of
excessive paging and swapping.
For le servers, increasing the buffer cache can improve performance. Note that if
you make the buffer cache too large, the resulting system may be less efcient in
processing the requests to it from multiple users. To help you determine the optimal
value, use the results from the bufstats command of the crash utility. This
command can provide useful data on cache hit/miss ratios. See crash(8) in the
ULTRIX Reference Pages for more information on bufstats.
1.4.13.2

ULTRIX Write-Back Scheduling – By default, the ULTRIX operating system
returns write requests immediately. If the last byte of a block is written, then the dirty
block is asynchronously sent to disk. When this happens, the block becomes
unavailable until the disk write completes. While this scheduling method is
benecial in a time-sharing environment, it hinders some benchmark tests which read
data immediately after writing it.
To set the ULTRIX system so that data can be read as soon as it is written and writes
to disk are delayed as long as possible, make the following change in the param.c
le located in the directory /sys/conf/mips for RISC processors or
/sys/conf/vax for VAX processors:
int delay_wbuffers = 1;

After editing the param.c le, you need to rebuild the kernel. See the Guide to
Configuration File Maintenance for instructions on rebuilding your system’s kernel.
1.4.13.3

The update Daemon Time Interval – By default, the update daemon
synchronizes dirty blocks to disk every 30 seconds. You can alter this time interval in
two ways. The rst way is to add a value to the /etc/update command in the le
/etc/rc. For example, to adjust the update time interval from 30 seconds to 2
minutes, edit the le as follows:
/etc/update 120;

echo -n update’

>/dev/console

The second way is to kill the update daemon process and restart it with the new
value.
If you have a big cache and an application which often writes over the same blocks
of a le, you should consider increasing the time interval for update.

1–24 Installation Notes

1.5 Diskless Management Services (DMS)
This section contains notes about Diskless Management Services (DMS).

1.5.1

DMS Servers and Reference Page Permissions
The permissions and ownership on the ULTRIX and UWS reference pages that are
installed on DMS server areas are incorrect and must be set manually.
However, if you install the ULTRIX or UWS reference page subsets on the DMS area
of your diskless server and you do not have the corresponding reference page subsets
installed on your server system, the script which checks and sets permissions on the
ULTRIX/UWS Version 4.1 reference page les will fail with the following error
messages:
.
.
.
Copying UWS Reference Pages from tape
Verifying UWS Reference Pages (UDWMAN410)
Copying Worksystem Development S/W (UDWXDEV410) from tape
Verifying Worksystem Development S/W (UDWXDEV410)
chown: can’t access [A-W]*: No such file or directory
chgrp: access [A-W]*: No such file or directory
chmod: can’t access [A-W]*: No such file or directory
chown: can’t access [YZ_]*: No such file or directory
chgrp: access [YZ_]*: No such file or directory
chmod: can’t access [YZ_]*: No such file or directory
chown: can’t access X[A-Z]*: No such file or directory
chgrp: access X[A-Z]*: No such file or directory
chmod: can’t access X[A-Z]*: No such file or directory
chown: can’t access X[a-z]*: No such file or directory
chgrp: access X[a-z]*: No such file or directory
chmod: can’t access X[a-z]*: No such file or directory
.
.
.

These errors do not affect the installation of the reference page subsets.
After the installation has completed, whether you receive the error messages or not,
you must set the correct ownership and permissions on the the reference page les
that were installed in the DMS area on your diskless server by following these steps:
1.

Log in as root or become superuser.

2.

Change to the directory in the DMS area of your diskless server where the
reference pages are installed. On most diskless servers, this area is either
/dlenv0/root.mips/usr/man for RISC DMS client areas or
/dlenv0/root.vax/usr/man for VAX DMS client areas.

3.

Enter the following commands:
# find . -type f -exec chmod 444 {} ;
# find . -type f -exec chown root {} ;
# find . -type f -exec chgrp system {} ;

Installation Notes 1–25

1.5.2

Diskless Clients Cannot Update the apropos Index or Use catman
The apropos index ( /usr/lib/whatis ) that ships with ULTRIX/UWS
Version 4.1 contains entries for all the supported ULTRIX base system reference
pages. When additional reference pages are loaded onto the DMS client (for example,
reference pages that are contained in ULTRIX/SQL subsets), diskless clients cannot
access them with the man command if the optional /usr/man/cat? directories
exist.
If a diskless client attempts to use the man or catman command to update the
apropros reference page index in /usr/lib/whatis or to add preformatted
reference pages in the optional /usr/man/cat? directories, the command fails
with the following message:
/bin/sh: /usr/lib/whatis: cannot create
chmod: can’t change /usr/lib/whatis: Restricted operation on file system

It is possible to work around this limitation as follows:
1.

Log in as root or become superuser.

2.

On the DMS client in each area where new reference pages were added, unmount
the /usr le system, which is normally mounted read-only.

3.

On the DMS server, temporarily export the /usr le system to the DMS client
read-write from the /etc/exports le.

4.

On the DMS client, re-mount the /usr le system read-write and then run the
catman command with the arguments appropriate for your system.

5.

When the catman command completes, unmount the /usr le system from
the client, remove the temporary read-write export line from the DMS server’s
/etc/exports le, and remount the /usr le system on the client in the
normal read-only fashion.

After you complete these steps, DMS clients which share the same /usr area will
have access to the apropos index and the reformatted reference pages.

1.5.3

DMS Clients
Diskless Management Services clients should only be registered with one DMS
server at a time. Registering with more than one server causes unpredictable results.

1.5.4

Diskless Support
If you install ULTRIX/UWS Version 4.1 in a diskless server area using the DMS
utility, the diskless server area must have at least ULTRIX/UWS Version 4.0
installed.
Note
If you install ULTRIX/UWS Version 4.1 in a diskless server area, fonts
on ULTRIX/UWS Version 4.1 will be incompatible with the X servers
from ULTRIX/UWS Version 4.0.

1–26 Installation Notes

1.5.5

DMS Server with pre-ULTRIX/UWS Version 4.0 Clients
These notes relate to operations with an ULTRIX/UWS Version 4.1 DMS Server
serving pre-ULTRIX Version 4.0 clients.

1.5.5.1

DMS Clients and /etc/exports Semantics – The semantics of the
/etc/exports le changed between ULTRIX-32 Version 3.1 and ULTRIX/UWS
Version 4.0. This change affects DMS clients since they are NFS mounted from their
server.
If a ULTRIX Worksystem Software Version 2.2 or earlier client is being served from
a ULTRIX/UWS Version 4.1 server, the /etc/exports entry for the client must
be manually updated to ensure that the client gets the same access rights.
ULTRIX/UWS Version 4.1 clients automatically make the appropriate changes to a
ULTRIX/UWS Version 4.1 server.
Export options are now applied on a per-directory basis, and are no longer inherited
from the exported parent le system. As a consequence, you no longer need to
export an entire le system in order to export subdirectories within it. However, you
do need to be more explicit in specifying options for each exported resource: le
system or directory.
The major consequence of this is that to preserve the same behavior on your NFS
server as before, you need to apply the export options of the exported parent le
system to each of the exported subdirectories. See the note in Appendix C, New
/etc/export Semantics, for more details on these changes.
Before ULTRIX/UWS Version 4.0, entries in /etc/exports for DMS clients
looked like this:
/dlclient0 -n -r=0 nobody
/dlclient0/clientA.root clientA
/dlclient0/clientB.root clientB

In ULTRIX/UWS Version 4.0 and ULTRIX/UWS Version 4.1, the rst line is no
longer necessary, since the -r rootmap option is now specied at the exported client
root level. In addition, the -n option for "no lehandle" is no longer applicable. As
a result, in ULTRIX/UWS Version 4.0 and ULTRIX/UWS Version 4.1, the
/etc/exports entries in the preceding example should be changed to look like
this:
/dlclient0/clientA.root -r=0 clientA
/dlclient0/clientB.root -r=0 clientB

If a client swaps over the network to the server, the /etc/exports entry for the
swap le must be updated to ensure that the client has access to the swap le. If the
client does not have the correct swap le when booted, it will crash.
To prevent this problem, add an entry for the client’s swap in the server’s
/etc/export le. For example, if clientA is swapping over the network, edit the
following entry:
/dlclient0/clientA.root -r=0 clientA

to explicitly add an entry for network swap, as follows:
/dlclient0/clientA.root -r=0 clientA
/dlclient0/clientA.root/dev/swap -r=0 clientA

Installation Notes 1–27

1.5.5.2

The makpkt File Location Has Changed – When executing, DMS will run
makpkt. The makpkt le used to be under /usr/diskless. In ULTRIX/UWS
Version 4.0, the le was moved to /usr/etc. If the diskless server is upgraded to
ULTRIX/UWS Version 4.1 and the diskless client area is ULTRIX Worksystem
Software (UWS) Version 2.1 and UWS Version 2.2, the diskless server will have
problems running the diskless client area since the makpkt le has been moved.
To work around the problem, make a symbolic link in the server system from
/usr/etc/makpkt to /usr/diskless/makpkt by typing the following
command:
# ln -s /usr/etc/makpkt /usr/diskless/makpkt

1.5.5.3

DMS Clients and Time Zone Information – After adding a diskless client to a
diskless server and booting the diskless client, the client will build its own kernel.
The kernel build process needs a timezone entry in the system conguration le of
DMS clients.
The time zone information is obtained from the DMS Server’s conguration le.
The location of system conguration les changed in ULTRIX/UWS Version 4.0,
causing DMS to fail to get the timezone entry. The system conguration le that
used to be located under /sys/conf is now located under /sys/conf/vax (for
VAX machines) or /sys/conf/mips (for RISC machines).
To work around the problem on the server system, make a symbolic link from
/sys/conf/vax/HOSTNAME or /sys/conf/mips/HOSTNAME to
/sys/conf/HOSTNAME, replacing the italic HOSTNAME with the name of the
server in capital letters.
On a RISC server, use a command similar to the following:
# ln -s /sys/conf/mips/HOSTNAME /sys/conf/HOSTNAME

On a VAX server, use a command similar to the following:
# ln -s /sys/conf/vax/HOSTNAME /sys/conf/HOSTNAME

1.5.5.4

Different Versions of ULTRIX, DMS, and BIND – In ULTRIX-32 Version 3.1, if
the diskless server is running BIND, diskless clients are automatically set up with
BIND. In ULTRIX/UWS Version 4.1, if a diskless client desires the BIND service,
bindsetup must be run from the diskless client, not from the server.
If the diskless server is upgraded to ULTRIX/UWS Version 4.1 and the existing
ULTRIX Worksystem Software Version 2.1 and Version 2.2 diskless clients have
already been set up with the BIND service, the diskless server will have problems
manipulating those diskless client areas since its hostname does not include the
BIND domain name.
For an ULTRIX/UWS Version 4.1 diskless server running BIND with existing
ULTRIX Worksystem Software Version 2.1 and Version 2.2 diskless clients already
set up as BIND clients, set the server’s hostname to its name plus the BIND domain
name in /etc/rc.local to ensure proper diskless client area manipulation by the
diskless server.

1–28 Installation Notes

1.6 Remote Installation Services (RIS)
This section contains notes about the Remote Installation Services (RIS).

1.6.1

RIS Clients
Remote Installation Services clients should only be registered with one RIS server at
a time. Registering with more than one server causes unpredictable results.

1.6.2

Client Name Length
The rst six characters (letters or numbers) of the name of either RIS or DMS clients
registered to be served from an ULTRIX server must be unique. The server’s
registration facilities truncate all names to the rst six characters.
For example, the names system1 and system2 are both registered as system, with the
registration information of the second client replacing the registration information of
the rst.

1.6.3

Previous Versions of ULTRIX
The ULTRIX/UWS Version 4.1 RIS services do not support installations between
clients and servers from different operating system versions. That is, you cannot
install ULTRIX-32 Version 3.0 clients from an ULTRIX/UWS Version 4.1 server
and you cannot install ULTRIX/UWS Version 4.1 clients from an ULTRIX-32
Version 3.0 server.
Previously, you could remotely install clients and servers from different versions of
the ULTRIX operating system.

1.6.4

CDROM Usage in the RIS Environment
When a CDROM is used for a RIS environment, its throughput degrades as the
number of concurrent RIS system loads increases. The decrease is additive, based on
the number of active clients. For example, it takes about 8 minutes for the BASE
subset to load for one VAX RIS client and about 17 minutes for the BASE subset to
load for two VAX RIS clients.

1.6.5

Optional Removal of the Kernel Object Subset
ULTRIX/UWS Version 4.1 contains a kernel object subset which allows full debug
capabilities using the dbx debugger.
In order to save space, you may remove your kernel object subset from your installed
system. This can be accomplished using the following setld command:
# /etc/setld -d UDTBIN410

It is important that you understand some of the trade-offs you make by removing this
subset.
If and when you need to apply a kernel patch to your environment, you will need to
reinstall the kernel object subset. This might require that you remove other system or
user environments to make room for its installation. (This assumes that the space
made available after removing the subset was used for another purpose.)

Installation Notes 1–29

In general, any time you need to build a kernel for your system, the subset will need
to be reinstalled. This could be for a simple need to modify some hardware or
software conguration parameter in the system’s conguration le.
We recommend that this procedure not be followed routinely. Rather, it is intended
to solve space problems on smaller systems with smaller system disks. If you choose
to remove the kernel object subset, wait until the system is properly congured and
proven for some reasonable period of time.

1.6.6

Installation of RIS Clients
There is a problem with installing RIS clients when the RIS Client Database is too
large. The symptoms of the problem are messages displayed on the console of the
client that indicate that the root le system is full. The messages typically are:
/: file system full
/: write failed, file system is full ?

The rst time that these messages are displayed, the installation usually nishes
without any problems. However, if you have registered a large number of RIS
clients at once, the rst time you see the error message could be fatal. You can have
approximately 150 RIS clients registered before this problem occurs.
To work around this problem, deregister RIS clients that are no longer actively
installing software from the RIS server.
To determine if the problem is about to happen, check the size of the RIS Client
Database ( ~ris/clients/risdb ) on the server. If this database is greater than
9 Kbytes in size, this problem could occur.

1.6.7

Mounting a RIS Area Using NFS
You can use an NFS mount point to set up a new RIS area by using a RIS area that
exists on another machine. For example, if the server tigris has a CDROM
optical disc containing ULTRIX RISC-supported subsets mounted on /mnt, the
system manager on jaguar could type the following command to NFS-mount
those subsets:
# mount tigris:/mnt/RISC/BASE /mnt

Then, the system manager on jaguar would invoke the /etc/ris utility and
proceed with the procedure for installing software described in the Guide to Remote
Installation Services.

1.6.8

Extracting Software or Creating a Symbolic Link from a CDROM
When you install software to a RIS area using CDROM media, you can either extract
the software from the mount point or to create a symbolic link to the mount point.
For example, if you set up an environment to serve RISC clients, a message like the
following appears:
Choose one of the following options:
1
2

Extract software from /mnt/RISC/BASE
Create symbolic link to /mnt/RISC/BASE

Enter your choice:

You must enter a 1 or a 2 to indicate your choice.

1–30 Installation Notes

Processor-Specific Notes

2

This chapter contains ULTRIX and ULTRIX Worksystem Software release notes
specic to the following processors:
MicroVAX II, VAXstation II, and VAXstation II/GPX
VAXstation 2000 and MicroVAX 2000
VAXstation 3520 and VAXstation 3540
VAX 11/780 and 11/785
VAX 6000 Model 400 and Model 500 Series
VAX 8700 VAX 8800 Systems
DECstation/DECsystem 2100 and 3100
DECstation/DECsystem 5000 Model 200 Series
DECsystem 5100
DECsystem 5400
DECsystem 5500
DECsystem 5800 Series

2.1 MicroVAX II, VAXstation II, and VAXstation II/GPX
These notes apply to the MicroVAX II, VAXstation II, and VAXstation II/GPX.

2.1.1

Disabling Bootable Disks on MicroVAX II, VAXstation II, and
VAXstation II/GPX Systems
The boot programs residing in PROM search for a bootable disk using a specic
priority scheme. Removable disks are searched rst, followed by nonremovable
disks. For example, if your system resides on disk unit 1 but disk unit 0 always
boots after a power failure or as a result of typing BOOT at the console prompt
(>>>), you can disable disk unit 0’s boot block.
To disable a particular disk unit’s boot block, log in as root and type the following
command:
# dd if=/.profile of=/dev/rraNa count=1

Be sure to select the drive you want to disable by replacing the italic N in the
preceding example with the actual RA number of the disk you are disabling. Once
you have disabled the disk, the boot program will skip the disabled disk in its search
for a bootable disk.

2.1.2

Console Port Printer Procedure: MicroVAX Systems
The following procedure explains how to attach a console port printer to a
MicroVAX system in a BA23 or BA123 enclosure. This procedure applies to
MicroVAX systems that do not have a multiplexer at the time that the ULTRIX
operating system is installed.
To connect the printer after installing ULTRIX software, follow these steps:
1.

Open the back of the enclosure, if applicable.

2.

Set the HALT ENABLE/DISABLE switch on the back of the system to the
DISABLE position.

3.

Set the console select switch to the proper speed for your printer.

4.

Log in as root or become superuser.

5.

Type these commands:
#
#
#
#
#

6.

2.1.3

cd /dev
MAKEDEV ttycp
ln ttycp lp
chown daemon lp
chmod 660 lp

Use the lprsetup utility or manual printer setup procedure as described in the
Guide to System Environment Setup.

VAX Color Workstations
The following notes apply to VAX color workstations.

2.1.3.1

The Xqdsg Server – The Xqdsg server:
Allows you to specify a plane mask in the gc.
Supports ve types of visuals for the root window. The default can be changed
by using a command line option in /etc/ttys:
-class 
type of Visual for root window,
one of StaticGray, StaticColor, PseudoColor,
GrayScale, or even TrueColor

Provides performance improvements for all lled rectangles (stippled, tiled, and
solid ll) and dashed lines.
2.1.3.2

Console Messages on VAX Color Displays – When the X server is running
and a console window is not provided, system messages that are sent to the console
on 8-plane systems are displayed as blank black lines beginning at the left edge of
the screen. In addition, the XPrompter dialog box or the other portions of the
display might be corrupted. Press the Clear button in the Xprompter dialog
box to remove the corruption.

2–2 Processor-Specific Notes

2.2 VAXstation 2000 and MicroVAX 2000
These notes apply to the VAXstation 2000 and the MicroVAX 2000.

2.2.1

Special File Usage: VAXstation 2000 and MicroVAX 2000
On VAXstation 2000 and MicroVAX 2000 processors, do not create or attempt to
use the /dev/tty00 special le, because it interferes with the operation of the
console device.
For the VAXstation 2000, do not attempt to use the /dev/tty01 special le
because it interferes with the operation of the mouse. You can use this le on the
MicroVAX 2000.
Refer to ss(4) in the ULTRIX Reference Pages for information on how the
/dev/tty?? les map to the four ports on the basic serial line unit (SLU).

2.2.2

Changing Speed on the Console Device
On the VAXstation 2000 and MicroVAX 2000, stty cannot change the speed on
the console device. The console subsystem rmware requires the console terminal to
operate at a xed speed of 9600 bits per second (bits/s) for a CRT or hardcopy
terminal, or 4800 bits/s for a graphics display device, such as a VR260 monitor. The
console device must be set for 8-bit character length with one stop bit and no parity.
The ss driver enforces these restrictions by disallowing some functions of the stty
command, such as changing the line speed on the console port. For more
information, see ss(4) in the ULTRIX Reference Pages. These restrictions apply only
to the console device.

2.2.3

VAX Color Workstations
The following notes apply to VAX color workstations.

2.2.3.1

The Xqdsg Server – The Xqdsg server:
Allows you to specify a plane mask in the gc.
Supports ve types of visuals for the root window. The default can be changed
by using a command line option in /etc/ttys:
-class 
type of Visual for root window,
one of StaticGray, StaticColor, PseudoColor,
GrayScale, or even TrueColor

Provides performance improvements for all lled rectangles (stippled, tiled, and
solid ll) and dashed lines.
2.2.3.2

Console Messages on VAX Color Displays – When the X server is running
and a console window is not provided, system messages that are sent to the console
on 8-plane systems are displayed as blank black lines beginning at the left edge of
the screen. In addition, the XPrompter dialog box or the other portions of the
display might be corrupted. Press the Clear button in the Xprompter dialog
box to remove the corruption.

Processor-Specific Notes 2–3

2.3 VAXstation 3520 and VAXstation 3540
These notes apply to the VAXstation 3520 and VAXstation 3540.

2.3.1

Advanced Installations Required for VAXstation 3520 and 3540
Systems
Advanced installations are required for VAXstation 3520 and 3540 systems. When
selecting optional software subsets, you must choose the subset described as
"VS35XX X11/DECwindows Fonts".

2.3.2

The X Server and Clients
The following notes apply to the X server:
During the initialization of the X server, a cursor block may appear in the
middle of the screen. As soon as the X server has started, this cursor
disappears.
The ico applications from MIT do not generate a faceted display on a 24-plane
VAXstation 3520/3540. This is a problem within the ico application, as the
ico application assumes the default colormap is writable.
If you draw wide dash lines one pixel long with projecting caps, the server may
crash.
Three-dimensional perspective projections from inside objects are not clipped
properly.
On the VAXstation 3520/3540 processors, some incompatibilities exist between
shared-memory transport and 3-dimensional graphic applications. Sharedmemory should not be used if you are running 3-dimensional graphic
applications (local:0 and :0). If you are running 3-dimensional graphics
locally, the best performance occurs when you use iphost:0 over the TCP/IP
network or dnhost::0 when running over the DECnet network.
The print screen option of the session manager does not work on 24-plane
systems. It appears to work but, upon completion, does not create the output
le.
The color intensity labels on the VAXstation 3520/3540 Customize Window
selections of the Session Manager may be clipped.
The Red Intensity, Green Intensity, and Blue Intensity labels for the color
adjustment of the Window/Screen foreground/background/highlight/border
colors are clipped so that only the tops of the letters are visible. To correct the
problem edit the /usr/lib/X11/app-defaults/SessionManager le
and remove the 3 lines listing the *Color Attributes.*Scale.height resources.

2–4 Processor-Specific Notes

2.3.3

The Xgb Server
The Xgb server uses a different font set, font compiler, color database, and
PostScript Previewer than the other servers in this release. To avoid confusion, these
components have been renamed for use with the Xgb server. These names are
resolved during installation, but when running the font compiler or the Previewer you
need to know the new names, which are listed in the following table:

2.3.4

Component

UWS Versions 2.0/2.1

UWS Versions 2.2/4.0/4.1

Fonts

/usr/lib/dwf

/usr/lib/dwf

Font compiler

/usr/bin/dxfc

/usr/bin/dxfc3d

Color database

/usr/lib/X11/rgb.*

/usr/lib/rgb.*

PostScript previewer

/usr/bin/dxpsview

/usr/bin/dxpsview3d

VAX Color Workstations
The following notes apply to VAX color workstations.

2.3.4.1

The Xqdsg Server – The Xqdsg server:
Allows you to specify a plane mask in the gc.
Supports ve types of visuals for the root window. The default can be changed
by using a command line option in /etc/ttys:
-class 
type of Visual for root window,
one of StaticGray, StaticColor, PseudoColor,
GrayScale, or even TrueColor

Provides performance improvements for all lled rectangles (stippled, tiled, and
solid ll) and dashed lines.
2.3.4.2

Console Messages on VAX Color Displays – When the X server is running
and a console window is not provided, system messages that are sent to the console
on 8-plane systems are displayed as blank black lines beginning at the left edge of
the screen. In addition, the XPrompter dialog box or the other portions of the
display might be corrupted. Press the Clear button in the Xprompter dialog
box to remove the corruption.

2.4 VAX 11/780 and 11/785
This note applies to the VAX 11/780 and 11/785.

2.4.1

Boot Command for the VAX 11/780 and 11/785
The Basic Installation Guide omits the console mode bootstrap command in its
instructions for the VAX-11/780 or VAX-11/785 processors in Section 2.11. The
procedure to boot the system should include the boot command, as shown here:
>>> b

Processor-Specific Notes 2–5

2.5 VAX 6000 Model 400 and Model 500 Series Processors
The following notes apply to the VAX 6000 Model 400 and Model 500 Series
processors.

2.5.1

Installation Instructions for the VAX 6000 Model 500
The installation instructions for the VAX 6000 Model 400 in the Basic Installation
Guide and the Advanced Installation Guide support installations of the VAX 6000
Model 500.

2.5.2

Missing Boot Commands
When the installation completes on a VAX 6000 Model 400 and Model 500 Series
processor, the system does not display instructions for updating the console boot
defaults. The following procedure explains how to update the missing console boot
defaults:
1.

During the installation, immediately after the root partition is restored, the
system displays a message like the following:
******BOOTSTRAP COMMAND SEQUENCE******
Enter the following boot sequence at the console mode prompt
after the installation halts the processor:
Make sure that the console TK50 tape is in the drive before entering
the boot command.
>>> b /xmi:e /bi:4 du9
.
.
.

Record the boot parameters. You will need them later on. The boot parameters
in the preceding example are /xmi:e, /bi:4, and du9.
2.

When the processor halts, instead of typing the bootstrap command sequence,
turn the key switch on the front panel of your processor to the position labeled
"Update".

3.

At the console prompt, enter commands with the following syntax to set your
boot defaults:
set boot default /r5:10008 boot_param1 boot_param2 boot_param3
set boot ask /r5:1000b boot_param1 boot_param2 boot_param3
For example, using the boot parameters in the preceding example, you would
type the following commands:
>>> set boot default /r5:10008 /xmi:e /bi:4 du9
>>> set boot ask /r5:1000b /xmi:e /bi:4 du9

4.

Set the key switch to the "Enable" position.

5.

Now when the installation completes, although the instructions for updating the
console boot commands fail to appear, you can boot the default system device
to multi-user mode by typing the following command:
>>> b

2–6 Processor-Specific Notes

You can boot the default system device to single-user mode by typing the
following command:
>>> b ask

2.5.3

Installation Problem
During the installation procedure for VAX 6000 series processors, the installation
procedure displays the disk unit number in the boot command as a hexadecimal
number. If you enter the hexadecimal number as the disk unit number, the boot
command fails.
To work around the problem, convert the disk unit number supplied by the
installation procedure to a decimal number and use that decimal number in the boot
command.

2.6 VAX 8700 and VAX 8800 Systems
This note applies to the VAX 8700 and VAX 8800 Systems.

2.6.1

Maximum Memory Support for VAX 8700 VAX 8800 Systems
A maximum of 448 Mbytes of memory is currently supported on the VAX 8700,
VAX 8800, VAX 8820, VAX 8830, and VAX 8840 systems. Any of these systems
congured with 512 Mbytes of memory will not install ULTRIX/UWS Version 4.1.
If you require full use of the 512 Mbytes of memory for these processors, please
contact your Customer Support Center for assistance.

2.7 DECstation/DECsystem 2100 and 3100
These notes apply to the DECstation/DECsystem 2100 and DECstation/DECsystem
3100.

2.7.1

Getting a Memory Dump from a Hung DECstation/DECsystem 3100
If a DECstation/DECsystem 3100 "hangs", you can press the reset button to enter
console mode. The default action on the DECstation/DECsystem 3100 is for the
reset to reinitialize memory. To prevent this (preserve memory), set the bootmode to
debug by typing the following command in console mode:
>>> setenv bootmode d

Then, should a "hang" occur, you can press reset to return to console mode (with
contents preserved) and obtain a memory dump. The memory dump routine can be
run by typing the go command with the address:
>>> go 0x80030008

If the system is in multi-user mode when the reset button is pressed, then the dump
will occur silently and no messages will be printed. The memory dump will take
several minutes, then the console prompt will reappear. After the dump is completed,
you can reinitialize the system and reboot as follows:
>>> init
>>> auto

Processor-Specific Notes 2–7

Note
When bootmode is set to d it is important to type init before typing
boot or auto when the system has been shutdown to console mode or
reset to console mode. Failure to use the init command may cause the
system boot to fail.

2.7.2

Terminal Emulator Windows
There is a problem on the DECstation/DECsystem 2100 and the
DECstation/DECsystem 3100 that manifests itself when the login shell is /bin/sh
and the user is root. It may take as long as 3 minutes before terminal emulator
windows appear.
You can work around this problem as follows:
1.

Edit the le /.profile.

2.

Move the line beginning with "echo ..." and reinsert it directly after the line
beginning with "stty ..."

The le should now appear similar to the following:
#
@(#).profile
4.3
ULTRIX 11/18/88
stty dec crt new
echo ’erase ^?, kill ^U, intr ^C’
umask 22
PATH=/usr/ucb:/bin:/usr/bin:/etc:/usr/local:/usr/new:/usr/hosts:.
export PATH

2.7.3

Xcfb Server
Under the Xcfb server, endpoints of zero-width capped polylines may be drawn in
the wrong location if the window is partially clipped. When this bug manifests itself,
apparently random singleton points will be seen. The workaround is to ensure that
the window is not clipped (for example, by raising the window to the top of the
stack).

2.7.4

Invoking dxmail from the User Executive
Using dxmail invoked from the User Executive Option disables sending or
receiving mail. If you run the csh shell, you can work around this problem by
invoking dxmail from the command line after putting /usr/new/mh in your
PATH. This solution will not work when using the Bourne shell.

2.8 DECstation/DECsystem 5000 Model 200 Series
The following notes apply to the DECstation/DECsystem 5000 Model 200 series.

2.8.1

Booting the DECstation/DECsystem 5000 Model 200 Series
Processor
Due to changes in the rmware of the DECstation/DECsystem 5000 Model 200
series processors to enhance support for the TURBOchannel, the boot commands
have changed. As a result, the boot commands for the DECstation/DECsystem 5000

2–8 Processor-Specific Notes

Model 200 series processors that are listed in the Basic Installation Guide, Guide to
System Shutdown and Startup, Guide to Diskless Management Services, and that are
displayed on the console during installation are no longer correct.
After your new rmware is installed, even if you are not reinstalling the ULTRIX
operating system, you must immediately reset the environmental variables for the
boot and haltaction commands.
Until the software and documentation can be revised, please refer to this document
when booting your DECstation/DECsystem 5000 Model 200 series processor.
The following sections explain the procedures for:
Determining the slot and unit numbers of your boot device
Setting the console environmental variables
Booting from a system disk
Booting from a TK50 tape
Booting from a CDROM disk kit
Booting from the network
Booting during the installation
2.8.1.1

Determining the Slot and Device Numbers of Your Boot Device – If you are
not reinstalling the ULTRIX operating system after your new rmware has been
installed, you will need to determine both the slot number of the controller attached
to your boot device and the device number of your boot device in order to change the
boot variable.
The instructions in this section assume that if you have multiple disk drives,
CDROM drives, or tape drives, you know which drive is your boot device.
The instructions in this section also assume that you are booting your system from a
logical device controller with a controller number of 0 (0 is the default boot
controller number).
This is the most common conguration.
If you are booting from other than controller 0, check the cabling of your hardware to
determine which controller you are booting from or, if you are up and running, check
the SYSTEM DISK SELECTION section in the install.log le in the
/usr/var/adm directory. Then refer to Section 2.8.1.7.1, Installing as a
Standalone, or Section 2.8.1.7.2, Installing as a Diskless Client, of this document for
instructions on how to determine the slot number of the controller attached to your
boot device.

2.8.1.1.1

Determining the Slot Number (Default) – To determine which controllers and
devices are congured on your system, type the following command at the console
prompt:
>> cnfg

The cnfg command displays the options present on the system, as follows:
7:KN0Z-AA
6:PMAD-AA
5:PMAZ-AA

DEC
DEC
DEC

V5.3a
V5.3a
v5.3a

TCF0
TCF0
TCF0

(16 MB)
(enet:08)
(SCSI=7)

Processor-Specific Notes 2–9

2:PMAZ-AA
1:PMAG-AA

DEC
DEC

v5.3a
T3.0a

TCF0
TCF0

(SCSI=7)
(PXG--D=24)

The rst column always displays slot numbers of the device controllers; the slot
numbers differ with each conguration.
However, when you boot your system from a logical device controller with a
controller number of 0 (the default boot controller), the default slot number for the
default SCSI boot device is always 5 and the default slot number for the default
network boot device is always 6.
Table 2-1 lists the boot information for default SCSI devices that are attached to the
controllers identied by the letters "SCSI" in the fth column of the cnfg command
display. Table 2-2 lists the boot information for default network devices that are
attached to the controllers identied by the letters "enet" in the fth column of the
cnfg command display.
Table 2-1: Default SCSI Devices
Boot
Devices

cnfg
Controller
Identifiers

Device
Name

Default
Slot
Number

Default
Controller
Number

Tape

SCSI

tz

5

0

Disk

SCSI

rz

5

0

CDROM

SCSI

rz

5

0

Table 2-2: Default Network Devices

2.8.1.1.2

Boot
Devices

cnfg
Controller
Identifiers

Device
Name

Default
Slot
Number

Default
Controller
Number

Network Options

enet

–-

6

0

Determining the Boot Device Number – To determine the device number of
your boot device, type a command with the following syntax:
cnfg slot_number
For example, to determine the device number of a SCSI disk drive with a controller
number of 0 and a slot number of 5, type the following command:
>> cnfg 5

2–10 Processor-Specific Notes

The disk drive is identied by the letters "rz" in the command’s display and the
device number immediately follows the "rz" (rz3, in the following example):
5:
PMAZ-AA
DEC
V5.3a
TCF0
(SCSI = 7)
----------------------------------------------------------DEV
PID
VID
REV
SCSI DEV
--------------------------------------------------------------------------------------------------------------------rz3
RZ56
(C)DEC
DEC
0200
DIR
SEQ

You are then able to boot your system or set your system’s environmental boot
variable, since you know that the slot number of controller 0 is 5, the device name is
rz, and device number of the boot device attached to that controller is 3 (rz3).
Note
If the cnfg slot_number command shows that you have multiple devices
congured on the same controller, you will have to know which device is
the boot device. If you do not know which device is the boot device,
consult your system administrator.

2.8.1.2

Setting the Console Environmental Variables – The following sections
explain how to set the console environmental variables for the boot and
haltaction commands.
After your new rmware is installed, even if you are not reinstalling the ULTRIX
operating system, you must immediately reset the environmental variables for the
boot and haltaction commands. You can also set other console environmental
variables. To get a listing of the variables, type:
>> printenv

For more information about the variables and for instructions on how to set each, see
your hardware manual.
2.8.1.2.1

Setting the boot Variable – You can dene the default bootpath and enable or
disable automatic boot operations by setting specic console environmental variables,
depending on whether you will be booting from the system disk or from the network.
Setting the System Disk Boot Variable

The boot variable sets the default boot device. To set the boot variable for
the system disk, use a command with the following syntax:
setenv boot slot_number/device_name_number/unix_kernel [-a]
Replace slot_number with the slot number of the disk controller that is to be the
default boot device. Replace device_name_number with the name and the
device number of the default boot device. Replace unix_kernel with the
pathname of the UNIX kernel that is to be the default kernel.
Use the -a switch to enable booting to multi-user mode by default. Please note
that if you use the -a switch, everything after the word "boot" must be
surrounded by double quotation marks (").

Processor-Specific Notes 2–11

Multiuser Mode – To set the boot environmental variable to boot to multi-

user mode by default, you must set the -a switch and surround everything after
the word "boot" in double quotation marks (").
For example, to set the default boot device to an rz disk at slot 0, drive 1, with
vmunix as the default kernel, and to set the default to boot to multi-user mode,
type the following command:
>>

setenv boot "0/rz1/vmunix -a"

Single-user Mode – To set the boot environmental variable to boot to

single-user mode by default, do not set the -a switch.
For example, to set the default boot device to an rz disk at slot 0, drive 1, with
vmunix as the default kernel, and to set the default to boot to single-user
mode, type the following command:
>> setenv boot 0/rz1/vmunix

Setting the Network Boot Variable

The boot variable sets the default boot device. To set the boot variable for
the network, use a command with the following syntax:
setenv boot slot_number/mop [-a]
Replace slot_number with the slot number of the module that is to be the
default boot device.
Use the -a switch to enable booting to multi-user mode by default. Please note
that if you use the -a switch, everything after the word "boot" must be
surrounded by double quotation marks (").
Multiuser Mode – To set the boot environmental variable to boot to multi-

user mode by default, you must set the -a switch and surround everything after
the word "boot" in double quotation marks (").
For example, to set the default boot device to the network at slot 0, and to set
the default to boot to multi-user mode, you would type the following command:
>>

setenv boot "0/mop -a"

Single-user Mode – To set the boot environmental variable to boot to

single-user mode by default, do not set the -a switch. For example, to set the
default boot device to the network at slot 0, and to set the default to boot to
single-user mode, type the following command:
>> setenv boot 0/mop

2.8.1.2.2

Setting the haltaction Variable – The haltaction variable enables or
disables automatic boot operation. To set the haltaction variable, use a
command with the following syntax:
setenv haltaction variable

2–12 Processor-Specific Notes

To enable automatic boot mode using the boot variable, set the haltaction
variable to b by typing the following command:
>> setenv haltaction b

Note
If you wish to enable automatic rebooting to multi-user mode, you must
make sure that when you initially set the boot variable, you use the -a
switch.
To disable the automatic boot operation (that is, to suppress an automatic reboot after
the RESET button has been depressed or as the result of a power on), set the
haltaction variable to h by typing the following command:
>> setenv haltaction h

To force the system to restart when the reset button is pressed, and thereby do a
memory dump, set the haltaction variable to r by typing the following
command:
>> setenv haltaction r

2.8.1.3

Booting from a Disk – You can boot the system disk or an alternate disk or
alternate kernel to either single-user or multi-user mode.

2.8.1.3.1

Booting from the System Disk – To boot the system disk to single-user or
multi-user mode, type the following command:
>> boot

The system boots the device that was set in the boot console environmental variable
described previously.
Note
If you wish to boot the default disk or kernel image to multi-user mode,
you must make sure that when you initially set the boot variable, you use
the -a switch.

2.8.1.3.2

Booting from an Alternate Disk or Kernel – To boot an alternate disk or
kernel image to single-user or multi-user mode use a command with the following
syntax:
boot slot_number/device_name_number/unix_kernel [-a]
Replace slot_number with the slot number of the controller attached to your boot
device. Replace device_name_number with the name and the number of the boot
device. Replace unix_kernel with the pathname of the alternate kernel. Use the -a
switch to enable booting to multi-user mode.
For example, to boot an alternate kernel at slot 0, drive 5 to multi-user mode, type
the following command:
>> boot 0/rz5/vmunix.new -a

Processor-Specific Notes 2–13

2.8.1.4

Booting from a TK50 Tape – When doing an installation or, when booting the
standalone kernel for system management tasks, you may have to boot a TK50 tape.
After installing the TK50 boot tape, type a command with the following syntax to
determine the device number of the drive for your device:
cnfg slot_number
For example, if the TK50 is attached to a SCSI controller at slot 5 (this is the most
common conguration), type the following command:
>> cnfg 5

The console subsystem displays information that identies the device number of your
tape drive and various other assignments. Use this information to dene the tape
drive device number when you enter the boot command later.
After displaying identication information, the console subsystem reissues its prompt.
Use a command with the following syntax to boot your system:
boot slot_number/tzdevice_number
Replace slot_number with the slot number of the tape controller. Replace
device_number with the device number of the SCSI tape drive from which you are
booting.
For example, to boot a SCSI tape (tz) at slot 5, drive 5 to single-user mode, type the
following command:
>> boot 5/tz5

2.8.1.5

Booting from a CDROM Optical Disk Kit – If your CDROM optical disk is not
already in its caddy, follow the instructions in the hardware manual for inserting the
optical disk into the caddy.
To boot the system, load the CDROM optical disk into the drive and wait for the
drive to be on line and ready.
Use a command with the following syntax to determine the device number of the
drive for your device:
cnfg slot_number
For example, if the CDROM is attached to a SCSI controller at slot 5 (this is the
most common conguration), type the following command:
>> cnfg 5

A display appears that shows what is assigned to each device number on your
system. Use a command with the following syntax to boot your system:
boot slot_number/rzdevice_number/vmunix [-a]
Replace slot-number with the slot number of the CDROM controller. Replace
device-number with the device number of your RRD40 optical disk drive.
Use the -a switch to enable booting to multi-user mode.
For example, to boot the system to multi-user mode from RRD40 optical disk drive
number 4 on slot number 1, type the following command:
>> boot 1/rz4/vmunix -a

2–14 Processor-Specific Notes

2.8.1.6

Booting from the Network – You boot your system from the network when you
are:
Booting a diskless system
Initiating an installation from a remote server
Booting a standalone kernel from a remote server, in order to perform system
management tasks
To boot the system from the network, use a command with the following syntax:
boot slot_number/mop [-a]
Replace slot_number with the slot number of the network controller. Use the -a
switch to enable booting to multi-user mode.
For example, to boot from the network to multi-user mode on slot number 6, type the
following command:
>> boot 6/mop -a

2.8.1.7

Booting During the Installation – This section explains how to boot your system
from the system disk or, if your system is a diskless client, from the kernel residing
on the diskless server during the installation of your ULTRIX operating system.
During the installation, the bootstrap command sequence is displayed. You are asked
to type this command sequence in order to boot your system from the system disk to
continue the installation or, if your system is a diskless client, from the kernel
residing on the diskless server.
Because of changes made to the rmware to enhance support for the TURBOchannel,
both the syntax of the bootstrap command sequence and the slot number that are
displayed are incorrect.
The following instructions explain how to determine the correct slot number for your
system conguration so that you can type the correct bootstrap command sequence
and continue the installation.

2.8.1.7.1

Installing as a Standalone Machine – During the installation, after the system
loads the kernel image into main memory and nishes conguring, a bootstrap
command sequence like the following is displayed:
*** BOOTSTRAP COMMAND SEQUENCE ***
Issue the following console commands to set your default bootpath
variable and to boot your system disk:
>> setenv bootpath rz(0,0,0)vmunix
>> boot
The system name assigned to your processor is calypso.
.
.
.

This bootstrap command sequence is incorrect. To determine the correct bootstrap
command sequence, you need to note the controller number and the device number
that are displayed. The controller number enables you to determine the correct slot
number of the controller that is attached to your disk. You will use the device
Processor-Specific Notes 2–15

number, exactly as it is displayed, to reboot your system. The controller number and
the device number used in the preceding example are identied for you in Figure 2-1.
Figure 2-1: Bootstrap Command Sequence: Standalone
Controller number
>> setenv bootpath rz(0,0,0)vmunix
>> boot
Device number

Write down both the controller number and the device number displayed by the
bootstrap command sequence. You will need them later.
Controller Number Is 0

If the bootstrap command sequence that displays on your system console
contains a controller number of 0, then the correct slot number is 5. This is the
most common conguration.
Type the following bootstrap command sequence to reboot your system when
the incorrect bootstrap command sequence appears on your console:
>> setenv boot "5/rz0/vmunix -a"
>> boot

After you type the bootstrap command sequence, the system reboots and your
installation continues. Refer to the section on the DECstation/DECsystem 5000
Model 200 series in the Basic Installation Guide and the Advanced Installation
Guide to complete the installation.
Controller Number Is Greater Than 0

If the bootstrap command sequence that displays on your system console
contains a controller number greater than 0, then you have more than one SCSI
controller congured on your system and you have chosen to boot from a
system disk connected to a SCSI controller other than the default SCSI
controller.
To determine the slot number of the SCSI controller of the system disk, follow
these steps:
1.

When the system prompts you to type the bootstrap command sequence,
type the following command at the console instead:
>> cnfg

The cnfg command displays the options present on the system, as
follows:
7:KN0Z-AA
6:PMAD-AA
5:PMAZ-AA
2:PMAZ-AA
1:PMAG-AA

DEC
DEC
DEC
DEC
DEC

V5.3a
V5.3a
v5.3a
v5.3a
T3.0a

TCF0
TCF0
TCF0
TCF0
TCF0

(16 MB)
(enet:08)
(SCSI=7)
(SCSI=7)
(PXG--D=24)

The rst column displays slot numbers. Note the slot numbers for SCSI
options; SCSI options are identied by the letters "SCSI" in the fth
column.

2–16 Processor-Specific Notes

In the preceding example, the SCSI controller slot numbers that
correspond to the SCSI options are 5 and 2.
2.

Since your system disk is on a SCSI controller with a controller number
greater than 0 (0 is the default controller number for the boot device), you
can disregard slot number 5. Slot number 5 always corresponds to the
default SCSI controller.
Of all the SCSI controllers that are congured on your system, the lowest
corresponding SCSI slot number displayed by the cnfg command,
excluding slot number 5, corresponds to SCSI controller 1. The next
highest SCSI slot number corresponds to SCSI controller number 2, and so
forth.
In the preceding example, the system disk is attached to SCSI controller 1
at slot number 2. The device number, identied in Figure 2-1, is 0.

3.

You would therefore type the following bootstrap command sequence to
reboot your system during the installation:
>> setenv boot "2/rz0/vmunix -a"
>> boot

The syntax for this command sequence is as follows:
setenv boot "slot_number/rzdevice_number/vmunix -a"
boot
After you type the correct bootstrap command sequence, the system reboots and
your installation continues. Refer to the section on the DECstation/DECsystem
5000 Model 200 series in the Basic Installation Guide and the Advanced
Installation Guide to complete the installation.
2.8.1.7.2

Installing as a Diskless Client – During the installation, after the system loads
the kernel image into main memory and nishes conguring, a bootstrap command
sequence like the following is displayed:
*** BOOTSTRAP COMMAND SEQUENCE ***
After the system halts, type the following commands to set the
default bootpath to the network and reboot.
>> setenv bootpath mop(0)
>> boot
The system name assigned to your processor is saturn.
.
.
.

This bootstrap command sequence is incorrect. To determine the correct bootstrap
command sequence, you need to note the controller number that is displayed; the
controller number enables you to determine the correct slot number of the network
controller you will use to reboot your system. The controller number in the
preceding example is identied for you in Figure 2-2.

Processor-Specific Notes 2–17

Figure 2-2: Bootstrap Command Sequence: Diskless
Controller number
>> setenv bootpath mop(0)
>> boot

Controller Number Is 0

If the bootstrap command sequence that displays on your system console
contains a controller number of 0, then the correct slot number is 6. This is the
most common conguration.
Type the following bootstrap command sequence to reboot your system when
the incorrect bootstrap command sequence appears on your console:
>> setenv boot "6/mop -a"
>> boot

After you type the bootstrap command sequence, the system reboots and your
installation continues. Refer to the section on the DECstation/DECsystem
5000 Model 200 series in the Basic Installation Guide and the Advanced
Installation Guide to complete the installation.
Controller Number Is Greater Than 0

If the bootstrap command sequence that displays on your system console
contains a controller number greater than 0, then the diskless server has more
than one network controller congured on its system and you are booting from
a network controller other than the default network controller. To determine
the slot number of the network controller from which you are booting follow
these steps:
1.

When the system prompts you to type the bootstrap command sequence,
type the following command at the console instead:
>> cnfg

The cnfg command will display the options present on the system, as
follows:
7:KN0Z-AA
6:PMAD-AA
5:PMAZ-AA
2:PMAZ-AA
1:PMAD-AA

DEC
DEC
DEC
DEC
DEC

V5.3a
V5.3a
v5.3a
v5.3a
T3.0a

TCF0
TCF0
TCF0
TCF0
TCF0

(16 MB)
(enet:08)
(SCSI=7)
(SCSI=7)
(enet:08)

The rst column displays slot numbers. Note the slot numbers for
network options; all network options are identied by the letters "enet" in
the fth column.
In the preceding example, the slot numbers that correspond to the network
controllers are 6 and 1.
2.

Since you are to boot from a network controller that has a controller
number greater than 0 (0 is the default controller number for boot devices),
you can disregard slot number 6. Slot number 6 always corresponds to the
default network controller.

2–18 Processor-Specific Notes

Of all the network controllers that your diskless server has congured on
its system, the lowest corresponding network slot number displayed by the
cnfg command, excluding slot number 6, corresponds to network
controller 1. The next highest network slot number corresponds to
network controller number 2, and so forth.
In the preceding example, you are booting from network controller 1 at
slot number 1.
3.

You would therefore type the following bootstrap command sequence to
reboot your system during the installation:
>> setenv boot "1/mop -a"
>> boot

The syntax for this command sequence is as follows:
setenv boot "slot_number/mop -a"
boot
After you type the correct bootstrap command sequence, the system reboots and your
installation continues. Refer to the section on the DECstation/DECsystem 5000
Model 200 series in the Basic Installation Guide and the Advanced Installation Guide
to complete the installation.

2.8.2

Installation Instructions for the Greyscale Monitor
When installing ULTRIX/UWS Version 4.1 on a DECstation/DECsystem 5000
Model 200PX with a color frame buffer display, you will be asked, during the server
subset installation, if you are using a Greyscale Monitor. If your monitor is a
VR262, answer yes (y). If not, answer no (n).

2.8.3

Interrupting the ULTRIX Operating System on a
DECstation/DECsystem 5000 Model 200 Series Processor
If you set the haltaction variable to r (restart), then when you press the restart
button, the system will dump core and reboot, instead of halting and clearing
memory.
Note that the dump may be silent.
To set the haltaction variable to restart, enter the following command at the
console:
>>> setenv haltaction r

If the system "hangs" or drops into console mode without doing a memory dump,
you can start the memory dump routine manually.
If system "hangs", press the reset button to enter console mode. By default, the
haltaction variable is set to reinitialize memory. To preserve memory, set the
haltaction variable to debug mode by typing the following command at the
console:
>>> setenv haltaction d

Processor-Specific Notes 2–19

With haltaction set this way, if the system is "hung" you can press the reset
button to enter console mode (with memory contents preserved). The crash dump
code can then be run by typing the go command with a special address (the kernel
start address + 8) that will call the memory dump routine, as follows:
>>> go 0x80030008

If the system is in multi-user mode when the reset button is pressed, the dump will
occur silently and no messages will be printed. The memory dump will take several
minutes, then the console prompt will reappear. After the dump is completed, you
can reinitialize the system and reboot as follows:
>>> init
>>> boot

Note
When the haltaction variable is set to d it is important to type init
before boot when the system has been shutdown to console mode, or
reset to console mode. Failure to use the init command may cause the
system boot to fail.

2.8.4

Custom Kernel Problem with DECstation/DECsystem 5000 Model
200 Series Processors
If you congure a DECstation/DECsystem 5000 to swap on boot, the machine will
not boot because the asc driver was left out of the genericconf table in the le
machine/common/conf.c. This problem does not affect the generic kernel
( genvmunix ), only custom kernels that are congured as follows:
config vmunix swap on boot

To avoid this problem, you can explicitly congure the root, swap, and dump
devices. The following example shows the devices on unit number 21; you would
substitute the unit number of your device:
config vmunix root on rz21a swap on rz21b dumps on rz21b

If you need to build a kernel for a conguration that must be bootable from multiple
disks, you must rst modify the le machine/common/conf.c as follows and
then rebuild the kernel:
1.

Copy the le conf.c to conf.c.orig.

2.

Add an entry for the SCSI driver ascdriver after the entries for int scsidriver and
int siidriver:
int scsidriver;
int siidriver;
int ascdriver;/* add this line */

3.

Add the following lines after the existing entry for SII (shown below):
#if NSII > 0
extern struct uba_driver siidriver;
#endif
/* add the next three lines */
#if NASC > 0
extern struct uba_driver ascdriver;
#endif

2–20 Processor-Specific Notes

4.

Add an entry for the ASC for the BTD type after the entry for SII:
#define BTD$K_SII0
#define BTD$K_ASC0/* add this line */

5.

Add an entry for the ASC driver at the end of the genericconf table:
#if NSII > 0
{ (caddr_t)&siidriver,"rz",makedev(21,0),BTD$K_SII },
#endif
/* add the next three lines */
#if NASC > 0
{ (caddr_t)&ascdriver,"rz",makedev(21,0),BTD$K_ASC },
#endif

6.

Rebuild the kernel.
For information on rebuilding your kernel, see Chapter 2 of the Guide to
Configuration File Maintenance.

2.8.5

Writing, Adding, and Configuring a Device Driver for the
TURBOchannel
The TURBOchannel is the system I/O bus on the DECstation/DECsystem 5000
Model 200 Series processor. This section discusses how to write and add a device
driver for the TURBOchannel and provides information on the conguration of a
user-written device driver for the TURBOchannel.

2.8.5.1

Writing a Device Driver – The device driver for the TURBOchannel has the same
basic structure as a user-written device driver for a qbus or unibus device. You must
be certain to provide the following information when creating a user-written driver:
Dene the uba_driver structure as shown in /sys/io/uba/ubavar.h.
All user-written drivers on the TURBOchannel must dene and use the uba
data structures; however, the user-written driver does not have to access the
uba mapping registers because the TURBOchannel is 32-bits wide.
Include the TURBOchannel header le, ../io/tc/tc.h, in addition to the
header les normally included.
Declare as volatile any variable or data structure that can be changed by a
controller or processor other than the system CPU. Hence, variables that
correspond to hardware device registers and any data structures or variable that
is shared with a controller or coprocessor should be declared as volatile.
Use the kernel routines. The callable kernel routines for the TURBOchannel
include the following:
tc_enable_option(ui)

This routine accepts as a parameter a pointer to a
uba_device structure or a pointer to a
uba_ctlr structure. This routine enables the
device’s interrupt line to the processor. Usually,
a device driver does not use this routine;
however, it must be used if the device has
interrupts intermittently enabled and disabled
during conguration or operation.

Processor-Specific Notes 2–21

2.8.5.2

tc_disable_option(ui)

This routine accepts as a parameter a pointer to a
uba_device structure or a pointer to a
uba_ctlr structure. It disables the device’s
interrupt line to the processor. Usually, a device
driver does not use this routine; however, it must
be used if the device has interrupts intermittently
enabled and disabled during conguration or
operation.

bufflush(bp)

If the device driver performs DMA to host
memory (as opposed to programmed I/O), the
driver must explicitly ush the data cache,
because a hardware cache coherency mechanism
does not exist. The driver should call this routine
after the DMA is complete, but before releasing
the buffer (bp) to the system. The buffer pointer
is specied by bp.

wbflush()

When the driver writes to a hardware device
register, the write is delayed by the system write
buffer. A subsequent read of that register does
not wait for the write to complete. To ensure
that a write to I/O space is complete, this routine
should be called without arguments.

Adding a User-Written Driver – The following steps describe how to add a userwritten driver for the TURBOchannel to the ULTRIX operating system:
1.

Edit the le /sys/data/tc_option_data.c and create a new entry to the
tc_option table. This table maps the device name in the ROM on the hardware
device module to the driver in the ULTRIX kernel. The
/sys/data/tc_option_data.c le contains instructions on where to
place the new entry. Use the format of the default entries as a guide to format
the new entry.

2.

Add an entry to the system conguration le,
/sys/conf/mips/YOURHOST. This entry must include the name of the
device, the device unit number, and the name of the routine that handles the
device’s interrupts.

3.

Add an entry for the driver le to the le /sys/conf/mips/files.mips
as Notbinary. For example:
io/tc/somedev.c

optional somedev device-driver Notbinary

4.

Create an entry in the device conguration table
/sys/machine/mips/conf.c to map the /dev special le entry to the
driver routines in the kernel.

5.

Compile and link the driver, then rebuild the kernel.

For information on how to rebuild the kernel, see the Guide to Configuration File
Maintenance.

2–22 Processor-Specific Notes

2.8.5.3

Configuration of the TURBOchannel User-Written Device Driver – During
system startup, the ULTRIX operating system probes the TURBOchannel option
slots to determine which slots contain an IO module. Each option slot is at a xed
and known physical address; hence, the ULTRIX operating system can locate the
option slots by their known physical address. Each IO module must have a ROM
with a known format. To determine the name and the width (number of slots
occupied) of the IO module, the ULTRIX operating system reads the ROM
associated with that IO module.
Once the IO module name is determined, the ULTRIX operating system searches the
tc_option data table to acquire the device or controller name as it appears in the
system conguration le. The ULTRIX operating system compares the names of the
devices (both optional and xed) found in the IO slots with the device names
specied in the conguration le (in the ub[md]init tables). Each conguration le
entry species the interrupt routine name for the device. This information is placed
in the ub[md]init tables during the conguration process.
For every device name that matches, an entry is placed in an internal table (tc_slot).
These entries map the TURBOchannel slot numbers to device interrupt routines. The
internal table contains a structure entry for each of the TURBOchannel IO options.
All structure entries specify the name of the device, the slot number, the option
width, the interrupt routine, unit number, and the base physical address of the device.
This allows the operating system to call the correct interrupt handling routine for any
slot that interrupts.
If the ULTRIX operating system encounters a module name in the module ROM that
is not specied in the tc_option data table, the system displays a warning message
which states the device is unknown. Known devices, such as SCSI and LANCE, are
set up automatically in the tc_option data table. You may also include additional
mappings for other module names to conguration le names.
The ULTRIX operating system calls the probe, attach, and slave routines
through the ibus conguration routines for properly congured and recognized
devices and controllers. The ibus conguration routines obtain the names of the
probe, attach, and slave routines from the device drivers’ uba_driver
structure.
Adapters are handled similarly to devices and controllers. Each adapter has an
adapter entry line in the system conguration le, but an interrupt routine name is not
attached to it. The system autoconguration code searches for the adapter module
name in the tc_option data table to obtain the name of the adapter conguration
routine to call. In one of the arguments passed to the adapter conguration routine is
an address where the adapter conguration routine then places the address of the
interrupt handling routine.
The tc_option data table and the system conguration le provide a exible
mechanism for adding third party devices and device drivers. All device drivers must
conform to the standard ULTRIX operating system conventions. For example, all
drivers must have a uba_driver struct specifying the name of the device probe
routine, the attach routine, the device name, and so on. The following example
shows the structure for the Lance driver:
struct uba_driver lndriver =
lnprobe, 0, lnattach, 0, lnstd, "ln", lninfo };

Processor-Specific Notes 2–23

The corresponding entry in the system conguration le appears as follows:
device

ln0

at ibus?

vector lnintr

For more information on system conguration, see the ULTRIX Guide to
Configuration File Maintenance.

2.8.6

Xcfb Server
Under the Xcfb server, endpoints of zero-width capped polylines may be drawn in
the wrong location if the window is partially clipped. When this bug manifests itself,
apparently random singleton points will be seen. The workaround is to ensure that
the window is not clipped (for example, by raising the window to the top of the
stack).

2.8.7

Setting an Application’s Visual Class
Some X11 applications that run on an 8-bit X server may not run properly on a
DECstation 5000 with a 24-bit frame buffer. If the application crashes with a
BadMatch protocol error, the problem may be related to the way the application sets
its Visual class. Many applications simply select the default Visual with the
DefaultVisual macro.
The default Visual class on 8-plane systems is PseudoColor. The default Visual
class on 24-plane systems is TrueColor. TrueColor uses a read-only,
statically allocated, direct color map.
One quick workaround is to change the default visual class with the -class option
on the Xtm(8X) command line to PseudoColor. However, it is likely you will
also need to modify some applications to ensure that they select the appropriate
visual on every X server. There is a good tutorial that describes how to approach this
problem entitled ‘‘Visualizing X11 Clients’’ by David Lemke and David Rosenthal.
It is available in the doc/tutorials/visuals directory on the X11 R3 and R4
release tapes. Section 7.7 of the ‘‘Xlib Programming Manual’’ by Adrian Nye
(O’Reilly and Associates, Sebastopol, CA) also contains some explanation of this
problem.

2.8.8

PostScript Previewer
Due to a lack of server resources, the PostScript Previewer’s normal mode of
operation is not supported by the PX, PXG, or PXG-turbo hardware congurations.
The following procedure can be used to preview les on these systems:
1.

Invoke the previewer without specifying a PostScript le on the command line.
# dxpsview

2.

Select the Watch Progress option from the Options pull-down menu. This tells
the Previewer to interpret the PostScript commands directly into the window
(normally it draws to a pixmap, and copies the image to the window).

3.

Select the le to preview using commands from the File pull-down menu.

2–24 Processor-Specific Notes

2.8.9

Display PostScript
Halftoning in Display PostScript does not work correctly on PXG-turbo models and
8-bit color PXG models.

2.8.10

Image Text
Prior to using image text, the ll-style in the current graphics context must be set to
FillSolid. In a future release, image text will ignore the ll-style specied in the
graphics context and use a solid ll-style (the normal procedure for image text
described in the Xlib documentation).

2.8.11

Exceeding the Per-Process Virtual Size Limit in the
DECstation/DECsystem 5000 Model 200PXG Server
Opening multiple double-buffered and/or Z-buffered windows may crash the server.
For each double buffer (or Z-buffer) of a window, the server allocates virtual memory
adequate to hold the buffer’s contents, so that the associated VRAM can be freed for
other uses (such as pixmaps).
The amount of virtual memory required for several large buffered windows can be
prohibitive. A full-screen Z-buffered window, for example, requires 4.8 megabytes
of memory. A double-buffered version of the same window requires twice this
amount (4.8 megabytes for each buffer). The default storage limit is 65 megabytes
(text segment + data segment + stack size) per process, so creating eight such
windows will cause the sbrk() system call to fail, crashing the server.
To avoid the problem, raise the per-process data segment size limit, dened in the
kernel conguration le by MAXDSIZ.

2.8.12

Off-Screen Memory Limitations Involving Large Pixmaps
Simultaneous use of multiple large pixmaps results in slowed performance.

2.9 DECsystem 5100
The following notes apply to the DECsystem 5100.

2.9.1

Installation Instructions for the DECsystem 5100
The installation instructions for the DECstation 3100 in the Basic Installation Guide
and the Advanced Installation Guide support installations of the DECsystem 5100,
except that the DECsystem 5100 has a new show device command.
To see what devices are congured on the DECsystem 5100, type the following
command at the console:
>> conf

Processor-Specific Notes 2–25

2.9.2

Default Boot Path
If the boot command is mistyped, the default boot path is used to boot the system.
For example, to specify a boot path other than the default boot path, type the boot
command with the -f option as follows:
>>

boot -f rz(0,1,0)genvmunix

However, if you mistype the preceding boot command, omitting the -f, instead of
failing, the system will still boot based on the environment variable bootpath.

2.9.3

Backplate Labeling
The factory labeling of the console and terminal ports on the backplate of the
DECsystem 5100 does not refer to the device major and minor numbers of the device
special les made at installation time.
Please note that the device special le names may be changed after installation by the
system manager, but the major and minor numbers will always be tied to the
hardware line number.
Figure 2-3 shows how each console and terminal port corresponds to the device
major and minor numbers and the device special les made at installation time.

Figure 2-3: DECsystem 5100 Console and Terminal Ports

B2

B1

#

3
(0,3)

1
(0,1)

0
(0,0)

2
(0,2)
ZK−0224U−R

Table 2-3 shows the correspondence between the labels on the backplate of your
DECsystem 5100 and the corresponding device major and minor numbers of the
device special les made at installation time.

2–26 Processor-Specific Notes

Table 2-3: DECsystem 5100 Console and Terminal Ports
Label

Installed ULTRIX
Device Name

Major/Minor Number

0

/dev/console

0,0

1

/dev/tty00

0,1

2

/dev/tty01

0,2 (modem support)

3

/dev/tty02

0,3

Figure 2-4 shows how each console and terminal port corresponds to the device
major and minor numbers and the device special les with the KN230 asynchronous
communication option card added.

Figure 2-4: DECsystem 5100 KN230 with Async Terminal Ports

10
(0,10)

9
(0,9)

8
(0,8)

11
(0,11)

6
(0,6)

7
(0,7)

5
(0,5)

4
(0,4)

#

3
(0,3)

1
(0,1)

2
(0,2)

0
(0,0)

ZK−0226U−R

Table 2-4 shows the labels on the backplate of your DECsystem 5100 and the
corresponding device major and minor numbers of the device special les if you have
added the KN230 asynchronous communication option card.
Table 2-4: DECsystem 5100 KN230 with Async Terminal Ports
Label

KN230 ULTRIX
Device Name

Major/Minor Number

0

/dev/console

0,0

1

/dev/tty00

0,1

Processor-Specific Notes 2–27

Table 2-4:

(continued)

Label

2.9.4

KN230 ULTRIX
Device Name

Major/Minor Number

2

/dev/tty01

0,2 (modem support)

3

/dev/tty02

0,3

4

/dev/tty03

0,4

5

/dev/tty04

0,5

6

/dev/tty05

0,6 (modem support)

7

/dev/tty06

0,7

8

/dev/tty07

0,8

9

/dev/tty08

0,9

10

/dev/tty09

0,10

11

/dev/tty10

0,11

Configuring Terminal Devices for the KN230 Asynchronous
Communications Card
To congure terminal devices for the KN230 asynchronous communications card,
follow these steps:
1.

Log in as root or become superuser.

2.

Rebuild the kernel to add support for the two new devices which reside on the
KN230 asynchronous option card. To rebuild your kernel, type the following
command, replacing the italic HOSTNAME with the name of your system typed
in all capital letters:
# /etc/doconfig -c HOSTNAME

The -c option species that the new kernel be built using the conguration le
that already exists in the /sys/conf/mips directory.
The doconfig command allows you to edit the conguration le. The
following prompt appears immediately after you invoke the doconfig
command with the -c option:
Do you want to edit the configuration file (y/n) [n]?
Answer yes to this prompt.
3.

The doconfig program then places you in the ed editor. When you are in
the ed editor, type the following sequence of commands to add the necessary
lines to the configuration le:
/mdc0
a
device
device
.
w
q

2–28 Processor-Specific Notes

mdc1 at ibus?
mdc2 at ibus?

vector mdcintr
vector mdcintr

4.

After you exit the ed editor, the doconfig program displays the following
message as it begins to rebuild your kernel:
*** PERFORMING SYSTEM CONFIGURATION ***
.
.
.
When the doconfig program nishes, it reports the location of the newly
built kernel as follows:
The new kernel is /sys/MIPS/HOSTNAME/vmunix

5.

Move the new kernel to the root directory. Type the following command,
replacing the italic HOSTNAME with the name of your processor in all capital
letters:
# mv /sys/MIPS/HOSTNAME/vmunix /vmunix

6.

The terminal devices are activated when you reboot your system using the new
kernel. To reboot your system, use the shutdown command with the -r
option and alert your users that the system will be going down, as follows:
# /etc/shutdown -r +30 "Rebooting to configure additional terminal lines"

For more information on shutting down your system, see shutdown(8).

2.9.5

Adding Support for a New Option Card
The DECsystem 5100 CPU board (kn230 cpu board) provides support for one option
card with two interrupts available for the expansion option. This allows the expansion
option to have a maximum of two devices.
The Option ID Number is read from the OID (Option ID) register at startup time.
This value should correspond to the value stored in the iooption console
environment variable. To check or set the Option ID number, use the console
environment commands, as follows:
>> printenv iooption

You must make an entry for each device in the kn230_option table in the le
/sys/data/kn230_option_data.c. This provides a means of mapping the
information needed to congure the devices to the ID value in the OID register. The
rst two entries in the kn230_option table of the
/sys/data/kn230_option_data.c le are for the kn230 async card. You
can use the following elds in these entries as guidlelines when adding another
option card. The elds in the kn230_option table that you need to use when adding
another option card are as follows:
option ID number

The value which will be read out of the Option ID register for
the option card.

driver name

The device driver name as it appears in the system
conguration le.

Processor-Specific Notes 2–29

type

The type is either "D" if the device driver uses a device uba
structure or "C" if the device driver uses a controller uba
structure. No other values are allowed.

expansion0 csr

The csr address of the device which will interrupt on the rst
line. If there is only one device on the card, it should use the
rst available interrupt and you should place its csr address in
the expansion 0 eld.

expansion1 csr

The csr address of the device which will interrupt on the
second line.

option_name

The option name string printed at boot time.

Note
Only one expansion csr eld should be used for each entry; the other
expansion card eld should always be zero.
For example, assume that you are adding a new device driver called "new," which
will be using only one interrupt. Since the driver will be using only one interrupt,
you will need to make only one entry for the option card. In the following example,
assume that the new option card has an ID number of 0x2. To add the device driver
named "new," you would edit the kn230_option table in the le
/sys/data/kn230_option_data.c as follows:
struct kn230_option kn230_option [] =
{
/* option driver
/* id#
name
type
/* ====== ====== ====
{
{

0x1,
0x1,

"mdc",
"mdc",

expansion 0 expansion 1
option name
csr address csr address
string
=========== =========== ====================

’D’,
’D’,

0x15000000, 0x0, "Async comm (8 ports)"
0x0, 0x15200000, "Async comm (8 ports)"

*/
*/
*/

},
},

/* add additional option card devices here */
{

0x2,

"new",

’D’,

0x15000000, 0x0, "New option card"

},

/*
* DO NOT DELETE the Null entry which marks the end of the table
* or your system will not configure properly.
*/
{ -1, "", ’0’, 0,
0,
"0
}
};

2.9.6

Using the Halt Button on the DECsystem 5100
You can use the halt button on the back of the DECsystem 5100 to interrupt the
ULTRIX operating system for the purpose of debugging the system.
However, to enable halts on the DECsystem 5100, you must rst set the bootmode at
the console level to halt. The default bootmode is set to reset, which will reset the
system and run the diagnostics.

2–30 Processor-Specific Notes

To set the bootmode at the console level to enable halts, enter the following
command at the console:
>> setenv bootmode h

After the ULTRIX operating system boots with halts enabled, you can press the halt
button to get to the console level where system status can be debugged and evaluated.
To return to the ULTRIX operating system at the point where you pressed the halt
button, use the continue command at the console as follows:
>> continue

Using the halt interrupt also affects the remaining three asynchronous terminal ports
on the CPU board, since once a halt interrupt is issued, the DECsystem 5100
rmware is unable to restore the state of the remaining three terminal lines. Any
action taking place on the remaining three terminal lines is therefore suspended.
To restore the three terminal lines, kill the getty process after you issue the
continue command at the console and the system has returned you to single user
mode, as follows:
# kill -1 1

Note
Due to the hardware and rmware constraints of the system architecture,
the halt interrupt cannot be guaranteed to interrupt a system hang and
bring you back to the console level.

2.9.7

Characters Output to Terminal Line Connections on Power Up
When you power on the DECsystem 5100 and have terminals or printers attached to
the asychronous terminal ports, the hardware diagnostics output a series of characters
to the attached terminals or printers. This problem does not affect the console port.

2.10 DECsystem 5400
These notes apply to the DECsystem 5400.

2.10.1

Possible Segmentation Faults During System Use
The following situations may cause a segmentation fault on your system:
Using the eyacc command with no arguments. For more information on this
command, see the eyacc(1) reference page.
Using the lookbib command with no arguments. For more information on
this command, see the lookbib(1) reference page.
Specifying a network with the rdate program. For more information on the
rdate program, see the rdate(8c) reference page.

2.10.2

Possible Performance Problem During N-Buffered I/O Use
If you use n-buffered I/O and the data buffers involved in the I/O are not properly
aligned, you might experience a performance problem. You should consider the page
size of the underlying system architecture when you set up your data buffers. If you
fail to consider the underlying page size, the effect of using n-buffered I/O is negated.
Processor-Specific Notes 2–31

To avoid this performance problem, you should align all user buffers that are
involved in n-buffered I/O on system page boundaries. On both a DECsystem 5810
and a DECsystem 5400, a system page boundary is 4096 bytes.
The following program fragment demonstrates using the getpagesize system call
to obtain the system page size. The fragment uses the result to align the buffer for
optimum performance.
int pgsize;
int bufsize = 512;
char *cp;
pgsize = getpagesize();
cp = (char *)sbrk( bufsize + pgsize )
cp = (char *)((unsigned)((unsigned)cp + pgsize ) & ~( pgsize - 1 ));

For applications that use malloc(3), valloc(3) can be used as a direct
substitute, as follows:
#include 
extern size_t bufsize;
char
*bufp;
bufp = (char *)valloc(bufsize);

For more information on allocating size bytes aligned on a page boundary, see the
valloc(3) reference page.

2.10.3

Server Logs Out During Daemon Startup
The tftpd server may log out of the root session when you start the daemon. You
may want to avoid using the tftpd server.

2.10.4

Forcing a Crash Dump on the DECsystem 5400
If your system hangs for any reason, you can interrupt the operating system and force
a crash dump. To interrupt the operating system, set the FUNCTION switch on the
CPU cover panel to the up (dot inside the circle) position. Then, press the BREAK
key, which sends an interrupt signal to the operating system. When the operating
system processes the interrupt signal, it transfers control to the console program.
Once control transfers to the console program, the following appears on the display
(the values on your system may be different from those shown here):
HALT PC 800dc968
Memory Size: 33554432 (0x2000000) bytes
Ethernet Address: 08-00-2b-0f-8e-42
>>

When the console prompt appears, issue the following command to force a crash
dump:
>> go 0x80030008

In response to this command, the ULTRIX operating system performs a crash dump.
Once the crash dump completes, you can reboot your system. However, be sure to set
the FUNCTION switch to the down (no dot inside the circle) position before
resuming the normal operation of your system. Failure to set the switch properly
may result in accidental system interruptions.

2–32 Processor-Specific Notes

2.10.5

Performance of dump(8) on DECserver 5800 and 5400 Series
Processors
The dump(8) utility exhibits poor performance when dumping le systems on
DECserver 5800 and 5400 series processors. The following workaround gives
signicant performance improvement to the utility.
To work around the problem, follow these instructions.
Note
Backups previously created with dump must be restored with the restore
command; tapes created with the dump| workaround specied below
must be restored with the restore| workaround, also specied below.
Please note the date after which dumps are taken with the workaround
procedure and/or mark tapes accordingly, so that the proper restore
mechanism can be utilized.
The workaround is to use dump within a command pipeline with dd(1) to increase
the performance signicantly. Using a command like the following produces a dump
tape which can then be read using dd and the restore utility:
# dump 0uf - / | dd of=/dev/rmt0h obs=10k

To restore the les from a tape created in this manner, use the following pipelined
command:
# dd if=/dev/rmt0h bs=10k | restore xf -

Please note the following:
The obs=10k option in the case of dump and the bs=10k option in the case of
restore must be used.
If using a TA90 tape drive or other drive equipped with a tape loader, the loader
operations will not be automatic; the loading of tapes during the dump/restore
must be performed by the operator/user.
Other command line options for dump/restore can be utilized; those here
are shown for example purposes.
Note
We recommend using dd | restore to read tapes created by the dump |
dd command, specically in the case where a dump image may span
multiple volumes. The dump header and continuation information must
be preserved across volumes when using dump and restore directly. This
information is not written to tape when using the dd pipeline
workaround. As a result restore can fail to read multivolume dump
sets if not prefaced by the dd command.
Because of the small performance gain on a DECserver 5400 system with a TK70
tape drive and 3100-class processors, we do not recommend the dump workaround
for these systems.

Processor-Specific Notes 2–33

2.11 DECsystem 5500
The following notes apply to the DECsystem 5500.

2.11.1

Installation Instructions for the DECsystem 5500
The installation instructions for the DECsystem 5000, Model 200 Series Processor in
the Basic Installation Guide and the Advanced Installation Guide support
installations of the DECsystem 5500 with the following exceptions:
There are new boot commands to support booting from a SCCI tape and a
QBUS tape, respectively.
Booting from a CDROM Optical Disk is supported on the DECsystem 5500.

2.11.1.1

The boot Command for SCSI Tapes – Use a command with the following
syntax to boot your DECsystem 5500 from a SCSI tape:
boot -f tz(0, unit-number)
Replace the italic unit-number with the unit number of your tape drive.
The following example shows the command to boot the system from tape drive
number 0:
>> boot -f tz(0,0)

2.11.1.2

The boot Command for QBUS Tapes – Use a command with the following
syntax to boot your DECsystem 5500 from a QBUS tape:
boot -f tm(0, unit-number)
Replace the italic unit-number with the unit number of your tape drive.
Use the following command to boot your DECsystem 5500 from tape drive
number 0:
>> boot -f tm(0,0)

2.11.1.3

Boot Command for the CDROM Optical Disc Kit – If your CDROM optical
disk is not already in its caddy, follow the instructions in the hardware manual for
inserting the optical disk into the caddy.
Follow this procedure to boot the system:
1.

Load the CDROM optical disk labeled ULTRIX/UWS SUPP/UNSUPP (RISC)
into the drive. Wait for the drive to be on line and ready.

2.

Use the following command to determine the unit number of the drive for your
device:
>> show devices

A display appears that shows what is assigned to each unit number on your
system.

2–34 Processor-Specific Notes

3.

Use a command with the following syntax to boot your system:
boot -f rz(controller-number, unit-number,0)vmunix
Replace controller-number with the controller number. Replace unit-number
with the unit number of your RRD40 optical disk drive.
The following example shows the command to boot the system from RRD40
optical disk drive number 4:
>> boot -f rz(0,4,0)vmunix

Next, the installation software displays some system information, followed by
the memory and hardware congurations.
2.11.1.4

Default Boot Path – If the boot command is mistyped, the default boot path is
used to boot the system. For example, to specify a boot path other than the default
boot path, you would type the boot command with the -f option as follows:
>>

boot -f rz(0,1,0)genvmunix

However, if you mistype the preceding boot command, omitting the -f, instead of
failing, the system will still boot based on the environment variable bootpath.

2.12 DECsystem 5800
The following notes apply to the DECsystem 5800 processor.

2.12.1

Possible Segmentation Faults During System Use
The following situations may cause a segmentation fault on your system:
Using the eyacc command with no arguments. For more information on this
command, see the eyacc(1) reference page.
Using the lookbib command with no arguments. For more information on
this command, see the lookbib(1) reference page.
Specifying a database with the rdate program. For more information on the
rdate program, see the rdate(8c) reference page.

2.12.2

Possible Performance Problem During N-Buffered I/O Use
If you use n-buffered I/O and the data buffers involved in the I/O are not properly
aligned, you might experience a performance problem. You should consider the page
size of the underlying system architecture when you set up your data buffers. If you
fail to consider the underlying page size, the effect of using n-buffered I/O is negated.
To avoid this performance problem, you should align all user buffers that involved in
n-buffered I/O on system page boundaries. On both a DECsystem 5810 and a
DECsystem 5400, a system page boundary is 4096 bytes.
The following program fragment demonstrates using the getpagesize system call
to obtain the system page size. The fragment uses the result to align the buffer for
optimum performance.
int pgsize;
int bufsize = 512;
char *cp;

Processor-Specific Notes 2–35

pgsize = getpagesize();
cp = (char *)sbrk( bufsize + pgsize )
cp = (char *)((unsigned)((unsigned)cp + pgsize ) & ~( pgsize - 1 ));

For applications that use malloc(3), valloc(3) can be used as a direct
substitute, as follows:
#include 
extern size_t bufsize;
char
*bufp;
bufp = (char *)valloc(bufsize);

For more information on allocating size bytes aligned on a page boundary, see the
valloc(3) reference page.

2.12.3

Server Logs Out During Daemon Startup
The tftpd server may log out of the root session when you start the daemon. You
may want to avoid using the tftpd server.

2.12.4

Interrupting the Operating System on a DECsystem 5800 Series
Processor
If your system hangs for any reason, you can interrupt the ULTRIX operating system
when it is running on a DECsystem 5810. To interrupt the operating system, set the
top key switch to the ENABLE position. Then, press CTRL/P, which sends an
interrupt signal to the operating system. When the ULTRIX operating system
processes the interrupt signal, it transfers control to the console program.
Once control transfers to the console program, type the following at the console
prompt to force a crash dump:
>> d %ra 0x80030008
%ra:
0x80030008
- 2147287032
>> continue
dumping to dev 909, offset 65548
Dump of 8190 pages
.
.
.

’\b’

Once the crash dump completes, you can reboot your system. However, be sure to set
the Key switch to the SECURE position before resuming the normal operation of
your system. Failure to set the switch properly may result in accidental system
interruptions.
If you interrupt your ULTRIX system and immediately decide to return control from
the console to the ULTRIX system, issue the continue command. You must issue
this command before you issue any other command at the console prompt. If you
issue a command other than the continue command, you must reboot your system
to return control to the ULTRIX system.
Communication with the console terminal may stop after you issue the continue
command. If communication stops, press the RETURN key. Pressing the RETURN
key reestablishes communication and allows your system to operate normally.

2–36 Processor-Specific Notes

2.12.5

Performance of dump(8) on DECserver 5800 and 5400 Series
Processors
The dump(8) utility exhibits poor performance when dumping le systems on
DECserver 5800 and 5400 series processors. The following workaround gives
signicant performance improvement to the utility.
To work around the problem, follow these instructions.
Note
Backups previously created with dump must be restored with the restore
command; tapes created with the dump| workaround specied below
must be restored with the restore| workaround, also specied below.
Please note the date after which dumps are taken with the workaround
procedure and/or mark tapes accordingly, so that the proper restore
mechanism can be utilized.
The workaround is to use dump within a command pipeline with dd(1) to increase
the performance signicantly. Using a command like the following produces a dump
tape which can then be read using dd and the restore utility:
# dump 0uf - / | dd of=/dev/rmt0h obs=10k

produces a dump tape which can then be read using dd and the restore utility.
To restore the les from a tape created in this manner, use the following pipelined
command:
# dd if=/dev/rmt0h bs=10k | restore xf -

Please note the following:
The obs=10k option in the case of dump and the bs=10k option in the case of
restore must be used.
If using a TA90 tape drive or other drive equipped with a tape loader, the loader
operations will not be automatic; the loading of tapes during the dump/restore
must be performed by the operator/user.
Other command line options for dump/restore can be utilized; those here
are shown for example purposes.
Note
We recommend using dd | restore to read tapes created by the dump |
dd command, specically in the case where a dump image may span
multiple volumes. The dump header and continuation information must
be preserved across volumes when using dump and restore directly. This
information is not written to tape when using the dd pipeline
workaround. As a result restore can fail to read multivolume dump
sets if not prefaced by the dd command.
Because of the small performance gain on a DECserver 5400 system with a TK70
tape drive and 3100-class processors, we do not recommend the dump workaround
for these systems.

Processor-Specific Notes 2–37

ULTRIX Software Notes

3

This chapter discusses issues and known problems with the software and, when
possible, provides solutions or workarounds to the problems.
The notes in this chapter cover the following topics:
User Commands
Administrative Commands
System Calls
Library Routines
DECrpc
Mail
Network and Communications
Printing
Software Development
ULTRIX/SQL
VAX C

3.1 User Commands
This section discusses issues and known problems with user commands.

3.1.1

The ar(1) Command
When used to extract all les from an archive, ar(1) creates a le named
____________ELEL__ with permissions 000 (it is a symbol table that is
automatically created by ar). If a second ar command is run with the x key, ar
displays the following message:
ar: Error: ____________ELEL__cannot create
You can ignore this message. You can avoid receiving this message by deleting the
____________ELEL__ le.

3.1.2

The cp(1) Command
Issuing the cp(1) command using the –r ag to two directories with the same name
causes innite recursion and lls the le system or exceeds the user’s quota limit.

3.1.3

Alias Causes csh(1) to Dump Core
The following alias causes csh(1) to dump core:
alias xxx ’foreach x ( 1 )\
anything’

Any use of the alias xxx causes csh(1) to dump core.
To avoid this problem do not use a backslash (\) when aliasing a foreach or while
loop. A second way to avoid this problem is to use a C shell script instead of the
alias.

3.1.4

The csh(1) Command Hangs on Double Quotes
In command line editing csh(1) will hang if a double quote (") is entered
immediately after the initial escape character: .

3.1.5

The dd(1) Command
Do not specify a block size greater than 65535 bytes when performing device I/O
with the TK50 device. This device will give an I/O error when a size greater than
65535 is given. If you attempt to give a block size larger than 65535 on other
devices and the device returns an I/O error, try using the maximum size of 65535
bytes.
Also note that data corruption occurs when you move data from tape to disk les
using the ibs= option with a block size greater than 1024. As a
workaround, either use the bs= option, or set the number of write
buffers to zero by using the wbuf=0 option.
Furthermore, when writing to tapes, you should not use an odd block size value when
specifying the blocking factor. This can result in characters being dropped on every
second block written to the tape.
Also, the buffering scheme employed by the VAX ULTRIX SCSI device driver
limits the maximum tape record length to 16 Kbytes.

3.1.6

Caution on Using ln(1) Command
The behavior of the ln(1) command has changed. Previously, the -f option
suppressed all but the usage message. If a le existed it would not remove the le
and it would not produce an error message if -f had been specied.
In ULTRIX/UWS Version 4.1, if the le to be linked to already exists, the -f option
removes the le if the permissions allow it, and creates a link. No error message is
produced.
Also, the -i option causes ln(1) to solicit user response if the le to be linked to
already exists. The -f option overrides this.
Sometimes, users specify the -f option in shell scripts to suppress the error
messages. Now, -f removes the old link and makes a new one. (This is not a
workaround, just a warning.)

3–2 ULTRIX Software Notes

3.1.7

The make(1) Command
Some cautions about using the make(1) command:
If a makele contains a dependency on a nonexistent le instead of always
executing the rule, the current time is used for comparison. This can cause
trouble when using make across an NFS environment if the time on the le
server is later than the time on the client.
The make(1) command treats two dollar signs ( $$ ) as the end of a le name
in a dependency list, not as a single dollar sign ( $ ).

3.1.8

The sh(1) Command
The following notes apply to the sh(1) command.

3.1.8.1

Command Substitution Failure – Command substitution in the sh command
fails to produce output when stdout is closed. The following sequence
demonstrates the problem:
% /bin/sh
$ exec >&$ echo ‘echo x‘ >&2
$

The echo command should print ‘‘x,’’ but nothing is printed. This example works
correctly with sh5(1).
3.1.8.2

Version 7 Bourne Shell Not 8-bit Clean – The Version 7 Bourne Shell, sh(1), is
not 8-bit clean. Only the System V Bourne Shell, sh5(1) is 8-bit clean.
If the ULTRIX Bourne shell, sh, is run from another program by the system or
exec system calls whose maximum le descriptor in use is number 10, the prompt
string is not printed. This can happen if a program has eight les open (in addition
to the customary stdin, stdout, and stderr ) at the time sh is called.
The problem does not occur with the System V Bourne shell, sh5, or with the C
shell, csh. It also does not happen if le descriptor 11 is in use.

3.1.9

The size(1) Command Messages
The size(1) command on RISC machines can generate the following error
messages:
ldopen: cannot read magic number filename
size: cannot open filename
ldinitheaders: magic number incorrect (0x0)
size: cannot open filename

These errors have the same meaning as the following VAX-based size message:
size: filename not an object file

3.1.10

The talk(1) Command Is Not 8-bit Clean
The talk(1) command is not 8-bit clean. Typing DEC Multinational Characters
(ISO-8859/1) causes the characters to echo as a sequence of a caret (^) followed by
the character represented with its high bit cleared.
ULTRIX Software Notes 3–3

This limitation makes talk(1) unusable if you want to communicate using a
language which has ISO-8859/1 characters in its alphabet.

3.1.11

Using 8-bit Characters During telnet(1) or rlogin(1) Sessions
In order to use 8-bit characters during a telnet(1) or rlogin(1) session, the
terminal from which you originate the session must be set to 8-bit mode. Likewise,
if the /etc/gettytab le has not been set up properly for 8-bit mode, then you
will not be able to make use of 8-bit characters. See the gettytab(5) reference
page for more information.
Note that you must specify the -8 option to rlogin when using 8-bit characters,
otherwise the connection will not be 8-bit clean. Also, if you cannot display 8-bit
characters from the local terminal, you will not be able to display them from the
remote terminal.
If you always want to use the -8 option, you can set up certain commands,
depending on the shell you use.
For the csh shell, add the following command to your .cshrc le:
alias

rlogin

rlogin

*

-8

For the ksh or sh5 shells, add the following function denition to the .profile
le:
rlogin()
.
.
.
{ /usr/ucb/rlogin $* -8 }

Note for rlogin and telnet to work properly, only the local node needs to have pass8
set.
To check if 8-bit terminal mode is enabled, use stty -e and look for pass8. If
you see pass8 , then 8-bit characters are enabled and your terminal is set up for 8bit character support. If you see -pass8 then your terminal is set to 7-bit mode. In
this case, you need to use stty pass8 to set the terminal to 8-bit mode. To check
that your terminal is in 8-bit mode, enter a few 8-bit characters and check that they
display properly.
In previous ULTRIX-32 releases, whether the pass8 ag to stty was enabled or
not, the ULTRIX terminal driver would always pass 8-bit characters to the
application. In the ULTRIX/UWS Version 4.1 release, the pass8 mode is now
properly enforced by the terminal driver, so you must set this ag prior to using the
8-bit character set successfully.

3.1.12

The vi(1) Screen Editor
The command nd is supposed to delete n lines, but it deletes n+1 lines.
You can work around this problem by using the command ndd .

3–4 ULTRIX Software Notes

3.2 Administrative Commands
This section discusses issues and known problems with administrative commands.

3.2.1

The crash(8) Utility
The following notes apply to the crash dump facility.

3.2.1.1

Crash Dumps and the ps(1) Command – Using the ps(1) command on system
crash dumps may not display the command arguments and the user environment.
The new system crash dump strategy does not dump user data for the default case of
a partial dump strategy. The ps(1) command determines whether it is examining a
system crash dump produced by the partial dump strategy. If this is true, the
command makes no attempt to acquire the process’ command line arguments or the
process’ environment strings.
The only workaround when the process argument strings and/or the process
environment strings are required is to use the full dump strategy.

3.2.1.2

Dump Device Configuration Restrictions – The introduction of the new crash
dump facility has restricted the type of dump device congurations permitted for the
rl, rk, and hp devices. This restriction is identical to that for the ra type disks.
For crash dumps to occur, the device that is specied in the host system conguration
le as the dump device must be congured on the controller that will be used to boot
the system device. Although this may have caused problems on a system due to
limited disk space in the past, the new crash dump facility should eliminate this
concern.
The facility now dumps just enough information for effective debugging of the
system.

3.2.2

The fsck(8) Command
The following notes apply to the fsck(8) command.

3.2.2.1

Mounted File Systems and fsck(8) – In ULTRIX/UWS Version 4.1 the le
system consistency checker, fsck, does not prevent the checking of mounted le
systems. Running fsck on a mounted le system can cause the system to panic.
The fsck utility should only be invoked on unmounted le systems by the raw
device. The only exception to this rule is the root (/) le system. The root le
system is always mounted and should only be checked in single user mode by way of
the block device when the system is booted.

3.2.2.2

Effects of New File System Timeout Algorithm on fsck(8) – The policy of
changing the value of the clean byte to ensure checks of earlier le systems has been
replaced in ULTRIX/UWS Version 4.1 by a le system timeout algorithm. This
scheme limits the amount of time a le system is believed clean, no matter how the
le system was mounted.
The timeout factor is initially set to 20 and is decremented when any one of the
following three events occur:

ULTRIX Software Notes 3–5

A le system is mounted
10,000 updates have occurred
A le system was updated and fsck occurred more than 60 days earlier
When the timeout factor reaches zero, the following message is printed, and the next
invocation of fsck -p will check the le system indicated in the message.
Warning, /dev/rxxx has exceeded %d %s threshold, fsck(8) is advised

where %d is replaced by the default factor, and %s is the event that crossed the
threshold.
For example, if the timeout factor is 20, and a le system is mounted 20 times, the
nal mount will produce:
Warning, /dev/rxxx has exceeded 20 mount threshold, fsck(8) is advised

This message is a warning. The mount will succeed, and operations to the le
system will continue. However, the invocation of fsck -p will check the le
system.
The timeout factor can be set on a lesystem granularity. When a lesystem is made
by newfs(8) or mkfs(8), a default value of 20 is used. However, if timeouts
occur too frequently or infrequently, the factor can be altered with tunefs(8).
Refer to tunefs(8) for more information about changing the value of the clean
byte timeout factor.
Currently, when a ULTRIX-32 Version 3.1 or ULTRIX-32 Version 3.0 le system is
mounted for the rst time on a ULTRIX/UWS Version 4.1 system, this warning
message is produced:
Warning, /dev/rxxx has exceeded 0 mount threshold, fsck(8) is advised.

This state continues until fsck is executed. If a mount is attempted of a le system
used on a release prior to ULTRIX-32 Version 3.0, fsck will be mandatory, because
the value of the clean byte was changed in ULTRIX-32 Version 3.0.
To view the value of the clean byte timeout factor, dumpfs(8) should be used.

3.2.3

License Management Facility (LMF)
The following notes apply to the ULTRIX License Management Facility (LMF).

3.2.3.1

License Management Facility Error – There is an error in the ULTRIX LMF
utility which prevents the registration of any Product Authorization Key (PAK)
containing a release date or a termination date that falls on the 30th or 31st of a
month during a leap year. For example, a PAK containing the date 31-JUL-1992 will
fail to register because of a checksum error.
There is no workaround to the problem. If you encounter the problem, request a
replacement PAK from the issuer, whether it is Digital or a third party.

3.2.3.2

Error in lmfsetup(8) – Due to an error in the lmfsetup(8) PAK registration
script, even if the PAK has been registered successfully, you must type CTRL/C to
exit from the script.

3–6 ULTRIX Software Notes

3.2.4

The mkfs(8) Command (RISC Processors Only)
When /bin/mkfs is invoked without arguments, the RISC machines dump core
instead of returning an error.

3.2.5

Changes to the rwhod(8) Command
The /etc/rwhod daemon is now commented out by default in the /etc/rc le.
This impacts the rwho(1c) and ruptime(1c) commands. If you want to make
this service available on your machine, you can enable the rwhod daemon by
removing the comment (#) characters from the beginning of the rwhod lines.

3.2.6

Errors with tapex(8) Utility
The following notes apply to the tapex(8) utility.

3.2.6.1

Failures Using SCSI TZK10 Tape Drive – The tapex utility was originally
written for variable length record tape devices. The TZK10 (QIC) tape drive uses
xed length records, which causes all variable length tests to fail. Many of the
tapex tests can still be run with the TZK10, but tests such as the Random Record
Size test, which you specify with the -g option, will fail with the TZK10.
In addition, the Append To Media test, which you specify with the -d option, also
fails with the TZK10, because the TZK10 tape drive does not support data overwrite.
When the Append To Media test fails, it generates the following errors:
Append to media testing.
This test simulates the behavior of the "tar r"
command by writing 20 records to the tape.
Next the tape is repositioned back one record and then
20 more records are written.
All records are of size 10240.
Finally the resulting tape read in for verification.
Aborting this test due write errors when trying to
append records to the media.
ERROR: 20 write errors occurred.

3.2.6.2

Record Size Validate Errors on DECsystem 5100 – The Record Size test fails
on DECsystem 5100s with "validate errors" because the SCSI sii driver copies back
more bytes than were actually read. In this test, the tapex utility initializes its read
buffer to a known value, then attempts to read 1010 bytes to records of 1000 bytes.
After the read, all bytes including the ten extra bytes are validated, causing the
following validate errors:
Performing record size testing. This test verifies that
at most one record is returned by a read system call.
Record size subtest #1:
Test read requests larger than the record size.
Request a read of 1010 bytes to records of size 1000 bytes.
The following errors were encountered when trying to
read more than a full record. Read errors indicate
that more than a full record has been returned.
Read errors could also indicate that fewer bytes than
requested were returned.
FAILURE: 2000 validate errors

ULTRIX Software Notes 3–7

3.2.6.3

SCSI Command Timeout Failure – The Command Timeout test fails the forward
skip le operation because the timeout is too short in the drivers of the SCSI host
adapter. The Command Timeout test fails with the following error message:
MTIOCTOP failed, op = 1, count = 82
Failed MTIOCTOP command is MTFSF
The forward skip operation took 36 minutes.
FAILURE: unable to skip out 82 files

3.2.7

Layered Products and the setld(8) Command
Some layered products will not install because of an incompatibility with the
setld(8) command. When you try to install them, these products will issue an
error message and exit before the setld menu is presented. To install these
products, set the environment variable STL_NOACTM to 1. On VAX and RISC
systems, csh(1) users should enter the following command as root:
# setenv STL_NOACTM 1

Users of all other shells should enter this command:
# STL_NOACTM=1; export STL_NOACTM

Once you have set this variable, the product will install correctly.
Before installing any more products, unset the variable. On VAX and RISC systems,
csh(1) users should enter the following command as root:
# unsetenv STL_NOACTM

Users of all other shells should log out of the system and log back in before
installing more software.

3.2.8

The snmpsetup(8) Command Requires a Community Name
The snmpsetup command requires you to enter a community name even if
communities are not be used in the network.
If you do not want to use communities in the network, enter a dummy community
name when prompted by the snmpsetup command. At the completion of the
snmpsetup command, delete the dummy community name from the
/etc/snmpd.conf le.

3.2.9

System Exerciser and syscript(8)
Some of the system exercisers in /usr/field require their log les to be local to
the exerciser. Because the /usr le system should be mounted read-only in a
diskless environment, this prevents the creation of the clients’ log le.
The workaround is to copy the desired exerciser to /var/tmp before executing it.
This will move the exerciser and its associated log le into the clients’ writable root
area.
To run the syscript script, you should edit the le and globally change
/usr/field to /var/tmp/field.

3–8 ULTRIX Software Notes

3.3 System Calls
This following notes apply to system calls.

3.3.1

The ptrace(2) System Call
Programs using ptrace to write into the instruction space of a traced program
prevent that image le from being executed until the traced program has terminated.
See ptrace(2), dbx(1), and adb(1) in the ULTRIX Reference Pages.

3.4 Library Routines
The following notes apply to library routines.

3.4.1

The execvp(3) Function
The execvp function will receive a SIGILL error if passed a PATH list that
contains names greater than NAME_MAX (255) characters long.

3.4.2

The lint Library strncmp(3) Function
In the lint libraries, the third parameter to the strncmp function is incorrectly
declared to be of type int instead of type size_t.

3.4.3

A printf(3) Problem (RISC Only)
On RISC systems, the printf %f format (and the fcvt function) incorrectly
rounds down if all digits after the decimal point are zero. For example, with a %.1f
format, the number .07 incorrectly prints as 0.0 instead of 0.1, but the number .17
prints as 0.2, the correct value.

3.4.4

Certain Comparison Routines Do Not Work with the qsort(3)
Function
When you supply a comparison routine to qsort that can return different results for
the same pair of keys at different times, qsort does not always execute properly.
The qsort function may write beyond the bounds of the array being sorted.
The workaround to this problem is to provide a comparison routine that will
consistently return the same result for any given pair of keys.

3.5 DECrpc
The following notes apply to DECrpc. The problems documented in these notes are
temporary restrictions that will be corrected in a future release.

3.5.1

The NIDL Compiler Does Not Preserve Case Distinctions Correctly
The NIDL Compiler does not preserve case distinctions correctly. As a result, the
xx_cswtch.c le generated from the idl le produces a "syntax error"
message when you try to compile it. The problem occurs when mixed uppercase and
lowercase characters are used to name the structure type, ProducT in this example:

ULTRIX Software Notes 3–9

%c
[ uuid(490da1ac7133.02.10.b5.c0.0c.00.00.00), version(1) ]
interface nidl_bug {
typedef struct {
char type[81];
} ProducT;
int name$get_next (
handle_t [in] h,
ProducT
[out]*product,
char [out]product_name[81]);
}

The next example shows the xx_cswtch le generated by the NIDL Compiler.
The NIDL Compiler generates the variable ProducT of type ProducT, instead of
the variable product (all lowercase) as specied in the original idl le.
#define NIDL_GENERATED
#define NIDL_CSWTCH
#include "products.h"
ndr_$long_int name$get_next (h, ProducT, product_name)
handle_t h;
ProducT *ProducT;
/* The compiler gives an error on this.
The line should read ProducT *product */
ndr_$char product_name[81];
{
return (*nidl_bug$client_epv.name$get_next)(h, ProducT, product_name);
}

To avoid the compiler error, do not mix uppercase and lowercase characters in idl
les. This is a temporary restriction in ULTRIX Version 4.0. The problem will be
corrected in the next release.

3.5.2

Servers Generate an Error When Terminated with an Interrupt
A longjmp botch error is issued when an attempt is made to terminate a server
with either CTRL/C or the kill -INT [pid] command. This error occurs
because the NIDL Compiler does not insert a cleanup call in the xx_sstub.c code,
such as that shown in the following example:
pfm_rls_cleanup (cleanup_rec, cleanup_status);

The problem only occurs if you use the max_is and last_is operations (or both)
in the idl source le.
To avoid the problem, declare all arrays as xed length in the idl le as illustrated
in the following example:
int

3.5.3

[out]array[10]

The NIDL Compiler Does Not Generate Unique Names For Array
Members
When the NIDL Compiler generates instructions to marshall and unmarshall members
of an array, it does not provide unique local names in the output les. If you use a
name that is the product of an array name concatenated with an underscore and an
array member name, the C compiler generates errors when compiling the
xx_cstub.c stub routine.

3–10 ULTRIX Software Notes

The idl le in the following example illustrates the cause of the errors:
%c
[ uuid(490da1ac7133.02.10.b5.c0.0c.00.00.00), version(1) ]
interface nidl_bug {
typedef struct {
char name[81];
} array;
int name$get_next (
handle_t [in] h,
array[out]*product,
char [out]product_name[81]);
}

The NIDL Compiler denes the member of the product array as product_name,
which conicts with the user-dened string product_name[81]. When
xx_cstub.c is compiled, the C compiler produces redeclaration errors like those
shown in the following example:
"xx_cstub.c", line 57: redeclaration of xXx_b8a_
"xx_cstub.c", line 58: redeclaration of xXx_171e_
"xx_cstub.c", line 59: redeclaration of xXx_615_

To avoid the problem, do not dene variable names that combine array names and
array member name. For example, in the case in the previous example, change the
product_name parameter to name_of_product or change the member name
of the struct array to component_name[81].

3.5.4

The error_$c_text(3ncs) Routine Does Not Translate All nca_status
Codes to ASCII Text
For some error codes, the error_$c_text(3ncs) routine generates messages like
that shown in the following example:
status 1c000007 (network computing system)

It should generate a message such as the following:
invalid bound

(network computing system)

To determine the problem for untranslated error codes, use the grep(1) command to
search the les /usr/include/idl/ncastat.idl and
/usr/include/idl/fault.idl for the hexadecimal value. In generated error
codes, the hexadecimal values a through f appear in lowercase. However, the
hexadecimal constants for these error codes are dened with uppercase letters. This
means that, although your program returns 1c000007, you must search for
1C000007.

3.5.5

Use of the max_is and last_is Attributes Produces Errors Across
Hardware Architectures
Use of the max_is and last_is attributes in an idl le may produce errors
across hardware architectures. Running a server on one hardware architecture (RISC)
while running a client on another hardware architecture (VAX) sometimes produces
invalid bound errors.

ULTRIX Software Notes 3–11

The errors occur because the NIDL Compiler does not insert a required instruction in
the xx_cstub.c le. To avoid the problem, do not use the max_is and
last_is attributes in applications that will run across multiple hardware
architectures. Declare arrays of a xed length in idl les.

3.5.6

The comm_status Parameter Must Be Declared As Both an Input and
Output Parameter
When the comm_status parameter attribute is used as shown in the following
example, the NIDL Compiler generates incorrect xx_cstub.c code and generates
compiler errors:
%c
[uuid(4a9652fd445c.02.82.b4.06.5f.00.00.00), version(0)]
interface test
{
void test_bug(
handle_t [in] h,
status_$t [out, comm_status] *status);
}

The problem occurs because the NIDL Compiler does not see anything to be passed
and omits required instructions. To avoid the problem, declare the status
parameter as both an input and output parameter as shown in the following example:
status_$t [in,out, comm_status] *status

3.5.7

The lb_admin Utility Must be Restarted After Deletion of an Interface
The lb_admin(1ncs) utility loses track of the database after you delete an interface.
If you follow a command to delete a registered interface with a command to list the
remaining registrations, the list command fails. You must exit from the lb_admin
utility and restart it in order to perform another function. The lb_admin utility
incorrectly generates the messages in the following example (after a delete command
followed by a list command) even if other interfaces are registered:
Data from GLB replica: ip:hostname
No entries match.

3.5.8

Bank Example Crashes with Illegal Instruction
In the following example of a bank application in the
/usr/examples/ncs/banks/README le, the bank inquiry aborts the
operation because it cannot nd an active server for the "shawmut" bank:
bankd ip shawmut&

-- Start server listening on ip protocol

bank inquire shawmut Leach

-- Find out how much money Leach has

bank deposit shawmut Dineen 3

-- Give Dineen $3

The example bank application aborts the operation because it contains an imbedded
call to the abort() function for certain error conditions.
To work around this problem, you can insert other error processing logic in place of
the abort() routine.

3–12 ULTRIX Software Notes

3.5.9

Longjmp Botch Error
The clean command in /etc/ncs/lb_admin causes servers to experience a
longjmp botch error on their next attempt to exit.
The rrpc_$inq_interfaces() routine used by the lb_admin clean
command in /etc/ncs/lb_admin inserts a pfm handler on the stack at stub
entry but does not remove it on exit. This causes the stack to be corrupted when the
server attempts to exit.
This problem affects all active servers at the time the clean command is given.
Servers corrupted by this problem must be killed manually with the kill-9
command and their registrations manually deleted from the location broker databases.
To work around this problem, avoid using the clean command to clear out
unwanted registrations.

3.5.10

rpc_$bind Can Never Execute the rpc_$free_handle Call
The only status returned for rpc_$bind is status_$ok, even though things can
go wrong in the routines called by rpc_$bind. As a result, rpc_$bind can
never execute the rpc_$free_handle call and the application never knows
something went wrong.
There is no workaround to this problem.

3.5.11

rrpc Routines Require an Explicit Call into the
Entry Point Vector Table
On the client side, because of the way the rrpc_ calls are dened and implemented
in the libnck.a run-time library, you must explicitly call into the entry point
vector table for the rrpc_ interface to send an rrpc_ request across the network.
The following is an example of a call that works as desired:
(*rrpc_$client_epv.rrpc_$inq_interfaces)(handle,
(unsigned long) max_ifs, ifs, &l_if, &status);

The server side stub routines call the entry point rrpc_$inq_interfaces on
behalf of the client. The results of the call are then passed back to the client.

3.6 Mail
The following notes apply to the mail utility.

3.6.1

The sendmail Program Does Not Set the $x Macro on Received Mail
The $x macro, which represents the full personal name of sender, is not set by the
sendmail program when the sender is not local. Users who receive mail through
the DECnet-Internet Gateway do not see the personal name of the person who sent
the message.
This behavior is due to the way mail headers are constructed and cannot be changed.
The sendmail program uses information in the /etc/passwd le to get personal
names; the program has no access to remote password les.

ULTRIX Software Notes 3–13

3.6.2

Creating Aliases That Exceed 1024 Characters in /usr/ucb/mail
The /usr/ucb/mail program limits private user aliases to 1024 characters.
The string that you are aliasing in your .mailrc le cannot exceed 1024 characters.
Aliases dened in a .mailrc le that exceed this length limit cause the mail
program to core dump through a segmentation fault.
To work around this problem, redene the long alias using aliases that are less than
1024 characters each. The original alias can then be constructed using those smaller
aliases.
alias a a1,a2,a3...aN (list 1 of less than 1024 characters)
alias b b1,b2,b3...bN (list 2 of less than 1024 characters)
alias c a,b (complete alias list)

For example, assume that you want to dene an alias c that exceeds 1024 characters
in length. First, break alias c into aliases a and b. Then dene alias a to include
list 1 and alias b to include list 2. Finally, dene alias c to include the lists that are
dened by aliases a and b.

3.6.3

sendmail Address Parsing Problem
There is a problem with the sendmail conguration le rules for parsing addresses of
the form:
nnnn::uuuu@hhhh

If this address is interpreted according to the RFC822 specication, the canonical
form is:
nnnn::uuuu<@hhhh>

This is often incorrect if the mail actually originated from uuuu@hhhh and passed
via nnnn on the way to the receiver’s host. This typically happens when two
ULTRIX users communicate via the DECnet mail mailer because the recipient has a
.forward le on host nnnn specifying a DECnet mail forwarding address.
If this is the case, then the required canonical form is:
uuuu@hhhh<@nnnn.enet>

Implementing this functionality violates the RFC822 specication. To help resolve
this problem, the following rule is included in rule set 3:
R$-::$+<@$~S>

$1::$2@$3

defocus - not local host

This rule switches between the two forms of the canonical address depending on
whether the host hhhh is known to be a local host (one listed in /etc/hosts
or /etc/hosts.local) or not.
If hhhh is local, the canonical form is assumed to be:
nnnn::uuuu<@hhhh>

Otherwise it is:
uuuu@hhhh<@nnnn.enet>

This presumes that local users will use tcp mail (user@host) rather than using
DECnet mail (host::user) to forward mail.
It is recommended that users forward mail using tcp local mail (user@host) when
possible. If full adherence to RFC822 is required, then the preceding rule can be
commented out of rule set 3.

3–14 ULTRIX Software Notes

3.6.4

sendmail Sender Name Problem
The sendmail program uses information in /etc/utmp to determine the contents
for the From: line in outgoing mail that has originated locally.
The contents of /etc/utmp change frequently and sendmail can, occasionally,
read inconsistent data. This results in bad From: line specications on outgoing
mail.

3.6.5

The Rand Mail Handler
Be aware of these problems:
The send command does not recognize –nowait with "send: -nowait" in
.mh_profile.
The send command (with the –ali option specied and a nonexistent alias
le encountered) exits, rather than ignoring the nonexistent alias le.

3.7 Network and Communications
The following notes apply to network and communications.

3.7.1

The ne Network Device
The ne (SGEC) device driver reports more packet collisions than the ln (LANCE)
driver under the same network environment. The LANCE chip can only report one
or at the most two collisions when transmitting a packet. The SGEC chip reports the
real counter of the collisions, from 1 to 15.
As a result, the netstat -i command will report a higher collision rate when run
on a ne network device.

3.7.2

Writing to a Remote a.out File
If a remote a.out image le is written to on a server while one or more clients are
using that image le, further references on that le by the currently executing client
processes will cause those processes to be killed. Under these conditions, the system
responds with the message:
pid  killed due to text modification

The  argument is the pid number of the process that was killed.
If another process is started up on a given client while processes on that client are
being killed, the new process will fail and the system responds by displaying the
message:
remote text modified and not yet cleaned up

In this case, retry the process.

3.7.3

Nonexisting Pathnames in /etc/exports
Beware of nonexisting pathnames in the /etc/exports le. The mount daemon
can dump core if such an entry exists with a long hosts/netgroups list.

ULTRIX Software Notes 3–15

If the /etc/exports le contains a pathname that does not exist and has a long
list of hostnames or netgroups associated with it, the mount daemon can cause a
segmentation fault. More specically, the problem occurs if the nonexisting exports
entry is more than one line long.
If the nonexisting pathname is the rst listed in the exports le, the mount daemon
will dump core; otherwise, portions of its hosts list will be associated with the
previous exportable directory.
To work around the problem, do not export nonexisting directories.

3.7.4

Login and Security Restrictions
There are limitations with remotely served authorization (auth) databases.
The auth database cannot be served through YP, only by BIND/Hesiod. Do not
attempt to serve the auth data base through YP. Instead, use svcsetup(8) and
secsetup(8) to specify your services.
When auth entries are served through BIND/Hesiod, login fail count maintained by
login(1) is not supported. Login attempts that fail on BIND clients will not
increment the login fail count if the account is not on the local machine. Repeated
login failures for any account are always recorded in the local system log.
When the security features are enabled, it is not possible to su to root on lines which
are not marked as secure in the /etc/ttysle

3.7.5

Address Change for the Network Information Center (NIC)
This note is a recast of the DDN MGT Bulletin 72 of 06Apr90.
In order for the NIC to provide better service, and because of the phaseout of the
ARPANET, the following changes have taken place and are effective immediately (6
April 1990).
NIC.DDN.MIL
The new address for host NIC.DDN.MIL is 192.67.67.20. The old ARPANET
address for the NIC, 10.0.0.51, is no longer available, due to the phase-out of the
ARPANET.
The old MILNET address for the NIC, 26.0.0.73, will continue to be valid until
1 June 1990, after which service to this address will be discontinued.
ROOT DOMAIN SERVER
The NIC’s root domain server will run on a new host, NS.NIC.DDN.MIL at address
192.67.67.53. The old root server will continue to run on NIC.DDN.MIL until
1 June 1990.
New host tables and domain server les produced by the NIC will reect the new
addresses.
Users should update host tables, domain server boot les, manuals, and
documentation to reect the new addresses. Use these addresses to contact the NIC.

3–16 ULTRIX Software Notes

Table 3-1 shows the current list of root servers:
Table 3-1: Network Information Center Addresses
Root Server
NS.NIC.DDN.MIL

192.67.67.53

A.ISI.EDU

26.3.0.103
128.9.0.107

AOS.BRL.MIL

128.20.1.2
192.5.25.82

C.NYSER.NET

192.33.4.12

GUNTER-ADAM.AF.MIL
NS.NASA.GOV
TERP.UMD.EDU

3.7.6

Address

26.1.0.13
128.102.16.10
192.52.195.10
128.8.10.90

Maintaining the BIND/Hesiod Root Name Server Data File
There are currently seven BIND root name servers. These servers know about all the
top-level BIND domains on the Internet network. It is necessary to know about these
servers when making queries about hosts outside of your local BIND domain. Be
aware that the host names and IP addresses of these machines do periodically change.
It is imperative that these changes are reected in the BIND/Hesiod root name server
data le, /var/dss/namedb/named.ca. You must update your root name
server le as soon as you install ULTRIX/UWS Version 4.1 to reect the NIC’s
address change of April 6, 1990.
To maintain the le, at least once a month connect to the system nic.ddn.mil which
has an IP address of 192.67.67.20, and is managed by the Network Information
Center. Use the ftp(1) command with a login "anonymous" and password "guest".
Retrieve the le, NETINFO:ROOT-SERVERS.TXT, and examine it against your
existing named.ca le. If any differences exist, incorporate them into the existing
format in the named.ca le.
For example, the following is the ftp session described above from host
chicago.cities.dec.com with IP address 128.11.22.33 and user name jones:
chicago.cities.dec.com> ftp nic.ddn.mil.
Connected to nic.ddn.mil.
220 NIC.DDN.MIL FTP Server Process 5Z(47)-6 at Wed 11-Apr-90 08:24-PDT
Name (nic.ddn.mil.:jones): anonymous
Password (nic.ddn.mil.:anonymous):
331 ANONYMOUS user ok, send real ident as password.
230 User ANONYMOUS logged in at Wed 11-Apr-90 08:24-PDT, job 40.
ftp> get netinfo:root-servers.txt /tmp/root-servers
200 Port 11.175 at host 128.11.22.33 accepted.
150 ASCII retrieve of TS:ROOT-SERVERS.TXT.18 (1 page) started.

ULTRIX Software Notes 3–17

226 Transfer completed. 673 (8) bytes transferred.
local: /tmp/root-servers remote: netinfo:root-servers.txt
673 bytes received in 0.09 seconds (7.3 Kbytes/s)
ftp> quit
221 QUIT command received. Goodbye.
chicago.cities.dec.com>

If you do change your named.ca le, you should keep another copy of the original
le, that is named.ca.nic. You should do this because if the bindsetup(8)
command is rerun, it will overwrite the named.ca le. If the bindsetup
command is rerun, be sure to copy back the named.ca.nic le to named.ca.
If you are unable to ftp to nic.ddn.mil, try sending mail to
hostmaster@nic.ddn.mil

or calling the NIC’s toll-free number, (800) 235-3155.

3.7.7

Automatic daemon startup on BIND/Hesiod Primary Server Using
bindsetup
When the bindsetup(8) command is run for the rst time to set up a BIND/Hesiod
primary server which is distributing the passwd database, it adds the "bindmaster"
alias to the hosts database in the directory, /var/dss/namedb/src. If you reply
"yes", to the automatic daemon startup question, bindsetup tries to start up the
hesupd(8) daemon. This daemon requires the ability to look up the "bindmaster",
but it cannot since the "bind" has not yet been added on the hosts entry in the
/etc/svc.conf le. The message "hesupd can’t lookup bindmaster" will appear
as the bindsetup command continues.
To work around the problem, you must give the primary server a way to lookup the
"bindmaster" alias. You can do this two ways. Either you can add the "bindmaster"
alias to the /etc/hosts entry for the primary server, or you can modify the
/etc/svc.conf le to use "local,bind" for the hosts database. Then start up the
hesupd daemon manually or reboot.

3.7.8

Using the Packetfilter with Multiple Ethernet Interfaces
When using the Packetlter facility on multiinterface systems, all interfaces must
have been congured at least once before the packet lter will recognize all
interfaces. If all of your network interfaces are congured up and running, then there
is no problem.
However, if your system has two network interfaces and the rst interface has not
been enabled with /etc/ifconfig, the second interface will not be seen by the
packetlter.
To work around this problem, you should enable all of the interfaces on your system.
If an interface cannot be enabled for some reason, you can enable it using a dummy
address, and then mark the interface "down". Choose an address which is not
currently in use on your LAN.
For example, consider a MicroVAX-II that contains two DEQNA interfaces, but only
the second interface, qe1, is currently in use. To allow the packetlter access to qe1,
the qe0 interface must rst be congured with a dummy address and then marked
"down":
# /etc/ifconfig qe0 1.0.0.1
# /etc/ifconfig qe0 down

3–18 ULTRIX Software Notes

3.7.9

Protecting YP and BIND/Hesiod Files and Directories
To protect your YP maps from malicious users, change the modes of your
/var/yp/< your Domain name > directory to 700 (drwx------).
To protect your BIND/Hesiod databases specied in named.boot le on secondary
servers from malicious users, change the modes of the database les in the
/var/dss/namedb directory to 600 (-rw-------) .
To protect your YP and BIND/Hesiod source les on your YP master and
BIND/Hesiod primary server, change the modes of your /var/yp/src and your
/var/dss/namedb/src directories to 700 (drwx------).

3.7.10

Improve Your Yellow Pages Makefile
In the beginning of the Makele are variable denitions. Due to a possible error in
the make command, the following line does not expand properly:
DOM=‘domainname‘

As a result, whether or not a YP source le has been changed, the map will always
be updated.
To work around the problem, unnecessary map updates, modify the
/var/yp/Makefile and substitute your YP domain name. For example, if your
YP domain name is "yourYPdomainname," the new line looks like this:
DOM=yourYPdomainname

3.7.11

Recommendation For Placement of NFS Mount Points
It is recommended that you do not place NFS mount points to different servers in the
same directory. If mount points to different servers are placed in the same directory
and one of the servers is hard mounted and goes down, all NFS requests will hang
until the server that is down comes back up.
When computing the pathname string of a directory, getwd(3) moves up the
directory tree from the current working directory to the root. When getwd passes
through a mount point, it will stat(2) entries in the directory until it nds the
mount point it just traversed. If any of the entries in the directory are mount points
to a server that is hard mounted and down, getwd will block until the server
responds.

3.7.12

NFS Filesystems and Named Pipes Incompatibility
In ULTRIX/UWS Version 4.1, the over-the-wire NFS representation of a named pipe
has been modied to follow the Sun representation introduced in SunOS Version 4.0,
and in other NFS vendor’s ports based on SunOS Version 4.0. As a result of this
change, ULTRIX/UWS Version 4.1 is incompatible with prior ULTRIX releases
when named pipes are being used in NFS lesystems.
If an ls command shows a character device where a named pipe was expected, then
patches need to be installed.
Patches to upgrade a Version 3.1 system to be compatible with ULTRIX/UWS
Version 4.0 or ULTRIX/UWS Version 4.1 (and other NFS vendors) are located in
/usr/mdec/named_pipe. Both RISC and VAX patches are provided.

ULTRIX Software Notes 3–19

3.7.12.1

Sample Patch Procedure for a VAX Machine – In this example, the
ULTRIX-32 Version 3.1 host is called "old," and the ULTRIX/UWS Version 4.1
host is called "new."
First, copy the les to "old":
old# rcp new:/usr/mdec/named_pipe/nfs_subr.o.31vax /tmp
old# rcp new:/usr/mdec/named_pipe/vnodeops_gfs.o.31vax /tmp

Next, as root, go to the kernel binary pool, and copy the les into it, saving the
originals:
old#
old#
old#
old#
old#

cd
mv
mv
cp
cp

/sys/BINARY.vax
nfs_subr.o nfs_subr.o.save
vnodeops_gfs.o vnodeops_gfs.o.save
/tmp/nfs_subr.o.31vax nfs_subr.o
/tmp/vnodeops_gfs.o.31vax vnodeops_gfs.o

Then, build a new kernel:
old# cd ../APRIL
old# make
/bin/cc -I. -c -S -DAPRIL -DVAX3600 -DVAX3900 -DEMULFLT -DUFS -DRPC \
-DNFS -DINET -DKERNEL -DUPGRADE=0 -DSWAPTYPE=0 ../vax/swap.c
/lib/c2 swap.s | ../vax/inline/inline | as -o swap.o
rm -f swap.s
loading vmunix
rearranging symbols
text
data
bss
dec
hex
460556 91884
533304 1085744 109130

Then, copy the kernel into the root, saving the old one:
old# mv /vmunix /vmunix.orig
old# cp vmunix /vmunix

Finally, reboot the system:
old# /etc/reboot

3.7.12.2

Sample Patch Procedure for a RISC Machine – In this example, the
ULTRIX-32 Version 3.1 host is called "old," and the ULTRIX/UWS Version 4.1
host is called "new."
First, copy the les to "old":
old# rcp new:/usr/mdec/named_pipe/nfs_subr.o.31mips /tmp
old# rcp new:/usr/mdec/named_pipe/vnodeops_gfs.o.31mips /tmp

Then, as root, go to the kernel binary pool, and copy the les into it, saving the
originals:
old#
old#
old#
old#
old#

cd
mv
mv
cp
cp

/sys/b.mips/BINARY
nfs_subr.o nfs_subr.o.save
vnodeops_gfs.o vnodeops_gfs.o.save
/tmp/nfs_subr.o.31mips nfs_subr.o
/tmp/vnodeops_gfs.o.31mips vnodeops_gfs.o

3–20 ULTRIX Software Notes

Then, build a new kernel:
old# cd ../MARCH
old# make
/bin/rm -f a.out a.out.q assym.h
cc -DTIMEZONE=300 -DDST=1 -DMAXUSERS=32 -DMAXUPRC=50 -DPHYSMEM=8 \
-DNCPU=1 -DDMMIN=32 -DDMMAX=4096 -DBUFCACHE=10 -I. -I. \
-DMARCH -DR2000a -DUWS -DDLI -DLAT -DDECNET -DSYS_TRACE \
-DRPC -DUFS -DNFS -DINET -DQUOTA -DMIPS -DKERNEL -g ../machine
/genassym.c
/bin/rm -f a.out
/bin/rm -f entry.o
cc -EL -I. -c -G 8 -O0 -g3 -I. -DMARCH -DR2000a -DUWS -DDLI -DLAT \
-DDECNET -DSYS_TRACE -DRPC -DUFS -DNFS -DINET -DQUOTA \
-DMIPS -DKERNEL -DLOCORE -g -DTIMEZONE=300 -DDST=1 \
-DMAXUSERS=32 -DMAXUPRC=50 -DPHYSMEM=8 -DNCPU=1 -DDMMIN=32 \
-DDMMAX=4096 -DBUFCACHE=10 ../machine/entry.s
/bin/rm -f vmunix
/bin/sh ../conf/mips/newvers.sh
cc -EL -I. -c -G 8 -O2 -g3 -I. -DMARCH -DR2000a -DUWS -DDLI -DLAT \
-DDECNET -DSYS_TRACE -DRPC -DUFS -DNFS -DINET -DQUOTA \
-DMIPS -DKERNEL -g -c vers.c
uopt: Warning: file not optimized; use -g3 if both optimization \
and debug wanted
loading vmunix
echo ../mips/symbols.sort vmunix
/bin/size vmunix
text
data
bss
dec
hex
840112 166352 177856 1184320 121240
/bin/chmod 755 vmunix

Then, copy the kernel into the root, saving the old one:
old# mv /vmunix /vmunix.orig
old# cp vmunix /vmunix

Finally, reboot the system.
old# /etc/reboot

3.7.13

DLI Programs Must Be Recompiled
The sockaddr structure for DLI was inadvertently changed, due to another change
in the  header le. Therefore, any DLI programs must be recompiled.

3.7.14

DLI/802 Passes Up Packets That Should Be Dropped
When a user opens a DLI/802 socket and enables an individual and/or group SAP,
the socket can receive "Unnumbered Information" messages sent to that SAP with the
poll bit set to 1. To detect this event, the user must use the recvfrom call and
process the control eld passed in the address/header structure. This is done by
testing bit 4 (assuming the low order bit is numbered 0) of the U_fmt member of the
osi_802hdr structure. "Unnumbered Information" packets should only have the
poll bit set to 0. If the bit is set to 1, the packet should be ignored.

ULTRIX Software Notes 3–21

3.7.15

MOP Request Counters Function Does Not Work for VAX Systems
with DEBNAs
The Data Link Interface (DLI) does not respond to MOP Request Counters messages
if the message is received over a DEBNA.
This condition is unlikely to affect anyone but users trying to troubleshoot a network
problem. The desired information can be obtained if DECnet is installed on both the
requesting system and the target system by executing the following command:
# ncp tell node nodename show line bnt-0 counters

In this example, nodename is the name of the remote node from which the
information is being solicited.

3.7.16

The snmpsetup Command Requires a Community Name
The snmpsetup command requires you to enter a community name even if
communities are not to be used in the network.
If you do not want to use communities in the network, enter a dummy community
name when prompted by the snmpsetup command. At the completion of the
snmpsetup command, delete the dummy community name from the
/etc/snmpd.conf le.

3.7.17

DEMNA Adapter Not in netsetup Script
The netsetup script, which allows system administrators to congure their local area
network, fails to list the Digital DEMNA XMI bus to Ethernet Adapter as a
supported network adapter for ULTRIX. The table of common network device names
lists the following adapters:
Device Name
----------xna0
ni0
de0
.
.
.

Description
----------DEBNI - BI bus
DEBNT, DEBNA - BI bus
DEUNA, DELUA - UNIBUS

The table should read as follows:
Device Name
----------xna0
xna4
ni0
de0
.
.
.

Description
----------DEBNI - BI bus
DEMNA - XMI bus
DEBNT, DEBNA - BI bus
DEUNA, DELUA - UNIBUS

When selecting the DEMNA as a networking interface, answer "xna4" as the device
name:
"What is the device name of your Network Interface [xna4]?"

3–22 ULTRIX Software Notes

3.8 Printing
The following notes apply to printing.

3.8.1

The lpr(1) Command
The lpr(1) command allows control characters to be printed using the –l option.
Even when this option is specied, print jobs are piped through the of lter, or
whatever lter is specied in the submitting lpr(1) command. There are some
control characters, for example ^A and ^Y, that have special meanings for the lters.
If the le you want to print contains these control characters, it may cause the lters
to hang, in which case you will have to remove the job from the queue using the
lprm(1) command. You may also have to change the control characters in the le.
If you change the control characters in the le, use the lpr(1) command with the –x
option. This is a transparent lter that allows all data to be passed to the printer
unchanged.

3.8.2

Notes on lprsetup(8)
The following notes apply to the lprsetup(8) command.

3.8.2.1

Default Values Set by lprsetup – The current default value for the xs parameter
is 040040. This value is incorrect. The value should be changed to 044000 (octal)
for the following printers:
la50
la75
la100
la210
The following printers work with either value set:
lcg01
lj250
ln03
ln03s
ln03r
lg31
The default values set by lprsetup correspond to the factory settings for each
printer with the exception of the ln03, ln03s, and lj250. For these printers the factory
setting for baud rate is 4800 while the default for lprsetup is 9600. You must
either change the entry in the /etc/ttys le to 4800 or you must change the
printer speed to 9600.

3.8.2.2

lprsetup Command Defaults to No Parity – For known serial printers (with the
exception of the LA50 and the LA75), the lprsetup command sets the fs ag in
/etc/printcap to no parity. The fs ag for the LA50 and LA75 is set to even
parity. Having no parity can cause problems especially if the printer’s dip switches
are set to a specic parity, because the terminal driver will set the line to some

ULTRIX Software Notes 3–23

default parity. This may or may not be the same as the printer’s settings. Therefore,
the printer’s dip switches should be set to a known parity and the fs ag in
/etc/printcap should be set explicitly to match the printer.
To do this, edit /etc/printcap or use the lprsetup command when creating
the printing environment. See the sg flags eld in tty(4).

3.8.3

Printing Large Files
The default size limit of a le to be printed is 1025024 bytes (local or remote).
As superuser, you can modify the default by editing the /etc/printcap le.
Insert the parameter mx#0 or mx#N (where N is an integer) in the printer’s
printcap entry. Now the le size limit is either unlimited or N blocks of 1024
bytes, respectively. Do this on the local system (where you issue the lpr
command). The limit applies both to local print jobs and to those print jobs sent to
remote systems. The limit set at the local system does not affect print requests sent
from remote systems.
As a nonprivileged user, you can work around the le size limit by dividing the le
into sections less than 1025024 bytes before printing, assuming that the le data
format allows for this. Or, you can use the rcp command to copy the le to a
system with a printer that has a sufciently large le size limit. Log in on that system
and then request local printing.

3.8.4

Retrying Print Jobs Indefinitely
If a /etc/printcap entry does not specify the :of: or the :if: capability, it
is possible that the line printer daemon lpd will retry print jobs indenitely.
To prevent this, add the following to the /etc/printcap entry:
:if=cat%0:\

This species the cat program as the input lter, the %0 switches off the passing of
the default arguments for the input lter.

3.8.5

Spool Directories for Remote Printers
If you manually create a printcap entry for a remote printer, you must also create
a spool directory for that printer, just as you would for a local printer. For example,
if you have an LA100 printer, with a printcap entry of
:sd=/usr/spool/la100, then you should type the following commands to
create its spool directory with the proper owner:
# mkdir /usr/spool/la100
# chown daemon /usr/spool/la100

If you use the lprsetup script to add a printer, the spool directory is created for
you.

3.8.6

PrintServer Client Software for ULTRIX
In Versions 3.0 and 3.1 of ULTRIX–32, print spooler support for the PrintServer
family of network printers was supplied through a layered product, Version 2.0 of the
PrintServer Client Software for ULTRIX.

3–24 ULTRIX Software Notes

In ULTRIX/UWS Version 4.1, the print spooler enhancements are part of the
operating system, so you must not install the PrintServer Client layered product.
The print spooler provides network printing services on the PrintServer 20, the
PrintServer 40, and the PrintServer 40 Plus network printers over a DECnet or
TCP/IP network.
For management, booting, and le services, you still need to install either the
PrintServer Supporting Host for ULTRIX (to boot and manage from ULTRIX) or the
VAX PrintServer Supporting Host (to boot and manage from VMS).
For PrintServer network printers on a DECnet network, you require the VMS
PrintServer Supporting Host Software, Version 2.0, 2.1, or 3.0, running on a VAX
system.
For PrintServer network printers on a TCP/IP network, you require the PrintServer
TCP/IP Supporting Host Software, Version 1.0 or 2.0, running on an ULTRIX
system.
Each client, supporting host, and PrintServer printer is either a DECnet or TCP/IP
node on the network.
You can print PostScript, ANSI, ASCII, ReGIS and TEK4010/4014 les from an
ULTRIX system on a PrintServer located on the same local or wide area network.
On a DECstation 3100 you can print ASCII, ANSI, and PostScript les only.
3.8.6.1

The lpr –D Option – If the lpr –D (data_type) option is misspelled, the job fails
and the message "translator not found" is reported in the error log. You are not
notied of the job failure.
The installation default data type is ASCII, so if you do not specify a data type with
the lpr command, or in the printcap entry, then the data type defaults to ASCII.
With the ASCII data type the line printer spooler uses the ln03rof LN03R ASCIIto-PostScript translation lter. The ln03rof lter looks at the rst two characters
in the le and if the characters are %!, then the lter treats the le as a PostScript le
and sends it to the printer without translation. If the characters are not %!, then the
lter treats the le as an ASCII le and translates it before sending it to the printer.
The ln03rof lter sets a landscape print mode by default. To print using portrait
mode, modify the /etc/printcap le to include the following two entries:
:p1#66:\
:pw#80:\

When printing in portrait mode, if the job page length is greater than 66 the page is
printed in portrait, but a smaller font is used. If the job page width is greater than
80, the page is printed in landscape with a smaller font.
For more information about the ln03rof lter, see the ln03rof(8) reference page.
3.8.6.2

Problems Printing over TCP/IP Network – If you cannot print from your
PrintServer client to the PrintServer printer over a TCP/IP network, type the
following command to check the problem:
% /etc/ping 

If a problem does not exist, the TCP/IP PrintServer displays the following message:
 is alive

ULTRIX Software Notes 3–25

If a problem does exist, the TCP/IP PrintServer displays the following message (in
approximately 30 seconds):
No answer from 

This message is displayed when your ULTRIX system has a problem resolving the
TCP/IP network address (ARP). This is due to a deciency in the TCP/IP
PrintServer 20 that does not respond to the ARP broadcast.
To correct this problem, you must set the ARP entry manually by typing the
following command in superuser mode on your ULTRIX system:
# /etc/arp -s  

where:
 is the TCP/IP node name of the PrintServer 20.
 is the Ethernet address of the PrintServer 20.
Your PrintServer administrator can obtain the Ethernet address by typing the
following command on the TCP/IP PrintServer’s Supporting Host and executing the
"conguration" option:
# lprc 

This example shows the format of the Ethernet address:
xx:xx:xx:xx:xx:xx

where: xx are the hexadecimal digits.
You must add the ARP entry to your /etc/rc.local le to ensure that this
problem does not reappear after you reboot your ULTRIX system.
3.8.6.3

Job Fails with PostScript Error – If the job ag page prints, but the job itself
does not print, check the device control library Dl entry in the /etc/printcap
le matches the version of the PrintServer supporting host:
If the PrintServer supporting host is Version 2.0 or 2.1, the Dl entry should be:
:D1=/usr/lib/lpdfilters/lps40.a:\

If the PrintServer supporting host is Version 3.0, the Dl entry should be:
:D1=/usr/lib/lpdfilters/lps_v3.a:\

3.8.6.4

Sample Setup Modules for PrintServer – The PrintServer Client for ULTRIX
describes controlling print jobs with printer setup modules by creating and sending
the modules to the PrintServer system. It also shows examples for ANSI and
PostScript setup modules.
The following are three examples of a PostScript setup module that you can use.
These modules can be added to the /usr/lib/lpdfilters/lps_v3.a device
control archive for your future use.

3–26 ULTRIX Software Notes

The LPS_SEPARATE module:
%!
%! Module_name: LPS_SEPARATE
%! This module shows a sample setup module to begin each file
%! on a new sheet. You can use this module to separate files
%! in a multi-file job.
%!
statusdict begin
newsheet
end

The LPS_PS_EXT module:
%!
%! Module Name: LPS_PS_EXT
%! This module shows how you can redefine POSTSCRIPT extensions
%! that are used by non-Digital printers to be Digital POSTSCRIPT
%! extensions. Note that for Control-D and Control-Z, you cannot
%! simply type ^D and ^Z. You must use the actual control codes
%! in the setup module.
%!
%! Please note that this example is based on North American
%! (letter) paper size. For Europe, change all the "lettertray"
%! references to "a4tray".
%!
%! Example: Redefining POSTSCRIPT Extensions
%
/a3
{statusdict begin a3tray
end} def
/a4
{statusdict begin a4tray
end} def
/a5
{statusdict begin a5tray
end} def
/b4
{statusdict begin b4tray
end} def
/b5
{statusdict begin b5tray
end} def
/11x17
{statusdict begin 11x17tray end} def
/ledger
{statusdict begin ledgertray end} def
/legal
{statusdict begin legaltray end} def
/letter
{statusdict begin lettertray end} def
/note
{statusdict begin lettertray end} def
/statement {statusdict begin statementtray end} def
statusdict begin /statementtray /lettertray load def end
<03> cvn { } def % control-c
<04> cvn { } def % control-d
<14> cvn { } def % control-t
<1A> cvn { } def % control-z

The LPS_PUNCHED module.
This shows how you can print on either one or both sides of a sheet no matter
how the paper is loaded. For the PrintServer 20, you have to load hole-punched
paper differently depending on whether you want to print on one or both sides
of a sheet. However, if you include a LPS_PUNCHED setup module in your
print job, you can print on either one or both sides of a sheet no matter how the
paper is loaded.
%!
%! Module Name: LPS_PUNCHED
%! This module shows how you can print on either one or both sides of a
%! sheet no matter how the paper is loaded.
%!
%!Example: Printing on Punched Paper
%!
% Fix-Punched-Paper
%
% Use this module to invert the pages in a job printed on punched

ULTRIX Software Notes 3–27

% paper that is loaded the wrong way for the value of
% /Parameter=Sides that you are using.
/Fix-Punched-Paper-dict 20 dict def
Fix-Punched-Paper-dict begin
%
% Load the old values of the operators that we’re going to redefine.
%
/old-showpage /showpage load def
/old-initgraphics /initgraphics load def
/old-initmatrix /initmatrix load def
%
% Determine the size of the paper. A dictionary is created that
% maps trays names into the size of the paper. Add other names
% if you are using other-sized paper.
%
5 dict begin
/lettertray { 612 792 } def
/a4tray { 595.28 841.89 } def
currentdict
% Leave this dict on stack.
end
%
% Get the size of the current paper.
%
statusdict begin
papersize pop
end
get exec
/y-size exch def
/x-size exch def

% Leave a name on stack.
% Look up the name in the dict.

%
% -- ‘adjust-ctm’ -%
% Performs the inversion of the coordinate system.
%
/adjust-ctm {
x-size y-size translate
180 rotate
} def
%
% This dictionary is used to hold our redefinitions of
% PostScript operators.
%
/redefinitions 3 dict def
redefinitions begin
%
% -- ‘showpage’ -%
% Just like the old one, but invert the page before returning.
%
/showpage {
Fix-Punched-Paper-dict begin
old-showpage

3–28 ULTRIX Software Notes

adjust-ctm
end
} def
%
% -- ‘initgraphics’ -%
% Just like the old one, but invert the page before returning.
%
/initgraphics {
Fix-Punched-Paper-dict begin
old-initgraphics
adjust-ctm
end
} def
%
% -- ‘initmatrix’ -%
% Just like the old one, but invert the page before returning.
/initmatrix {
Fix-Punched-Paper-dict begin
old-initmatrix
adjust-ctm
end
} def
end

% redefinitions

%
% Execute adjust-ctm to set things up for the first page.
%
adjust-ctm
%
% In order to get the "redefinitions" dictionary on the
% dictionary stack without our main dictionary, we leave
% it on the stack.
redefinitions

3.8.6.5

end

% Fix-Punched-Paper-dict

begin
userdict begin

% redefinitions.

Modification to lprsetup – The lprsetup program has been modied to provide
a PrintServer queue entry in the printcap le. The following example shows the
PrintServer queue entry that lprsetup produces:
lp0|lp|0:
:ct=network:
:lf=/usr/adm/lpd-errs/ex1:
:of=lpscomm dotty %U %H %J:
:ps=LPS:
:sd=/usr/spool/lpd/ex1:
:uv=4.0:
:Da=ascii:
:Dl=/usr/lib/lpdfilters/lps_v3.a:
:Sd=a:

ULTRIX Software Notes 3–29

If you normally use European A4 size paper (8.3 x 11.7 inches) instead of American
A size paper (8.5 x 11 inches), you should change the entry :Sd=a: to :Sd=a4:.
In the lprsetup program, if lp is set to /dev/ttynn you are prompted to
choose between device or lat. The program is capable of checking whether or not it
is a real lat device. If your printer is connected to a port on your machine, choose
the default setting. If you want to access a printer by the lat, choose the lat option.
The lprsetup program then checks if the device you have selected is a lat device.
If it is, you are prompted to give information for the lat parameters, ts, os and op.
You must set the ts parameter, and then either the os or the op parameter. If the
ttynn is not a lat device, you receive a warning message.
3.8.6.6

New Entries in the printcap File – There are several new entries in the
printcap le that are generated by the lprsetup program:
ct=
uv=4.0
ps=LPS

3.8.6.7

ct= – The :ct=: entry determines
the connection type. It is a new entry that has been added for ULTRIX/UWS
Version 4.1 to provide a means of checking that parameters have been set up
correctly. It is used to set any one of the following four connection types for a print
queue:
Device – The printer is connected to a serial or parallel port.
LAT – The printer is connected to a LAT port.
Remote – The job is submitted to a remote machine.
Network – The job is submitted to a "foreign" print system by the network.
Each of these connection types provides a different way of connecting the output
lter and the printer.
You need to set ct to specify the connection type you require in the printcap le
for each print queue. The ct entry enables lpd to check that you have specied the
correct parameters. If any of them have been omitted a diagnostic message is entered
in the log le. However, you still have to specify the parameters you had to set to
enable connections in earlier versions of the print system software. For example, the
rp and rm parameters need to be set in the printcap le for each print queue
where remote connections are allowed. See the lpd(8) reference page for a table
showing which parameters should be used for which type of connection.
Note that only three of these connection types were available in earlier versions of
the ULTRIX print system: device, LAT and remote. The fourth type of connection
(network) has been added to support the LPS20 and LPS40 PrintServers in
ULTRIX/UWS Version 4.1.
To enable PrintServer support you must ensure the :ct=network: entry is
included in the printcap le for the appropriate print queue.

3–30 ULTRIX Software Notes

3.8.6.8

uv=4.0 – The :uv=4.0: entry determines the version number of the ULTRIX
operating system. This entry has been introduced to allow backward compatibility
with earlier versions of the print system. It is a replacement for the :uv=psv1.0:
entry which was previously used in the printcap le to support PrintServer
layered products.
If the :uv=4.0: entry is not included, then the print queue functions as it did in
ULTRIX Version 3.1 or earlier and you cannot access the new features for PostScript
support.

3.8.6.9

ps=LPS – The :ps=LPS: entry determines printer type. You must have this entry
in the printcap le for each print queue using PrintServer features.
It allows lpd to assemble a PostScript job from the user’s data les and PostScript
device control modules. The device control modules access the device features and
manipulate the appropriate printer parameters.
This entry also enables device control library support and provides an extensible
mechanism for selecting translators to generate PostScript from reGIS or ASCII
les.

3.8.6.10

Unknown Message from TCP/IP PrintServer – Sending a PostScript le
containing a returnstatus PostScript operator to a TCP/IP PrintServer returns
the following message:
Message number %XNNNNNNNN

where NNNNNNNN is an 8-digit hexadecimal number.
Because the /usr/lib/lpdfilters/lps_v3.a device control archive uses
returnstatus for reporting errors you will receive a message number instead of
an error message from the TCP/IP PrintServer. For example, attempting to print
duplex on a PrintServer 40 which does not support duplex, returns a message number
instead of the message "PrintServer 40 does not support duplex printing."
For example, if you get a message number,%X00000072, you can nd out which
error message it represents by consulting the following table:
Message Number

Explanation

Layup

%X00000000
%X00000008
%X00000012
%X0000001A
%X00000020
%X00000028
%X00000030

The current path may have been lost.
The ‘copypage’ is not supported by multipage layup.
Layup denition margins result in no usable sheet area.
Layup denition margins overlap one another.
Pages per sheet are greater than number up.
Pages per sheet set to number up.
First page is greater than pages per sheet.
First page set to 1.
Tray selection is not supported by multipage layup.

ULTRIX Software Notes 3–31

Message Number

Explanation

LPS$$SetContext

%X0000003A
%X00000042
%X0000004A
%X00000054
%X0000005B

No media-size medium is loaded in printer_name.
Media-size medium is not supported by printer_name.
Media-size medium is not in the input_tray_name tray
in printer_name.
Fatal device control library problem. Cong error:
conguration-error on printer_name.
The upper page limit has been reached. Remaining
pages will be ushed.

LPS$$SetOutputTray

%X00000063
%X0000006A

Output will be delivered to output-tray-name tray on
printer_name.
Tray-name tray on printer_name is tray-name.

LPS$$SetSides

%X00000072
%X0000007A
%X00000082
%X0000008A
%X00000090

Printer-name does not support duplex printing.
Printer-name does not support tumble printing.
Input tray selection not supported for printer_name.
Output tray, output-tray-name, not supported on
printer_name.
Condition on line line-number in layup denition.

Prologue Loader

%X0000009B
%X000000A3
%X000000AA
%X000000B2

Prologue prologue-name, version version-number.
Bad password
Duplex to ‘face_up’ output tray is not supported on
printer_name.
One_sided_duplex is not supported on printer_name.

For an explanation of error messages and user action, refer to the ULTRIX Guide to
Printserver Clients.
3.8.6.11

ANSI Preamble Loading for TCP/IP PrintServer – The ANSI translator
ansi_ps requires a preamble to be present in the printer. It is designed so that it
sends this preamble to the printer unless it is invoked with an argument to indicate
that the correct version of the preamble is already present.
The "VAX PrintServer Supporting Host Software" already supports loading the
preamble at boot time, which improves the performance of short jobs by up to
9 seconds.
The current version of TCP/IP Supporting Host software does not implement the
reporting of resources to lpd. As it is currently congured the ANSI translator
always sends the preamble.

3–32 ULTRIX Software Notes

By using the following procedures you will enable the TCP/IP Supporting Host
software to load the preamble when it boots, and disable the translator from sending
the preamble.
To enable the TCP/IP Supporting Host software to load the preamble when it boots:
1.

Log in to your TCP/IP Supporting Host machine and become the superuser.

2.

Change to the conguration directory for the TCP/IP Supporting Host software
and copy the ANSI preamble le from an ULTRIX/UWS Version 4.1 system:
# cd /usr/lib/iplps
# rcp :/usr/lib/lpdfilters/preamble.ps .

3.

Add the following line at the top of the preamble.ps le:
/decbind {} def

4.

The modied preamble.ps le should now be appended to the le
setup..
This command creates the le if it did not already exist:
# cat preamble.ps >> setup.

5.

Reboot your PrintServer.

To disable the translator from sending the preamble you should create a datatype
called fastansi. You should propagate this change to every ULTRIX/UWS
Version 4.1 machine from which you wish to send jobs to your PrintServer:
1.

Edit the le /usr/lib/lpdfilters/xlator_call

2.

Find the following lines:
ansi)
exec ansi_ps -F $pagesize -O $orientation -e "$@";;

3.

Then add the following two extra lines immediately afterwards:
fastansi)
exec ansi_ps -F $pagesize -O $orientation
-R "prologue lps_ansi_prologue Version 3.1-57" -e;;

You can now print jobs from your fast queue. For example,
% lpr -P  -D fastansi file1 file2

3.8.7

PrintServer Layup Files Missing
The following four sample layup les are not located in /usr/lib/lpdfilters
as stated in the Guide to PrintServer Clients:
lpsnup.lup
lpssingeholes.lup
lpsdoubleholes.lup
lpsholes.lup
To work around the problem, you can create the les, then locate them in
/usr/lib/lpdfilters. The les are data les and should be created with the
owner as root, system as group, and permissions set to 644.
ULTRIX Software Notes 3–33

The contents of these les are as follows:
1.

lps2up.lup
! LPS$2up.lup specifies a variation for 2 up printing. A
! larger left margin is specified to allow for hole punching.
! This file is for single sided printing.
borders
margins = 19, 19, 60, 19

2.

lpsdoubleholes.lup
! LPS$DoubleHoles.lup specifies a larger left margin to allow
! for hole punching. This file is for double sided printing.
no borders
margins = 19, 19, 60, 19
alternate = left

3.

lpsholes.lup
!
!
!
!

LPS$holes.lup provides for a larger left margin for hole
punching that will work in either duplex or simplex modes.
Note that it will not produce the desired result with any
tumbling operation.

no borders
margins = 19, 19, 60, 19

4.

lpssingleholes.lup
! LPS$SingleHoles.lup specifies a larger left margin to allow
! for hole punching. This file is for single sided printing.
no borders
margins = 19, 19, 60, 19

3.8.8

Configuring the System for an LA324 Printer
As there is no entry for the la324 printer type in the lprsetup program, select
the lj250 printer type to add an LA324 print queue to your /etc/printcap le.
When prompted for a symbol name, type fs and then change 03 to 023. There are
no other changes to make.
The following shows a sample entry for an LA324:
# This is for an LA324
lp5|5:\
:af=/usr/adm/lp5acct:\
:br#4800:\
:ct=dev:\
:fc#0177777:\
:fs#023:\
:if=/usr/lib/lpdfilters/lj250of:\
:lf=/usr/adm/lp5err:\
:lp=/dev/tty05:\
:mc#20:\
:mx#0:\
:pl#66:\
:pw#80:\
:rw:\
:sd=/usr/spool/lpd5:\

3–34 ULTRIX Software Notes

:sh:\
:uv=4.0:\
:xc#0177777:\
:xf=/usr/lib/lpdfilters/xf:\
:xs#044000:\

3.9 Software Development
This section contains notes about software development tools such as editors,
compilers, libraries, linkers, and debuggers.

3.9.1

Customer Device Drivers: Recompile Potential
Customer device drivers might require recompiling and relinking if they use the
kernel memory allocator interface dened in /sys/h/kmalloc.h.
Customer device drivers that use the memory allocator interface dened in
/sys/h/kmalloc.h will no longer work if the macros KM_ALLOC, KM_FREE
or KMEM_DUP are used. The allocator C routines km_alloc, km_free and
km_memdup support the same formal arguments as in earlier versions of the
operating system, and hence do not require changes to their usage. The macros have
retained their original formal arguments; however, the macro implementation has
changed.
A workaround for drivers that use the macros dened in /sys/h/kmalloc.h is to
recompile dependent modules and then relink the kernel.

3.9.2

LANCE Driver Name Change
For the ULTRIX/UWS Version 4.1 release, the ULTRIX LANCE driver, formerly
referred to as se has been renamed ln. Correspondingly, the se(4) manual page has
been renamed to ln(4).
The LANCE driver is used on all ULTRIX workstations and servers which use the
AMD LANCE Ethernet Controller chip as a network interface. Support exists for
backward compatibility with previous releases. The system recognizes the se name
and returns information for ln instead. However, any application which relies on the
name se should be updated so that it does not depend on a specic hard coded name.
The most common case of hard coding an Ethernet device string into an application
is to obtain the Ethernet hardware address. A portable method for obtaining this
address (using sample code) is shown in the following example.
To obtain the Ethernet hardware address of the rst available interface, follow an
ioctl to get the interface conguration list with a call to get the interface ags for
each interface. The ags’ eld is then checked for a valid interface, that is, one
which is up and running. The actual name of the interface is not important. This
allows future network devices to be recognized automatically, independent of the
name assigned to them.
#define IFREQCNT 64
main() {
...
struct ifreq *ifr;
struct ifreq ifreqs[IFREQCNT];

ULTRIX Software Notes 3–35

struct ifreq tmp_ifr;
struct ifconf ifc;
struct ifdevea ifrp;
if((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
perror("socket");
exit( -1);
}
ifc.ifc_req = ifreqs;
ifc.ifc_len = sizeof(ifreqs);
if (ioctl(s, SIOCGIFCONF, &ifc) < 0) {
perror("ioctl: SIOCGIFCONF");
exit(-1);
}
/* loop through list of possible network interfaces */
for(ifr = ifreqs; ifr < &ifreqs[IFREQCNT-1]; ifr++) {
if(strlen(ifr->ifr_name) == 0) {
printf("No network devices configured\n");
exit(-1);
}
(void) strcpy(tmp_ifr.ifr_name, ifr->ifr_name);
if (ioctl(s, SIOCGIFFLAGS, &tmp_ifr) < 0) {
perror("ioctl: SIOCGIFFLAGS");
exit(-1);
}
/* skip devices which aren’t up and running, etc. */
if (((tmp_ifr.ifr_flags & (IFF_UP|IFF_RUNNING)) !=
(IFF_UP|IFF_RUNNING)) ||
((tmp_ifr.ifr_flags & (IFF_POINTOPOINT)) ==
(IFF_POINTOPOINT)) ||
((tmp_ifr.ifr_flags & (IFF_DYNPROTO|IFF_BROADCAST)) !=
(IFF_DYNPROTO|IFF_BROADCAST))) {
continue; /* skip */
}
/* found a valid Ethernet interface */
(void) strcpy(ifrp.ifr_name, tmp_ifr.ifr_name);
break;
}
/* read the physical address */
if(ioctl(s, SIOCRPHYSADDR, &ifrp) < 0) {
perror("ioctl: SIOCRPHYSADDR");
exit(-1);
}
}

3.9.3

BSD curses: Multiple Calls to initscr(), nocrmode() and nl() Cause
Window Problems
It is documented that multiple calls to initscr() should not be issued. However,
it would seem to be a safe assumption that if initscr() is called, then
endwin() called before initscr() is called again, then the second call to
initscr() should work correctly. A case has been discovered in which the
second call does not work as expected.
The following example is extracted from a program which creates multiple
subwindows and draws boxes around the windows. After initialization and
establishment of "nocrmode" mode, several windows are created and drawn. One of
the windows is activated, and the text "-- draw line no_crmode --" is displayed in it,
followed by a second line asking the user to press the  key. The
windows are refreshed, closed ( endwin() ), then initscr() is called again,

3–36 ULTRIX Software Notes

followed by crmode(). This time the window edges are drawn to the left edge,
instead of to the right edge.
#include
#include
#include
#include
.
.
.






WINDOW

*winb;

extern
extern
extern
extern

void
void
void
void

Die();
Window_open();
Initialize();
Hit_anykey();

void
main()
{
initscr();
nocrmode();
nl();
noecho();
signal( SIGINT, Die );
Window_open();
Initialize();
wmove( winb, 1, 5 );
wprintw( winb, "-- draw line no_crmode --0" );
wmove( winb, 2, 5);
wprintw( winb, "-- Hit return key --0" );
wrefresh( winb );
Hit_anykey();
endwin();
initscr();
crmode();
nl();
noecho();
signal( SIGINT, Die );
Window_open();
Initialize();
wmove( winb, 1, 5 );
wprintw( winb, "-- draw line crmode --0" );
wmove( winb, 2, 5);
wprintw( winb, "-- Hit return key --0" );
wrefresh( winb );
Hit_anykey();
endwin();
Die();
}

The workaround is to reverse the order of the calls to crmode() and to nl() after
the second call to initscr(), as follows:
initscr();

ULTRIX Software Notes 3–37

nl();
crmode();
noecho();

It is suspected that the endwin() function does not restore all terminal modes set
prior to the rst call to initscr(). It is not recommended, however, that
initscr() be called more than once in a program.

3.9.4

Floating Point Emulation (RISC Only)
On RISC systems, if a oating point number is converted to an unsigned long, the
value is truncated to the maximum positive signed long.

3.9.5

VAX pcc Compiler
The compiler does not convert unsigned integers to oating point correctly if the
value exceeds the maximum positive signed integer.

3.9.6

RISC C Compiler
The following notes apply to the RISC C compiler:
The RISC C compiler does not optimize the following program correctly:
main()
{
int x,y;
unsigned z;
if (x-y+1 > z) good(); else bad();
}

The +1 gets lost. Use the –O0 compiler option to disable all optimization, or
cast z to int in the expression. Code that compares signed and unsigned
characters in this fashion is problematical and should be avoided.
The C compiler does not accept a constant pointer expression in a case
statement. For example:
(int)(&((REC *)0)->field)

Remove the redundant cast, and it is accepted.
When the /tmp le system is full, cc reports:
ugen: internal : line 0 : build.p,
line 1743 unexpected u-code

3.9.7

RISC Program Size Defaults
The default maximum data and stack segment size for applications running on RISC
systems has been changed to 32 Mbytes. Previous versions of RISC systems had an
articially high default of 88 Mbytes.
Data and stack segments can now be congured independent of swap space. To
change the default, refer to Changes to Swap Space and Program Size Parameters in
Chapter 1.
As a result of the change, some applications may not be able to extend their data.
System calls will return the errno ENOMEM to these applications.

3–38 ULTRIX Software Notes

3.10 ULTRIX/SQL
The following notes apply to ULTRIX/SQL.

3.10.1

ULTRIX/SQL Commands Dump Core When the II_SYSTEM Variable
Is Not Defined
As noted in several places in the ULTRIX/SQL documentation, the II_SYSTEM
environment variable must be set for each ULTRIX/SQL user. If users enter
ULTRIX/SQL commands when this variable is not dened, some of those commands
will dump core without clearly reporting the error condition.
For more information about dening the II_SYSTEM variable, refer to the section
that discusses startup les in either the ULTRIX/SQL Installation Guide or the
ULTRIX/SQL Release Notes.

3.10.2

Layered Products Compatible with ULTRIX/SQL Version 1.1
Layered Products that run on ULTRIX/SQL Version 1.0 are compatible with
ULTRIX/SQL Version 1.1. When either the ULTRIX/SQL Relational Database
subset or the Development Library subset is loaded (QLRBASE110 or
QLRDEVT110 for RISC; QLVBASE110 or QLVDEVT110 for VAX), two lock les
are created, one for ULTRIX/SQL Version 1.1 and one for ULTRIX/SQL Version
1.0. This second lock le allows ULTRIX/SQL layered products which depend on
the Relational Database or Development Library subset to load properly.
Note
If you are installing both ULTRIX/SQL and ULTRIX/SQL layered
products from a RIS server environment, you must follow these steps:
1.

Install the necessary ULTRIX/SQL subsets.

2.

After the ULTRIX/SQL subsets have successfully installed, install the
ULTRIX/SQL layered product subsets.

If you attempt to install the ULTRIX/SQL subsets and the ULTRIX/SQL
layered product subsets simultaneously, the ULTRIX/SQL layered product
subsets will fail to install.

3.10.3

New ULTRIX System Parameters Provided to Tune Priority
Handling
In some circumstances, especially when there are a large number of database user
processes, the normal reassignments of process priorities that accompany signal
handling will have a detrimental effect on overall system performance. If this
situation arises, it may be useful to recongure the priority_mod parameters
provided at the end of the /usr/sys/conf/mips/param.c le for RISC
systems or the /usr/sys/conf/vax/param.c le for VAX systems. The
normal settings for these parameters are:
int sigpause_priority_mod = 0;
.
.
.
int psignal_priority_mod = 1;

ULTRIX Software Notes 3–39

To recongure the system so that process priority is not modied by signal activity,
reset these parameters as follows:
int sigpause_priority_mod = 1;
.
.
.
int psignal_priority_mod = 0;

After you have reset these parameters, you must recongure and rebuild the kernel.
For information on reconguring and rebuilding the kernel, see the Guide to
Configuration File Maintenance.

3.10.4

ULTRIX/SQL rc.local Startup File Includes Multi-User Reentry Fix
In ULTRIX/UWS Version 4.0, ULTRIX/SQL provided the le
/usr/kits/sql/sqlstartup.rclocal for you to include in your
/etc/rc.local le to enable the automatic startup of SQL at system boot time.
However, in that version, this le failed to restart the DBMS servers properly after
the system was taken down to single-user mode and then brought back up to multiuser mode without being rebooted. This problem has been corrected. If you are
updating your system from ULTRIX/UWS Version 4.0 to ULTRIX/UWS Version
4.1 you might want to include the new version of the ULTRIX/SQL startup le in
/etc/rc.local.

3.10.5

ULTRIX/SQL Error Log File May Grow Very Large
The ULTRIX/SQL system maintains an error log in the le
/usr/var/kits/sql/sql/files/errlog.log. This le can grow without
bounds. It should be checked periodically and can be removed or truncated if
previous messages logged there are no longer needed. If you remove the le, it will
be re-created when new logging information is generated.

3.11 VAX C
The following notes apply to VAX C.

3.11.1

VAX C/ULTRIX (vcc) and pcc Calling Conventions
When calling a function that returns a structure, the VAX C for ULTRIX (vcc)
compiler and the pcc compiler use incompatible calling conventions; this is the only
case where the calling conventions differ. Specically, if you call a function that
returns a structure from vcc and that function was compiled with pcc, the call
returns unpredictable results. If you call a function that returns a structure from pcc
and that function was compiled with vcc, a segmentation fault occurs.

3.11.2

VAX C/ULTRIX (vcc) Compiler
When you use the quoted form of le inclusion, the vcc compiler looks for the
included le in the directory the vcc command is executed from, not in the directory
that contains the source le.

3–40 ULTRIX Software Notes

ULTRIX Worksystem Software Notes

4

This chapter discusses issues and known problems with the software and, when
possible, provides solutions or workarounds to the problems.
The notes in this chapter cover the following topics:
The X Windows System
The Display Postscript System
Fonts
The User Environment

4.1 X Window System
This section contains notes pertaining to all ULTRIX/UWS Version 4.1 X servers,
Xlib functions, and other X-related issues. For additional notes on X servers specic
to individual processors, see Chapter 2, Processor-Specic Notes as well.

4.1.1

ULTRIX/UWS Version 4.1 X Servers
All the ULTRIX/UWS Version 4.1 X servers, except the Xgb server, have the
Display PostScript System extension.
The ULTRIX/UWS Version 4.1 software contains the following X servers:
Xqdsg: for 8- and 4-plane VAX color workstations
Xqvsm: for VAX monochrome workstations
Xgb: for VAXstation 3520/3540 workstations
Xcfb: for DECstation/DECsystem 3100/2100, and DECstation/DECsystem
5000 Model 200 color workstations
Xmfb: for monochrome DECstation/DECsystem 3100/2100 workstations
Xtm2d: for DECstation/DECsystem 5000 Model 200PX workstations
Xtm: for DECstation/DECsystem 5000 Model 200PXG and PXG-turbo
workstations
All servers have been compiled under X11 Release 3.

4.1.1.1

Server-Client Interaction and DECnet Addressing – Starting with
ULTRIX/UWS Version 4.0, DECnet addresses are specied with a variable length.
The dn_naddr structure holds the address length in the rst two bytes and the
address itself in the remaining bytes.

In earlier releases of ULTRIX/UWS, DECnet addresses were two bytes long. The
dn_naddr structure was always four bytes long; the rst two bytes contained the
length of the address, and the second two bytes contained the address. X servers that
expect DECnet addresses to be xed at two bytes in length will not communicate
properly with some UWS X clients under ULTRIX/UWS Version 4.1.
Note that DECnet Phase V species that the address within dn_naddr is a
variable-length address. DECnet code within the DECwindows Session Manager
reserves space for DECnet Phase V addresses in the X protocol. This ensures
compatibility with DECnet Phase V. To use the DECwindows Session Manager with
a third-party (non-Digital) server requires that the server interpret dn_naddr as a
variable-length structure.
For more information on dn_naddr and the X Protocol, see X Window System:
The Complete Reference to Xlib, X Protocol, ICCCM, XLFD, Second Edition,
Scheier, Robert W. and James Gettys. Pages 463 and 734.
4.1.1.2

Default Keyboard Keymap – The US LK201-LA keyboard keymap is the default.
To load a different keyboard keymap, you must rst log in as superuser and then
create a keymap_default symbolic link in the /usr/lib/X11 directory,
which points to the keyboard keymap you want to load. The following example
shows you how to set the default keyboard keymap to the Swedish LK201:
# cd /usr/lib/X11
# ln -s keymaps/swedish_lk201lm.decw_keymap keymap_default

You must restart the X server after changing the default keyboard keymap. To restart
the X server, type the following at the superuser prompt:
# /etc/shutdown now
# 

To set the default keyboard keymap to US LK201-LA, you must remove the
/usr/lib/X11/keymap_default le.
If you have multiple diskless clients (for example, three VAXstation 2000 systems)
with different keyboards (German, French, English, Spanish) you cannot map the
keymap_default entry of /usr/lib/X11 to be private for each client.
4.1.1.3

Save-Unders and Backing Store – All X servers except the Xgb server now
support save-unders as well as backing store functionality. Save-unders and backing
store beautify screen and window refreshing, but increase the execution time of some
windowing applications. Try running your server both with and without save-unders
to decide if a signicant performance penalty exists when using save-unders in your
hardware and software conguration.
By default, save-unders and backing store are disabled on VAX systems and enabled
on RISC systems. The state (enabled or disabled) of save-unders and backing store is
determined by a command line option to the server executable. The command to
invoke this executable is usually located in the /etc/ttys le. To turn save-unders
and backing store on or off, you must edit the line in the /etc/ttys le where the
server is invoked. The server must be restarted for any changes made in /etc/ttys
to take effect.

4–2 ULTRIX Worksystem Software Notes

To enable save-unders and backing store, invoke the server without the -su (saveunder) and -bs (backing store) command line options. For example, to enable
save-unders and backing store in the Xcfb color server, invoke the server with the
following command:
# Xcfb

Save-unders can be disabled with the -su command line option. For example, to
disable save-unders in the Xcfb color server, invoke the server with the following
command:
# Xcfb -su

To disable both backing store and save-unders, invoke the server with the following
command:
# Xcfb -su -bs

The -bs and -su server command line options are not yet documented in the
reference pages.
4.1.1.4

Problems to Due Swap Space Size – If the system’s swap space disk partition
lls, an attempt by the server to access a previously unused page in the dynamically
allocated portion of its data segment crashes the server with a segmentation fault.
This problem can occur at various points during server execution, not just at those
related to the allocation of server resources.
The anomaly stems from a peculiarity of ULTRIX virtual memory: Swap space on
the disk partition is allocated when the memory is rst accessed, and not when the
corresponding memory segment is allocated.
To avoid the problem, congure your system with a larger swap space. Swap space
requirements of the applications being used dictate the minimum acceptable swap
partition size.

4.1.1.5

Invalid Font Path – If an invalid font path is specied on the ULTRIX server
startup command line, the server will crash when it connects with the rst client.

4.1.1.6

Host Names in X Server Access Control List – When the X server starts up, it
places the name of the local host and the name of the host where the X server is
running into the server’s access control list. In addition, if there is a
/etc/X0.hosts le or /etc/X1.hosts le, its contents are added to the
access control list.
If you have sm.host_list resource in your .Xdefaults le, the access
control list replaces the server’s list when dxsession starts up. If no such
resource exists, dxsession will not change the server’s list.
When you display the Session Manager Customize Security dialog box, the server’s
current access control list is listed. If this list is changed and the current settings are
saved, a sm.host_list resource is placed into the .Xdefaults le. The next
time you start dxsession, the server’s list will be replaced by this resource.

ULTRIX Worksystem Software Notes 4–3

4.1.1.7

X Server Messages File – X server messages are logged in the
/usr/adm/X#msgs le. The le contains the date and time the X server restarts,
the X error messages, and miscellaneous information about X server crashes at server
restart. The number sign (#) indicates the number of the display where messages are
being logged. For workstations with single displays, the messages le name is
X0msgs. For workstations with two displays (such as the VAXstation II/GPX) there
are two messages les, X0msgs and X1msgs, the rst and second display
respectively.
Messages reported to the X#msgs le include:
"Use" messages, which indicate that the line in the /etc/ttys le for
starting the server has a typographical error. Check the /etc/ttys le for
spelling or syntax errors.
"Resource missing" or "Resource installed improperly" messages, which
indicate that fonts are not installed properly, or that the -fp switch in the
/etc/ttys line is not correct. Check to see that the fonts you are using are
installed properly, that the -fc option for setting the default cursor font is
correct, and that the -fn option for setting the default text font is correct.
For example:
main: Could not open default font ’XXX’
main: Could not open default cursor font ’XXX’

"Could not open RGB_DB ’XXX’" messages, which indicate that the rgb
database is not installed correctly. These messages refer to les that apply to
color workstations only. For VAXstation 3520/3540s, the database les are in
/usr/lib/rgb.*. For all other color workstations, the database les are in
/usr/lib/X11/rgb.*
"Screen failed initialization" messages, which usually indicate that the le
/dev/mouse is not protected correctly or there is already a server running.
Other error messages that indicate that the X server is out of memory.
Some of the X messages are fatal errors.
4.1.1.8

How to Restart the X Server – The following procedure briey describes the
simplest way to restart the X server. Use this procedure if your X server hangs:
1.

Log in to your workstation from a remote terminal.

2.

Change your user ID to root using the su(1) command.

3.

Enter the following command:
# ps -ax

4.

Locate the X server process. The output of the ps(1) command should display
an X server process similar to the following:
PID TT STAT TIME COMMAND
95 ? S
117:09 - :0 (Xqdsg)

5.

Kill the X server PID by entering the following command:
# kill -9 95

4–4 ULTRIX Worksystem Software Notes

By killing the X server process, the server restarts assuming that the server
startup line is the le /etc/ttys.
4.1.1.9

LockDisplay and UnLockDisplay Macros – The X Window System
programming manuals mention use of LockDisplay and UnlockDisplay
macros for writing multithreaded X clients that access buffers of the Display
structure. These macros are often used when writing Xlib side extensions to the core
X11 protocol.
However, ULTRIX/UWS Version 4.0 and ULTRIX/UWS Version 4.1 do not support
these side extensions. Hence, the LockDisplay and UnlockDisplay macros are
not included. If you require these macros, order the ULTRIX/UWS Version 4.1
source kit. Note that you may be able to accomplish display structure locking using
the public domain macros provided by MIT’s Xlib.
Note also that supported core Xlib calls do proper structure locking and are safe for
use by multithreaded clients.

4.1.1.10

Memory Allocation Routines – Xlib denes its own internal versions of the
malloc(), calloc(), free() and realloc() routines, which are also used
by the XUI Toolkit. All clients that link with Xlib or the XUI Toolkit should use the
Xlib-dened versions of these routines. The malloc(), free(), realloc(),
and calloc() routines are dened in XvmsAlloc.o in libX11.a.
If you prefer to use your own version of one or more of these routines, then you must
take action to avoid multiple declaration errors when linking. You can do this by
declaring entry points in your code for each of these four routines and linking
normally with this command:
% cc prog1.c -lX11

Alternatively, note that in /usr/lib/libc.a, calloc() is dened in
calloc.o, but malloc(),realloc(), and free() are dened in
malloc.o. Therefore, if you declare your own routines for malloc(),
realloc(), and free(), but want to pull in calloc() from
/usr/lib/libc.a, you can do so with these commands:
% ar x /usr/lib/libc.a calloc.o
% cc prog2.c calloc.o -lX11

Some popular public domain software packages dene their own versions of some of
these memory allocation functions. You can compile public domain programs that
dene their own memory allocation functions under ULTRIX/UWS Version 4.1 by
doing one of the following:
Disable the package’s version of the functions. They typically have an option
or ag you can set to request that the application use the system memory
allocation functions.
Add function denitions for the functions not dened. Typically, calloc is
missing. The calloc from libc, as described above, may be added.
Disable the functions in Xlib by removing the XvmsAlloc.o module from
libX11.a.

ULTRIX Worksystem Software Notes 4–5

4.1.1.11

ULTRIX System V Emulation Library – To use the ULTRIX System V
emulation library you must link /usr/lib/XlibIntV.o before
/usr/lib/libX11.a. For example, you would enter this command:
% cc xsample.c /usr/lib/XlibIntV.o -lX11 -lcV

4.1.1.12

XCopyArea Function – An application may hang and freeze up the system with
an XCopyArea function call followed by an XIfEvent call. To avoid the
possibility of deadlock, use an XSync function call before issuing the XIfEvent
function call. The XSync call will ush the output buffer and wait for all requests
to be received and processed by the server. In general, if XIfEvent is waiting for
an expected event generated by an X function call, XSync should rst be used to
guarantee that all requests to the server have been sent out. The application must
guarantee that all events are truly written out before the wait is begun.

4.1.1.13

XDrawArc(s) Function – Double dash mode does not work with the
XDrawArc(s) function. The XDrawArc function is used to draw circles and
ellipses. The XDrawArc function is used by some MIT applications.

4.1.1.14

Data Structures and Constants – In UTLRIX/UWS Version 2.2, additions
were made to the XSizeHints and XStandardColormap data structures and a
new structure was added for manipulating properties containing text.

4.1.1.14.1

X Size Hints – The following routines are used for getting and setting size hints:

The XGetWMSizeHints routine returns the size hints stored in the indicated
property on the specied window. If the property is of type WM_SIZE_HINTS, of
format 32, and is long enough to contain a size hints structure, the various elds of
the hints_return structure are set and a nonzero status is returned. Otherwise, a
status of 0 is returned. To get a window’s normal size hints, the
XGetWMNormalHints routine may be used instead.
Status XGetWMSizeHints (dpy, w, hints_return, property)
Display *dpy;
Window w;
XSizeHints *hints_return;
Atom property;

The XGetWMSizeHints routine can generate BadWindow, BadAtom, or
BadValue errors.
The XGetWMSizeHints routine supersedes XGetSizeHints.
The XSetWMSizeHints routine replaces (or sets if the property does not exist)
the size hints for indicated property on the specied window. The property is stored
with a type of WM_SIZE_HINTS and a format of 32. To set a window’s normal
size hints, the XSetWMNormalHints routine may be used instead.
void XSetWMSizeHints (dpy, w, hints, property)
Display *dpy;
Window w;
XSizeHints *hints;
Atom property;

The XSetWMSizeHints routine can generate BadWindow, BadAtom, or
BadValue errors.

4–6 ULTRIX Worksystem Software Notes

The XSetWMSizeHints routine supersedes XSetSizeHints.
The XGetWMNormalHints routine returns the size hints stored in the
WM_NORMAL_HINTS property on the specied window. If the property is of type
WM_SIZE_HINTS, of format 32, and is long enough to contain a size hints
structure, the various elds of the hints_return structure are set and a nonzero
status is returned. Otherwise, a status of 0 is returned.
Status XGetWMNormalHints (dpy, w, hints_return)
Display *dpy;
Window w;
XSizeHints *hints_return;

The XGetWMNormalHints routine can generate BadWindow, BadAtom, or
BadValue errors.
The XGetWMNormalHints routine supersedes XGetNormalHints.
The XSetWMNormalHints routine replaces (or sets if the property does not exist)
the size hints for the WM_NORMAL_HINTS property on the specied window.
The property is stored with a type of WM_SIZE_HINTS and a format of 32.
void XSetWMNormalHints (dpy, w, hints)
Display *dpy;
Window w;
XSizeHints *hints;

The XSetWMNormalHints routine can generate BadWindow, BadAtom, or
BadValue errors.
4.1.1.14.2 XStandardColormap – Two new elements were added in ULTRIX/UWS
Version 2.2 to properties of type RGB_COLOR_MAP: the id of the visual from
which the colormap was created, and an arbitrary resource id that indicates whether
or not the cells held by this standard colormap should be released by freeing the
colormap id or by doing a KillClient on the indicated resource (necessary for
allocating out of an existing map). These elds can be added to the end of the
existing structure (dened in Xutil.h) without disrupting the existing interfaces:
typedef struct {
Colormap colormap;
unsigned long red_max;
unsigned long red_mult;
unsigned long green_max;
unsigned long green_mult;
unsigned long blue_max;
unsigned long blue_mult;
unsigned long base_pixel;
VisualID visualid;
/* NEW */
XID killid;
/* NEW */
} XStandardColormap;

In addition, a new symbolic value was added to Xutil.h indicating resources have
been released by freeing the colormap:
#define ReleaseByFreeingColormap ((XID) 1L)

ULTRIX Worksystem Software Notes 4–7

4.1.1.14.3 XTextProperty – Many of the properties of type STRING were changed in
ULTRIX/UWS Version 2.2 to allow a variety of types and formats. Since the data
stored in these properties are no longer simple null-terminated strings, a new data
structure describes the encoding, type, length, and value of the text as well as its
value. The following structure was added to Xutil.h:
typedef struct {
unsigned char *value;
Atom encoding;
int format;
unsigned long nitems;
} XTextProperty;

/*
/*
/*
/*

property data */
type of property */
8, 16, or 32 */
number of items in value */

4.1.1.14.4 WithdrawnState Constant – Even though interfaces to the WM_STATE
property are not being dened, the constant WithdrawnState was added to
Xutil.h with a value of zero.

4.2 Display PostScript System
The Display PostScript System from Adobe Systems, Inc., extends the entire
PostScript language to bitmap displays. UWS implements the Display PostScript
System as an extension to the UWS server. Using this extension, DECwindows
client applications can send both PostScript imaging requests and X requests to the
same drawable, using a single network connection.

4.2.1

Example Programs Using the Display PostScript System
The /usr/examples/dps directory contains example programs that use the
Display PostScript System. For more information about these example programs, see
the Guide to Developing Applications for the Display PostScript System.

4.2.2

Additional Documentation
In addition to the documentation described in the Guide to Developing Applications
for the Display PostScript System, developers can refer to Adobe’s Document
Structuring Conventions specication, available free of charge from Adobe Systems,
Inc.,
To request a copy by electronic mail, send a mail message to the Adobe le server at
either of the following network addresses:

4.2.3

Internet

ps-file-server@adobe.com

UUCP

...!decwrl!adobe!ps-file-server

Allocating a Colormap for Use with Display PostScript
The colormap cells allocated in a color cube or gray-scale ramp must be contiguous.
The XAllocColorCells routine can be used to allocate contiguous planes, but
not contiguous color cells. Using noncontiguous color cells produces undened
results.
The following routine allocates n contiguous colormap cells, assuming they exist in
the specied colormap. Use this routine, rather than XAllocColorCells, when
dening a colormap or gray-scale ramp for use with Display PostScript code.

4–8 ULTRIX Worksystem Software Notes

static Bool
_AllocContiguousCells(dpy, cmap, pixels, npixels)
Display *dpy;
Colormap cmap;
unsigned long *pixels;
/* filled in by routine */
int npixels;
{
unsigned long *waste = (unsigned long *)NULL;
int nwaste = 0;
Bool contig = False;
int status, i;
unsigned long masks = NULL;
while (!contig) {
status = XAllocColorCells(dpy, cmap, False, &masks, 0, pixels,
npixels);
if (!status)
break;
/* can’t get enough contiguous cells */
for (i=0; i < (npixels-1); i++) {
if (pixels[i] + 1 != pixels[i+1]) {
/* isn’t contiguous, keep trying */
XFreeColors(dpy, cmap, &pixels[i+1], npixels - (i+1), 0);
if (!waste)
waste = (unsigned long *)malloc((i + 1) *
sizeof(unsigned long));
else
waste = (unsigned long *)realloc(waste, (nwaste +
(i + 1)) * sizeof(unsigned long));
bcopy(pixels, waste+nwaste, (i+1) * sizeof(unsigned long));
nwaste += (i+1);
break;
}
}
if (i == (npixels-1))
contig = True;
}
/* clean up and return ’contig’ */
if (nwaste) {
XFreeColors(dpy, cmap, waste, nwaste, 0);
free(waste);
}
return (contig);
}

4.2.4

setrgbXactual Operator Name Change
The setrgbXactual operator has been renamed to setXrgbactual, for
consistency in naming with the other X specic operators. The name
setrgbXactual remains as an alias.

4.2.5

Contexts Created Using the Default Colormaps
Display PostScript programs that use XDPSCreateSimpleContext() to create
display PostScript contexts with the default colormaps have slightly inferior color
rendition. Colors are chosen from a palette of 64 colors (eight greys) instead of 125
colors. Applications that need to use more than 64 colors can get them by using the
XDPSCreateContext() context, which allows the use of an unlimited number of
colormap cells.

ULTRIX Worksystem Software Notes 4–9

4.2.6

Changing the Default XStandardColormap
If you want to alter the XStandardColormap default used by simple Display
PostScript clients, or if you want to free the colormap cells used by the
XStandardColormap routine you can do so by following the methods described
in the ICCCM.
Note
Before you attempt to change the XStandardColormap default, you
must be certain that no clients are using XStandardColormap.

4.2.7

Automatic PostScript Garbage Collection
Automatic PostScript garbage collection is turned on by default. It is a global setting
to the server, but it is turned on every time start executes, that is, each time a
client creates a context.
Any client may turn off automatic garbage collection, but doing so turns it off for all
clients. Garbage Collection is turned back on the next time a client creates a context.
There is no way to determine the current state of automatic garbage collection.

4.3 Fonts
This section explains how fonts are installed, named, and organized in directories. It
also provides notes for application programmers on using fonts.
Fonts are installed by UWS (or by individual applications) and are read by the X
servers on behalf of applications. An X Consortium standard denes the bitmap
distribution format (BDF) in which font sources are distributed. However, X servers
and applications use fonts in a compiled format, which is not standardized.
Most of the ULTRIX/UWS Version 4.1 servers use fonts in the X11 portable
compiled font (PCF) format. This represents a change from the ULTRIX/UWS
Version 2.1 release, where compiled fonts were in DECwindows format (DWF) or
server natural format (SNF). (The Xgb server for VAXstation 3520 and 3540
systems, however, continue to use DWF format.) ULTRIX/UWS Version 4.0 also
made changes to the directories in which fonts are located and expanded the directory
structure for user-supplied fonts and application-supplied fonts.
ULTRIX/UWS Version 4.0 also added fonts for use with the X implementation of
Display PostScript (XDPS). These fonts have their own format, which is a
PostScript-compatible ASCII format. If you have additional PostScript-compatible
fonts, you can install them for use with Display PostScript.
If you are a system manager or applications programmer, you should familiarize
yourself with how the font format change and new directories might affect your
environment.
The subsections of this section are as follows:
Fonts and font utilities on the kit
Default font directories
Application-specic and custom fonts

4–10 ULTRIX Worksystem Software Notes

Display PostScript fonts
Application font information for developers
Font names and aliases
Layered applications with fonts
Changes to the terminal font

4.3.1

Fonts and Font Utilities
The ULTRIX/UWS Version 4.1 software includes font sets for 75 dots-per-inch (dpi)
and 100 dpi displays.
To use fonts other than those supplied in this kit, you must compile their .bdf font
source les. Use the /usr/bin/dxfc font compiler to create .pcf les. (For
the Xgb server, use /usr/bin/dxfc3d to create .dwf les.) Next, use
/usr/bin/dxmkfontdir to create a list of the fonts in the directory for use by
the X server. For more information, refer to dxfc(1X) and dxmkfontdir(1X)
in the UWS Reference Pages.
ULTRIX/UWS Version 4.1 also contains 123 MIT X11 Release 3 fonts for 75 dpi
displays and fonts for compatibility with X10 applications. The MIT and X10
compatibility fonts are unsupported, and are packaged in the unsupported portion of
the software distribution.

4.3.2

Default Font Directories
To be usable, a font must be installed in a directory on the X server’s font search
path. The default fonts for ULTRIX/UWS Version 4.1 are the 75 dpi fonts, but you
can install and use 100 dpi fonts.
The server’s font search path does not include both 75 dpi and 100 dpi font
directories. To use the 100 dpi fonts, you must alter the font path.

4.3.2.1

75 dpi Fonts – If you install just the mandatory subsets, you install compiled 75 dpi
fonts (the default fonts). The server directory search path for these fonts is as
follows:
/usr/lib/X11/fonts/decwin/75dpi/
/usr/lib/X11/fonts/MIT/
/usr/lib/X11/fonts/compX10/
/usr/lib/X11/fonts/local/75dpi/
/usr/lib/X11/fonts/apps/75dpi/
/usr/lib/X11/fonts/private/75dpi/

When a font is requested (by the Xlib routine XQueryFont for example), the
DECwindows X server looks for the font rst in
/usr/lib/X11/fonts/decwin/75dpi/, then in
/usr/lib/X11/fonts/MIT/, and so on.
The 75 dpi fonts for the Xgb server are in DWF format; they are installed in the
following directories:
/usr/lib/dwf/75dpi
/usr/lib/dwf/compX10
/usr/lib/dwf/mitX11

ULTRIX Worksystem Software Notes 4–11

4.3.2.2

100 dpi Fonts – The ULTRIX/UWS Version 4.1 installation procedure allows you
to install 100 dpi fonts in an optional subset. The server search path for 100dpi fonts
is as follows:
/usr/lib/X11/fonts/decwin/100dpi/
/usr/lib/X11/fonts/MIT/
/usr/lib/X11/fonts/compX10/
/usr/lib/X11/fonts/local/100dpi/
/usr/lib/X11/fonts/apps/100dpi/
/usr/lib/X11/fonts/private/100dpi/

The 100 dpi fonts for the Xgb server are installed in the following directories:
/usr/lib/dwf/100dpi
/usr/lib/dwf/compX10
/usr/lib/dwf/mitX11

To use the 100 dpi fonts, you must put them on the X server’s search path by editing
the workstation’s /etc/ttys le. The server startup line looks like the following:
:0 "/usr/bin/login -P /usr/bin/Xprompter -C /usr/bin/dxsession" none on
secure window="/usr/bin/Xcfb"

Modify it to include the -fd and -dpi 100 switches as follows:
:0 "/usr/bin/login -P /usr/bin/Xprompter -C /usr/bin/dxsession" none on
secure window="/usr/bin/Xcfb -fd 100 -dpi 100"

A ULTRIX/UWS Version 4.1 font search path uses only the option specied in the
/etc/ttys le.
After editing the /etc/ttys le, restart the X server to change the default font
search path.
4.3.2.3

Font Directory Contents – This section describes the contents of the font
directories.
/usr/lib/X11/fonts/decwin/75dpi/ and
/usr/lib/X11/fonts/decwin/100dpi/
ULTRIX/UWS Version 4.1 uses these font directories for its supported fonts.
Reserve these directories for use by the UWS software (consider them as being
for read only use). These directories might be moved or deleted in future
releases of UWS. These directories are shared in the diskless environment.
/usr/lib/X11/fonts/MIT/
This font directory holds fonts distributed by the MIT X Consortium. The MIT
fonts are unsupported and in future releases of UWS the directory and its
contents might be moved or deleted. Consider the directory as being for read
only use. It is shared in the diskless environment. Applications should not
install fonts in this directory.
/usr/lib/X11/fonts/compX10/
This directory contains unsupported fonts needed for compatibility with X10.
The directory and its contents might be moved or deleted in future releases of
UWS. Consider this directory for read only use. It is shared in the diskless
environment. Applications should not install fonts in this directory.

4–12 ULTRIX Worksystem Software Notes

/usr/lib/X11/fonts/local/75dpi/ and
/usr/lib/X11/fonts/local/100dpi/
These font directories are a local version of .../fonts/decwin. You can
use these directories to install site-specic fonts, such as the corporate logo.
The directories are unsupported, and no maintenance is performed during the
installation. However, they are in the default server font path, so fonts placed
here are automatically available. These directories are not intended for use by
applications. They are shared in the diskless environment.
/usr/lib/X11/fonts/apps/75dpi/ and
/usr/lib/X11/fonts/apps/100dpi/
Shared applications can install fonts in these directories. Like the app-default
le or class names, there is no registry; applications must use unique names to
avoid collisions. The directories are unsupported, and no maintenance is
performed during installation. However, they are in the default server font path,
so fonts placed here are automatically available. They are shared in the
diskless environment.
/usr/lib/X11/fonts/private/75dpi/ and
/usr/lib/X11/fonts/private/100dpi/
Applications that install fonts that are licensed on a per-workstation basis can
install fonts in these directories. Like app-default les or class names, there is
no registry; applications must use unique names to avoid collisions. These
directories are unsupported, and no maintenance is performed during
installation. These directories are in the default server font path. They are not
shared in the diskless environment.
/usr/lib/DPS/outline/
This directory contains subdirectories for Display PostScript (DPS) fonts. The
DPS font directories differ from the previously-described server font directories.
The fonts are not .pcf les and they are not on the server search path; they
are used by DPS only. The decwin subdirectory holds the default Display
PostScript fonts installed by ULTRIX/UWS Version 4.1 The local
subdirectory is where you can install site-specic fonts for DPS; this directory
is shared in the diskless environment. The apps subdirectory is for
applications that install fonts for sharing in the diskless environment. The
private directory is where applications can install fonts that are not shared.
4.3.2.4

Installation Subsets and Server Font Directories – The following tables list
the directories into which installation subsets install supported server fonts,
unsupported server fonts, and Display PostScript fonts, respectively.
Subset

Font Location(s)

UDTAFM410
ULTAFM410
UDWFONT410
UWSFONT410
UDWFONT15410

/usr/lib/font/metrics
/usr/lib/font/metrics
/usr/lib/X11/fonts/decwin/75dpi
/usr/lib/X11/fonts/decwin/75dpi
/usr/lib/X11/fonts/decwin/100dpi

ULTRIX Worksystem Software Notes 4–13

4.3.3

Subset

Font Location(s)

UWSFONT15410
UWS3DFONT410

/usr/lib/X11/fonts/decwin/100dpi
/usr/lib/dwf/75dpi, /usr/lib/dwf/100dpi

Subset

Font Location(s)

UDXUNCOMP410
ULXUNCOMP410
UDXUNMIT410
ULXUNMIT410
UWS3DFONT410

/usr/lib/X11/fonts/compX10
/usr/lib/X11/fonts/compX10
/usr/lib/X11/fonts/MIT
/usr/lib/X11/fonts/MIT
/usr/lib/dwf/mitX11, /usr/lib/dwf/compX10

Subset

Font Location(s)

UDWSER410
UWSSER410

/usr/lib/DPS/outline/decwin
/usr/lib/DPS/outline/decwin

Application-Specific and Custom Fonts
The X servers can read fonts in PCF format, compressed PCF format, and BDF
format (except for the Xgb server, which reads only DWF format fonts, as in a
previous UWS release). It is best to compile fonts into PCF format. Compressed
PCF les cause slightly slower performance; the uncompiled BDF les substantially
degrade the server’s performance.
The servers do not read:
Fonts produced by the MIT X11 Release 3 compiler (whose le sufx is
Fonts produced by the DECstation/DECsystem 3100 ULTRIX/UWS Version
2.1 (RISC) font compiler (whose le sufx is .snf)
Fonts produced by the VAX ULTRIX/UWS Version 2.1 font compiler (whose
le sufx is .dwf).
To compile and install BDF fonts:
1.

Compile the fonts using the dxfc command. (Use the dxfc3d command if
you have a Xgb server.) Put the output in a directory that is on the default font
path, such as /usr/lib/X11/fonts/local/75dpi/.

2.

Use the dxmkfontdir utility to create a list of the fonts in the directory. Put
the list into a le named fonts.dir.

Users can now access the fonts when they log in. To compress fonts into .pcf.Z
les, use the compress utility.
To ensure that your fonts are always available in the X server’s font search path,
place fonts in the default font directories. If you choose to install your fonts
elsewhere, alter the search path to make the fonts available by editing the
/etc/ttys le for each workstation.
4–14 ULTRIX Worksystem Software Notes

In the /etc/ttys le, add the new directory to the server startup line. Separate
multiple font directories with commas. Use the +fp command line option and the
following format to prepend elements to the font path:
+fp path[,path...]

Use the fp+ option and the following format to append elements to the font path:
fp+ path[,path...]

For example:
:0 "/usr/bin/login -P /usr/bin/Xprompter -C /usr/bin/dxsession" none on
secure window="/usr/bin/Xcfb fp+ /udir/susan/toyfonts/"

Note that if the /etc/ttys le is ever deleted, as it could be during a system
software update, the X server will be unable to nd these fonts until you again edit
the le. For this reason, using the Digital-supplied font directories is the preferred
practice (refer to Section 4.3.2.3 for descriptions of the font directories).

4.3.4

Display PostScript Fonts
By installing the ULTRIX/UWS Version 4.1 software, you obtain all of the fonts you
need to use Display PostScript. These fonts are in the
/usr/lib/DPS/outline/decwin directory. If you want to install additional
PostScript-compatible ASCII fonts to use with Display PostScript, place them in the
directories listed in Section 4.3.2. Restart the X server after installing the fonts.

4.3.5

Application Font Information for Developers
There is no need to recompile fonts when upgrading applications from
ULTRIX/UWS Version 4.0 to ULTRIX/UWS Version 4.1. Fonts distributed with
your application must be recompiled when upgrading from ULTRIX/UWS Version
2.1 or ULTRIX/UWS Version 2.2 to ULTRIX/UWS Version 4.0. Applications
should ship fonts in BDF format and compile them as part of the installation. This is
necessary because the format of compiled fonts is variable. For example, the VMS
operating system and the ULTRIX operating system have different formats for
compiled fonts and, as noted previously, ULTRIX/UWS Version 4.0 and
ULTRIX/UWS Version 4.1 use a format that differs from that of the previous version
of UWS. Compiling fonts as part of the installation protects your application from
future format changes. For information on compiling and installing fonts, refer to
Section 4.3.3.

4.3.6

Font Names and Aliases
Font names consist of a series of parameter values separated by dashes, describing
the typographic characteristics of the font. However, by using aliases, you can use a
set of less cumbersome names.

4.3.6.1

Font Names – ULTRIX/UWS Version 4.1 uses the naming convention specied by
the standard X Logical Font Description Conventions, X Window System, Version 11.
UWS font names are specied using the logical font descriptions for the X protocol
(XLFDs). A sample font name is as follows:
-ADOBE-ITC Avant Garde Gothic-Book-R-Normal--14-100-100-100-P-80-ISO8859-1

ULTRIX Worksystem Software Notes 4–15

In left-to-right order, these are the elds in a font name and the values in the sample
name:
Field

Sample Value

Foundry
Family_Name
Weight_Name
Slant (Roman (R), Italic (I),
Oblique (O), Reverse Italic (RI),
Reverse Oblique (RO) or Other
(OT))
Setwidth_Name
Pixel_Size
Point_Size, in decipoints
Resolution, horizontal and
vertical, in pixels/dots per inch

Adobe
ITC Avant Garde Gothic
Book
R

Spacing (Proportional (P),
Monospaced (M), CharCell (C))
Average_Width, in decipoints
Charset_Registry
Charset_Encoding

Normal
14
100
100 dots per inch (horizontal)
100 dots per inch (vertical)
P
80
ISO8859
1

A comparable font for a 75 dpi screen has the following name:
-ADOBE-ITC Avant Garde Gothic-Book-R-Normal--10-100-75-75-P-59-ISO8859-1

This font needs 10 pixels to appear as 10 points. This font differs from the previous
sample font only in pixel size, resolution, and character width.
You can use wildcards in font names to specify the values of certain font
characteristics and allow the server to provide the appropriate values for those elds
that differ on different workstation screens. A question mark (?) wildcard substitutes
for a single character, and an asterisk (*) wildcard substitutes for one or more elds.
The following font name species a 10-point ITC Avant Garde Gothic font of book
weight, roman style, and normal spacing for display on either 75 or 100 dpi systems:
-ADOBE-ITC Avant Garde Gothic-Book-R-Normal--*-100-*-*-P-*

When you use the asterisk, be sure that the substitutions resolve clearly. For
example, in the following font name, the leftmost asterisk substitutes for two elds
before the 100:
-ADOBE-ITC Avant Garde Gothic-Book-R-Normal--*-100-*-P-*

The name resolves to two fonts:
-ADOBE-ITC Avant Garde Gothic-Book-R-Normal--11-80-100-100-P-80-ISO8859-1
-ADOBE-ITC Avant Garde Gothic-Book-R-Normal--14-100-100-100-P-80-ISO8859-1

The rst is an 8-point font; the second is a 10-point font. The server chooses one of
the fonts. ULTRIX/UWS Version 4.1 servers choose the rst font (in ASCII-sorted
order), but applications should avoid dependence on this algorithm, as it could

4–16 ULTRIX Worksystem Software Notes

change in a future release. For more on specifying fonts from applications, refer to
the "Application Font Information for Developers" section.
4.3.6.2

Specifying Fonts – An application should use wildcards for display-specic elds
in a font name. When the wildcards in the name are resolved, the resulting font will
match both the application’s needs and the characteristics of the workstation display.
Resolution and pixel size are characteristics that vary on different displays, and these
are good properties for which to use wildcards. For example, an application can
specify the FAMILY_NAME, WEIGHT_NAME, and POINT_SIZE properties for a
font, omitting RESOLUTION_X, RESOLUTION_Y, and PIXEL_SIZE. This
produces the correct physical font size for the workstation’s display resolution at
startup.
Applications reading font specications from a defaults le should use
XListFonts or XListFontsWithInfo to query the server for a list of
matching fonts. The application itself could then resolve the wildcards before
requesting an open font. In this way, the application controls the font selection
method.
If the application instead simply passes the font name with wildcards to the server in
the argument to an OpenFont request, the server resolves the wildcards. The
server has a simple selection method that might not produce the font most benecial
to the application. The algorithm for choosing a font from an ambiguous font name
pattern is server-dependent.

4.3.6.3

Font Name Aliases – ULTRIX/UWS Version 4.1 font les have lowercase names
that indicate the contents of the le, and they have a .pcf sufx (except for fonts
for the Xgb server, which have a .dwf sufx). Applications and defaults les do
not reference fonts by font le name; they use font names. Each directory for
ULTRIX/UWS Version 4.1 fonts has an alias le, called fonts.alias. By
default, this le uses a special notation (FILE_NAMES_ALIASES) to dene the
name of each .pcf le in the directory as an alias for the font it contains. For
example, the font whose name is
DEC-ADOBE-Helvetica-Bold-R-Normal--12-120-75-75-P-70-DEC-ISOLATIN1

is stored in the le
/usr/lib/X11/fonts/decwin/75dpi/helvetica12.pcf

The font can be referred to in Xlib routines or defaults les as either
DEC-ADOBE-Helvetica-Bold-R-Normal--12-120-75-75-P-70-DEC-ISOLATIN1

or
helvetica12

You can set up additional aliases in the fonts.alias le. For more information,
refer to the dxmkfontdir(1X) reference page and the example le in the next
section.

ULTRIX Worksystem Software Notes 4–17

4.3.6.4

Example Font Aliases File – This example le illustrates a workaround for
interoperability problems that might exist when Digital applications are used with
other non-Digital X servers.
The workaround maps fonts used by Digital’s applications to fonts supplied on the
MIT X11 Release 4 tape. Therefore, the following font families must already be
installed on the server for this workaround to be successful:
Courier
Helvetica
New Century Schoolbook
Symbol
Terminal
Times
This font aliases le example works with any MIT-based X server (just about all X
servers).
Note
Use of non-Digital X servers with Digital applications is not supported
by Digital.
-Adobe-"ITC Avant Garde Gothic"-Book-R-Normal--10-100-75-75-P-59-ISO8859-1
-Adobe-Helvetica-Medium-R-Normal--10-100-75-75-P-56-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-R-Normal--12-120-75-75-P-70-ISO8859-1
-Adobe-Helvetica-Medium-R-Normal--12-120-75-75-P-67-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-R-Normal--14-140-75-75-P-80-ISO8859-1
-Adobe-Helvetica-Medium-R-Normal--14-140-75-75-P-77-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-R-Normal--18-180-75-75-P-103-ISO8859-1
-Adobe-Helvetica-Medium-R-Normal--18-180-75-75-P-98-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-R-Normal--24-240-75-75-P-138-ISO8859-1
-Adobe-Helvetica-Medium-R-Normal--24-240-75-75-P-130-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-R-Normal--8-80-75-75-P-49-ISO8859-1
-Adobe-Helvetica-Medium-R-Normal--8-80-75-75-P-46-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-O-Normal--10-100-75-75-P-59-ISO8859-1
-Adobe-Helvetica-Medium-O-Normal--10-100-75-75-P-57-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-O-Normal--12-120-75-75-P-69-ISO8859-1
-Adobe-Helvetica-Medium-O-Normal--12-120-75-75-P-67-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-O-Normal--14-140-75-75-P-81-ISO8859-1
-Adobe-Helvetica-Medium-O-Normal--14-140-75-75-P-78-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-O-Normal--18-180-75-75-P-103-ISO8859-1
-Adobe-Helvetica-Medium-O-Normal--18-180-75-75-P-98-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-O-Normal--24-240-75-75-P-138-ISO8859-1
-Adobe-Helvetica-Medium-O-Normal--24-240-75-75-P-130-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-O-Normal--8-80-75-75-P-49-ISO8859-1
-Adobe-Helvetica-Medium-O-Normal--8-80-75-75-P-47-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-R-Normal--10-100-75-75-P-61-ISO8859-1
-Adobe-Helvetica-Bold-R-Normal--10-100-75-75-P-60-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-R-Normal--12-120-75-75-P-70-ISO8859-1
-Adobe-Helvetica-Bold-R-Normal--12-120-75-75-P-70-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-R-Normal--14-140-75-75-P-82-ISO8859-1

4–18 ULTRIX Worksystem Software Notes

-Adobe-Helvetica-Bold-R-Normal--14-140-75-75-P-82-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-R-Normal--18-180-75-75-P-105-ISO8859-1
-Adobe-Helvetica-Bold-R-Normal--18-180-75-75-P-103-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-R-Normal--24-240-75-75-P-140-ISO8859-1
-Adobe-Helvetica-Bold-R-Normal--24-240-75-75-P-138-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-R-Normal--8-80-75-75-P-51-ISO8859-1
-Adobe-Helvetica-Bold-R-Normal--8-80-75-75-P-50-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-O-Normal--10-100-75-75-P-61-ISO8859-1
-Adobe-Helvetica-Bold-O-Normal--10-100-75-75-P-60-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-O-Normal--12-120-75-75-P-71-ISO8859-1
-Adobe-Helvetica-Bold-O-Normal--12-120-75-75-P-69-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-O-Normal--14-140-75-75-P-82-ISO8859-1
-Adobe-Helvetica-Bold-O-Normal--14-140-75-75-P-82-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-O-Normal--18-180-75-75-P-103-ISO8859-1
-Adobe-Helvetica-Bold-O-Normal--18-180-75-75-P-104-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-O-Normal--24-240-75-75-P-139-ISO8859-1
-Adobe-Helvetica-Bold-O-Normal--24-240-75-75-P-138-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-O-Normal--8-80-75-75-P-51-ISO8859-1
-Adobe-Helvetica-Bold-O-Normal--8-80-75-75-P-50-ISO8859-1
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC

Lubalin
Century
Lubalin
Century
Lubalin
Century
Lubalin
Century
Lubalin
Century
Lubalin

Graph"-Book-R-Normal--10-100-75-75-P-60-ISO8859-1
Schoolbook"-Medium-R-Normal--10-100-75-75-P-60-ISO8859-1
Graph"-Book-R-Normal--12-120-75-75-P-70-ISO8859-1
Schoolbook"-Medium-R-Normal--12-120-75-75-P-70-ISO8859-1
Graph"-Book-R-Normal--14-140-75-75-P-81-ISO8859-1
Schoolbook"-Medium-R-Normal--14-140-75-75-P-82-ISO8859-1
Graph"-Book-R-Normal--18-180-75-75-P-106-ISO8859-1
Schoolbook"-Medium-R-Normal--18-180-75-75-P-103-ISO8859-1
Graph"-Book-R-Normal--24-240-75-75-P-139-ISO8859-1
Schoolbook"-Medium-R-Normal--24-240-75-75-P-137-ISO8859-1
Graph"-Book-R-Normal--8-80-75-75-P-50-ISO8859-1

-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New

Century
Lubalin
Century
Lubalin
Century
Lubalin
Century
Lubalin
Century
Lubalin
Century
Lubalin
Century
Lubalin
Century

Schoolbook"-Medium-R-Normal--8-80-75-75-P-50-ISO8859-1
Graph"-Book-O-Normal--10-100-75-75-P-60-ISO8859-1
Schoolbook"-Medium-I-Normal--10-100-75-75-P-60-ISO8859-1
Graph"-Book-O-Normal--12-120-75-75-P-70-ISO8859-1
Schoolbook"-Medium-I-Normal--12-120-75-75-P-70-ISO8859-1
Graph"-Book-O-Normal--14-140-75-75-P-82-ISO8859-1
Schoolbook"-Medium-I-Normal--14-140-75-75-P-81-ISO8859-1
Graph"-Book-O-Normal--18-180-75-75-P-105-ISO8859-1
Schoolbook"-Medium-I-Normal--18-180-75-75-P-104-ISO8859-1
Graph"-Book-O-Normal--24-240-75-75-P-140-ISO8859-1
Schoolbook"-Medium-I-Normal--24-240-75-75-P-136-ISO8859-1
Graph"-Book-O-Normal--8-80-75-75-P-50-ISO8859-1
Schoolbook"-Medium-I-Normal--8-80-75-75-P-50-ISO8859-1
Graph"-Demi-R-Normal--10-100-75-75-P-61-ISO8859-1
Schoolbook"-Bold-R-Normal--10-100-75-75-P-66-ISO8859-1

-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC

Lubalin
Century
Lubalin
Century
Lubalin
Century
Lubalin
Century
Lubalin

Graph"-Demi-R-Normal--12-120-75-75-P-73-ISO8859-1
Schoolbook"-Bold-R-Normal--12-120-75-75-P-77-ISO8859-1
Graph"-Demi-R-Normal--14-140-75-75-P-85-ISO8859-1
Schoolbook"-Bold-R-Normal--14-140-75-75-P-87-ISO8859-1
Graph"-Demi-R-Normal--18-180-75-75-P-109-ISO8859-1
Schoolbook"-Bold-R-Normal--18-180-75-75-P-113-ISO8859-1
Graph"-Demi-R-Normal--24-240-75-75-P-144-ISO8859-1
Schoolbook"-Bold-R-Normal--24-240-75-75-P-149-ISO8859-1
Graph"-Demi-R-Normal--8-80-75-75-P-51-ISO8859-1

ULTRIX Worksystem Software Notes 4–19

-Adobe-"New Century Schoolbook"-Bold-R-Normal--8-80-75-75-P-56-ISO8859-1
-Adobe-"ITC Lubalin Graph"-Demi-O-Normal--10-100-75-75-P-62-ISO8859-1
-Adobe-"New Century Schoolbook"-Bold-I-Normal--10-100-75-75-P-66-ISO8859-1
-Adobe-"ITC Lubalin Graph"-Demi-O-Normal--12-120-75-75-P-74-ISO8859-1
-Adobe-"New Century Schoolbook"-Bold-I-Normal--12-120-75-75-P-76-ISO8859-1
-Adobe-"ITC Lubalin Graph"-Demi-O-Normal--14-140-75-75-P-85-ISO8859-1
-Adobe-"New Century Schoolbook"-Bold-I-Normal--14-140-75-75-P-88-ISO8859-1
-Adobe-"ITC Lubalin Graph"-Demi-O-Normal--18-180-75-75-P-109-ISO8859-1
-Adobe-"New Century Schoolbook"-Bold-I-Normal--18-180-75-75-P-111-ISO8859-1
-Adobe-"ITC Lubalin Graph"-Demi-O-Normal--24-240-75-75-P-144-ISO8859-1
-Adobe-"New Century Schoolbook"-Bold-I-Normal--24-240-75-75-P-148-ISO8859-1
-Adobe-"ITC Lubalin Graph"-Demi-O-Normal--8-80-75-75-P-52-ISO8859-1
-Adobe-"New Century Schoolbook"-Bold-I-Normal--8-80-75-75-P-56-ISO8859-1
-"Bigelow & Holmes"-Menu-Medium-R-Normal--10-100-75-75-P-56-ISO8859-1
-Adobe-Helvetica-Bold-R-Normal--10-100-75-75-P-60-ISO8859-1
-"Bigelow & Holmes"-Menu-Medium-R-Normal--12-120-75-75-P-70-ISO8859-1
-Adobe-Helvetica-Bold-R-Normal--12-120-75-75-P-70-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-R-Normal--10-100-75-75-P-62-ISO8859-1
-Adobe-Times-Bold-R-Normal--10-100-75-75-P-57-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-R-Normal--12-120-75-75-P-75-ISO8859-1
-Adobe-Times-Bold-R-Normal--12-120-75-75-P-67-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-R-Normal--14-140-75-75-P-90-ISO8859-1
-Adobe-Times-Bold-R-Normal--14-140-75-75-P-77-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-R-Normal--18-180-75-75-P-112-ISO8859-1
-Adobe-Times-Bold-R-Normal--18-180-75-75-P-99-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-R-Normal--24-240-75-75-P-149-ISO8859-1
-Adobe-Times-Bold-R-Normal--24-240-75-75-P-132-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-R-Normal--8-80-75-75-P-52-ISO8859-1
-Adobe-Times-Bold-R-Normal--8-80-75-75-P-47-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-I-Normal--10-100-75-75-P-67-ISO8859-1
-Adobe-Times-Bold-I-Normal--10-100-75-75-P-57-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-I-Normal--12-120-75-75-P-78-ISO8859-1
-Adobe-Times-Bold-I-Normal--12-120-75-75-P-68-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-I-Normal--14-140-75-75-P-92-ISO8859-1
-Adobe-Times-Bold-I-Normal--14-140-75-75-P-77-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-I-Normal--18-180-75-75-P-115-ISO8859-1
-Adobe-Times-Bold-I-Normal--18-180-75-75-P-98-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-I-Normal--24-240-75-75-P-154-ISO8859-1
-Adobe-Times-Bold-I-Normal--24-240-75-75-P-128-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-I-Normal--8-80-75-75-P-57-ISO8859-1
-Adobe-Times-Bold-I-Normal--8-80-75-75-P-47-ISO8859-1
-Adobe-"ITC Souvenir"-Light-R-Normal--10-100-75-75-P-56-ISO8859-1
-Adobe-Times-Medium-R-Normal--10-100-75-75-P-54-ISO8859-1
-Adobe-"ITC Souvenir"-Light-R-Normal--12-120-75-75-P-68-ISO8859-1
-Adobe-Times-Medium-R-Normal--12-120-75-75-P-64-ISO8859-1
-Adobe-"ITC Souvenir"-Light-R-Normal--14-140-75-75-P-79-ISO8859-1
-Adobe-Times-Medium-R-Normal--14-140-75-75-P-74-ISO8859-1
-Adobe-"ITC Souvenir"-Light-R-Normal--18-180-75-75-P-102-ISO8859-1
-Adobe-Times-Medium-R-Normal--18-180-75-75-P-94-ISO8859-1
-Adobe-"ITC Souvenir"-Light-R-Normal--24-240-75-75-P-135-ISO8859-1
-Adobe-Times-Medium-R-Normal--24-240-75-75-P-124-ISO8859-1
-Adobe-"ITC Souvenir"-Light-R-Normal--8-80-75-75-P-46-ISO8859-1
-Adobe-Times-Medium-R-Normal--8-80-75-75-P-44-ISO8859-1
-Adobe-"ITC Souvenir"-Light-I-Normal--10-100-75-75-P-59-ISO8859-1

4–20 ULTRIX Worksystem Software Notes

-Adobe-Times-Medium-I-Normal--10-100-75-75-P-52-ISO8859-1
-Adobe-"ITC Souvenir"-Light-I-Normal--12-120-75-75-P-69-ISO8859-1
-Adobe-Times-Medium-I-Normal--12-120-75-75-P-63-ISO8859-1
-Adobe-"ITC Souvenir"-Light-I-Normal--14-140-75-75-P-82-ISO8859-1
-Adobe-Times-Medium-I-Normal--14-140-75-75-P-73-ISO8859-1
-Adobe-"ITC Souvenir"-Light-I-Normal--18-180-75-75-P-104-ISO8859-1
-Adobe-Times-Medium-I-Normal--18-180-75-75-P-94-ISO8859-1
-Adobe-"ITC Souvenir"-Light-I-Normal--24-240-75-75-P-139-ISO8859-1
-Adobe-Times-Medium-I-Normal--24-240-75-75-P-125-ISO8859-1
-Adobe-"ITC Souvenir"-Light-I-Normal--8-80-75-75-P-49-ISO8859-1
-Adobe-Times-Medium-I-Normal--8-80-75-75-P-42-ISO8859-1
-DEC-Terminal-Medium-R-Normal--14-140-75-75-C-8-ISO8859-1
-DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-ISO8859-1
-Bitstream-Terminal-Medium-R-Normal--18-180-75-75-C-11-ISO8859-1
-DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-ISO8859-1
-DEC-Terminal-Medium-R-Normal--28-280-75-75-C-16-ISO8859-1
-DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-ISO8859-1
-Bitstream-Terminal-Medium-R-Normal--36-360-75-75-C-22-ISO8859-1
-DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-ISO8859-1
-DEC-Terminal-Bold-R-Normal--14-140-75-75-C-8-ISO8859-1
-DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-ISO8859-1
-Bitstream-Terminal-Bold-R-Normal--18-180-75-75-C-11-ISO8859-1
-DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-ISO8859-1
-DEC-Terminal-Bold-R-Normal--28-280-75-75-C-16-ISO8859-1
-DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-ISO8859-1
-Bitstream-Terminal-Bold-R-Normal--36-360-75-75-C-22-ISO8859-1
-DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-ISO8859-1
-DEC-Terminal-Bold-R-"Double Wide"--14-140-75-75-C-16-ISO8859-1
-DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-ISO8859-1
-Bitstream-Terminal-Bold-R-"Double Wide"--18-180-75-75-C-22-ISO8859-1
-DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-ISO8859-1
-DEC-Terminal-Bold-R-"Double Wide"--14-140-75-75-C-16
-DEC-DECtech -DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-DEC-DECtech
-Bitstream-Terminal-Bold-R-"Double Wide"--18-180-75-75-C-22
-DEC-DECtech -DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-DEC-DECtech
-DEC-Terminal-Bold-R-Normal--14-140-75-75-C-8
-DEC-DECtech -DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-DEC-DECtech
-Bitstream-Terminal-Bold-R-Normal--18-180-75-75-C-11
-DEC-DECtech -DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-DEC-DECtech
-DEC-Terminal-Bold-R-Normal--28-280-75-75-C-16
-DEC-DECtech -DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-DEC-DECtech
-Bitstream-Terminal-Bold-R-Normal--36-360-75-75-C-22
-DEC-DECtech -DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-DEC-DECtech
-DEC-Terminal-Bold-R-Narrow--14-140-75-75-C-6-ISO8859-1
-DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-ISO8859-1
-Bitstream-Terminal-Bold-R-Narrow--18-180-75-75-C-7-ISO8859-1
-DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-ISO8859-1
-DEC-Terminal-Bold-R-Narrow--28-280-75-75-C-12-ISO8859-1
-DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-ISO8859-1
-Bitstream-Terminal-Bold-R-Narrow--36-360-75-75-C-14-ISO8859-1
-DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-ISO8859-1
-DEC-Terminal-Bold-R-Narrow--14-140-75-75-C-6-DEC-DECtech
-DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-DEC-DECtech
-Bitstream-Terminal-Bold-R-Narrow--18-180-75-75-C-7

ULTRIX Worksystem Software Notes 4–21

-DEC-DECtech -DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-DEC-DECtech
-DEC-Terminal-Bold-R-Narrow--28-280-75-75-C-12
-DEC-DECtech -DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-DEC-DECtech
-Bitstream-Terminal-Bold-R-Narrow--36-360-75-75-C-14
-DEC-DECtech -DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-DEC-DECtech
-DEC-Terminal-Bold-R-Wide--14-140-75-75-C-12-ISO8859-1
-DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-ISO8859-1
-Bitstream-Terminal-Bold-R-Wide--18-180-75-75-C-14-ISO8859-1
-DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-ISO8859-1
-DEC-Terminal-Bold-R-Wide--14-140-75-75-C-12
-DEC-DECtech -DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-DEC-DECtech
-Bitstream-Terminal-Bold-R-Wide--18-180-75-75-C-14
-DEC-DECtech -DEC-Terminal-Bold-R-Normal--14-140-75-75-C-80-DEC-DECtech
-DEC-Terminal-Medium-R-"Double Wide"--14-140-75-75-C-16-ISO8859-1
-DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-ISO8859-1
-Bitstream-Terminal-Medium-R-"Double Wide"--18-180-75-75-C-22-ISO8859-1
-DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-ISO8859-1
-DEC-Terminal-Medium-R-"Double Wide"--14-140-75-75-C-16
-DEC-DECtech -DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-DEC-DECtech
-Bitstream-Terminal-Medium-R-"Double Wide"--18-180-75-75-C-22
-DEC-DECtech -DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-DEC-DECtech
-DEC-Terminal-Medium-R-Normal--14-140-75-75-C-8
-DEC-DECtech -DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-DEC-DECtech
-Bitstream-Terminal-Medium-R-Normal--18-180-75-75-C-11
-DEC-DECtech -DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-DEC-DECtech
-DEC-Terminal-Medium-R-Normal--28-280-75-75-C-16
-DEC-DECtech -DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-DEC-DECtech
-Bitstream-Terminal-Medium-R-Normal--36-360-75-75-C-22
-DEC-DECtech -DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-DEC-DECtech
-DEC-Terminal-Medium-R-Narrow--14-140-75-75-C-6-ISO8859-1
-DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-ISO8859-1
-Bitstream-Terminal-Medium-R-Narrow--18-180-75-75-C-7-ISO8859-1
-DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-ISO8859-1
-DEC-Terminal-Medium-R-Narrow--28-280-75-75-C-12-ISO8859-1
-DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-ISO8859-1
-Bitstream-Terminal-Medium-R-Narrow--36-360-75-75-C-14-ISO8859-1
-DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-ISO8859-1
-DEC-Terminal-Medium-R-Narrow--14-140-75-75-C-6
-DEC-DECtech -DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-DEC-DECtech
-Bitstream-Terminal-Medium-R-Narrow--18-180-75-75-C-7
-DEC-DECtech -DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-DEC-DECtech
-DEC-Terminal-Medium-R-Narrow--28-280-75-75-C-12
-DEC-DECtech -DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-DEC-DECtech
-Bitstream-Terminal-Medium-R-Narrow--36-360-75-75-C-14
-DEC-DECtech -DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-DEC-DECtech
-DEC-Terminal-Medium-R-Wide--14-140-75-75-C-12-ISO8859-1
-DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-ISO8859-1
-Bitstream-Terminal-Medium-R-Wide--18-180-75-75-C-14-ISO8859-1
-DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-ISO8859-1
-DEC-Terminal-Medium-R-Wide--14-140-75-75-C-12
-DEC-DECtech -DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-DEC-DECtech
-Bitstream-Terminal-Medium-R-Wide--18-180-75-75-C-14
-DEC-DECtech -DEC-Terminal-Medium-R-Normal--14-140-75-75-C-80-DEC-DECtech
-Adobe-"ITC Avant Garde Gothic"-Book-R-Normal--14-100-100-100-P-80-ISO8859-1

4–22 ULTRIX Worksystem Software Notes

-Adobe-Helvetica-Medium-R-Normal--14-100-100-100-P-76-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-R-Normal--17-120-100-100-P-93-ISO8859-1
-Adobe-Helvetica-Medium-R-Normal--17-120-100-100-P-88-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-R-Normal--20-140-100-100-P-104-ISO8859-1
-Adobe-Helvetica-Medium-R-Normal--20-140-100-100-P-100-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-R-Normal--25-180-100-100-P-138-ISO8859-1
-Adobe-Helvetica-Medium-R-Normal--25-180-100-100-P-130-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-R-Normal--34-240-100-100-P-183-ISO8859-1
-Adobe-Helvetica-Medium-R-Normal--34-240-100-100-P-176-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-R-Normal--11-80-100-100-P-59-ISO8859-1
-Adobe-Helvetica-Medium-R-Normal--11-80-100-100-P-56-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-O-Normal--14-100-100-100-P-81-ISO8859-1
-Adobe-Helvetica-Medium-O-Normal--14-100-100-100-P-78-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-O-Normal--17-120-100-100-P-92-ISO8859-1
-Adobe-Helvetica-Medium-O-Normal--17-120-100-100-P-88-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-O-Normal--20-140-100-100-P-103-ISO8859-1
-Adobe-Helvetica-Medium-O-Normal--20-140-100-100-P-98-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-O-Normal--25-180-100-100-P-138-ISO8859-1
-Adobe-Helvetica-Medium-O-Normal--25-180-100-100-P-130-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-O-Normal--34-240-100-100-P-184-ISO8859-1
-Adobe-Helvetica-Medium-O-Normal--34-240-100-100-P-176-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Book-O-Normal--10-80-100-100-P-59-ISO8859-1
-Adobe-Helvetica-Medium-O-Normal--11-80-100-100-P-57-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-R-Normal--14-100-100-100-P-82-ISO8859-1
-Adobe-Helvetica-Bold-R-Normal--14-100-100-100-P-82-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-R-Normal--17-120-100-100-P-93-ISO8859-1
-Adobe-Helvetica-Bold-R-Normal--17-120-100-100-P-92-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-R-Normal--20-140-100-100-P-105-ISO8859-1
-Adobe-Helvetica-Bold-R-Normal--20-140-100-100-P-105-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-R-Normal--25-180-100-100-P-140-ISO8859-1
-Adobe-Helvetica-Bold-R-Normal--25-180-100-100-P-138-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-R-Normal--34-240-100-100-P-182-ISO8859-1
-Adobe-Helvetica-Bold-R-Normal--34-240-100-100-P-182-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-R-Normal--11-80-100-100-P-61-ISO8859-1
-Adobe-Helvetica-Bold-R-Normal--11-80-100-100-P-60-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-O-Normal--14-100-100-100-P-82-ISO8859-1
-Adobe-Helvetica-Bold-O-Normal--14-100-100-100-P-82-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-O-Normal--17-120-100-100-P-93-ISO8859-1
-Adobe-Helvetica-Bold-O-Normal--17-120-100-100-P-92-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-O-Normal--20-140-100-100-P-103-ISO8859-1
-Adobe-Helvetica-Bold-O-Normal--20-140-100-100-P-103-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-O-Normal--25-180-100-100-P-139-ISO8859-1
-Adobe-Helvetica-Bold-O-Normal--25-180-100-100-P-138-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-O-Normal--34-240-100-100-P-183-ISO8859-1
-Adobe-Helvetica-Bold-O-Normal--34-240-100-100-P-182-ISO8859-1
-Adobe-"ITC Avant Garde Gothic"-Demi-O-Normal--11-80-100-100-P-61-ISO8859-1
-Adobe-Helvetica-Bold-O-Normal--11-80-100-100-P-60-ISO8859-1
-Adobe-"ITC Lubalin Graph"-Book-R-Normal--14-100-100-100-P-81-ISO8859-1
-Adobe-"New Century Schoolbook"-Medium-R-Normal--14-100-100-100-P-82-ISO8859-1
-Adobe-"ITC Lubalin Graph"-Book-R-Normal--17-120-100-100-P-89-ISO8859-1
-Adobe-"New Century Schoolbook"-Medium-R-Normal--17-120-100-100-P-91-ISO8859-1
-Adobe-"ITC Lubalin Graph"-Book-R-Normal--19-140-100-100-P-106-ISO8859-1
-Adobe-"New Century Schoolbook"-Medium-R-Normal--20-140-100-100-P-103-ISO8859-1
-Adobe-"ITC Lubalin Graph"-Book-R-Normal--24-180-100-100-P-139-ISO8859-1

ULTRIX Worksystem Software Notes 4–23

-Adobe-"New Century Schoolbook"-Medium-R-Normal--25-180-100-100-P-136-ISO8859-1
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New

Lubalin
Century
Lubalin
Century
Lubalin
Century
Lubalin
Century
Lubalin
Century
Lubalin
Century
Lubalin
Century
Lubalin
Century
Lubalin
Century

Graph"-Book-R-Normal--33-240-100-100-P-180-ISO8859-1
Schoolbook"-Medium-R-Normal--34-240-100-100-P-181-ISO8859-1
Graph"-Book-R-Normal--11-80-100-100-P-60-ISO8859-1
Schoolbook"-Medium-R-Normal--11-80-100-100-P-60-ISO8859-1
Graph"-Book-O-Normal--14-100-100-100-P-82-ISO8859-1
Schoolbook"-Medium-I-Normal--14-100-100-100-P-81-ISO8859-1
Graph"-Book-O-Normal--19-120-100-100-P-89-ISO8859-1
Schoolbook"-Medium-I-Normal--17-120-100-100-P-92-ISO8859-1
Graph"-Book-O-Normal--20-140-100-100-P-105-ISO8859-1
Schoolbook"-Medium-I-Normal--20-140-100-100-P-104-ISO8859-1
Graph"-Book-O-Normal--24-180-100-100-P-140-ISO8859-1
Schoolbook"-Medium-I-Normal--25-180-100-100-P-136-ISO8859-1
Graph"-Book-O-Normal--33-240-100-100-P-181-ISO8859-1
Schoolbook"-Medium-I-Normal--34-240-100-100-P-182-ISO8859-1
Graph"-Book-O-Normal--11-80-100-100-P-60-ISO8859-1
Schoolbook"-Medium-I-Normal--11-80-100-100-P-60-ISO8859-1
Graph"-Demi-R-Normal--14-100-100-100-P-85-ISO8859-1
Schoolbook"-Bold-R-Normal--14-100-100-100-P-87-ISO8859-1

-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC
-Adobe-"New
-Adobe-"ITC

Lubalin
Century
Lubalin
Century
Lubalin
Century
Lubalin
Century
Lubalin
Century
Lubalin

Graph"-Demi-R-Normal--17-120-100-100-P-92-ISO8859-1
Schoolbook"-Bold-R-Normal--17-120-100-100-P-99-ISO8859-1
Graph"-Demi-R-Normal--19-140-100-100-P-109-ISO8859-1
Schoolbook"-Bold-R-Normal--20-140-100-100-P-113-ISO8859-1
Graph"-Demi-R-Normal--24-180-100-100-P-144-ISO8859-1
Schoolbook"-Bold-R-Normal--25-180-100-100-P-149-ISO8859-1
Graph"-Demi-R-Normal--33-240-100-100-P-184-ISO8859-1
Schoolbook"-Bold-R-Normal--34-240-100-100-P-193-ISO8859-1
Graph"-Demi-R-Normal--11-80-100-100-P-61-ISO8859-1
Schoolbook"-Bold-R-Normal--11-80-100-100-P-66-ISO8859-1
Graph"-Demi-O-Normal--14-100-100-100-P-85-ISO8859-1

-Adobe-"New Century Schoolbook"-Bold-I-Normal--14-100-100-100-P-88-ISO8859-1
-Adobe-"ITC Lubalin Graph"-Demi-O-Normal--17-120-100-100-P-92-ISO8859-1
-Adobe-"New Century Schoolbook"-Bold-I-Normal--17-120-100-100-P-99-ISO8859-1
-Adobe-"ITC Lubalin Graph"-Demi-O-Normal--19-140-100-100-P-109-ISO8859-1
-Adobe-"New Century Schoolbook"-Bold-I-Normal--20-140-100-100-P-111-ISO8859-1
-Adobe-"ITC Lubalin Graph"-Demi-O-Normal--24-180-100-100-P-144-ISO8859-1
-Adobe-"New Century Schoolbook"-Bold-I-Normal--25-180-100-100-P-148-ISO8859-1
-Adobe-"ITC Lubalin Graph"-Demi-O-Normal--33-240-100-100-P-184-ISO8859-1
-Adobe-"New Century Schoolbook"-Bold-I-Normal--34-240-100-100-P-193-ISO8859-1
-Adobe-"ITC Lubalin Graph"-Demi-O-Normal--11-80-100-100-P-62-ISO8859-1
-Adobe-"New Century Schoolbook"-Bold-I-Normal--11-80-100-100-P-66-ISO8859-1
-"Bigelow & Holmes"-Menu-Medium-R-Normal--13-100-100-100-P-77-ISO8859-1
-Adobe-Helvetica-Bold-R-Normal--14-100-100-100-P-82-ISO8859-1
-"Bigelow & Holmes"-Menu-Medium-R-Normal--16-120-100-100-P-92-ISO8859-1
-Adobe-Helvetica-Bold-R-Normal--17-120-100-100-P-92-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-R-Normal--14-100-100-100-P-90-ISO8859-1
-Adobe-Times-Bold-R-Normal--14-100-100-100-P-76-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-R-Normal--17-120-100-100-P-94-ISO8859-1
-Adobe-Times-Bold-R-Normal--17-120-100-100-P-88-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-R-Normal--20-140-100-100-P-112-ISO8859-1
-Adobe-Times-Bold-R-Normal--20-140-100-100-P-100-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-R-Normal--25-180-100-100-P-149-ISO8859-1
-Adobe-Times-Bold-R-Normal--25-180-100-100-P-132-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-R-Normal--34-240-100-100-P-191-ISO8859-1

4–24 ULTRIX Worksystem Software Notes

-Adobe-Times-Bold-R-Normal--34-240-100-100-P-177-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-R-Normal--11-80-100-100-P-62-ISO8859-1
-Adobe-Times-Bold-R-Normal--11-80-100-100-P-57-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-I-Normal--14-100-100-100-P-92-ISO8859-1
-Adobe-Times-Bold-I-Normal--14-100-100-100-P-77-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-I-Normal--17-120-100-100-P-98-ISO8859-1
-Adobe-Times-Bold-I-Normal--17-120-100-100-P-86-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-I-Normal--20-140-100-100-P-115-ISO8859-1
-Adobe-Times-Bold-I-Normal--20-140-100-100-P-98-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-I-Normal--25-180-100-100-P-154-ISO8859-1
-Adobe-Times-Bold-I-Normal--25-180-100-100-P-128-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-I-Normal--34-240-100-100-P-197-ISO8859-1
-Adobe-Times-Bold-I-Normal--34-240-100-100-P-170-ISO8859-1
-Adobe-"ITC Souvenir"-Demi-I-Normal--11-80-100-100-P-67-ISO8859-1
-Adobe-Times-Bold-I-Normal--11-80-100-100-P-57-ISO8859-1
-Adobe-"ITC Souvenir"-Light-R-Normal--14-100-100-100-P-79-ISO8859-1
-Adobe-Times-Medium-R-Normal--14-100-100-100-P-74-ISO8859-1
-Adobe-"ITC Souvenir"-Light-R-Normal--17-120-100-100-P-85-ISO8859-1
-Adobe-Times-Medium-R-Normal--17-120-100-100-P-84-ISO8859-1
-Adobe-"ITC Souvenir"-Light-R-Normal--20-140-100-100-P-102-ISO8859-1
-Adobe-Times-Medium-R-Normal--20-140-100-100-P-96-ISO8859-1
-Adobe-"ITC Souvenir"-Light-R-Normal--25-180-100-100-P-135-ISO8859-1
-Adobe-Times-Medium-R-Normal--25-180-100-100-P-125-ISO8859-1
-Adobe-"ITC Souvenir"-Light-R-Normal--34-240-100-100-P-174-ISO8859-1
-Adobe-Times-Medium-R-Normal--34-240-100-100-P-170-ISO8859-1
-Adobe-"ITC Souvenir"-Light-R-Normal--11-80-100-100-P-56-ISO8859-1
-Adobe-Times-Medium-R-Normal--11-80-100-100-P-54-ISO8859-1
-Adobe-"ITC Souvenir"-Light-I-Normal--14-100-100-100-P-82-ISO8859-1
-Adobe-Times-Medium-I-Normal--14-100-100-100-P-73-ISO8859-1
-Adobe-"ITC Souvenir"-Light-I-Normal--17-120-100-100-P-88-ISO8859-1
-Adobe-Times-Medium-I-Normal--17-120-100-100-P-84-ISO8859-1
-Adobe-"ITC Souvenir"-Light-I-Normal--20-140-100-100-P-104-ISO8859-1
-Adobe-Times-Medium-I-Normal--20-140-100-100-P-94-ISO8859-1
-Adobe-"ITC Souvenir"-Light-I-Normal--25-180-100-100-P-139-ISO8859-1
-Adobe-Times-Medium-I-Normal--25-180-100-100-P-125-ISO8859-1
-Adobe-"ITC Souvenir"-Light-I-Normal--34-240-100-100-P-177-ISO8859-1
-Adobe-Times-Medium-I-Normal--34-240-100-100-P-168-ISO8859-1
-Adobe-"ITC Souvenir"-Light-I-Normal--11-80-100-100-P-59-ISO8859-1
-Adobe-Times-Medium-I-Normal--11-80-100-100-P-52-ISO8859-1
-DEC-Terminal-Medium-R-Normal--14-100-100-100-C-8-ISO8859-1
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-ISO8859-1
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-11-ISO8859-1
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-ISO8859-1
-DEC-Terminal-Medium-R-Normal--28-200-100-100-C-16-ISO8859-1
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-ISO8859-1
-Bitstream-Terminal-Medium-R-Normal--36-280-100-100-C-22-ISO8859-1
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-ISO8859-1
-DEC-Terminal-Bold-R-Normal--14-100-100-100-C-8-ISO8859-1
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-ISO8859-1
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-11-ISO8859-1
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-ISO8859-1
-DEC-Terminal-Bold-R-Normal--28-200-100-100-C-16-ISO8859-1
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-ISO8859-1
-Bitstream-Terminal-Bold-R-Normal--36-280-100-100-C-22-ISO8859-1

ULTRIX Worksystem Software Notes 4–25

-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-ISO8859-1
-DEC-Terminal-Bold-R-"Double Wide"--14-100-100-100-C-16-ISO8859-1
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-ISO8859-1
-Bitstream-Terminal-Bold-R-"Double Wide"--18-140-100-100-C-22-ISO8859-1
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-ISO8859-1
-DEC-Terminal-Bold-R-"Double Wide"--14-100-100-100-C-16-DEC-DECtech
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-DEC-DECtech
-Bitstream-Terminal-Bold-R-"Double Wide"--18-140-100-100-C-22-DEC-DECtech
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-DEC-DECtech
-DEC-Terminal-Bold-R-Normal--14-100-100-100-C-8-DEC-DECtech
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-DEC-DECtech
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-11-DEC-DECtech
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-DEC-DECtech
-DEC-Terminal-Bold-R-Normal--28-200-100-100-C-16-DEC-DECtech
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-DEC-DECtech
-Bitstream-Terminal-Bold-R-Normal--36-280-100-100-C-22-DEC-DECtech
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-DEC-DECtech
-DEC-Terminal-Bold-R-Narrow--14-100-100-100-C-6-ISO8859-1
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-ISO8859-1
-Bitstream-Terminal-Bold-R-Narrow--18-140-100-100-C-7-ISO8859-1
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-ISO8859-1
-DEC-Terminal-Bold-R-Narrow--28-200-100-100-C-12-ISO8859-1
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-ISO8859-1
-Bitstream-Terminal-Bold-R-Narrow--36-280-100-100-C-14-ISO8859-1
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-ISO8859-1
-DEC-Terminal-Bold-R-Narrow--14-100-100-100-C-6-DEC-DECtech
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-DEC-DECtech
-Bitstream-Terminal-Bold-R-Narrow--18-140-100-100-C-7-DEC-DECtech
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-DEC-DECtech
-DEC-Terminal-Bold-R-Narrow--28-200-100-100-C-12-DEC-DECtech
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-DEC-DECtech
-Bitstream-Terminal-Bold-R-Narrow--36-280-100-100-C-14-DEC-DECtech
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-DEC-DECtech
-DEC-Terminal-Bold-R-Wide--14-100-100-100-C-12-ISO8859-1
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-ISO8859-1
-Bitstream-Terminal-Bold-R-Wide--18-140-100-100-C-14-ISO8859-1
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-ISO8859-1
-DEC-Terminal-Bold-R-Wide--14-100-100-100-C-12-DEC-DECtech
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-DEC-DECtech
-Bitstream-Terminal-Bold-R-Wide--18-140-100-100-C-14-DEC-DECtech
-Bitstream-Terminal-Bold-R-Normal--18-140-100-100-C-110-DEC-DECtech
-DEC-Terminal-Medium-R-"Double Wide"--14-100-100-100-C-16-ISO8859-1
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-ISO8859-1
-Bitstream-Terminal-Medium-R-"Double Wide"--18-140-100-100-C-22-ISO8859-1
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-ISO8859-1
-DEC-Terminal-Medium-R-"Double Wide"--14-100-100-100-C-16-DEC-DECtech
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-DEC-DECtech
-Bitstream-Terminal-Medium-R-"Double Wide"--18-140-100-100-C-22-DEC-DECtech
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-DEC-DECtech
-DEC-Terminal-Medium-R-Normal--14-100-100-100-C-8-DEC-DECtech
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-DEC-DECtech
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-11-DEC-DECtech
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-DEC-DECtech
-DEC-Terminal-Medium-R-Normal--28-200-100-100-C-16-DEC-DECtech

4–26 ULTRIX Worksystem Software Notes

-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-DEC-DECtech
-Bitstream-Terminal-Medium-R-Normal--36-280-100-100-C-22-DEC-DECtech
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-DEC-DECtech
-DEC-Terminal-Medium-R-Narrow--14-100-100-100-C-6-ISO8859-1
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-ISO8859-1
-Bitstream-Terminal-Medium-R-Narrow--18-140-100-100-C-7-ISO8859-1
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-ISO8859-1
-DEC-Terminal-Medium-R-Narrow--28-200-100-100-C-12-ISO8859-1
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-ISO8859-1
-Bitstream-Terminal-Medium-R-Narrow--36-280-100-100-C-14-ISO8859-1
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-ISO8859-1
-DEC-Terminal-Medium-R-Narrow--14-100-100-100-C-6-DEC-DECtech
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-DEC-DECtech
-Bitstream-Terminal-Medium-R-Narrow--18-140-100-100-C-7-DEC-DECtech
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-DEC-DECtech
-DEC-Terminal-Medium-R-Narrow--28-200-100-100-C-12-DEC-DECtech
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-DEC-DECtech
-Bitstream-Terminal-Medium-R-Narrow--36-280-100-100-C-14-DEC-DECtech
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-DEC-DECtech
-DEC-Terminal-Medium-R-Wide--14-100-100-100-C-12-ISO8859-1
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-ISO8859-1
-Bitstream-Terminal-Medium-R-Wide--18-140-100-100-C-14-ISO8859-1
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-ISO8859-1
-DEC-Terminal-Medium-R-Wide--14-100-100-100-C-12-DEC-DECtech
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-DEC-DECtech
-Bitstream-Terminal-Medium-R-Wide--18-140-100-100-C-14-DEC-DECtech
-Bitstream-Terminal-Medium-R-Normal--18-140-100-100-C-110-DEC-DECtech

4.3.6.5

Font Properties – The font properties generally include the font name elds and
other useful global font information, such as the height of capitals (CAP_HEIGHT),
calculated weight and setwidth (WEIGHT and SETWIDTH), and so on. All
ULTRIX/UWS Version 4.1 fonts (except Terminal) have at least the following
properties:
FONT_ASCENT
DEFAULT_CHAR
WEIGHT
FACE_NAME
FAMILY_NAME
FOUNDRY
SLANT
ADD_STYLE_NAME
RESOLUTION_X
AVERAGE_WIDTH
CHARSET_ENCODING
CAP_HEIGHT

FONT_DESCENT
X_HEIGHT
POINT_SIZE
COPYRIGHT
FONT_NAME_REGISTRY
WEIGHT_NAME
SETWIDTH_NAME
PIXEL_SIZE
RESOLUTION_Y
CHARSET_REGISTRY
CHARSET_COLLECTIONS
NOTICE

Fonts derived from PostScript printer fonts also have the property
_DEC_DEVICE_NAMES. This property sets up the correspondence between printer
fonts requested by an X Display PostScript (XDPS) client (such as a Courier font

ULTRIX Worksystem Software Notes 4–27

requested in a PostScript le) and the screen fonts available to the server. During a
font lookup, XDPS chooses a font whose property is "PS=Courier" when a client le
requests Courier font. Some examples are as follows:
_DEC_DEVICE_NAMES "PS=AvantGarde-Demi"
_DEC_DEVICE_NAMES "PS=Century-Schoolbook-Bold-Italic"

Any application (and not just Display PostScript applications) can use this property
to ensure that a screen font corresponds to a specied PostScript printer font. To do
so, the application searches for a screen font with the _DEC_DEVICE_NAMES
property specifying that printer font.
4.3.6.6

Changes to the Terminal Font – Since ULTRIX/UWS Version 2.1, line-drawing
characters (glyphs) no longer reside within the terminal font. They can be found
within the terminal_dectech font.
The following fonts are for glyphs:
/usr/lib/X11/fonts/decwin/75dpi/terminal_dectech18.pcf
/usr/lib/X11/fonts/decwin/75dpi/terminal_bold_dectech18.pcf

4.3.6.7

Viewing/Mailing DDIF Files with Missing External References – DDIF les
(created by applications such as DECwrite), may contain references to external
les containing fonts or other data. If you try to view a DDIF le with any
application linked with libdvr.a (such as dxvdoc and dxmail) containing
references to external les that cannot be located on your system, the view fails.
The dxvdoc application returns a message such as "Unexpected error converting
aggregate" or "CDA could not open le". The dxmail application displays a blank
viewer window, and no error message. If you have an application using
libdvr.a, the application will receive an error status such as CDA$_OPENFAIL.
If you mail a DECwrite le that contains references to a system-library style le to
a user on a system without DECwrite installed, the mail message will not be viewed
successfully on the receiving end. (System-library style les are installed as part of a
DECwrite installation in /usr/lib/cda/*.doc_style.) The user will see a
blank viewer window, and no message in dxmail.
System-library style les are not packed up in the mail message because they are
assumed to be a system resource that is present on each system. Normally, les
referenced externally are packed up in the mail, unless the references are stored as
"no-copy" such as DECwrite references to system-library style les.
To get around the problem, make sure your les with external references have all of
their externally referenced les present on the machine on which you wish to view
them.
Use the cdoc utility to determine if your le refers to external les. The following
command converts a DDIF le to analysis format, and then searches the analysis
output myfile.doc for any external reference labels:
# cdoc -s ddif -d analysis myfile.doc | grep ERF_LABEL

If you nd that there are references to les not present on your system, copy over the
les to be able to successfully view the entire document. If you are missing
DECwrite system-library style les, copy them from a system with DECwrite
installed from /usr/lib/cda/*.*.doc_style.

4–28 ULTRIX Worksystem Software Notes

4.4 User Environment
This section contains information on applications connected to the user environment.

4.4.1

Window Manager - dxwm
The following notes apply to the ULTRIX/UWS Version 4.1 DECwindows Window
Manager.

4.4.1.1

Delay in Appearance of Windows – The window manager may prevent
applications from mapping drawables to the display until an existing application
window is unfocused and refocused.

4.4.1.2

Naming Windows and Icons – The dxwm window manager currently lets you
name windows and icons. Client programs can specify their names by using the
XA_WM_NAME and XA_WM_ICON_NAME properties dened by DECwindows.
The dxwm window manager uses the values of these properties when it decorates the
client window or icon. If the client does not specify a value for the
XA_WM_ICON_NAME property, dxwm uses the one set for the XA_WM_NAME
property for the icon as well.
The following example shows how to dene the name of a window by using the Xlib
XChangeProperty function:
main ( ) {
Window win;
int winW, winH;
int winX, winY;
XSetWindowAttributes xswa;
/* open the display */
winW = 600;
winH = 600;
winX = (DisplayWidth(dpy,0)-winW)>>1;
winY = (DisplayHeight(dpy,0)-winW)>>1;
xswa.event_mask = 0
xswa.background_pixel = BlackPixel(dpy,0);
win = XCreateWindow(dpy,RootWindow(dpy,0),winX,winY,winW,winH,0,
DefaultDepth(dpy,0),InputOutput,DefaultVisual(dpy,0),
CWEventMask | CWBackPixel, &xswa);
XChangeProperty (dpy,win,XA_WM_NAME,XA_STRING,8,PropModeReplace,
"My Window",9);
.
.
.
}

In this example:
The XA_WM_NAME property species that property is to be changed, while
XA_STRING species its data type.
The argument 8 indicates that the data is in 8-bit format.

ULTRIX Worksystem Software Notes 4–29

The PropModeReplace argument indicates that the previous associated
information is to be discarded. For further information, see the Guide to the
Xlib Library.
The string ‘‘My Window’’ is the new name for the XA_WM_NAME property,
and the argument 9 indicates that the string has nine characters.
To change the icon name, substitute XA_WM_ICON_NAME for XA_WM_NAME.

4.4.2

Operator Cannot Log in to Session Manager
The operator cannot log in to the operator account from the Start Session login
prompt. To invoke operator services, the operator can log in to any account, then use
the su command to log in as operator. You can create a special account for the
operator or use the root account. Remember to use the passwd(1) command to
create a password for the operator account. This is necessary even though the
operator does not log directly into the operator account.

4.4.3

Delay in an Application’s Appearance
Pseudo ttys are used by many types of applications, including terminal emulators and
text editors. An application that uses pseudo ttys can take up to ve minutes to
appear on the display. If an application window does not appear on the display within
a minute, start a second version of the same application. The second version of the
application usually displays quickly. When the sluggish version of the application
nally appears, you can delete it without harming the second version of the
application.
Sometimes the rst dxterm started by the session manager is affected by this
problem.

4.4.4

Calendar - dxcalendar
The following notes apply to the dxcalendar program:
There has been a change in the database format of the dxcalendar program
for VAX systems. The dxcalendar program informs you of the format
change by asking if you want to save the old le. The new format is equivalent
to the DECstation/DECsystem 3100 series processor format.
Repeat entries are lost when you convert the data le of dxcalendar from
ULTRIX/UWS Version 2.2 (VAX) to ULTRIX/UWS Version 4.1 (VAX or
RISC).
The dxcalendar program allows you to dene your working hours (using
the Customize dialog box). Dening your working hours has two benets:
-

When dxcalendar starts, it aligns the day display such that the start of
your working hours is at the top of the display.

-

A dark line (time bar) is displayed on the left and right side of the day
display. On the left side, the time bar is expanded to map your timeslots
one-to-one. On the right hand side, the scrollbar represents the 24 hours
and the time bar represents your working day.

dxcalendar displays only a few hours at a time in the DayView... dialog
box.

4–30 ULTRIX Worksystem Software Notes

To display ten or more hours, use the Day View... dialog box under the
Customize menu and change the Increment value to Half Hour. Press the Apply
and OK options to conrm your changes. You may wish to resize the Day View
to use most or all of the height of the screen. Then select the Save Settings
option under the Customize menu to enable the dxcalendar application to
save the selected settings.

4.4.5

Visual Differences Program - dxdiff
Selecting les in the dxdiff program does not automatically cause the differences
to be shown. The correct procedure for using the dxdiff program is as follows:
program to list the differences between two les is as follows:

4.4.6

1.

Select le number one (left).

2.

Select le number two (right).

3.

Select the item Do Differences from the Differences pulldown menu. Note that
this may take some time and no clock face icon (an indication that the computer
is busy) becomes visible.

DECwindows Debugger - dxdb
The dxdb program does not allow you to view a module that has a left bracket
character ([) as a part of its name.

4.4.7

Mail - dxmail
The dxmail application does not notify users of problems viewing compound
documents. Using the CDA viewer for example, unresolved external reference
problems result in an empty view window being displayed in dxmail’s read
window. No message is given to the user when a bad le is sent.
In addition, if the Quit option is selected from the Continue/Quit/CoreDump&Quit
dialog box, all workstation windows will freeze until all dxmail windows
disappear.

4.4.8

Paint - dxpaint
The following notes pertain to the dxpaint program:
The Select_All (from the Options menu) and Flood Fill (using the Paint Bucket
tool) functions operate only on the visible portion of the screen.
The Options menu has changed slightly in appearance. The toggle for writing
mode (either transparent or opaque) has been changed to two radio buttons.
Support has been included for AIL (Applications Interface Library) allowing
dxpaint to be called by other applications.
Support for 300 dpi pictures (pictures larger than the screen) has been included.
Previously, dxpaint could only edit pictures of size smaller than or equal to
the size of the screen. Now pictures of arbitrary size can be edited.
You can now set output resolution as well as picture size.

ULTRIX Worksystem Software Notes 4–31

You can now use scroll bars to move to any portion of the picture.
The Fullview option allows you to display the entire picture scaled down,
choose (window sized) the area to move to, and crop the picture to an arbitrary
size.
Keyboard accelerators include:
-

Alt/C = Copy

-

Alt/P = Paint

-

Alt/Q = Quit

-

Alt/S = Save

-

Alt/V = Paste

-

Alt/W = Refresh

-

Alt/X = Cut

-

Alt/Z = Undo

Select All and Flood Fill act only on the visible portion of the picture and not
on the entire picture.
Transparent/Opaque writing mode affects spraycan, selection and text in
addition to what it already affected.
Scale Picture options allows you to scale the entire picture.
Brush and Spraycan use the outline pattern instead of the Fill pattern.
4.4.8.1

Drawing Rectangles or Squares Using a Small Line Width – Drawing
rectangles (or squares) whose line length is smaller than the specied line width may
leave some garbage in the pixmap. If while rubberbanding a rectangle you decide
that you do not want it, complete the rectangle by releasing MB1, and then perform
an UNDO.
However, if you attempt to rubberband a rectangle whose line is zero width or length,
garbage might appear in the pixmap that an UNDO will not clear.

4.4.8.2

Specifying a Tilde (~) as Part of a File Specification – The tilde (~) will not
be translated as the user’s login directory if it is used as part of the le specication.
As a result, if a tilde is used, dxpaint will respond with a message that the le
could not be saved (or opened). Always use the full path name when opening or
saving les.
A tilde is parsed as the user’s login directory if it is used as part of the le lter.

4.4.9

PostScript Previewer - dxpsview
The notes in this section pertain the to the PostScript Previewer, dxpsview:

4–32 ULTRIX Worksystem Software Notes

4.4.9.1

Scale Factors Larger than 2.0 – Due to a swap space memory limitation,
selecting a scale factor greater than 2.0 can crash the X server.

4.4.9.2

PostScript File Identification – Many PostScript les created by document
formatters, such as those used with ditroff, adhere to the Adobe page description
commenting conventions. You can verify that a le is properly commented (and thus
positively identiable as a PostScript le) by checking to see that the rst line is
%!PS-Adobe-X.0

where X.0 is a PostScript version number.
4.4.9.3

Viewing Uncommented PostScript Files – The PostScript Previewer now lets
you view les whose rst two characters are not
%!

If you open such a le for viewing, a warning message appears, and you are asked to
conrm that the le is a PostScript le.

4.4.10

Session Manager - dxsession
The following notes pertain to the Session Manager, dxsession.

4.4.10.1

Pause Feature Does not Use Updated Password – The Pause feature under
the session manager’s Session menu requires that you enter your login password to
regain access to your workstation. If you have changed your password using the
passwd(1) command since you last invoked the session manager, you must use your
old password, rather than your new one, to regain access.

4.4.10.2

Intensity Labels – For some systems, the Red, Green, and Blue intensity labels
that appear in the color selection box that you invoke from the Customize Window
dialog box are clipped so that only the tops of the letters are visible. To correct the
problem, edit the /usr/lib/X11/app-defaults/SessionManager le and
delete the following three lines:
*Color Attributes.RedScale.height
*Color Attributes.GreenScale.height
*Color Attributes.BlueScale.height

4.4.10.3

Setting the Window Screen Background Using the Customize Menu –
The Window Screen background pattern option under the Customize menu does not
work properly. It does not reect the pattern until the Apply or OK option is selected.
It does not update if the Default option is selected.

4.4.11

DECterm Terminal Emulator - dxterm
The following notes pertain to the DECterm terminal emulator, dxterm.

4.4.11.1

User-Defined Key Definitions (UDKs) – UDK denitions supported by
dxterm allow you to dene denitions for shifted function keys (F6 to F20,
including Help and Do), using escape sequences. This is described in the DECterm
Text Programming Manual (part of the EK-DECTERM-DK kit, which also includes
the DECterm Graphics Programming Manual; this kit can be ordered from
ULTRIX Worksystem Software Notes 4–33

DECdirect at 1-800-DIGITAL). UDKs are also described in manuals for video
terminals, such as the VT330/VT340 Programmer Reference Manual.
Since UDKs use shifted function keys, you can dene these keys for any desired
purpose without conicting with the unshifted function keys that are reserved for
operating system and application use. You can choose to lock your UDKs through
dxterm by selecting the General item from the Customize menu, or by using the
UDK Denition Device Control String (DCS). Thus, applications cannot count on
being able to redene these keys.
Do not confuse UDKs with operating system features such as the DEFINE/KEY
command on the VMS system and termcaps on the ULTRIX system. Those
features work with unshifted function keys (or in the case of termcaps, with any
keyboard key that sends a known input sequence). UDKs use the shifted function
keys that send input sequences that look to the application and operating system as if
they were typed by you.
UDKs work only when dxterm is operating in VT300 mode, not VT100 mode or
VT52 mode. To check this, go into the Customize General dialog box, select
General from the Customize menu, and make sure that the Terminal Mode is VT300
Mode, 7 Bit Controls or VT300 Mode, 8 Bit Controls.
In the description that follows, 8-bit characters are given in terms of their
hexadecimal ASCII values using the C notation. For example, 0x41, decimal 65, is
the ASCII code for the letter A. (The 8-bit ASCII character set is given in the UWS
DECwindows Desktop Applications Guide,"UPSS DEC Supplemental".)
UDK denitions are not typed directly at the shell prompt. (If they were, they would
be intercepted by the operating system and not seen by dxterm.) They must be
output from the computer to dxterm. This can be accomplished in a number of
ways. One way is to create a le, using any text editor that allows you to enter
nonprinting characters such as ESCAPE. Then copy the le to the terminal, using
cat(1). Another way is to output text strings directly containing the UDK
denitions; that is, from a shell script using echo(1). An additional way is to output
the strings to the terminal using a program. See the examples below.
To dene one or more UDKs, use the following escape sequence:
DCS

Pc;Pl

|

Ky1/St1;...Kyn/Stn

ST

In this sequence:
DCS is the Device Control String Introducer (ASCII 0x90). In a 7-bit
environment, DCS can be sent as ESC P (ASCII 0x1b and ASCII 0x50,
with no space in between)
Pc is the clear parameter. A value of 0 clears all keys before loading new
values (that is, sets them all to empty). A value of 1 clears just the keys that
you are loading. If you do not specify Pc, it defaults to 0 (that is, all keys that
are not dened in the device control string are cleared).
Pl is the lock parameter. A value of 0 locks the keys. If you want to load new
values into the keys later, you must unlock the keys from the Customize
General menu within DECterm. A value of 1 does not lock the keys. The keys
are unlocked and can be redened with another DECUDK string. If you do not
specify P1, it defaults to 0 (that is, the keys are locked after the device control
string takes place).

4–34 ULTRIX Worksystem Software Notes

Note
If Pl is 1 and the keys are already locked, nothing happens. This
is because once the keys are locked they can only be unlocked
through the Customize General menu in dxterm (that is, they
cannot be unlocked from a program).
Note that Pc and P1 are separated by a semicolon.
This sequence clears all UDKs without locking them:
DCS 0 ; 1 | ST

This sequence locks all UDKs without clearing them:
DCS 1 ; 0 | ST

| is the nal character (ASCII 0x7c). The nal character separates the clear
and lock parameters from the key denition string.
Ky1/St1;...Kyn/Stn are the key denition strings; you can have zero or
more of these, each of which denes a single shifted function key. Each string
consists of a string selector number (Kyn) and a string parameter (Stn),
separated by a slash (ASCII 0x2f). A semicolon (ASCII 0x3b) separates
different strings.
Note
You cannot dene the shifted function key F11 through dxterm.
The key selector value (Kyn) indicates which key you are dening:
Key

Kyn Value Key

F6
F7
F8
F9
F10

17
18
19
20
21

F11
F12
F13
F14

23
24
25
26

Kyn Value

Help 28
Do
29
F17
F18
F19
F20

31
32
33
34

Note that these are not ASCII codes but digits, so the code for F18, 32, means the
digit 3 (ASCII 0x33) followed by the digit 2 (ASCII 0x32).
The string parameter (Stn) for each string denition is the encoded denition of the
key being dened; that is, the sequence of ASCII codes that will be sent to the
application. String parameters consist of a series of hexadecimal pairs, one pair for
each character in the denition. Each hex pair denes an 8-bit character according to
its value in the ASCII table; the hex pair can be uppercase (for example, 4E for the
letter "N") or lowercase (for example, 4e for the letter "N").
ST is the string terminator (ASCII 0x9c).

ULTRIX Worksystem Software Notes 4–35

You should consider the following guidelines when loading UDKs:
Before loading new denitions, it is a good idea to clear the old key denitions
without locking them and then load the new denitions in another DECUDK
string. This will prevent the memory used for UDK denitions from becoming
fragmented.
If you redene a key, the old denition is lost. This may free up some space if
the new denition uses fewer bytes than the old one.
There are two ways to lock UDKs, but only one way to unlock them. To lock
UDKs you can use the Lock UDKs toggle button in Customize General or a
DECUDK control string. To unlock UDKs, you must use the Lock UDKs
toggle button.
The default value for each key denition is empty. When you clear UDKs, they
are empty.
You cannot save UDK denitions using dxterm; the denitions are lost when
you exit the dxterm window. Because of this, it is a good idea to load the
key denitions that you want in your login le,
An invalid hex pair in a DECUDK string stops a UDK load sequence. When a
load sequence stops (due to an error or other cause), dxterm saves any keys
already loaded and displays the rest of the DECUDK sequence on the screen.
The following example is an ULTRIX shell script that demonstrates how to dene
more than one shifted function key in the same DECUDK Device Control String
(DCS). Note that DCSs can continue over more than one line, as shown in this
program. This program was written to execute in VT300 mode, 7-bit controls.
This example denes the shifted function key F6 to be ls -l, where 
indicates a carriage return. It also denes the shifted function key F7 to be
date. In the example that follows ^[ is the escape character as it appears
when inserted using the text editor vi(1). To enter the escape character in vi,
while in insert mode, rst enter CRTL/V then press the Escape key.
After you execute the shell script the shifted functions keys F6 and F7 are dened.
The ULTRIX shell script follows:
echo
echo
echo
echo
echo
echo
echo

’^[P’
’1;’
’1’
’|’
’17/6c73202d6c0d’
’;18/646174650d’
’^[\’

#
#
#
#
#
#
#

DCS Introducer
Pc = 1, Clear only keys that are defined
Pl = 1, Do not lock the shifted function keys
| = Final Character
Ky1/St1 = F6/ls -l
Ky2/St2 = F7/date
ST = String Terminator

The following example shows how to dene these same two keys, function key F6
and function key F7, from a C program instead of a shell script on ULTRIX.
#define ESCAPE ’\033’
main()
{
/*
* Send the UDK introducer that does not clear or lock UDK
* definitions. Remember that the default for the clear and
* lock parameters is 0, so if these parameters are omitted the
* UDKs will be both cleared and locked.
*/

4–36 ULTRIX Worksystem Software Notes

printf( "%cP1;1|", ESCAPE );
/*
* Define shift-F6 to be "ls -l" terminated with a Return.
*/
printf( "17/6c73202d6c0d" );
/*
* Define shift-F7 to be "date" terminated with a Return.
*/
printf( ";18/646174650d" );
/*
* Terminate the DECUDK command with \ and send a newline.
*/
printf( "%c\\\n", ESCAPE );
}

In this example the nal printf was terminated with a line feed, but in fact line
feeds and spaces could have been inserted at any point in the DECUDK device
control string except for within the introducer sequence (in this case P|). Note
that 8-bit characters can be dened as well as 7-bit characters, although 7-bit ASCII
has been used for convenience in the above examples.
4.4.11.2

Command-Line Resource Specification – The -xrm option of dxterm that
species a resource string to be used does not work properly.

4.4.11.3

dxterm Does Not Clear Out /etc/utmp – Do not end your login session by
selecting the Quit menu item under the Session menu item through the Session
Manager if there are one or more dxterms running. First logout out of each
dxterm, then select the quit menu item. Failure to follow this procedure will leave
ttyXX entries in /etc/utmp. Thus, users remotely logged into your workstation
will see erroneous data when using commands such as w(1) and who(1).

4.4.11.4

Using ioctl with sigio Hangs dxterm – Simultaneously using ioctl and the
sigio signal will hang the dxterm on a workstation and will eventually hang the
system such that nothing works (including any network connections). You will have
to reset and reboot the system. The arguments to the ioctl and fnctl calls are
as follows:
if((filed < 0) || (sigvec(SIGIO, &iovec, 0) == -1) ||
(fcntl(filed, F_SETFL, FNDELAY|FASYNC) == -1 ) ||
(ioctl(filed, FIONBUF, &_nbufcnt) == -1)) {
return RETERR;
}

The program will access the tape and read data. The signal never arrives.

ULTRIX Worksystem Software Notes 4–37

4.4.11.5

Using System V Shell (sh5) as Default – A DECterm window does not go
away when you attempt to log out if you are using AT&T’s System V shell (sh5) as
the /usr/etc/passwd default shell and start a DECterm session
using dxterm -ls.
To remove the window from the screen, iconify it or end the session.

4–38 ULTRIX Worksystem Software Notes

Layered Products Notes

5

The following notes apply to these ULTRIX and ULTRIX Worksystem Software
layered products:
DECphigs
ULTRIX Mail Connection

5.1 DECphigs
The following notes apply to the DECphigs implementation of PHIGS on
DECstation/DECsystem 5000 Model 200 series processors.

5.1.1

Anti-Aliasing Modes
There are three available settings for anti-aliasing, each with a separate set of
functionality and restrictions. The three modes are:
Mode 0
No anti-aliasing is performed. No restrictions due to anti-aliasing exist when
mode 0 is used.
Mode 1
Lines are 2.5 pixels wide. Anti-aliased lines are blended from the line color to
the anti-aliasing background color (color table entry 0).
Pixels are written only when the computed pixel value is greater than the value
of the existing pixel. Overlapping lines are distorted when arbitrary colors are
used because the numerical value of a pixel is not necessarily a good indication
of pixel brightness (for example, the values of pixels within a PseudoColor
visual are indices into a colormap, rather than color values themselves). It is
the client’s responsibility to set up the colormap appropriately.
Anti-aliasing is enabled when HLHSR_MODE is set to Off. When
HLHSR_MODE mode is set to ZBuffer, anti-aliasing is suppressed.
Mode 2
Lines are 2.5 pixels wide. Anti-aliased lines are blended from the line color to
the anti-aliasing background color (color table entry 0).
All pixels of a line are written regardless of existing pixel values.
Anti-aliasing is enabled when HLHSR_MODE is set to Off. When
HLHSR_MODE mode is set to ZBuffer, anti-aliasing is suppressed.

5.1.2

Clipped Objects
Objects located on the near clipping plane in modeling space are sometimes rendered,
and sometimes clipped.

5.1.3

Polygons with Nonlinear Vertex Data
Smooth-shaded polygons with nonlinear vertex color and vertex normal data are
rendered with inconsistent shading.

5.1.4

Adjacent Concave Polygons
Edges drawn along two concave polygons are not rendered correctly. Half the edge
of one polygon appears blocked by the other polygon. Setting the edge ag for both
polygons xes the problem.

5.1.5

Colinear Vertices
When three colinear vertices are connected by a segment, specifying edge ags on
any two of the vertices may result in the corruption of the endpoints of the segment
during rendering.

5.1.6

Defining Points with Identical Coordinates
Segments (edges) connecting multiple-dened vertices are not always rendered
correctly. The following situations involve multiple-dened vertices:
Duplicated vertices in a polygon
Edges with more than two dened vertices
Colinear triangles (triangles with two duplicate vertices or three colinear
vertices)

5.1.7

Overlapping Polygons
If two polygons overlap, and the rear polygon has edge ags set, the edges of the rear
polygon may bleed through the front polygon during rendering.

5.1.8

Z-Buffering and Edges
When HLHSR_MODE is set to NONE (that is, the Z-buffer is disabled) edges are not
rendered correctly.

5.1.9

Trailing Pixels of Lines
A solid line’s trailing pixel is not rendered.

5.1.10

Mapping a Pattern to a Line
Patterns mapped to lines shorter than the pattern itself may cause pixel dropout when
the line is rendered.

5–2 Layered Products Notes

5.1.11

Graphics Primitive Clipping
Line and polygon vertices which are clipped (either by near or far clipping planes or
by viewing volume boundaries) may result in pixel dropout.

5.1.12

Unimplemented PHIGS Primitives
Complex QuadMesh objects and picking of annotation pixmaps are not yet
implemented.

5.1.13

Recursive Structures in PHIGS
The current implementation of PHIGS does not check application code for recursive
structure networks. Any structure network which references itself is a recursive
structure network.
Applications containing recursive structure networks may create self-referencing
loops. Executing a self-referencing loop usually results in an error similar to the
following:
XIO: fatal IO error 32 Broken pipe on X server
The error occurs immediately after the application containing the recursive structure
calls the execute structure function.

5.1.14

Weighting Control Points for NURBS
Only positive weights are allowed on rational control points. Nonpositive weights
will generate a BadValue error.

5.1.15

Pixel Dropout in Polygons and NURBS
NURBS and polygons containing lines shorter than one pixel are subject to pixel
dropout.

5.1.16

Tessellating a NURBS into Polygons
The upper limit on the number of polygons into which a nurb can be tessellated when
using the implementation-dependent NURB approximation type is 256 × 256.

5.1.17

Knot Vectors in a NURBS
Knot vectors for surfaces, curves, and trim curves are subject to the following two
restrictions (violations will cause a protocol error):
1.

Knot multiplicities at either end of the knot vector must not be greater than the
order of the curve or surface.

2.

Knot multiplicities not at the ends of the knot vector must not be greater than
the order minus one.

Consider, for example, a curve of order three with ve control points. The protocol
requires that there be exactly eight knots in the knot vector.

Layered Products Notes 5–3

The following vectors violate the rst restriction:
[ 0, 0, 0, 0, 1, 2, 2, 2 ]
[ 0, 0, 1, 1, 2, 2, 2, 2 ]

(too many instances of ‘‘0’’)
(too many instances of ‘‘2’’)

The following vectors violate the second restriction:
[ 0, 0, 0, 1, 1, 1, 2, 2 ]
[ 0, 1, 2, 2, 2, 2, 3, 4 ]

5.1.18

(too many instances of ‘‘1’’)
(too many instances of ‘‘2’’)

Supported Color Approximation Types
The following table lists the color approximation types available using different
visual types on 8- and 24-plane DECstation/DECsystem 5000 Model 200 series
processors. A legend follows the table.

5.1.19

Visual Type

24-Plane Display

8-Plane Display

DirectColor
TrueColor
PseudoColor
StaticColor
GreyScale
StaticGrey

CS & CR
CS & CR-Limited
n/a
n/a
n/a
n/a

n/a
CS-Flat
CS-Flat
CS-Flat
CS-Flat
CS-Flat

&
&
&
&
&

CR-Limited
CR-100
CR-100 (Predef)
CR-100
CR-100 (Predef)

n/a

Visual type is not available with the specied display depth.

CS

ColorSpace is supported with no special caveats.

CS-Flat

ColorSpace with at shading is supported. Interpolating between
colors in the color space results in undened values.

CR

ColorRange is supported with no special caveats.

CR-Limited

ColorRange is supported in a limited way. A TrueColor visual allows
only 3 possible predened color ranges, one along each color axis.
TrueColor will work only if the display depth permits an equal
number of samples for each color component. For example, 256
samples for 8/8/8 (a 24-plane display) is acceptable, but 8 and 4 for
3/3/2 (an 8-plane display) is not.

CR-100

ColorRange is supported but the three multipliers (mults) used to pack
the color components into a single 32-bit pixel are forced to (1,0,0) to
conform to PHIGS Version 4.0P semantics. In PHIGS Version 5.0, the
client is responsible for setting the mults to useful values.

Predef

A reasonable ColorSpace or ColorRange encoding must already exist
in a predened color map.

Using a ColorRange
Due to round-off algorithms, the rst and last entries in a multi-entry ColorRange are
not consistently generated. For a continuously changing ColorRange, this is not
noticeable. For a static ColorRange that has discontinuities at the start or nish of

5–4 Layered Products Notes

the range, at least one entry at each end should be used to ‘‘pad’’ the ColorRange and
thus ensure its integrity.

5.1.20

Structure Storage Limit
It is not possible to determine exactly how many structures, structure elements, or
both can be created in the PHIGS central structure store. This is because the
maximum size of the central structure store is dependent upon the following:
The memory available to the server process (note that the memory allocated to
the server and other processes cannot exceed the swap space for the
workstation).
The type of data which is being stored.
The memory requirements for structures and structure elements are given in the
following table. The memory requirements are given in bytes and can be used to
obtain an upper bound for the number of structures and structure elements that can be
created.
Data Type

Memory Requirement in Bytes

Structure
Label element
Execute element
Primitive element
Other elements

85
16 + sizeof(PHIGSLabelInfo)
32 + sizeof(PHIGSExecuteStructure)
32 + 2 × sizeof(PHIGSXXX)
8 + sizeof(PHIGSXXX)

5.2 ULTRIX Mail Connection
The following notes apply to the ULTRIX Mail Connection.

5.2.1

Installing ULTRIX Mail Connection Version 1.1 on ULTRIX/UWS
Version 4.1
Because of changes in setld, you will need to set an environment variable before
attempting to install ULTRIX Mail Connection (UMC) Version 1.1.
To install UMC Version 1.1, follow these steps:
1.

Read the setld(8) note in the section on Superuser Commands in Chapter 3
and follow the instructions there.

2.

If you have installed the base system version of MH (Message Handler), you
must delete it before installing UMC Version 1.1.

To delete the base system version of MH on ULTRIX/UWS Version 4.1 (VAX), enter
this command:
# setld -d ULTMH410

To delete the base system version of MH on ULTRIX/UWS Version 4.1 (RISC),
enter this command:
# setld -d UDTMH410

Layered Products Notes 5–5

The UMC version of MH is installed in a different location from the base system
version. We recommend that you create symbolic links from the old location to the
new location so that existing MHusers do not need to take any action. To create the
symbolic links for VAX or RISC, enter the following commands:
# ln -s ../bin/mh /usr/new/mh
# ln -s ../../lib/mh /usr/new/lib/mh

3.

Install UMC Version 1.1 according to the instructions in the ULTRIX Mail
Connection Installation Guide.

5–6 Layered Products Notes

Documentation Notes

6

The following notes apply to ULTRIX, ULTRIX Worksystem Software, and layered
products documentation

6.1 ULTRIX Documentation
The following notes apply to ULTRIX documentation and cover the following topics:
Installation
Software Development
Network and Communications
Security
POSIX and XPG
ULTRIX/SQL
Reference Pages

6.1.1

Installation
The following notes apply to the installation of ULTRIX/UWS Version 4.1.

6.1.1.1

Installation Guides and Product Authorization Keys (PAKs) – The Advanced
Installation Guide and the Basic Installation Guide indicate that you cannot bring
your system to multi-user mode without rst registering a Product Authorization Key
(PAK). This is incorrect. Each system has a two-user license as the default. If you
want to increase your system’s simultaneous login capacity to more than two users,
you must register a PAK.

6.1.1.2

Creating Copies of Sparse Dump Files – A sparse le utility is documented in
the Guide to System Crash Recovery. This section describes how to create a
permanent copy of crash dump les on tape.
To create a permanent copy of the dump les on tape, use the tar command to
extract the dump les. You should compress the dump les before copying them to
tape because the vmcore le created by savecore is a sparse le which will expand
when you copy it to tape. To compress the dump les, use the compress command.
To copy the dump les to tape, type the following command sequence:
# compress path/vmunix.n path/vmcore.n
# tar c path/vmunix.n.Z path/vmcore.n.Z

The path is the directory pathname specied in the /etc/rc.local le such as
/usr/adm/crash.The time a system crash occurs, n is incremented by one. For
example, if path is /usr/adm/crash and n is 1, type the following command
sequence:
#
#

compress /usr/adm/crash/vmunix.1 /usr/adm/crash/vmcore.1
tar c /usr/adm/crash/vmunix.1.Z /usr/adm/crash/vmcore.1.Z

After you specify the tar command, use the rm command to remove the dump les
and to conserve space on the specied le system. The following example shows
how to remove the dump les. In this example the dump les are located in
/usr/adm/crash and n is 1.
#

rm /usr/adm/crash/vmunix.1.Z /usr/adm/crash/vmcore.1.Z

To decompress the dump les when extracting them from a tape, use the cat,
uncompress, and dd commands. The dd command has an option to create sparse
output les. Remember that the vmcore le created by savecore is a sparse le.
To extract and decompress the dump les from tape, type the following command
sequence:
#
x
x
#
#
#

tar x
path/vmunix.1.Z, n bytes, n blocks
path/vmcore.1.Z, n bytes, n blocks
cat path/vmunix.1.Z | uncompress | dd conv=sparse of=path/vmunix.1
cat path/vmcore.1.Z | uncompress | dd conv=sparse of=path/vmcore.1
rm path/vmunix.1.Z path/vmcore.1.Z

To create a copy of the dump les on another system or in another directory, use the
dd command to copy the les. Remember that the vmcore le created by
savecore is a sparse le. If you simply copy this le, using the cp command for
instance, it will expand and use up much le system space. Thus, to reserve le
system space, you can copy the sparse les using the dd command. To copy the
dump les to another directory using the dd command, log in as root or become
superuser and enter the following two commands using this syntax:
dd conv=sparse if=path/vmunix.1 of=newpath/vmunix.1
dd conv=sparse if=path/vmcore.1 of=newpath/vmcore.1
The path is the directory pathname specied in the /etc/rc.local le such as
/usr/adm/crash. The newpath is the directory pathname where you want to
copy the dump les.
To copy the dump les to another system using the dd command, type the following
command sequence:
#
#
#
#
#
#
#

compress path/vmunix.1 path/vmcore.1
rcp path/vmunix.1.Z path/vmcore.1.Z system:/usr/savecrash
rlogin system
cd /usr/savecrash
cat vmunix.1.Z | uncompress | dd conv=sparse of=vmunix.1
cat vmcore.1.Z | uncompress | dd conv=sparse of=vmcore.1
rm vmunix.1.Z vmcore.1.Z

6–2 Documentation Notes

6.1.1.3

Estimating Disk Space for Partial Crash Dumps – In the Advanced
Installation Guide and in the Guide to System Crash Recovery, tables similar to the
following provide guidelines on the amount of disk space to allocate for partial crash
dumps. However, neither book addresses how these numbers are determined.
Examples of Partial Crash Dump Space

Physical Memory
6 megabytes
8 megabytes
16 megabytes
32 megabytes
64 megabytes
128 megabytes
256 megabytes
512 megabytes

Maximum Number
of Users
2
2
16
32
64
128
128
256

Space Needed
for RISC

Space Needed
for VAX

NA
8 megabytes
14 megabytes
20 megabytes
28 megabytes
40 megabytes
40 megabytes
48 megabytes

6 megabytes
8 megabytes
10 megabytes
12 megabytes
16 megabytes
26 megabytes
26 megabytes
34 megabytes

In determining the crash dump space, the following factors are accounted for:
The size of the kernel (KERNEL)
The KERNEL is estimated at 4 MB for both RISC and VAX.
The size of the kernel memory allocator (KMALLOC DATA)
KMALLOC DATA is calculated by using the following formulas:
-

RISC:
This value is an estimate based on the physical memory size
(PHYSMEM). However, the maximum KMALLOC DATA sized is xed
at 16 MB no matter what the physical memory size.

-

VAX:
KMALLOC DATA is 3 MB if PHYSMEM is less than 40 MB.
KMALLOC DATA is 10 MB if PHYSMEM is greater than or equal to
100 MB
KMALLOC DATA is PHYSMEM divided by 10 MB for other
PHYSMEM sizes.

The size of the user areas (UAREAS)
The UAREAS is calculated by the following formulas:
-

RISC:
((20 + 8 * MAXUSERS) * UPAGES * NBPG)

-

VAX:
((20 + 8 * MAXUSERS) * UPAGES * NBPG)

The size of the page tables (PAGETBLS)

Documentation Notes 6–3

The PAGETBLS is calculated by the following formulas:
-

RISC:
((3 * 8 * MAXUSERS + 20 * 3) * NBPG)
This value is an estimate based on the physical memory size. However, the
system allows a maximum of 12 MB for partial crash dumps of PAGE
TABLES regardless of physical memory size. The formula given is not
used because it gives gross page table sizes. The actual page table size
should never be as large as the formula indicates.

-

VAX:
If PHYSMEM is less than 64 MB then (32 * NUMPTEPG * NBPG) or 2
MB
If PHYSMEM greater than 64 MB then (64 * NUMPTEPG * NBPG) or 4
MB
Allow at most 4 MB for dumping PAGE TABLES regardless of physical
memory size.
Maximum user virtual address space (MAXUVA) can be congured in the
system conguration le to get more PAGE TABLE space in memory.
This would require an adjustment in the calculation.

To determine the size of each factor, you can use the following constants in your
calculations:
Constant
Number of pages used for the user areas for each
active/inactive processes in the system (UPAGES)
Number of page table entries for each page (NUMPTEPG)
Number of bytes for each page (NBPG)

6–4 Documentation Notes

RISC

VAX

2

14

1024
4096

128
512

The following chart shows the resultant calculation of each of the previously
mentioned factors for a given conguration:
+------------------------------------------------------------------------+
|
|
|
|
| 16 MB / 16 MAXUSERS
| 32 MB / 32 MAXUSERS | 64 MB / 64 MAXUSERS |
|
|
|
|
|------------------------|-----------------------|-----------------------|
| KERNEL
4
4
| KERNEL
4
4
| KERNEL
4
4
|
| KMALLOC
3
5
| KMALLOC
4
8
| KMALLOC
6
10
|
| UAREAS
1
1
| UAREAS
2
2
| UAREAS
4
4
|
| PAGETBLS
2
4
| PAGETBLS 2
6
| PAGETBLS
2
10
|
|
--- ---- |
----|
--- ---- |
| TOTALS
10MB 14MB | TOTALS
12MB 20MB | TOTALS
16MB 28MB |
|------------------------------------------------------------------------|
|
|
|
|
| 128 MB / 128 MAXUSERS | 256 MB / 128 MAXUSERS | 512 MB / 256 MAXUSERS |
|
|
|
|
|------------------------|-----------------------|-----------------------|
| KERNEL
4
4
| KERNEL
4
4
| KERNEL
4
4
|
| KMALLOC
10
16
| KMALLOC 10
16
| KMALLOC
10
16
|
| UAREAS
8
8
| UAREAS
8
8
| UAREAS
16
16
|
| PAGETBLS
4
12
| PAGETBLS 4
12
| PAGETBLS
4
12
|
|
--- ---- |
----|
--- ---- |
| TOTALS
26MB 40MB | TOTALS
26MB 40MB | TOTALS
34MB 48MB |
+------------------------------------------------------------------------+

6.1.1.4

Guide to Diskless Management Services – The following notes apply to the
Guide to Diskless Management Services.

6.1.1.4.1

Subset Sizes – The subset sizes listed in Section 2.3.2.1 of the Guide to Diskless
Management Services have been updated for this release in Table 6-1.
Table 6-1: Approximate Disk Space Required
Software Subsets
All ULTRIX/UWS
All ULTRIX/UWS unsupported

Approximate Size
in Mbytes (RISC)

Approximate Size
in Mbytes (VAX)

263
39

141
42

Based on these revised gures, the sample calculation of disk space required for a
dlenv le system to be accessed by RISC clients is updated as follows:
All ULTRIX
All ULTRIX unsupported
One layered product

263 Mbytes
36 Mbytes
50 Mbytes

Subtotal

342 Mbytes

20% file system allowance
Total

68 Mbytes
410 Mbytes

Documentation Notes 6–5

6.1.1.4.2

6.1.2

Boot Command for DECstation/DECsystem 5000 Model 200 – The boot
command is not correct for DECstation/DECsystem 5000 Model 200 processors.
Please refer to the section on the DECstation/DECsystem 5000 Model 200 Series in
"Processor–Specic Notes" in this document for the correct syntax.

Software Development
The following notes apply to documentation about software development.

6.1.2.1

Additions to the Kernel Messages Manual – The following are new panic
messages that are not included in the Kernel Messages Manual:
Message: panic: sm_clear_dev_tlbs: miss proc-to-shm pointer
Output: none
File: sys/vm/mips/sm_machdep.c
Routine: sm_clear_dev_tlbs
Description: A process does not point back to a shared memory segment which
points to the process.
User Action: File a problem report.
Message: panic:

SO_LOCK: s->ref hung

Output: none
File: sys/h/socketvar.h
Routine: Many, the message is a macro.
Description: The message can happen only on a single-processor system. It
indicates a design problem in the SMP locking routines in the network subsystem.
User Action: File a problem report.

6.1.3

Networking and Communications
This section contains documentation about networking and communications.

6.1.3.1

Corrections to the Guide to Kerberos – The Guide to Kerberos states, on page
4-13, that the bindsetup command adds the following lines to
/etc/rc.local:
# %BINDSTART - BIND daemon
[ -f /usr/etc/named ] && {
/usr/etc/named -s -a kerberos one -b /var/dss/namedb/named.boot;
echo -n ’ named’ >/dev/console
}

This is incorrect. The bindsetup command actually adds the following lines:
# %BINDSTART - BIND daemon
[ -f /usr/etc/named ] && {
/usr/etc/named -n -a kerberos.one -b /var/dss/namedb/named.boot;
echo -n ’ named’ >/dev/console
}

In Section 4.6, Changing the Master Key of the Kerberos Database, step 3 in the
numbered procedure should be placed after step 5.

6–6 Documentation Notes

In Section 4.5, Starting the Kerberos-Authenticated named Daemon, the following
line is incorrect:
/usr/etc/named -s -a kerberos one -b /var/dss/namedb/named.boot;

This line should read as follows:
/usr/etc/named -n -a kerberos.one -b /var/dss/namedb/named.boot;

6.1.3.2

Correction to Root Name Server Reference – The Guide to the BIND/Hesiod
Service contains an incorrect reference to the host name and address of the root name
server.
As of April 1990, the root name server, nic.ddn.mil with IP address 26.0.0.73, is on
ns.nic.ddn.mil with an IP address 192.67.67.53. Please observe these corrections
when referring to the Guide to the BIND/Hesiod Service .

6.1.3.3

Documentation for DEMNA XNA Interface – The Guide to the Data Link
Interface does not include the new DEMNA XNA interface in the list of supported
hardware.

6.1.3.4 Corrections to Guide to Preparing Software for Distribution on ULTRIX
Systems and the kitcap(5) Reference Page – There is incorrect syntax for
/etc/kitcap le entries and for gentapes and genra command lines in
kitcap(5) and in the Guide to Preparing Software for Distribution on ULTRIX
Systems.
The corrections follow.
6.1.3.4.1

Section 5.8, Building /etc/kitcap – The syntax and examples in Section 5.8,
Building /etc/kitcap, are incorrect. The correct syntax and examples follow.
The format of an /etc/kitcap entry for tape media is:
 | [product description]:[:directory2]:\
SPACE:SPACE:SPACE:INSTCRTL:[:]

The subsets must be listed so that any subset on which other subsets depend is listed
before its dependent subsets.
The example that follows shows an entry for TK50 tape media:
UWS400TK | ULTRIX Worksystem Software:/sys/dist/:\
SPACE:SPACE:SPACE::INSTCTRL:UWSXRT400:UWSMH400

The format of an /etc/kitcap entry for disk media is:
:partition:dd=:\
[product_description]:[:directory2]:instctrl:[:]

The example that follows shows an entry for RA60 disk media:
UWS400RA:c:dd=product:ULTRIX_Worksystem_Software:/sys/dist/:\
instctrl:UWSXRT400:UWSMH400

The underscore character (_) is required to connect words in a product description for
disk media. The subsets must be listed so that any subset on which other subsets
depend is listed before its dependent subsets.
Documentation Notes 6–7

6.1.3.4.2

Section 5.9.1, Making Tape Media – The syntax and example in Section 5.9.1,
Making Tape Media, are incorrect. The correct syntax and examples follow.
Use the gentapes utility to make tape media. The command line syntax is:
gentapes [-wv] [hostname:] 

The -w option indicates write only; the -v option indicates verify only. If neither
option is specied, the utility writes, rewinds the tape, then veries.
If you specify a node, the gentapes utility looks for the output directory on the
node you specify. For example:
# gentapes mysystem:UWS400 /dev/nrmt0h

You can use the Network File System (NFS) to remotely mount the kit on a machine
with the correct drive.
The gentapes utility appends either TK or MT to the product_code after
nding the entry in the /etc/kitcap le. For example, if you type the following
command and the /etc/kitcap entry species TK50 tape, the gentapes utility
appends TK to UWS400:
# gentapes UWS400 /dev/nrmt0h

6.1.3.4.3

Section 5.9.2, Making RA60 Disk Media – The syntax and example in Section
5.9.2, Making RA60 Disk Media, are incorrect. The correct syntax and an example
follow.
Use the genra utility to make RA60 disk media. The command line syntax is:
genra [-wv] [hostname:] 

The following example species a hostname:
genra mysystem:UWS400 /mnt

The genra utility appends RA to the product_code automatically after nding
the entry in the /etc/kitcap le.

6.1.4

Security
The following notes apply to documentation about security issues.

6.1.4.1

Incorrect Subset in Security Guide for Administrators – In the Security
Guide for Administrators, Chapter 7, Starting and Conguring a Secure System,
incorrectly states that ULTSEC040 is the name of the ULTRIX security software.
The correct name is ULTSEC410.
All occurrences of ULTSEC040 should read ULTSEC410.

6.1.4.2

Controlling Network Access to Workstation Displays – Chapter 6 of the
Security Guide for Users incorrectly states that if there are differences between the
system access control list and a workstation access control list, the system access
control list prevails. This is not true.

6–8 Documentation Notes

The correct documentation is:
At system startup, the X server initializes the server access control list by reading the
/etc/X*.hosts le. This privileged le names the hosts on a network that can
access a workstation display.
When the Session Manager ( dxsession) is started, it updates this server access
control list to match the session access control list. The session access control list is
the list of hosts that users specify using the Security... option from the Customize
menu from the Session Manager window. The Session Manager stores this list of
hosts in the .Xdefaults le in the user’s home directory, using the resources
sm.host_list and sm.num_hosts.
The session access control list, if it exists, overrides the server access control list.
For example, if the server access control list includes hosts orion and myrtle, and
the session access control list includes only host myrtle, the Session Manager
requests that the server remove orion from the server access control list, and only
authorized users on myrtle can access the workstation.
If a user does not add a host to the session access control list using the Security...
option from the Customize menu, or if the user does not save the changes made
during the current session, the Session Manager does not create a list of entries for
the sm.host_list and sm.num_hosts resources in the .Xdefaults le.
Thus, no session access control list exists. If no session access control list exists, the
only hosts allowed access to the workstation display are those listed in the server
access control list before the session is initiated. These are the hosts listed in the
/etc/X*.hosts le.

6.1.5

POSIX and XPG
The following notes apply to standards and external specications, specically the
documentation in the POSIX Conformance Document.

6.1.5.1

The cpio Command – In running the X/OPEN Verication Suite, Release 3.203,
in POSIX mode, the following exception was found in the cpio command.
The ULTRIX cpio command properly creates and extracts POSIX conformant les.
However, the MAGIC number in the POSIX cpio header le is an integer, not an
ASCII string. This will only affect applications that utilize the header le. There is
no effect on reading and writing of POSIX cpio archives.
The workarounds are as follows:
Modify the header le, /usr/include/cpio.h so that the MAGIC number
is in quotation marks.
Convert the integer to an ASCII string at runtime.

6.1.5.2

The tcsendbreak Library Call – In running the X/OPEN Verication Suite,
Release 3.203 in POSIX mode, the following exception was found in the
tcsendbreak library call.
Due to a hardware limitation on DECstation 2100s and 3100s, the calling of
tcsendbreak to transmit a break condition, generates an extra null character
following a sequence of zero-value bits that continues for more than the time required
to send one byte.

Documentation Notes 6–9

6.1.5.3

The tar Command – In running the X/OPEN Verication Suite, Release 3.203, in
POSIX mode, the following exceptions were found in the tar command:
Prex Usage and File Names of 100 to 256 Characters
Permissions
Multiple volumes

6.1.5.3.1

Prefix usage and file names of 100 to 256 characters – According to
Chapter 10, Section 10.1.1 of IEEE Std 1003.1-1988, "The name and the prefix elds
produce the pathname of the le. The hierarchical relationship of the le is retained
by specifying the pathname as a path prex, a slash character and lename as the
sufx. If the prefix , contains non-null characters, prefix , a slash character, and name
are concatenated without modication or addition of new characters to produce a new
pathname."* The calculation used by ULTRIX tar is prefix and name concatenated;
ULTRIX does not use the slash (/). In ULTRIX, if the prefix is null, the pathname is
name as in POSIX.1.
The prefix eld has a backward overow for le names greater than 100 characters.
The calculation used when an overow occurs is as follows:
filename: /a01/a02/a03/ ... /a99

POSIX:
name:
a74/a75/ ... /a99
prefix: /a01/a02/ ... /a75

ULTRIX:
name:
a99
prefix: /a01/a02/ ... /a98/

To work around this problem, use le names with less than 100 characters.
6.1.5.3.2

Permissions – According to Chapter 10, Section 10.1.1 of IEEE Std 1003.11988, a process with appropriate privileges restores the ownership and permissions
exactly as recorded on the medium, except that symbolic user and group IDs are used
for the tar format. If only the uppercase –P option to the tar command is used,
ULTRIX does not restore permissions as they were preserved on the media. The
lowercase –p option to the tar command allows the modes to be preserved, and
also allows non-permitting processes to preserve the modes.
Barring the restrictions previously noted, using tar with both the uppercase –P and
lowercase –p options ( tar –Pp ) insures that permissions are preserved.

* IEEE Standard Portable Operating System Interface for Computer Environments (New York, NY: The Institute
of Electrical and Electronics Engineers, Inc, 1988)

6–10 Documentation Notes

6.1.5.3.3

Multiple Volumes – The tar command does not conform to Chapter 10, Section
10.1.3 of IEEE Std 1003.1-1988 in regard to multiple volumes. The tar command
supports multiple volumes in non-POSIX mode with no restrictions. However, when
used in POSIX mode, any le that spans two media is corrupted. All other les are
preserved.
To work around the problem, insure that all les are contained fully in a single
medium.

6.1.6

ULTRIX/SQL
The following note applies to ULTRIX/SQL.

6.1.6.1 VAX Kernel Configuration Parameter Specified Incorrectly in
ULTRIX/SQL Operations Guide – In Section 3.3.4.1, Shared Memory -- VAX Systems, of
the ULTRIX/SQL Operations Guide, the kernel conguration parameter smsmat is
incorrectly listed as smsat in two places. Note that you need to specify the smsmat
parameter only for VAX systems with fewer than 32 megabytes of internal memory.

6.1.7

Reference Pages
The following notes apply to the reference pages.

6.1.7.1

New and Changed Reference Pages – The following reference pages are new
or have been changed in this release:
chroot.1
mt.1
mblen.3int
mbstowcs.3int
mbtowc.3int
rrpc_are_you_there.3ncs
wctomb.3int
mdc.4
mti0.4
ne.4
presto.4
rz.4
scsi.4
tz.4

Documentation Notes 6–11

dupterm.8
kgconv.8
presto.8
prestoctl_svc.8
scamp.8
rzdisk.8
dxpresto.8

6.1.7.2

Reference Pages Available Only Online – For ULTRIX/UWS Version 4.1 the
new and changed reference pages are available only online.
If you need a copy of any of the reference pages on paper, as opposed to online, you
can process the source le for the reference page and print the formatted page.
The source les for all the reference pages are stored in subdirectories of the
/usr/man directory after you install your ULTRIX system. For example, the
/usr/man/man4 directory contains source les for Section 4 reference pages.
Each source le in that directory contains one reference page. The names of the
source les indicate which reference page they contain. For example, the rz(4)
reference page is stored in the rz.4 le. The scsi(4) reference page is stored in
the scsi.4 le, and so on.
To process a reference page source le, use the tbl preprocessor. Process the output
from tbl using the nroff command with the -man macro. You can print the
output from the nroff command on a line printer. For example, to process the
rz.4 source le using nroff, issue the following command:
% tbl /usr/man/man4/rz

| nroff -man | col | lpr &

6.2 ULTRIX Worksystem Software Documentation
The following notes apply to ULTRIX Worksystem Software documentation and
cover the following topics:
Online Software Product Description (SPD)
Xlib Manual Additions
Macros Described in Appendix C of the Xlib Manual
Discrepancies between DECwindows Toolkit and the Toolkit documentation
Reference Pages

6.2.1

Online Software Product Description (SPD)
An online copy of the UWS Software Product Description is provided as a reference
to the software and hardware congurations that ULTRIX/UWS Version 4.1
supports. The online SPD is located in the /usr/etc directory. The online SPD
lename is spd_uws.

6–12 Documentation Notes

Note
This electronic copy of the SPD is to be used only as a guide, and is not
warranted to be accurate or complete, nor is it to be used as a substitute
for the printed SPD that comes with your software. The printed SPD is
the legal document listing supported software components and supported
hardware congurations for your distribution.

6.2.2

Xlib Manual Additions
The following functions were added to the Guide to the Xlib Library in the
ULTRIX/UWS Version 2.2 release.

6.2.2.1

XVisualIDFromVisual – To obtain the visual ID from a Visual, use
XVisualIDFromVisual.
VisualID XVisualIDFromVisual(visual)
Visual *visual;
visual

Species the visual type.

The XVisualIDFromVisual function returns the visual ID for the specied
visual type.
6.2.2.2

XDisplayKeyCodes – To obtain the legal KeyCodes for a display, use
XDisplayKeycodes.
XDisplayKeycodes(display, min_keycodes_return,
max_keycodes_return)
Display *display;
int *min_keycodes_return, max_keycodes_return;
display

Species the connection to the X server.

min_keycodes_return
Returns the minimum number of KeyCodes.
max_keycodes_return
Returns the maximum number of KeyCodes. The
XDisplayKeycodes function returns the minimum number of
keycodes and maximum number of KeyCodes supported by the
specied display. The minimum number of KeyCodes returned is
never less than 8, and the maximum number of Keycodes returned is
never greater than 255. Not all KeyCodes in this range are required
to have corresponding keys.

Documentation Notes 6–13

6.2.2.3

XResourceManagerString – To obtain a pointer to the resource manager string of
a display, use XResourceManagerString.
char *XResourceManagerString(display)
Display *display;
display

Species the connection to the X server.

The XResourceManagerString returns the RESOURCE_MANAGER property
from the server’s root window of screen zero, which was returned when the
connection was opened using XOpenDisplay.
6.2.2.4

XAddExtension – The XAddExtension function was added in the
ULTRIX/UWS Version 2.2 release to the Guide to the Xlib Library, Appendix C:
XExtCodes *XAddExtension(display)
Display *display;
For local Xlib extensions, XAddExtension allocates the XExtCodes structure,
bumps the extension number count, and chains the extension onto the extension list.
To transmit variable length data, use the Data macros. If the data ts into the
output buffer, then this macro copies it to the buffer. If it does not t, however, the
Data macro calls _XSend, which transmits rst the contents of the buffer and then
your data. The Data macros take three arguments: the Display, a pointer to the
beginning of the data, and the number of bytes to be sent.
Data(display, (char *) data, nbytes);
Data16(display, (short *) data, nbytes);
Data32(display, (long *) data, nbytes);
Data, Data16, and Data32 can use their last argument more than once, so that
argument should be a variable rather than an expression such as
‘‘nitems*sizeof(item)’’. This kind of computation should be done in a separate
statement before calling the macros.
Use the appropriate macro when sending byte, short, or long data.

6.2.2.5

XRead Functions – If there is variable length data after the reply, change the
True to False, and use the appropriate _XRead function to read the variable
length data.
_XRead reads the specied number of bytes into data.
_XRead(display, data, nbytes)
Display *display;
char *data;
long nbytes;
_XRead16 reads the specied number of bytes, unpacking them as 16-bit quantities,
into the specied array as shorts.

6–14 Documentation Notes

_XRead16(display, data, nbytes)
Display *display;
short *data;
long nbytes;
_XRead32 reads the specied number of bytes, unpacking them as 32-bit quantities,
into the specied array as longs.
_XRead32(display, data, nbytes)
Display *display;
long *data;
long nbytes;
_XRead16Pad reads the specied number of bytes, unpacking them as 16-bit
quantities, into the specied array as shorts. If the number of bytes is not a multiple
of four, _XRead16Pad reads up to three additional pad bytes.
_XRead16Pad(display, data, nbytes)
Display *display;
short *data;
long nbytes;
_XReadPad reads the specied number of bytes into data. If the number of bytes is
not a multiple of four, _XReadPad reads up to three additional pad bytes.
_XReadPad(display, data, nbytes)
Display *display;
char *data;
long nbytes;
6.2.2.6

6.2.3

XLookupString – Unlike most Xlib functions which return a string,
XLookupString does not return a null-terminated string. Instead
XLookupString returns a count of the characters in the string. This feature is not
clearly described in the Xlib documentation.

Discrepancies Between DECwindows Toolkit and the Toolkit
Documentation
This section describes inaccuracies and omissions in the Toolkit documentation.

6.2.3.1

XtRegisterClass – The DRM Register Class routine XtRegisterClass is
documented to have the widget class parameter passed by reference. The code
currently requires it to be passed by value.

6.2.3.2

XtDisplayInitialize – The Display Initialize routine XtDisplayInitialize is
incorrectly documented as showing the parameter display_name to be a character
string passed by descriptor. It should be documented as a Display structure pointer
passed by value.

Documentation Notes 6–15

6.2.4

XUI Toolkit Manual
On page 10-7 in the XUI Toolkit, Programming Volume 2 there is an error in the
denition of the second argument of DwtGetNextSegment(...). It is
incorrectly listed as:
char *text_return

It should be:
char **text_return

6.2.4.1

6.2.5

DwtGetNextSegment Function – The parameters to the compound string utility
DwtGetNextSegment routine discussed in the UWS documentation are incorrect.
The direction_r_to_l parameter that is shown in the XUI Toolkit Reference
Manual as the address of a Boolean should be the address of an integer. Passing the
address of a Boolean to this routine yields unexpected results, including alignment
errors on some platforms.

UID File Descriptions
There are no descriptions of the les in the /usr/lib/X11/uid/ directory. The
les in this uid directory are compiled versions of the User Interface Language
(UIL) les that dene the form (menus, buttons, command callbacks, fonts,
geometry, and so on) for the functionality of the applications.
Additionally, the UWS Reference Pages for various applications do not mention the
UID les, even though some other les related to the applications, in particular the
app-defaults les, are shown.

6.2.6

Reference Pages
This section discusses changes to the UWS Reference Pages since ULTRIX/UWS
Version 4.0.

6.2.6.1

X Server Reference Pages – Section 8 reference pages based on the VAX and
RISC versions of X(8X) have been added to the UWS reference pages inventory
since the UWS Version 2.1 release. The reference pages are as follows:
Xmfb(8X) - RISC version with a cross-reference from Xcfb.
Xqvsm(8X) - VAX version with cross-references from Xqdsg and Xgb.
Xtm(8X) - RISC version for DECstation/DECsystem 5000 Model 200PXG
and PXG-turbo series processors.
Xtm2d(8X) - RISC version for DECstation/DECsystem 5000 Model 200PX
series processors.

6.2.6.2

DwtMainWindow Reference Page (DwtNcolormap Attribute) – The
DwtMainWindow reference page lists the inherited attribute DwtNcolormap.
User-created colormaps cannot replace the DwtNcolormap attribute. Any attempt
to use a user created colormap are ignored. This is not explicitly stated in the
reference page.

6–16 Documentation Notes

6.3 Layered Products Documentation
The following notes apply to layered products documentation.

6.3.1

Correction to Encryption Upgrade Installation Instructions
The Encryption Upgrade Installation Instructions document is in error. Some
commands and libraries have been added to the Encryption Upgrade Installation kit
and the information for the CDROM media is incorrect.
The correct lists of commands and libraries follow.
The encryption upgrade kit adds these commands to your ULTRIX operating system:
/usr/bin/crypt
/usr/bin/enroll
/usr/bin/secretmail
/usr/bin/xsend
/usr/bin/xget
The encryption upgrade kit replaces these libraries:
/usr/lib/libc.a
/usr/lib/libcg.a (VAX only)
/usr/lib/libcP.a
/usr/lib/libcPg.a (VAX only)
/usr/lib/libc_p.a (VAX only)
/usr/lib/libcP_p.a (VAX only)
The correct entry for CDROM media in Table 1, Encryption Upgrade Distribution
Media and Device Special File or Mount Point, follows:
Distribution
Media and Label

Device Special File
or Mount Point

1 CDROM optical disc
ULTRIX/UWS Version
ULTRIX/UWS Version 4.1
ENCRYPTION (RISC/VAX)

/mnt/RISC/ENCRYPTION (RISC
processors)
/mnt/VAX/ENCRYPTION (VAX
processors)

Documentation Notes 6–17

Problems Resolved Since Last Release

A

This appendix discusses the software and documentation problems with the ULTRIX
operating system and ULTRIX Worksystem Software that have been resolved since
the last release of the ULTRIX operating system.

A.1 ULTRIX Problems Resolved Since Last Release
This section discusses problems in the ULTRIX operating system that have been
resolved since the last release. Table A-1 lists the topic or the name of the
component that has been resolved, a denition of the problem that has been resolved,
and, when applicable, a reference to a Software Performance Report (SPR) or
Customer Level Distribution (CLD).
Table A-1: ULTRIX Problems Resolved Since Last Release
Component

Problem Resolved

CLD/SPR

atexit

The atexit routine could reference
unallocated memory.

–

BIND/Hesiod
hesupd

The problem described in ULTRIX Version 4.0
release note 18, BIND/Hesiod Password Causes
hesupd Failure, has been resolved. Now the
distributed password le no longer becomes
corrupted when users with a null password eld
attempt to change their password.

–

BIND/Hesiod
named

The Kerberos authenticated BIND/Hesiod
named produced many zone transfer errors in
syslog due to timing problems.

–

BIND/Hesiod
named

BIND/Hesiod named arguments were
incomplete in a ps listing.

–

CI Network
Subsystem

In ULTRIX Version 4.0, the performance of the
CI network subsystem on DECsystem 5800s
was less than the Ethernet throughput. This
problem has been resolved. Now the CI
network throughput on DECsystem 5800s is
anywhere from one to two times faster than the
Ethernet throughput.

–

Configuration
File

The kernel would not boot if the QUOTA option
was not included in the system conguration le
(RISC processors only).

–

Table A-1:

(continued)

Component

Problem Resolved

curses(3x)

The problem described in ULTRIX Version 4.0
release note 2.13.3.2, The addch() Function
Causes Text Scrolling Problems, has been
resolved. If your application links in the BSD
curses libraries libcurses.a or
libcurses_p.a
( -lcurses, or -lcurses_p) you need to
relink your application in order to take
advantage of this x.

SPR ICA-20807

dtoa

The problem described in ULTRIX Version 4.0
release note 2.13.10, A printf Problem (RISC
only), has been resolved. The %f format (C)
and F format (FORTRAN) rounded incorrectly.
The fcvt function also rounded incorrectly.

–

GNUemacs

The startup of GNUemacs resulted in a
segmentation fault.

CLD IPO3736

ftp

The ftp "macdef" token was unrecognized.

SPR 704

gno_close()

The kernel routine copen() was modied to
clear the le table reference in the u-area.
When a vhangup() occurred on a tty line
which was being opened, it caused the
following panic: Protection Fault. This problem
has been resolved.

–

ifconfig

When /etc/ifconfig ln0 down failed, the
network continued to run.

–

Local Area
Terminal (LAT)

The ULTRIX system could send the terminal
server a short start slot, causing node names to
be truncated (for example, the command
show sessions displayed node ABCDEF as
AB ). Also, node names less than four
characters were rejected as illegal.

–

Local Area
Terminal (LAT)

The following panics have been resolved:
"unaligned access" – caused by receipt of a
large status message
"lock retry limit exceeded" - caused if many
print jobs were active at once.
"lock not locked" and "bad mcltype" – caused if
a bad slot were received

–

Local Area
Terminal (LAT)

Because vhangup was not being managed
properly, it was possible to start a LAT session
and end up connected to a process from a
previous session (rather than being connected to
getty, as would be the usual case). This
would be seen with processes set to ignore
SIGHUP.

–

Network File
System (NFS)

A deadlock condition in the kernel routine
vop_link() caused the nfsd to hang. This
problem has been resolved.

–

A–2 Problems Resolved Since Last Release

CLD/SPR

Table A-1:

(continued)

Component

Problem Resolved

CLD/SPR

Network File
System (NFS)

Changes were made in the ULTRIX/UWS
Version 4.1 NFS client and server that
signicantly improve performance when
randomly patterned writes that are less than the
lesystem blocksize (usually 8K) are done on
NFS mounted lesystems.

–

Network Time
Protocol (NTP)

The problem described in ULTRIX Version 4.0
release note 2.12.8, Network Time Protocol
(NTP): Missing /etc/ntp.conf File, has been
resolved.

–

qe(4)

In ULTRIX/UWS Version 4.0, the delqa
device driver caused the network to hang on a
DECsystem 5400. This problem has been
resolved.

–

rexecd

The rexecd daemon did not work for normal
users, only for root.

–

ruserok(3)

The return value for success was changed from
1 to 0.

–

Scheduling
Problem

The problem that occasionally resulted in
improper scheduling on heavily loaded systems
has been resolved. Process priority adjustment
could leave the scheduling queue (run queue) in
a state where runnable processes were not in
priority order; this could result in improper
operation of round-robin scheduling on systems
with numerous runnable processes.

–

SCSI Tapes

The problem described in ULTRIX Version 4.0
release note 2.13.16, Archiving Problems with
SCSI Tapes, has been resolved.

–

tar

The problem with the -r and the -s options
has been resolved. The tar(1) command now
properly appends and updates les to a tape
archive under all conditions. Previously, there
was a one in twenty chance that tar(1) would
incorrectly append the new le past the logical
end of the tape archive. This only occurred
when writing to a tape device; updates and
appends to archives stored in a le were always
correctly handled.

CLD 03445

tar

The tar(1) command now correctly handles
le names of 100 characters. The previous
version of tar(1) would compute the le
name length based on the absolute pathname.
The xed version computes the le name length
based on the name specied by the command
line which, in most cases, is a relative
pathname.

SPR 00823

ufs_rwgp()

The kernel routine ufs_rwgp() was protected
from a negative le offset which caused the
following panic: "Protection Fault".

–

Problems Resolved Since Last Release A–3

Table A-1:

(continued)

Component

Problem Resolved

ULTRIX/SQL

In ULTRIX/UWS Version 4.0, ULTRIX/SQL
provided the le
/usr/kits/sql/sqlstartup.rclocal
for you to include in your /etc/rc.local
le to enable the automatic startup of SQL at
system boot time. However, in that version,
this le failed to restart the DBMS servers
properly after the system was taken down to
single-user mode and then brought back up to
multi-user mode without being rebooted. This
problem has been corrected. If you are updating
your system from ULTRIX/UWS Version 4.0 to
ULTRIX/UWS Version 4.1 you might want to
include the new version of the ULTRIX/SQL
startup le in /etc/rc.local.

–

virtual memory
subsystem

The following panic, caused by a process which
does asynchronous (n-buffered) I/O to a raw
device and also calls the vfork() system
service, has been resolved: panic:
"MUNLOCK: dup page unlock".

CLD OGO04179

virtual memory
subsystem

The following panic, caused by a process doing
I/O between a raw device and shared memory,
has been resolved: "panic: MUNLOCK: dup
page unlock"

CLD IPO_03325

virtual memory
subsystem

The following panic, caused by processes which
read from a raw device to shared memory, has
been resolved: "panic: vtopte SMEM" for
processes

CLD IPO_03676

ypbind

The Initial Bind option ( -X ) has been added to
ypbind. This option causes ypbind to
attempt to bind to a YP server before
backgrounding itself. If ypbind fails to bind
to a YP server after three attempts it will exit.
With the -X option a system that is not
dependent on YP will not hang because there
were no YP servers available at boot time.

SPR 671

A–4 Problems Resolved Since Last Release

CLD/SPR

A.2 ULTRIX Worksystem Software Problems Resolved Since
Last Release
This section discusses problems in ULTRIX Worksystem Software that have been
resolved since the last release. Table A-2 contains lists the topic or the name of the
component that has been resolved, a denition of the problem that has been resolved,
and, when applicable, a reference to a Software Performance Report (SPR) or
Customer Level Distribution (CLD).
Table A-2: UWS Problems Resolved Since the Last Release
Component

Problem Resolved

CLD/SPR

DPS

A problem in output buffering routines has been
xed. Certain sequences of Display PostScript
requests caused the client program to crash with a
bad pointer reference. The content of the requests
did not matter, but the length did. Adding
XFlush() calls changed the behavior.

–

DPS

A problem in context memory reclamation has been
xed. The DPSDestroyContext routine would
never destroy the context; the context would be
rendered unusable, but its resources were not
reclaimed.

–

DPS

A problem in color rendering has been xed. The
setXrgbactual operator would sometimes
exhibit roundoff errors such that the displayed color
was slightly different from the requested color.

–

DPS

An error in the spacing of text that caused text
displayed using prebuilt fonts to be spaced too
closely together has been xed.

–

DPS

Text ligatures, characters of two or more letters
joined together, are now properly displayed using
prebuilts. Previously, they were rendered from
outlines.

–

DPS

Several problems relating to Display PostScript and
backing store have been xed; notably, output into
an obscured window with backingStore set to
Always would not be saved.

–

DPS

The colorimage operator was not working
correctly. Images with one or two bits per sample
on an eight-plane display were sometimes rendered
incorrectly.

–

DPS

A problem in the client library that caused incorrect
updating of user names with shared or chained
contexts has been xed.

–

DPS

Prebuilt fonts were never being used on 100 dpi
monitors. This has been xed.

–

DPS

A problem involving uappend has been xed.

–

Problems Resolved Since Last Release A–5

Table A-2:

(continued)

Component

Problem Resolved

CLD/SPR

DPS

A problem involving the strokepath operator has
been xed.

–

driver

Graphics and console drivers now cooperate,
enabling the use of input devices such as graphics
tablets.

–

dxcalendar

The dxcalendar application no longer prints an

–

dxcalendar

Double clicking the dxcalendar icon no longer
crashes the application.

–

dxcalendar

Specifying a calendar database le other than
.dxcalendar in the environment variable
DXCALENDAR_FILE The dxcalendar
application works across a VMS/ULTRIX
connection.

SPR ICA-26778

dxcalendar

The dxcalendar application now correctly aligns
icons and menu items when using 100dpi fonts.

SPR ICA-26300

dxcardfiler

The dxcardfiler application no longer exits
prematurely when run under MOTIF.

SPR ICA-26708

dxdb

The dxdb application no longer goes into an innite
loop when executed from a bourne shell.

SPR ICA-25410

dxdiff

A problem involving random highlighting of text
within xdiff is xed.

–

dxdiff

The dxdiff application no longer suffers from
segmentation faults.

–

dxpsview

The dxpsview application no longer displays the
wrong copyright date.

–

dxsession

The dxsession application no longer crashes
when dumping the screen to a color printer utilizing
the sixel data format.

–

dxsession

A bug causing ‘´ characters to be stripped out of
application startup commands has been xed.

–

dxsession

The Session Manager properly executes a Print
Screen command when the output format is Sixel.

SPR ICA-24882

dxsession

YP workarounds have been removed from the
Session Manager.

–

dxsession

X11 Release 4 servers now allow users to login
through Xprompter.

–

dxsession

Bits in the Session Manager window are no longer
corrupted by overlapping pull-down menus.

–

dxsession

Specifying the client UID in the VMS Session
Manager’s Customize Security menu now allows
interoperability between a VMS host and an
ULTRIX client.

–

dxterm

DECterm now accepts ctrl-3 and ctrl-] as
input.

–

A–6 Problems Resolved Since Last Release

Table A-2:
Component

(continued)
Problem Resolved

CLD/SPR

dxterm

DECterm no longer hangs during scrolling.

–

dxterm

DECterm now correctly displays Host Status
information in the Host Status Display line at the
bottom of the terminal window.

–

dxterm

DECterm now sends the correct leading character (a
DCS) when generating a VTX color table report.

–

dxue

A bug that crashed the User Executive in the Double
Click Actions menu under the Customize menu has
been xed.

–

install

The copyright symbol is now correctly displayed
under the About menu selection in DECwindows
applications’ help menus.

–

install

ULTRIX/UWS Version 4.1 has been linked with the
latest version of DECnet-ULTRIX libdnet.a.

–

server

The Xcfb server no longer suffers from
segmentation faults.

–

Xlib

A problem involving Xlib’s reporting of protocol
errors is xed.

–

Xlib

Allocation errors (*alloc errors) are now handled
correctly by Xlib.

–

xdvi

The xdvi application no longer crashes the server.

–

Problems Resolved Since Last Release A–7

Changes and New Features in Version 4.1

B

This appendix discusses changes and new features in the ULTRIX operating system
and ULTRIX Worksystem Software that apply to ULTRIX/UWS Version 4.1.

B.1 ULTRIX Changes and New Features
This section discusses the following changes and new features in the ULTRIX
operating system for ULTRIX/UWS Version 4.1:
Conformance to standards and specications
Compatibility with earlier versions of the operating system
Support for new processors
Support for new hardware devices
New software components
New and changed documentation components
New and changed software services for customers
Software features no longer supported by the operating system
Hardware no longer supported by the operating system.

B.1.1

Conformance to Standards and Specifications
ULTRIX/UWS Version 4.1 conforms and complies to several industry standards,
including the following:
POSIX 1003.1-1988, Portable Operating System Interface for Computer
Environments, September 1988.
FIPS Publication 151-1, POSIX: PORTABLE OPERATING SYSTEM
INTERFACE FOR COMPUTER ENVIRONMENTS.
X/Open Portability Guide, Issue 3, (December 1988) BASE OS:
–

Volume 2, XSI System Interface and Headers

–

Volume 3, XSI Supplementary Denitions (excluding curses interface)

–

Volume 4, Programming Languages

Certication of compliancy is accomplished through the use of the X/Open
"Branding" process as well as the use of an accredited National Computer Systems
Laboratory certied testing laboratory for POSIX/FIPS.

B.1.2

Compatibility With Earlier Versions of the Operating System
ULTRIX/UWS Version 4.1 is compatible in most ways with earlier versions of the
ULTRIX operating system. For more information on system compatibility, see note
C.1.2, Porting Version 3.1 Applications to ULTRIX/UWS Version 4.0.

B.1.3

New Processors
The following new processors are supported in ULTRIX/UWS Version 4.1:
DECsystem 5100 The DECsystem 5100 is a low-end desktop server, the follow-on
to the DECsystem 3100.
DECsystem 5500 The DECsystem 5500 is a follow on to the DECsystem 5400.

B.1.4

New Hardware Devices
The following new devices are supported in ULTRIX/UWS Version 4.1:
RX23

The RX23 device is a 3.5 inch SCSI oppy disk that can hold up
to 1.44 Mbytets of data.

RX33

The RX33 device is a 5.25 inch SCSI oppy disk that can hold
up to 800 Kbytes of data.

RZ23L

The RZ23L device is a half–height 3.5 inch disk that can hold up
to 120 Mbytes of data.

TLZ04 (RDAT)

The TLZ04 (RDAT) device is a 4mm tape that conforms to the
DDS format. This device can hold up to 1.2 Gbytes of data.

TZK08 (EXCABITE)
The TZK08 (EXCABITE) device is a 8mm tape that can hold up
to 2.3 Gbytes of data.

B.1.5

TZK10 (QIC)

The TZK10 (QIC) device is a standard 1/4" tape cartridge that
conforms to the industry QIC format. The ULTRIX operating
system will read and write QIC-320, QIC-150, and QIC-120. The
ULTRIX operating system will only read QIC-24.

TZ30

The TZ30 device is a half–height SCSI TK50.

Software Component Features
The following software component feature is new in ULTRIX/UWS Version 4.1.

B.1.5.1

ULTRIX System Configuration and Management Program (SCAMP) – The
ULTRIX System Conguration and Management Program (SCAMP) is a menudriven program that helps you set up and manage your system. SCAMP allows you
to manage user accounts and software subsets, and to perform basic system
management tasks such as setting the system date and time, and rebooting the
system.
Note, however, that the terminal and modem line setup menus will only create a
terminal or modem line on tty00. The printer line setup menu will only create a
printer line on tty01.
SCAMP can also be used for ongoing system management.

B–2 Changes and New Features in Version 4.1

If you have installed a new system with ULTRIX/UWS Version 4.1 and your system
conguration needs are basic then you may want to use SCAMP. Minimal computer
experience and little UNIX or ULTRIX experience is required to use SCAMP.
The Guide to SCAMP explains how to set up your workstation and illustrates how to
select the appropriate conguration information. It also provides references to guides
in the ULTRIX documentation set where you can nd more information on specic
topics.

B.1.6

Documentation Component Features
The following document is new in ULTRIX/UWS Version 4.1:
Guide to SCAMP

Explains how to use the ULTRIX System Conguration and
Management Program (SCAMP), a menu-driven program that
helps you set up and manage your system.

The following documents have been changed in ULTRIX/UWS Version 4.1:
Guide to Configuration File Maintenance
Contains support for the new processors supported in
ULTRIX/UWS Version 4.1.
ULTRIX/UWS Release Notes
Combines and reorganizes the ULTRIX and UWS release notes
into one document.
ULTRIX/SQL Installation Guide
Adds support for the installation of the latest version of
ULTRIX/SQL.
For a list of new and changed reference pages in ULTRIX/UWS Version 4.1, see the
section on Reference Pages in Chapter 6.

B.1.7

Customer Services Component Features
System integrated and individual software services are available for ULTRIX/UWS
Version 4.1. Individual services include telephone support, installation services, and
media and documentation update services. For more information on these and new
services for ULTRIX, contact your local sales ofce.
In addition, the following three services have been added since ULTRIX/UWS
Version 4.0:
System Management Service (SMS)
SMS provides single point of access to a customer support center and a
proactive problem resolution process.
Software Update Installation Service (SUIS)
SUIS provides a software update installation at a customer site by Digital
specialists, who also explain the changes in the new release of the software.
Source Code Update Service (SCUS)
SCUS provides automatic updates of source code to customers with each
scheduled version release of the operating system.

Changes and New Features in Version 4.1 B–3

B.1.8

Software Features No Longer Supported
All software components supported in ULTRIX/UWS Version 4.0 remain supported
in ULTRIX/UWS Version 4.1.

B.1.9

Hardware No Longer Supported
All hardware components supported in ULTRIX/UWS Version 4.0 remain supported
in ULTRIX/UWS Version 4.1.

B.2 ULTRIX Worksystem Software Changes and New Features
This section discusses the following changes and new features in the ULTRIX
Worksystem Software for ULTRIX/UWS Version 4.1:
Xlib compatibility with MIT X11 Release 4
Shared-Memory Transport (SMT) support for DECstation/DECsystem 5000
Model 200 series processors
Three-dimensional graphics support for DECstation/DECsystem 5000 Model
200 series processors
Changes to Applications

B.2.1

Release X11R4 Xlib support
The new Xlib library xes several bugs in the resource manager and ICCCM
convenience routines. Xlib is now fully compatible with MIT X11 Release 4.
Applications using Xlib should be relinked with the MIT X11 Release 4 of Xlib
contained in this release.

B.2.1.1

Undocumented Xlib Functions – Only documented Xlib functions are supported
by the library. The use of undocumented functions produces undened results and
undermines application portability.

B.2.1.2

Xlib Size – The Xlib shipped with ULTRIX/UWS Version 4.1
(/usr/lib/libX11.a) requires more disk space than previously shipped
versions. The increased libX11.a le size does not affect the nal size of
programs built using Xlib.

B.2.1.3

Xlib Function Declarations – The Xlib header les Xlib.h and Xutil.h now
declare most Xlib external functions. Include these les in Xlib application code to
ensure that Xlib functions are declared correctly. Applications which declare these
functions differently will not link properly with the Xlib library.

B.2.2

Shared-Memory Transport (SMT) Support for
DECstation/DECsystem 5000 Model 200
The DECstation/DECsystem 5000 PX, PXG, and PXG-turbo graphics options
running ULTRIX/UWS Version 4.1 or later support Shared-Memory Transport (SMT)
between X11 clients and the server. This section describes the components of the
transport, system conguration parameters affecting the transport, and guidelines for

B–4 Changes and New Features in Version 4.1

using the transport (SMT improves the performance of some applications more than
others).
With SMT, X requests are built into a data segment shared between the client and
server. This allows the server to start processing the request the moment it is
complete, and prevents the request from being copied twice (client to kernel to
server), as occurs with UNIX-domain sockets. If the memory bandwith is M
megabytes/seconds, and there are N words in the packet, the time saved (excluding
cache effects) is:
(2 × N)
Seconds saved per request =
" Overhead
M
In this equation, Overhead is xed SMT per-request overhead. When N is large and
the requests take relatively little time to execute compared to copy time, performance
improves signicantly. Even when a particular application experiences little or no
performance improvement, idle time and bus utilization are shorter than with UNIXdomain sockets. Thus overall system throughput is improved.
B.2.2.1

Using the SMT Extension – For an application to use SMT, the following
requirements must be met:
The application must be linked against an Xlib which supports the SMT
extension. All versions of Xlib shipped with ULTRIX/UWS Version 4.1 or
later support SMT.
The application must run on the same machine as the server.
The application must be invoked with a command line option setting
-display to "local:0".
The server on the local machine must support the SMT extension.

B.2.2.2

Guidelines for Using SMT – If you are considering using SMT with an existing
application, the most expedient thing to do is to try it with SMT. When assessing
performance, the time command should be used to measure system resource use.
In many cases, system overhead will decrease even if performance remains constant,
leading to a higher overall system throughput. Because SMT trades off the time to
transmit requests to the server against higher per-request overhead, some applications
may realize no gain (or even a small decrease) in performance. Therefore, it is
important to measure the performance of critical applications both with and without
SMT. If you are developing a new application, the following guidelines will help you
maximize the benet gained by using SMT:
SMT is intended for performance-critical applications. It is inadvisable to make
SMT the default transport.

In the current implementation, only requests use SMT. The performance of
applications which receive large amounts of data back from the server (for
example, GetImage) is not signicantly affected by SMT.
Applications should pack as many primitives into an X request as possible, and
call XFlush only when necessary. This is good advice to follow when
writing any X application, but it applies particularly to SMT.

Changes and New Features in Version 4.1 B–5

UNIX-domain sockets only buffer 4 kilobytes of data before ushing to the
server; SMT buffers up to 256 kilobytes of data. Applications which assume
server ushes occur frequently should add additional XFlush calls.
Requests most likely to benet from SMT are PutImage, PolyPoint,
PolySegment (solid zero-width), and PolyFillRectangle (where the
rectangles are small). Requests least likely to benet from SMT are
GetImage, wide primitives, and window management requests (circulate,
resize, and so on).
B.2.2.3

SMT Usage Limits – An X11 server can provide a limited number of SMT
connections to clients. The actual number allowed is dened in the kernel
conguration le. SMSEG denes the maximum number of SMT links available.
Two of these links are used by the server, leaving a total of (SMSEG "2) available for
use by applications. The default value for SMSEG is 6, so the default number of
SMT connections that an X11 server can support is 4.

The maximum size of a shared memory segment is dened in the kernel
conguration le by SMMAX. The default value for SMMAX is 1024, which is
adequate for SMT.
B.2.2.4

SMT Error Messages – Improper use of SMT connections may result in the display
of one or more of the following diagnostic error messages:

X Toolkit Error: Can’t Open display
This means that the application is linked against an Xlib which does not support
the SMT extension. Relink the application against an Xlib with SMT support.
SMT-WARNING: extension not supported,...
This means that the application has SMT support, but that the server does not.

You should not receive this message on systems equipped with the PX, PXG, or
PXG-turbo graphics options.
SMT-WARNING: local shmem attach failed,...

This means that the client was unable to create a shared memory segment. The
most likely cause of this is either that the process is not able to attach any more
segments (system cong parameter SMSEG too low), or that a sufciently large
segment could not be created (system cong parameter SMMAX too small).
SMT-WARNING: server refused attach,...

This means that the client was able to successfully create a shared memory
segment, but that the server was unable to attach the segment. The most likely
explanation is that the server cannot accept any new SMT clients because it has
already attached the maximum number of shared memory segments. Before
raising the smseg system cong parameter, verify that inappropriate clients are
not monopolizing the limited number of SMT connections available to the
server.
SMT-ERROR:  incompatible with shared-memory,

...
This means the application is linked with a server extension which does not
support SMT. This will cause the application to terminate. The Display
Postscript, PHIGS, and multibuffering extensions shipped with the
DECstation/DECsystem 5000 support SMT; non-DIGITAL extension libraries
probably do not.

B–6 Changes and New Features in Version 4.1

B.2.3

Three-Dimensional Graphics Support for DECstation/DECsystem
5000 Model 200
Through DECphigs, users can access three-dimensional graphics features of the
DECstation/DECsystem 5000 Model 200PX, 200PX, and 200PXG-turbo. Refer to
your DECphigs manual for more information on how to take advantage of these
features. Platform specic release notes for DECphigs are in the processor-specic
chapter of these release notes.

B.2.4

Changes to Applications
This section describes changes to ULTRIX Worksystem Software applications.

B.2.4.1

DECterm Changes – The following notes pertain to the DECterm terminal
emulator, dxterm.

B.2.4.1.1

DECterm Grey Levels on Monochrome Systems – The eight default grey
levels used by DECterm on monochrome systems have been lightened. The new
levels are more visible and easier to distinguish from one another. The former levels
were suited to the display of a VT340, rather than to a windowing display terminal.

B.2.4.1.2

DECterm ReGIS Locator Reporting – If the ReGIS locator position is outside
the range of addressable locations, the locator report returns a null position [ ].

B.2.4.1.3

DECterm Conformance Level Checking – DECterm now allows terminal
state reporting when operating at conformance level 2 or conformance level 3.
Previously, DECterm allowed terminal state reporting when operating at conformance
level 3 only. Conformance level 1 still inhibits terminal state reporting from
DECterm.

B.2.4.1.4

DECterm Answerback – A bug that prevented answerback from working has
been xed. In response to the ‘^E’ character, DECterm now responds with the value
(if any) of the answerbackMessage resource.

B.2.4.1.5

DECterm VT52 Mode Cursor Addressing – Cursor addressing while in VT52
emulation mode is no longer limited to a xed row or column length.

B.2.4.1.6

DECterm Conformance Level Report Escape Sequence – The escape
sequence used by DECterm (operating at conformance level 1 only) when generating
a conformance level report is now as follows:
1$r"p
The former escape sequence included a sufx that was invalid. Custom application
software that is coded to expect the invalid sufx must be changed to reect this
correction.

Changes and New Features in Version 4.1 B–7

B.2.4.1.7

DECterm Color Table Report Prefix – DECterm now correctly prexes color
table reports with a DCS (ASCII code 144) instead of a CSI (ASCII code 155).
Custom application software coded to expect a CSI must be changed to reect this
correction.

B.2.4.1.8

DECterm Memory Limitations – DECterm now ignores requests to resize its
window and off-screen text buffer when additional memory is unavailable.

B.2.4.2

Visual Differences Program - dxdiff – The following dxdiff features have
been added since ULTRIX/UWS Version 4.0:
File selection dialogs are now unmanaged when les are selected.
dxdiff no longer intermittently dumps core when successive Do Difference
commands are issued.
When two identical les are compared after two different les, dxdiff no
longer displays random highlights.
Scrolling with MB2 (toTop) and MB3 (toBottom) is now supported in
dxdiff scrollbars.

B–8 Changes and New Features in Version 4.1

Changes and New Features in Version 4.0

C

This appendix discusses changes and new features in the ULTRIX operating system
and ULTRIX Worksystem Software that apply to ULTRIX/UWS Version 4.0.

C.1 ULTRIX Changes and New Features
This section discusses the following changes and new features in the ULTRIX
operating system for ULTRIX/UWS Version 4.0:
Conformance to standards and specications
Compatibility with earlier versions of the operating system
New processor support
New hardware device support
New and changed software components
New and changed documentation components
New and changed software services for customers
Software features no longer supported by the operating system
Hardware no longer supported by the operating system.

C.1.1

Conformance To Standards and Specifications
This section denes how the release conforms to industry standards and external
specications.

C.1.1.1

Industry Standards Conformance – Although ULTRIX/UWS Version 4.0 will
be fully conformant to all the Standards listed below, ofcial compliancy verication
procedures will not be available before ULTRIX/UWS Version 4.0 ships.
Certication of compliancy will be accomplished through the use of the X/Open
"Branding" process as well as the use of an accredited National Computer Systems
Laboratory certied testing laboratory for POSIX/FIPS.
The standards are:
POSIX 1003.1-1988, Portable Operating System Interface for Computer
Environments, September 1988.
FIPS Publication 151-1, POSIX: PORTABLE OPERATING SYSTEM
INTERFACE FOR COMPUTER ENVIRONMENTS.
X/Open Portability Guide, Issue 3, (December 1988):
–

Volume 2, XSI System Interface and Headers

C.1.1.2

–

Volume 3, XSI Supplementary Denitions (excluding curses interface)

–

Volume 4, Programming Languages

Changes to Header Files – A number of header les have been changed to
conform to one or more of the following standards:
American National Standard for Information Systems– Programming Language
C (ANSI C)
IEEE Standard Portable Operating System Interface for Computer
Environments, IEEE Std 1003.1-1988 (POSIX)
X/Open Portability Guide: XSI System Interface and Headers, Issue 3 (XPG 3)

C.1.1.2.1

Typical Program Changes – Programs may need changes because of this.
Typical changes include:
Removing redundant, outdated declarations of functions (those in stdio.h
have been most common; for example, fread ).
Renaming of conicting internal functions (for example, remove, which is
now dened in stdio.h ).
Moving multiple inclusions of a header le within a function out to the le
level; this may be needed because many header les are now protected against
double inclusion, so a second inclusion of the same header le will not give a
second denition of a structure.
Altering data types or casts to conform to the new denitions (most notably, the
change of many char * return values to void *).
Altering some undocumented uses of macros; for instance, the leno macro
could formerly be used on the left side of an assignment statement, though this
was neither documented nor supported; it can no longer be misused in this way.
In general, aside from the semantic changes above, these problems will show up as
compile-time errors or warnings, thus making them easy to spot.

C.1.1.2.2

Specific Header File Changes – The following list denes changes to the
header les:

Now calls the __assert function (unless NDEBUG is dened) in
all cases; prints the text of the failed assertion.
 (and )
Added denitions for tolower(), toupper().
 (and )
Added denition for ENOSYS.
 (and )

C–2 Changes and New Features in Version 4.0

Added denitions for creat(), fcntl(), open().
<oat.h>
Denitions now present for both VAX and RISC architectures.
Some values have been adjusted.

Added ftw() declaration.

Double-inclusion protection.
 (and )
Added denitions for NZERO, MB_LEN_MAX, NL_NMAX. Corrected
several oating point values.

Added denitions for NULL, struct lconv, localeconv().

Added denitions for strtod(), lgamma(), isnan(), atol();
corrected VAX architecture denition of HUGE.

Added memmove(); changed return values from char * to void *.
Note that, for new applications, the  header should be
used instead.

Added denitions of NL_SETD, catclose(), catgets(), catopen().

Double-inclusion protection.

Added denitions for hsearch(), hcreate(), hdestroy(),
tsearch(), tnd(), tdelete(), twalk(), lsearch(), lnd().

Double-inclusion protection; added denitions for setjmp(),
longjmp() (RISC only; they were already present for the VAX
architecture). Added denitions for sigsetjmp(),siglongjmp().

Changes and New Features in Version 4.0 C–3

 (and )
Added denitions for BRK_STACKOVERFLOW, sig_atomic_t, raise(),
kill(), sigaction(), sigaddset(), sigdelset(), sigemptyset(),
sigllset(), sigismember(), sigpending(), sigprocmask(),
sigsuspend().

Added denitions for VAX architecture.

New le.

Double-inclusion protection; added denitions for size_t,
FOPEN_MAX, FILENAME_MAX, TMP_MAX, fpos_t, SEEK_SET, SEEK_CUR,
SEEK_END, ctermid(), cuserid(), fgets(), gets(), tempnam(),
tmpnam(), fclose(), fush(), fgetc(), fgetpos(), fprintf(),
fputc(), fputs(), fscanf(), fseek(), fsetpos(), getw(),
printf(), puts(), putw(), remove(), rename(), scanf(),
setvbuf(), sscanf(), ungetc(), vfprintf(), vprintf(),
vsprintf(), fread(), fwrite(), clearerr(), perror(). Note that
the denitions of fread() and fwrite() are now size_t (an
unsigned int) instead of the previous int.

New le. Denitions of calloc(), free(), malloc(), realloc(),
bsearch(), and qsort() differ from their previous return values.
 (and )
Added denitions for size_t, NULL, strerror(), strstr(),
memcmp(), strcoll(), strxfrm(), memccpy(), memchr(), memcpy(),
memmove(), memset(); note that the denitions of strcspn(),
strlen(), strspn(), and strxfrm() are now size_t (an unsigned
int) instead of the previous int, and the mem functions are now
void * instead of char *.
 (and )
Added denitions for NULL, time_t, clock_t, CLOCKS_PER_SEC,
CLK_TCK, strftime(), clock(), time(), mktime(), difftime().
Note that clock(), time(), and mktime() have new return types
dened. Note also that the denition of size_t has been
changed from int to unsigned.

New le.

C–4 Changes and New Features in Version 4.0


Added denitions for _SC_XOPEN_VERSION, _SC_PASS_MAX,
_XOPEN_VERSION, STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO,
access(), chdir(), chown(), close(), dup(), dup2(), execl(),
execle(), execlp(), execv(), execve(), execvp(), getgroups(),
isatty(), link(), pause(), pipe(), read(), rename(), rmdir(),
setgid(), setpgid(), setuid(), tcsetpgrp(), unlink(), write(),
fpathconf(), pathconf(), sysconf(), ctermid(), cuserid(),
getcwd(), getlogin(), ttyname(), _exit(), alarm(), sleep(),
getegid(), getgid(), lseek(), fork(), getpgrp(), getpid(),
getppid(), setsid(), tcgetpgrp(), geteuid(), getuid(). The
functions from alarm() on have different denitions than they
did in some earlier releases; except for alarm() and sleep(),
though, these are merely typedefs for the existing practice.
Added inclusion of .

Added denition for utime().

Double-inclusion protection; added denitions for umask(),
chmod(), fstat(), mkdir(), mkfo(), stat(). Note that umask is
now dened to return mode_t.

Changed denition of size_t from int to unsigned.

Double-inclusion protections; added denition for uname().

Double-inclusion protection; added denitions for wait(),
waitpid(); added inclusion of .

C.1.2

Porting Version 3.1 Applications to ULTRIX/UWS Version 4.0
ULTRIX/UWS Version 4.0 is compatible in most ways with earlier versions of
ULTRIX. This compatibility allows you to easily port your programs from Version
3.1 to ULTRIX/UWS Version 4.0. (In this section, references to Version 3.1 include
Version 3.1B, Version 3.1C, and Version 3.1D.) Most of your applications will run
unchanged under an appropriate conguration of ULTRIX/UWS Version 4.0. This
section explains how to port your applications by describing the levels of portability
available in ULTRIX/UWS Version 4.0 and the program features that affect
portability.

Changes and New Features in Version 4.0 C–5

C.1.2.1

Levels of Portability – In describing levels of portability, this section assumes that
you are porting an application to the same hardware architecture; that is, that you are
porting from Version 3.1 on a VAX machine to ULTRIX/UWS Version 4.0 on a
VAX machine, or from one RISC machine to another. For information on porting
from a VAX machine to a RISC machine, see Appendix D.
The section also assumes that you are porting to the same programming environment
you used on Version 3.1. For example, if you used the BSD environment (the
default) on Version 3.1, you should port to the BSD environment (the default) on
ULTRIX/UWS Version 4.0. Likewise, if you used the POSIX or System V
environment on Version 3.1, you should use that environment on ULTRIX/UWS
Version 4.0.
Depending on the ULTRIX ULTRIX/UWS Version 4.0 subsets you have installed
and the operating system features your program uses, you can achieve one of the
following three portability levels:
Binary portability
In most cases, a binary (a.out) executable you created on a Version 3.1 system
will run on ULTRIX/UWS Version 4.0. If you install the security or the
Distributed System Services (DSS) subsets on your system, you will be unable
to run some binary executables on ULTRIX/UWS Version 4.0, even though
these executables ran correctly on Version 3.1. Refer to Section C.1.2.2.6 for
more information.
Object le portability
You can move object les generated on Version 3.1 systems to an
ULTRIX/UWS Version 4.0 system and link them with the appropriate
ULTRIX/UWS Version 4.0 libraries to achieve another level of portability. In
this case, many new features in the libraries will be available for you to use. For
information on the new features, see the ULTRIX Reference Pages, Section 3:
Library Routines. You must relink your programs if you have installed and
enabled the new C2 security features or DSS subsets.
Source code portability
In some cases, you might have to modify or recompile your source code to port
it to a ULTRIX/UWS Version 4.0 system. You must recompile your source
code and possibly modify it if you want to use new features or if your
application accesses modied data structures.

C.1.2.2

Program Features that Affect Portability – This section describes ULTRIX
programming features that affect your ability to port your program to ULTRIX/UWS
Version 4.0.

C.1.2.2.1

Direct Access of Kernel Data Structures – If your program accesses kernel
data structures directly, you must modify your source code. Many ULTRIX internal
structures have changed for ULTRIX/UWS Version 4.0. Fields in the structures have
been added, modied, and removed.
Check the header les included in your program to determine how they have
changed. Then, modify your source code and recompile your program.

C–6 Changes and New Features in Version 4.0

C.1.2.2.2

Header File Changes – If you use certain header les, you must recompile your
program to port it to ULTRIX/UWS Version 4.0. Check the header les included in
your program. If a header le has changed, recompile your program.

C.1.2.2.3

File Protection Changes – The ULTRIX operating system contains two new
groups that protect access to device special les. The tty group (gid 5) controls
access to terminal devices in the /dev directory. The kmem group (gid 6) controls
access to memory devices, such as the /dev/mem and /dev/kmem les.
Previously, tty?? device les were given world write access by default. For
ULTRIX/UWS Version 4.0, these les are given group write access and have a group
owner of tty. The programs that write to terminals, such as wall and write,
have been modied. These programs now set their gid to the tty group on execution.
If your program reads or writes the memory les in the /dev directory, you must
modify it to set the group to kmem on execution. The following shows an example
of changing the group and mode of a program named user_program:
% chgrp kmem user_program
% chmod g+s user_program

Only trusted programs should have access to the kmem and tty groups. For more
information on writing secure programs, see the Guide to Languages and
Programming .
C.1.2.2.4

Optional New Password File Format – In ULTRIX/UWS Version 4.0, system
administrators can create a 4.3BSD-style hashed password database. If the hashed
password database exists, the system will use it instead of /etc/passwd for all
calls to getpwuid and getpwnam. For more information about the new hashed
database, see mkpasswd(8).
If a system administrator edits the /etc/passwd le without using the vipw
command, the /etc/passwd le might be different from the hashed password
database. Because the hashed password database and the /etc/passwd le can be
different, a Version 3.1 program that reads only the /etc/passwd le might
produce different results than a ULTRIX/UWS Version 4.0 program that reads the
hashed password database. System administrators can use the mkpasswd le
command to resolve inconsistencies between the hashed password database and the
/etc/passwd le.

C.1.2.2.5

Optional Security Subset – If your system takes advantage of the new C2
security features, you might need to modify your source code to move your Version
3.1 program to ULTRIX/UWS Version 4.0. You might need to modify your source
code if your program reads the password le to get user password information.
When setting up the secure system environment, a system administrator chooses
whether the system uses the BSD login features or the new secure login features. If
your ULTRIX/UWS Version 4.0 system uses the BSD login features, you need not
modify your program. The ULTRIX/UWS Version 4.0 BSD password features are
compatible with the Version 3.1 password features.
If the system administrator chooses the new secure login features, you must modify
your program if it needs user password information. For security reasons, passwords
in the secure login environment are stored separately from other user information. For
information about authenticating users in a secure environment, see the Guide to
Languages and Programming .

Changes and New Features in Version 4.0 C–7

C.1.2.2.6

Distributed Environment Changes – In ULTRIX/UWS Version 4.0 you can
use BIND/Hesiod as an alternative to Yellow Pages (YP). The binaries of these
components have been built with new libraries that provide transparent access to
distributed conguration information. A new le, /etc/svc.conf, replaces the
/etc/svcorder le. The /etc/svc.conf le allows you to congure different
search paths for different types of system conguration data. This le contains one
or more lines with the following format:
database=service,service

For information on the values you can use for database and service, see the
Introduction to Networking and Distributed System Services .
To make your ULTRIX/UWS Version 4.0 system compatible with Version 3.1, you
must provide the same information access conguration in ULTRIX/UWS Version
4.0 as you had in Version 3.1. You can use the svc.conf le to congure a
number of binary compatible ULTRIX/UWS Version 4.0 systems.
The following three examples show entries in the /etc/svc.conf le that permit
maximum binary compatibility:
This example shows the default /etc/svc.conf le that causes all
information access to be done on your local system:
# /etc/svc.conf installed settings
aliases=local
auth=local
group=local
hosts=local
netgroup=local

# Note: the auth entry is not used in BSD
#
and is never used with yp
# Note: the netgroup entry can only be used
#
with local or yp

networks=local
passwd=local
protocols=local
rpc=local
services=local
.
.
.

This example shows how to set up your system with all information access
either on your local system or through YP:
# modified /etc/svc.conf settings
aliases=local,yp
auth=local
group=local,yp
hosts=local,yp
netgroup=yp
networks=local,yp
passwd=local,yp
protocols=local,yp
rpc=local,yp
services=local,yp
.
.
.

C–8 Changes and New Features in Version 4.0

# Note: the auth entry is not used in BSD
#
and is never used with YP
# Note: the netgroup entry can only be used
#
with local or YP

This example demonstrates how to set up a ULTRIX/UWS Version 4.0 system
so that local Version 3.1 settings are local on the ULTRIX/UWS Version 4.0
system; Version 3.1 settings that used YP use YP on the ULTRIX/UWS
Version 4.0 system; and hosts served by BIND on the Version 3.1 system are
served by BIND on the ULTRIX/UWS Version 4.0 system:
# modified /etc/svc.conf settings
aliases=local,yp
auth=local
group=local,yp
hosts=local,bind
netgroup=yp

# Note: the auth entry is not used in BSD
#
and is never used with yp
# Note: the netgroup entry can only be used
#
with local or yp

networks=local,yp
passwd=local,yp
protocols=local,yp
rpc=local,yp
services=local,yp
.
.
.

Several libc libraries have been modied to use the new /etc/svc.conf le.
These libraries are: libc.a, libcV.a, libcV_p.a, libcVg.a, libc_p.a,
and libcg.a. If your program will use BIND/Hesiod for any database except the
hosts database on your ULTRIX/UWS Version 4.0 system, you must relink your
program to these modules. You must also relink your program if it uses the
/etc/svc.conf le and calls any of the following routines:
getprotobynumber, getprotobyname, getprotoent,
setprotoent, or endprotoent
getrpcbynumber, getrpcbyname, getrpcent, setrpcent or
endrpcent,
getnetbyaddr, getnetbyname, getnetent, setnetent, or
endnetnet
getgrgid, getgrnam, getgrent, setgrent, or endgrent
getpwuid, getpwnam, getpwent, setpwent, or endpwent
getservbyport, getservbyname, getservent, setservent, or
endservent
gethostbyaddr, gethostbyname, gethostent, sethostent, or
endhostent
C.1.2.2.7

Modified System Calls – The following system calls have been modied to
support the POSIX standard:
msgrcv
msgsnd
msgctl
If your program uses any of these calls, you must modify and recompile it. For more
information about these calls, see the msgrcv(2) or msgctl(2) reference page.
Changes and New Features in Version 4.0 C–9

C.1.2.2.8

New System Call Return Values – If your program expects a specic error to
be returned from a system call or a library routine under a certain set of conditions,
you might need to modify your program. A number of system calls return new or
changed values. For example, the sigvec call return value has changed. This call
no longer returns EINVAL when SIGCONT is ignored (given an action of
SIG_IGN). Your program can now ignore the SIGCONT status.
For details on the values returned from each system call, see the ULTRIX Reference
Pages, Section 2: System Calls.

C.1.2.2.9

Dependencies on Undocumented Features or Software Errors – You
might need to modify your program if it depends on an undocumented feature or
software error. Some undocumented features are no longer shipped in ULTRIX/UWS
Version 4.0, and a number of software errors have been corrected.
For example, the getpwent(3) reference page states that the setpwent and
endpwent calls must be used with getpwent. This statement is correct. A
previous software error would allow you to use getpwent without the setpwent
and endpwent calls. This error has been corrected, so if your program uses
getpwent you must be sure it also calls setpwent and endpwent. This
situation occurs with a number of other library routines, including getprotoent,
getrpcent, getnetent, getgrent, getservent, and gethostent.
Read Appendix A carefully to determine what software corrections affect programs
you are porting to ULTRIX/UWS Version 4.0.

C.1.2.3

POSIX and X/OPEN Programming Environments – ULTRIX/UWS Version
4.0 supplies a programming environment that allows you to write programs that
conform to the POSIX and X/OPEN standards. The POSIX standard describes an
interface to the ULTRIX operating system that eases porting programs from one
system to another.
For information on programming in the POSIX and X/OPEN environments, refer to
the Programming in a POSIX Environment chapter of the Guide to Languages and
Programming. However, keep the following exceptions in mind:
Whenever reference is made to the _POSIX_SOURCE symbol, it also applies to
the new _XOPEN_SOURCE symbol.
The libcP library provides functions for both POSIX and X/OPEN.
Section 9.4, Compiling in the POSIX Environment, also supports X/OPEN, if
the _XOPEN_SOURCE symbol is present within the application.
Specically, %PROG_ENV=POSIX applies to both environments and the
-YPOSIX option on the cc command line sets the programming environment to
both POSIX and X/OPEN.

C.1.2.3.1

POSIX Environment and Trusted Path Handling – If a trusted path is
congured on your system, BREAK characters entered on any serial line result in the
line being disconnected. Trusted path handling supersedes any special break
character handling. This results dial-up lines.
In a POSIX environment, for example, the input mode IGNBRK will not function
correctly. This is due to the fact that trusted path handling is performed in response
to a BREAK character instead of ignoring the BREAK.

C–10 Changes and New Features in Version 4.0

On systems that support modems, trusted path handling interferes with
communications between the system and the modem, as well as with applications
using the modem. For example, uucico(8) uses the BREAK character in its
protocol for communicating between systems. When a BREAK character is received
by a system supporting a trusted path, the line the uucico uses to process its
communication is disconnected.
To work around these problems, do not congure trusted path on systems that
support modems and/or run in a POSIX environment. To decongure a trusted path,
follow these steps:
1.

Remove the following lines from the system conguration le:
options SYS_TPATH
pseudo-device sys_tpath

2.

Rebuild the kernel.

3.

Reboot the system using the new kernel.

For information on rebuilding your kernel, see the Guide to System Configuration
File Maintenance.
C.1.2.4

Correct Declaration for environ Global Variable – The correct declaration for
the environ global variable has always been that stated in the execl(3) reference
page:
extern char **environ;

In previous releases, a program that omitted the extern keyword in the declaration
would probably still work. In ULTRIX/UWS Version 4.0, however, such a program
is less likely to work because of structural changes in the C libraries.
To prevent problems, you should nd and correct any declarations that incorrectly
omit the extern keyword. The corrections are particularly important to apply to
RISC-based code.
C.1.2.5

The /etc/group File Changes – New entries have been added to the
/etc/group le. Some features of ULTRIX depend on these entries being
present. Deleting or reusing these entries may also compromise the security of your
system.
Deleting or renaming the "tty" group entry will cause the write(1) and the wall(1)
commands to behave differently for nonprivileged users.
The "kmem" group’s GID is reserved for applications requiring access to the system
memory image.
The "authread" group is used to grant read access to the Auth Database when
enhanced security features are enabled and is required for correct operation of these
features.

Changes and New Features in Version 4.0 C–11

C.1.2.6

C.1.3

Changes to tty Special File Defaults – The default group ownership and modes
of tty special les set by getty(8) and login(1) have been changed to prohibit
write access to the terminal by other than the owner and the group "tty." At the same
time, the write(1) and wall(1) commands have been distributed as "setgid tty"
programs. This change prevents anonymous writing to a user’s terminal. The
mesg(1) command will grant or deny group write access to the terminal but will not
allow world access to it.

New Processors
This section lists new processors supported by ULTRIX/UWS Version 4.0. Note the
name change of the VAX 62xx and VAX 63xx series of processors.
VAXstation 3540
DECstation and DECsystem 5000, Model 200
DECsystem 5400
DECsystem 5810, 5820, 5830, 5840
VAX 6000-220, 6000-230, 6000-240 (formerly the 6220, 6230, and 6240)
VAX 6000-330, 6000-340, 6000-350, and 6000-360 (formerly the 6330, 6340, 6350,
and 6360)
VAX 6000-420, 6000-430, 6000-440, 6000-450, 6000-460
VAX 8300, 8350
VAX 8820, 8830, 8840

C.1.4

New Devices
This section lists new devices supported by ULTRIX/UWS Version 4.0.
DF296 - modem
KDM70 - XMI to SI disk/tape controller
RA92 - 1.5 Gigabyte disk drive
RF31 - 300 Mbyte half-height 5.25" form factor DSSI disk
RX23 - 1.4 Mbyte 3.5" double-sided diskette
RZ24 - 200 Mbyte 3.5" SCSI disk
RZ56 - 660 Mbyte 5.25" SCSI disk
RZ57 - 1+ Gigabyte 5.25" SCSI disk
TA90 - 200 Mbyte IBM compatible tape drive
TA90E - 400+ Mbyte IBM compatible tape drive, with compaction
TLZ04 - 1.3 Gigabyte scan tape, half height
TSZ05 - SCSI 9-track tape drive

C.1.5

Software Component Features
This section highlights the major new features and changes to the software.

C.1.5.1 Distributed System Services (DSS)–YP, BIND/Hesiod, Kerberos, timed,
NTP – ULTRIX/UWS Version 4.0 product provides great exibility in conguring a distributed
environment. This section describes the distributed system services and their
respective features.

C–12 Changes and New Features in Version 4.0

C.1.5.1.1

Name Services – There is now an alternative service to Yellow Pages (YP). The
Berkeley Internet Name Domain (BIND) service has been enhanced with Hesiod
name service capabilities. The new Hesiod functionality allows the BIND service to
distribute aliases, auth, group, networks, passwd, protocols, rpc, and
services, in addition to hosts information. The library routines in libc.a
have been modied to allow transparent access to BIND/Hesiod, YP, and local /etc
les.
If the BIND/Hesiod service is used to distribute the passwd database, then the
BIND/Hesiod primary server must have the alias ‘‘bindmaster’’ on its hosts entry in
the hosts database. (The bindsetup script creates the alias.) This allows the
BIND/Hesiod primary server to run the Hesiod password update daemon,
/usr/etc/hesupd. The passwd(1) command in ULTRIX/UWS Version 4.0 has
been enhanced to communicate password changes to the bindmaster’s hesupd, thus
providing a transparent distributed password program. The password changes take at
most 4 minutes to propagate throughout the distributed environment.
For additional information on BIND/Hesiod, see Guide to the BIND/Hesiod Service.

C.1.5.1.2

Configurable Security Modes – The ULTRIX/UWS Version 4.0 product can
be congured in different security modes. The choice of a security mode other than
BSD (the default) dictates the use of BIND/Hesiod to distribute the auth and
passwd databases. YP can only be used to distribute the passwd database in BSD
security mode.
You must rst set up a distributed BSD BIND/Hesiod environment before attempting
to make the transition to either of the other two congurable security levels:
UPGRADE or ENHANCED. The BSD distributed environment veries that the
BIND/Hesiod primary and secondary servers are all reachable and functioning
properly.
Converting from a YP distributed environment to a BIND/Hesiod distributed
environment or running a dual YP-BIND/Hesiod environment is possible in
ULTRIX/UWS Version 4.0. The source les for BIND/Hesiod can now be /etc
style les. Consequently a distributed BSD YP source area can be shared with
symbolic links with a distributed BSD BIND/Hesiod area. If you are running at
either UPGRADE or ENHANCED security levels, then the passwd and auth
databases must be only distributed by BIND/Hesiod. When running in the
UPGRADE or ENHANCED modes, the BIND/Hesiod daemon, named, should be
set up to use Kerberos to prevent name server spoong and possible breakins. If you
are in a heterogeneous vendor environment, YP is the only choice for password
distribution.
When running the Kerberos authenticated BIND/Hesiod daemon, named, zone
transfers from non-authenticated Internet BIND daemons do not work. The workaround for this situation is to designate at least one system as a non-authenticated
BIND secondary server of the external Internet domain. The local Kerberos
authenticated BIND/Hesiod servers should be set up in
/var/dss/namedb/named.boot to reference the non-authenticated BIND
server as a forwarder. This allows the authenticated BIND daemons to access the
external Internet domain through the forwarder.
In an ENHANCED environment all machines are either Kerberos servers or clients,
or they are standalone.

Changes and New Features in Version 4.0 C–13

C.1.5.1.3

Kerberos – The Kerberos authentication service has been integrated into the
ULTRIX/UWS Version 4.0 BIND/Hesiod daemon, named. If you want to run a
distributed UPGRADE or ENHANCED environment, you must run Kerberos. Both
Kerberos and BIND/Hesiod use backup servers to provide performance and
reliability. At least one backup (BIND/Hesiod secondary/Kerberos slave) server
should be used in a distributed environment. It is strongly suggested that each
BIND/Hesiod server (primary or secondary) be a Kerberos (master or slave).
The passwd, login, su, dxsession, and named programs have been modied
to use Kerberos to access distributed auth data required by the UPGRADE or
ENHANCED security levels.
Workstations and other less utilized machines in the distributed (UPGRADE or
ENHANCED) environment must run as BIND/Hesiod slaves.
For information on setting up Kerberos, see Guide to Kerberos.

C.1.5.1.4

Network Time Protocol (NTP) and timed – ULTRIX/UWS Version 4.0
provides the ability to keep the distributed environment time synchronized via both
timed and NTP. The NTP daemon, ntpd, should be run on the most secure and
best administered machines.
The set of well administered NTP systems provides a base of secure time which will
not drift at the whim of the other machines in the environment. If possible the master
ntpd should reference a WWV radio clock for the utmost in accuracy. The
remainder of the distributed environment runs timed without any options. The
resultant combined time service is less vulnerable to the drifting nature of timed
alone and is easier to administer than NTP alone.
Guide to System and Network Setup includes the procedures for running ntpd and
timed in a distributed environment.

C.1.5.2

Packet Filter Pseudo-device Driver – A new feature in ULTRIX/UWS Version
4.0 is the packet lter pseudo-device driver, a kernel-resident network packet
demultiplexer. The code appears to applications as character special les.
The packet lter provides a raw interface to Ethernets and similar network data link
layers. Packets received that are not used by the kernel (for example, to support the
IP and DECnet protocol families) are available through this mechanism.
In addition to the pseudo-device driver, ULTRIX/UWS Version 4.0 includes two
commands for use with the packet lter. The pfstat(8) command prints packet
lter status information. The pfconfig(8c) command allows system managers to
congure the packet lter to enable non-privileged users to set an interface into or
out of promiscuous mode, and to congure the packet lter input queue length.
Information on the packet lter is provided in the packetfilter(4) reference
page, in the reference page for the two commands, and in the Network Programming
Manual, all of which are provided with ULTRIX/UWS Version 4.0.

C.1.5.3

Digital Remote Procedure Call (DECrpc) – The Digital Remote Procedure Call
(DECrpc) Version 1.0 is part of ULTRIX/UWS Version 4.0. The software is based
on and is compatible with Version 1.5 of the Network Computing System (NCS)
from the Apollo Systems Division of Hewlett-Packard Company. NCS is a set of
tools for heterogeneous distributed computing.

C–14 Changes and New Features in Version 4.0

Using remote procedure calls, software applications can be distributed across
heterogeneous collections of computers, networks, and programming environments.
Distributed applications can take advantage of computing resources throughout a
network or Internet, with different parts of each program executing on the computers
best suited for the tasks.
For more information about DECrpc, see the DECrpc Programming Manual, which
provides programming information and examples for developing distributed
applications. See also the Guide to the Location Broker, which describes
lb_admin, the Location Broker administrative tool and the procedures for setting
up and maintaining the local and global Location Broker daemons, llbd and
nrglbd. The ULTRIX Reference Pages contain reference pages for each utility,
special le, or library routine.
C.1.5.4

X/OPEN Transport Interface (XTI) – X/OPEN Transport Interface is a
programming interface that conforms to the X/OPEN Standard for writing a portable
network application. ULTRIX provides an XTI library that the network application
can be linked with (-lxti). See intro(3xti) for more information.

C.1.5.5

Simple Network Management Protocol (SNMP) – Simple Network
Management Protocol is the protocol used by the Internet (TCP/IP) for managing the
network. Participating as an SNMP agent, ULTRIX can be managed by a local or
remote network manager. See snmpd(8n) for more information.
ULTRIX/UWS Version 4.0 also allows you to write an Extended SNMP Agent for
managing a private Management Information Base (MIB).
For additional information on writing an Extended SNMP Agent, see the Guide to
Network Programming and snmpext(3n).

C.1.5.6

License Management Facility – The License Management Facility (LMF) has
been added to this version of ULTRIX. The LMF enables the online management of
software license data, and also helps prevent the accidental, unlicensed use of
software.
With the introduction of the LMF come some important new features:
Product Authorization Keys (PAKs)
PAKs provide a way of encoding some of the software license information into
a standard format that can be used by the LMF. PAKs are supplied by Digital
when you order a product’s license.
The License Database (LDB)
The LDB is a system le that contains the license data supplied by PAKs.
The license management utility, lmf(8)
The lmf utility is used to register and manage license data in the LDB.
A new manual, the Guide to Software Licensing, explains the new features introduced
with the License Management Facility, and describes how to use the lmf(8) and the
lmfsetup(8) utilities.

C.1.5.7

LMF and Capacity Upgrade Kit Distinctions – In ULTRIX/UWS Version 4.0,
the functions of the Capacity Upgrade Kit are replaced by the License Management
Facility (LMF).

Changes and New Features in Version 4.0 C–15

ULTRIX/UWS Version 4.0 customers increase their user capacity using the License
Management Facility shipped with ULTRIX/UWS Version 4.0 and documented in
the Guide to Software Licensing.
Customers upgrading from earlier versions of the operating system can continue to
increase their user capacity by using the Capacity Upgrade Kit they obtained with
those earlier versions. Instructions for installing these Capacity Upgrade Kits were
shipped with the earlier versions of ULTRIX as the document ULTRIX Capacity
Upgrade Installation Instructions.
C.1.5.8

BSD curses and X/Open curses Libraries – ULTRIX/UWS Version 4.0
supplies two basic curses screen-handling software packages: BSD curses, and
X/Open curses.
The BSD curses package consists primarily of the libcurses.a library and the
 header le. The ULTRIX/UWS Version 4.0 version is compatible
with BSD 4.2, and with ULTRIX-32 Version 3.1, except that the crmode() and
nocrmode() functions call the BSD 4.3 cbreak() and nocbreak() functions
for forward compatibility with BSD 4.3 and backward compatibility with BSD 4.2.
The BSD curses functions are summarized in the curses(3x) reference page.
The X/Open curses package consists primarily of the libcursesX.a library and the
 header le. The ULTRIX/UWS Version 4.0 version is conformant
with the X/Open Portability Guide, Issue 3, except that the library name and the
header le name contain the letter "X". This curses package is often referred to in
ULTRIX documentation as "cursesX". The cursesX software is also compatible with
AT&T System V Release 2, with AT&T SVID Issue 2, and with ULTRIX-32
Version 3.1. Section 3cur of the ULTRIX Reference Pages contains a summary of
the X/Open cursesX functions.

C.1.5.9

BSD curses Enhancements – The functions cbreak() and nocbreak()
were added to the BSD curses library for forward compatibility with BSD 4.3. The
functions crmode() and nocrmode() were redened to call the new cbreak()
and nocbreak() functions, respectively, to preserve backward compatibility with
BSD 4.2 and ULTRIX-32 Version 3.1.

C.1.5.10

Changes in Terminfo Database – This note discusses changes to terminfo
components.

C.1.5.10.1 The Binary Terminfo Database is Split into Two Subsets – The binary
terminfo database ( /usr/lib/terminfo ) is now packaged in two subsets: a
supported subset, and an unsupported subset. The supported subset is ULTBASE400
for VAX platforms, and UDTBASE400 for RISC platforms. The unsupported subset
is ULXBASE400 for VAX platforms and UDXBASE400 for RISC platforms.
The supported components are those directories and les necessary to support Digital
terminals and devices listed in the ULTRIX/UWS Version 4.0 Software Product
Description (SPD). Everything else in the terminfo database is unsupported. The
placement of /usr/lib/terminfo les into the supported and unsupported
subsets is not necessarily an indicator of the support status of a particular directory or
le. Certain unsupported components are placed in the supported subset in order to
provide terminal-dependent functionality equivalent to functionalities supported by
the Termcap database and /usr/lib/term database.

C–16 Changes and New Features in Version 4.0

Other unsupported components are in the supported subset in order to provide ANSI
compatibility, to provide backward compatibility with older ULTRIX releases, and to
provide support for generic character-cell devices. Among those terminfo
components which appear in the supported subset are les for support of the Teletype
37 terminal. The Teletype 37 is an unsupported terminal but les to support it are
placed in the supported subset to provide backward compatibility and for functional
equivalency.
The ULTRIX SPD lists the support status of a particular terminfo database
component.
C.1.5.10.2 The Source Terminfo Database is Split into Two Subsets – The source
les used to generate the ULTRIX/UWS Version 4.0 Terminfo Database les are
located in /usr/src/usr.lib/terminfo. These source les are packaged in
two subsets: a supported subset, and an unsupported subset. The supported subset is
ULTPGMR400 for VAX platforms, and UDTPGMR400 for RISC platforms. The
unsupported subset is ULXBASE400 for VAX platforms and UDXBASE400 for
RISC platforms.
The supported components are those les necessary to support Digital terminals and
devices listed in the ULTRIX/UWS Version 4.0 Software Product Description (SPD).
Everything else in the source terminfo database is unsupported. The placement of
/usr/src/usr.lib/terminfo les into the supported and unsupported subsets
is not necessarily an indicator of the support status of a particular le. Certain
unsupported les are placed in the supported subset in order to provide terminaldependent functionality equivalent to functionalities supported by the Termcap
database and /usr/lib/term database.
Other unsupported les are in the supported subset in order to provide ANSI
compatibility, to provide backwards compatibility with older ULTRIX releases, and
to provide support for generic character-cell devices. Among those source
terminfo les which appear in the supported subset is the teletype.ti le
which is for support of the Teletype 37 terminal. The Teletype 37 is an unsupported
terminal, but the teletype.ti le is placed in the supported subset to provide backward
compatibility and for functional equivalency.
All the source terminfo les in the supported subset are there because they are
necessary to generate all the les in the binary terminfo les appearing in the
supported ULTBASE400 and UDTBASE400 subsets. These source terminfo les
contain information to generate terminfo binary les for some unsupported
devices. Therefore, if the status of a terminfo source le is supported, this does
not necessarily mean that the entire contents of that le are supported. Only those
portions of a supported le which pertain to a supported device are supported.
The ULTRIX SPD lists the support status of a particular terminfo source le, or
portion thereof.
C.1.5.10.3 Supported DEC Terminals Missing from the Terminfo Database – The
Terminfo database does not currently provide support for the following supported
DEC terminals:
Specic models of the VT100 series except for models VT100, VT125, and
VT132
Specic models of the VT200 series

Changes and New Features in Version 4.0 C–17

Specic models of the VT300 series
DECmate terminals
DEC RAINBOW terminals
DEC PRO 350 and 380 terminals
VAXmate terminals
Most DEC serial hardcopy terminals, except for the DECwriter series and
generic printers
There are some possible workarounds for some of these terminals:
You can set your terminal’s terminal id (for all VT series terminals) to ‘VT100
ID’, ‘VT200 ID’, or ‘VT300 ID’.
You can set your TERM environment variable to ’vt100’,’vt200’, or ‘vt300’ for
VT series terminals. For more information, see environ(7).
You can create alias entries in a supported terminfo source le, then compile
the edited source using the tic(1) command. For more information, see
tic(1) and terminfo(5).
A combination of the above workarounds is generally necessary for terminals which
cannot be congured to act like a VT100, VT200 or VT300. The value for TERM
should match your terminal’s terminal id. You cannot set a value for TERM except
to a value in the Termcap database. To use X/Open curses-based applications, the
value of TERM must also correspond to a terminal type dened in the Terminfo
database.
C.1.5.11

Changes to the Termcap Database – This section describes changes to the
termcap database.

C.1.5.11.1 The Termcap Database Contains Unsupported Entries – Certain
unsupported entries exist in /etc/termcap in order to provide terminal-dependent
functionality equivalent to features supported by the Terminfo database and
/usr/lib/term database. Other unsupported entries are in /etc/termcap in
order to provide ANSI compatibility, to provide backwards compatibility with older
ULTRIX releases, and to provide support for generic character-cell and
communications devices. Among those Termcap entries are entries for the support of
the Teletype 37 terminal. The Teletype 37 is an unsupported terminal but entries to
support it exist to provide backward compatibility and for functional equivalency.
The ULTRIX SPD lists the support status of a particular Termcap entry.
C.1.5.11.2 Supported DEC Terminals Missing from the Termcap Database – The
Termcap database does NOT currently provide support for the following supported
DEC terminals:
VT101 and VT102 terminals
Specic models of the VT200 series
Specic models of the VT300 series
DECmate terminals
DEC RAINBOW terminals

C–18 Changes and New Features in Version 4.0

DEC PRO 380 terminals
VAXmate terminals
Most DEC serial hardcopy terminals, except for the DECwriter series and
"generic" printers
There are some possible workarounds for some of these terminals:
You can set your terminal’s terminal id (for all VT series terminals) to ‘VT100
ID’, or to ‘VT200 ID’, or to ‘VT300 ID’.
You can set your TERM environment variable to ‘vt100’, ‘vt200’ or ‘vt300’ for
VT series terminals (see environ(7) for more information).
You can create alias entries in a supported entry in /etc/termcap, or create
a new entry. See termcap(5) for more information.
A combination of the above workarounds is generally necessary for terminals which
cannot be congured to act like a VT100, VT200 or VT300. The value for TERM
should match your terminal’s terminal id. You cannot set a value for TERM except
to a value in the Termcap database. To use BSD curses-based applications, the value
of TERM must also correspond to a terminal type dened in the Termcap database.
C.1.5.12

Terminfo Terminal Capabilities Database Compiler and Sources – The
terminfo database compiler, tic(1), has been added to this version of the
ULTRIX software. The tic compiler compiles terminal capabilities source les and
updates the terminfo database, /usr/lib/terminfo. The source les used
to generate the ULTRIX/UWS Version 4.0 version of /usr/lib/terminfo are
also supplied in the /usr/src/usr.lib/terminfo directory. See tic(1) and
terminfo(5) for more information.

C.1.5.13

Commands and Utilities – A limited number of commands and utilities have
been modied for the following reasons:
Bug xing (described in Appendix A)
Made 8-bit clean to meet X/Open compliancy
–

These commands are: ar, awk, cat, cc, cd, chgrp,
chmod, chown, cmp, comm, cp, cpio, date, diff,
echo, /bin/echo, ed, egrep, expr, false, fgrep,
find, gencat, grep, iconv, kill, lex, ln, lp, ls,
mkdir, mv, pack, pcat, pg, pr, ps, pwd, /bin/pwd,
red, rm, rmdir, sed, sh5, sleep, sort5, stty,
tail, tar, tee, test, tr, true, tty, umask, uname,
uniq, unpack, uucp, uulog, uuname, uupick, uustat,
uuto, uux, wait, wc, who, and yacc

–

In addition: csh, sed, vi, ksh, tip, rlogin, more,
head, adduser, login, and which

Adding BSD 4.3 enhancements: cat, mv, plot, rmdir, w, chfn,
chsh, finger, passwd, rdist, mkdir, chgrp, chown, cp,
and ndbm

Changes and New Features in Version 4.0 C–19

POSIX 1003.2, Draft 8 compliance: basename, chgrp, chmod,
chown, cp, date, fold, id, mkdir, mkfifo, ln, mktemp,
sort, tee, tr, uniq, make, env, find, getopts, join,
sh, ksh, awk, bc, cmp, diff, and dirname.
The ULTRIX/UWS Version 4.0 C Shell, /usr/bin/csh, based on the BSD
4.2 C Shell as distributed in ULTRIX-32, Version 3.0, features vi command
line editing, active cursor keys and command completion. Unlike the BSD 4.3
C Shell, the ULTRIX C Shell does not edit the current command line.
The ULTRIX man macros were enhanced as follows:
–

nroff output is centered inside an 80-column image area, and the line
length increased to 70 characters, from 65

–

*troff output is for 8.5" x 11" pages, instead of 7" x 9"

–

The .TH macro syntax is now compatible with 4.3BSD

–

Only PostScript fonts are called when formatting with *troff

In addition, changes include improved compilers, specically, pcc (VAX and RISC)
and Vcc. Pcc was updated with a number of xes as required by some SPRs which
had been reported on the ULTRIX-32 Version 3.0 version. Vcc is described in the
Section, VAX C/ ULTRIX.
C.1.5.14

Streaming Tape Devices and restore(8) – Prior to ULTRIX/UWS Version
4.0, restore(8) used standard synchronous I/O when reading from tape devices.
Now, the command has been enhanced to use the n-buffered I/O facility. Thus, the
command can stream a tape device such as the TU81 or TK50, reducing the time
required to perform a restore of a le system.

C.1.5.15

Tape Exerciser, tapex(8) – A new tape exerciser, tapex(8), has been added
to the system. This utility provides a more comprehensive set of tests than that
offered by mtx(8).

C.1.5.16

Caching Support for TMSCP Tape Driver – The TMSCP tape driver has been
enhanced to provide caching support. Through the use of read-ahead and write-back
caching, the throughput to certain TMSCP tape drives has been improved. To utilize
TMSCP tape caching see mtio(4) for a description of the MTCACHE and
MTFLUSH commands. The dump(8) utility has been modied to utilize caching
on tape drives which support tape caching.

C.1.5.17

Configuration Support for 96 MSCP Disks – Support for MSCP (ra) disks has
been enhanced to allow for conguration of up to 96 disks. Previously, support was
only provided for 32 disks.

C.1.5.18

Exclusive Access Support for HSC Disks – The MSCP disk driver has been
enhanced to provide exclusive access for disks connected to the HSC multi-host
controller. This functionality provides for a higher degree of security on the CI by
preventing other nodes on the CI from accessing the specied disk. See
radisk(8) and dkio(4) for additional information.

C–20 Changes and New Features in Version 4.0

C.1.5.19

New /sys Directory Structure – With ULTRIX/UWS Version 4.0 of ULTRIX,
the directory structure for the /sys directory tree has changed. The directories used
for conguring and building kernels have changed, but the process used to perform
those tasks remains the same. Please consult the Guide to Configuration File
Maintenance for detailed descriptions.

C.1.5.20

Tuning File System Performance – You can modify three system parameters
to improve ULTRIX le system performance and demonstrate that improvement in
certain types of tests, such as single-process, single-le, cache-sensitive benchmarks.
However, before modifying these parameters, you should be knowledgeable about the
ULTRIX operating system.
Depending on your system and its applications, you may possibly increase the le
system performance by modifying the following three system parameters:
Buffer cache size
ULTRIX write-back scheduling
The update daemon time interval
The following sections describe how to modify each of the parameters.

C.1.5.20.1 The bufcache Configuration File Parameter – A new conguration le
parameter, bufcache , allows a specied percentage of physical memory to be set
aside by the le system for use by the le system buffer cache. The percentage must
be 10 or greater, but less than 100.
By default, buffer cache occupies 10% of main memory. Increasing the buffer cache
size means that more le system data is stored in memory. While a large buffer
cache may make a benchmark test run faster, there are tradeoffs. ULTRIX uses a
static buffer cache allocation methodology. Main memory that is allocated at boot
time for the le system buffer cache cannot be used for user program text or data.
Therefore, actual performance depends on the application.
For example, to set the cache buffer size to 25% of memory, add the following to
your system’s conguration le located in the directory /sys/conf/mips for
RISC processors or /sys/conf/vax for VAX processors:
bufcache

25

After editing the conguration le, you need to rebuild your kernel.
Optimal values for bufcache will differ among large timesharing systems, midrange le servers, and workstations. However, you should not alter bufcache if
you have a workstation with 8 Mbytes of memory. Workstations with 16 Mbytes of
memory should have a value of no more than 30. If you specify a value greater than
30, your system’s le system performance may suffer because of excessive paging
and swapping.
For le servers, increasing the buffer cache can improve performance. Note that if
you make the buffer cache too large, the resulting system may be less efcient in
processing the requests to it from multiple users. To help you determine the optimal
value, use the results from the bufstats command of the crash utility. This
command can provide useful data on cache hit/miss ratios. See the crash(8)
Reference Page for more information on bufstats.
See the Guide to Configuration File Maintenance for more information on the
conguration le and its options and for instructions on rebuilding your kernel.

Changes and New Features in Version 4.0 C–21

C.1.5.20.2 ULTRIX Write-Back Scheduling – By default, ULTRIX returns write requests
immediately. If the last byte of a block is written, then the dirty block is
asynchronously sent to disk. When this happens, the block becomes unavailable until
the disk write completes. While this scheduling method is benecial in a timesharing environment, it hinders some benchmark tests which read data immediately
after writing it.
To set the ULTRIX system so that data can be read as soon as it is written and writes
to disk are delayed as long as possible, make the following change in the param.c
le located in the directory /sys/conf/mips for RISC processors or
/sys/conf/vax for VAX processors:
int delay_wbuffers = 1;

After editing the param.c le, you need to rebuild the kernel. See the Guide to
Configuration File Maintenance for instructions on rebuilding your system’s kernel.
C.1.5.20.3 The update Daemon Time Interval – By default, the update daemon
synchronizes dirty blocks to disk every 30 seconds. You can alter this time interval in
two ways. The rst way is to add a value to the /etc/update command in the le
/etc/rc. For example, to adjust the update time interval from 30 seconds to 2
minutes, edit the le as follows:
/etc/update 120;

echo -n update’

>/dev/console

The second way is to kill the update daemon process and restart it with the new
value.
If you have a big cache and an application which often writes over the same blocks
of a le, you should consider increasing the time interval for update. The judicious
manipulation of buffer cache size, write scheduling strategy, and update frequency
can improve le system performance. Individual users should analyze their needs by
varying the values for each parameter and measuring the effect on performance.
Optimal values will differ between workstations, le servers, and time-sharing
systems.
Note
Unless you understand the value of modifying these parameters and can
detect a performance improvement after doing so, you should use their
default values.

C.1.5.21

PrintServer Client Software for ULTRIX – In Versions 3.0 and 3.1 of
ULTRIX-32, print spooler support for the PrintServer family of network printers was
supplied through a layered product, PrintServer Client Software for ULTRIX-32,
Version 2.0.
In ULTRIX/UWS Version 4.0, this support has been incorporated into the base
system, so you no longer need to install the PrintServer Client layered product.
All printer support is now contained in the subsets ULTPRINT400 (VAX) and
UDTPRINT400 (RISC). You must install the appropriate subset before creating any
print queues on your system.

C–22 Changes and New Features in Version 4.0

Support is provided in ULTRIX for the following network printers:
PrintServer 20
PrintServer 40
PrintServer 40 Plus
For management, booting, and le services you still need to install one of these
separately-licensed products:
PrintServer Supporting Host for ULTRIX (to boot and manage from ULTRIX
systems)
VAX PrintServer Supporting Host (to boot and manage from VMS systems).
For PrintServer network printers on a DECnet network, you require the product VMS
PrintServer Supporting Host Software, Version 2.0, 2.1, or 3.0, running on a VAX
system.
For PrintServer network printers on a TCP/IP network, you require the product
PrintServer TCP/IP Supporting Host Software, Version 1.0 or 2.0, running on an
ULTRIX VAX or RISC system.
C.1.5.22

New /etc/exports Semantics – The semantics of /etc/exports le options
have been modied for ULTRIX/UWS Version 4.0. Export options are now applied
on a per-directory basis and are no longer inherited from the exported parent
lesystem. As a consequence, you no longer need to export an entire lesystem in
order to export subdirectories within it. However, you do need to be more explicit in
specifying options for each exported resource: lesystem or directory. See
exports(5) for more information.

C.1.5.22.1 Differences and Benefits – The major difference is that desired export options
need to be specied for each exported resource; they are no longer inherited from the
exported parent le system.
The benets are:
Options now apply to directories; it is now possible, for instance, to set up a
directory hierarchy such that higher level directories may be exported read-only,
while some lower level directories may be exported read-write.
Different exported directories in the same lesystem can now be given different
export options (that is, rw, ro, rootmapping).
There is no longer a need to export a lesystem to "nobody" so that individual
directories can be rootmapped to uid 0 (typical in diskless clients).
The "no le handle" option (–n) is no longer required.
Note that the access checking behavior differs from that of previous ULTRIX releases
where access was checked in a top-down manner, starting with the lesystem.
Previously, export options for the lesystem were in fact the options for any exported
directory within the lesystem. In ULTRIX/UWS Version 4.0, access checking is
actually applied bottom-up, as described below.

Changes and New Features in Version 4.0 C–23

C.1.5.22.2 Preserving Current Export Behavior – The basic modication required for
an existing /etc/exports le is that each exported resource identied in the le
must now identify the export options associated with mounting that resource:
If you want all exported directories within a lesystem to be exported read-only,
you will need to specify the -o option on each /etc/exports entry.
If you want to allow rootmapping to uid 0 (-r=0) then you will need to specify
the -r=0 option on each appropriate directory. You should delete
/etc/exports entries for lesystem mount points that contain diskless root
partitions since they typically look like:
/var/diskless -n -r=o nobody

The -r option will now be specied on a per-directory basis and the -n option is
no longer required. This option will not cause any harm if it remains, but it
will be ignored in ULTRIX/UWS Version 4.0.
You may preserve the same behavior on your NFS server if you apply the export
options of the exported parent lesystem to each of the exported subdirectories.
Note that a mount request for a subdirectory of an exported directory will be
processed against the next highest exported directory identied in that hierarchy. See
the next section for more detail.
C.1.5.22.3 Subtle Differences in Determining Access – A best match algorithm is
used to determine which export options apply to a client NFS mount request. When
a client makes an NFS mount request the export options that take effect are those of
the exported directory specied in the server’s / etc/exports le that most
closely matches the request.
For example, if a client attempts to mount /usr/man/man1 , and both /usr/man
and /usr/man/man1 are specied in the server’s /etc/exports le, then
access to the directory based upon the client’s mount request is checked against the
/usr/man/man1 export access list rst. If the mount is permitted, the directory
options specied for /usr/man/man1 are used. If, however, the client was not
identied in the export access list (or in one of the groups specied) for
/usr/man/man1 , access is then checked against the closest exported ancestor,
which in this case is /usr/man. If access is permitted at this level, the export
options associated with /usr/man are used.
C.1.5.23

SCSI Drivers Support Dynamic Bad Block Replacement (DBBR). – The
SCSI subsystem, the DECstation 2100, DECstation 3100, MicroVAX 3100,
DECsystem 3100, VAXstation 3100, VAXstation 3520, VAXstation 3540,
DECsystem 5000 and the DECstation 5000 now support Dynamic Bad Block
Replacement (DBBR). The SCSI drivers will automatically replace soft errors that
are ECC correctable. The user is notied of the replacement by the use of the error
log le.
Hard disk errors are still reported and logged by the error logger. There is no attempt
to reassign hard errors; this requires user intervention.

C.1.5.24

SCSI Driver Logs Errors in Binary – The SCSI driver no longer logs its errors
in ASCII. Instead extensive changes have been made to log errors in binary form
allowing the uerf utility to improve the amount of error information presented in
the error log.

C–24 Changes and New Features in Version 4.0

C.1.5.25

Time Zone Handling – The time zone related library routines have been
enhanced to handle a wider range of time zone rules and to conform to the POSIX
P1003.1 standard.
The TZ environment variable can be set by users to tailor time zone handling.
The standard denes the format of the TZ string such that only one time zone rule
can be dened at a time; different rules for previous years are not handled.
The standard also allows implementation dened rules. ULTRIX/UWS Version 4.0
takes advantage of this feature of the standard by allowing the TZ string to specify a
data le which contains the rules for a particular time zone.
The data les, which are located in /etc/zoneinfo, are created by the zone
information compiler (zic), from the source les located in
/etc/zoneinfo/sources.
If no TZ string is dened, the rules specied by the le
/etc/zoneinfo/localtime are used. This le is set up based on information
supplied to the installation procedure. If the created le does not accurately represent
the rules for your time zone, you can use the zic(8) command to create a new le.
See the ctime(3) and zic(8) reference pages for more detailed information on
the format and use of the TZ environment variable and the time zone data les.

C.1.5.26

Support for Multiple Databases – The previous version of dbm(3x) only
allows one database to be used at a time. A new library, ndbm(3) is now provided as
part of the libc library to augment the dbm functionality. Now, ndbm allows
multiple databases to be concurrently accessed. Existing dbm calls can either be
replaced by ndbm calls or they may continue to use dbm, which has remained in the
libdbm library.

C.1.5.27

New Features for Writing International Software – This version of the
ULTRIX system adds support for internationalization features to three functions and
adds a new internationalization command. This version also supports the use of
@modifier in locale settings.
The scanf, printf, and vprintf functions now contain support for
internationalization features. These internationalized functions now give you the
exibility to format the same data in different ways to accommodate users in different
international areas. You can use the internationalization features if you link your
program with the internationalization library, libi.
The behavior of the internationalized routines is different from the behavior of the
libc routines printf(3s), scanf(3s), and vprintf(3s).
For more information on using the internationalization features of the scanf,
printf, and vprintf functions, see the scanf(3int), printf(3int), and
vprintf(3int) reference pages.
Note
The scanf, printf, and vprintf internationalized functions
supercede the nl_scanf and nl_printf functions, which are still
available on the system for conformance with the X/Open XPG–2
standard. However, you should avoid using the superceded functions
unless you must conform to that standard, because there is a possibility
the functions will not be supported in future releases of ULTRIX.

Changes and New Features in Version 4.0 C–25

The new internationalization command is the iconv command. This command
allows you to convert the encoding of data from one codeset to another codeset. You
control how iconv converts the data. For more information on the new command,
see the iconv(1) reference page.
The behavior of the ic compiler and the setlocal function have been changed to
support the @modifier in locale settings. This feature allows you to specify more
detail for the settings. For example, you can use @modifier to load a table that
species telephone or dictionary collation of data, as opposed to the default collation
for a particular locale. See the Guide to Developing International Software, the
setlocale(3int), and the lang(5int) reference pages for more information.
Note
Due to the nature of the changes, we recommend you recompile any
language support databases using the new version of the ic compiler. In
addition, you should relink programs that had previously used
setlocale with libc.

C.1.5.28

Security Enhancements – ULTRIX security has been enhanced by several new
features.
User authentication features now support the following:
Storage of encrypted passwords in an authentication data base readable only by
root, rather than in /etc/passwd.
Password aging and expiration.
Support of passwords up to 16 characters long.
Enforced minimum required password length.
Automatic generation of passwords that are difcult to guess.
The system administrator has the option of using the traditional authentication
system, the new system, or a mode designed to allow easy transition from the old
authentication system to the new one.
A new audit subsystem is capable of recording a wide range of events and logging
the information in a secure audit log le. The system administrator can choose a list
of events to log for all users and then add or remove events from that list on a peruser basis to tailor the logging to individual users. A special tool enables ltering of
the audit le and produces reports focusing on needed information. The new audit
subsystem can co-exist with the traditional ULTRIX accounting features.
A new trusted path feature provides the user with a secure path between the user’s
terminal and the legitimate login process. This prevents an illicit program from
faking the login process and grabbing the user’s password.
A security setup command is available to simplify the task of conguring the new
system security features.

C.1.5.29

Symmetric Multiprocessing (SMP) – For ULTRIX/UWS Version 4.0, the
kernel has been modied to allow multiple processors to execute the kernel code
simultaneously. This is accomplished safely by means of locks, which are used to

C–26 Changes and New Features in Version 4.0

control the concurrent access of shared data structures within the kernel.
ULTRIX/UWS Version 4.0 now supports the entire line of VAX and RISC
multiprocessor systems, excluding the VAX 11/782.
Commands added for symmetric multiprocessing are:
startcpu(8), which controls starting an attached processor.
stopcpu(8), which controls stopping an attached processor. Stopping the
boot processor is not allowed.
cpustat(1), which prints out CPU usage statistics on a per-processor basis.
Symmetric multiprocessing is enabled by a kernel conguration le option "SMP".
Without this option in the system conguration le, attached processors can not be
started. With this option, up to the supported maximum number of processors can be
started.
While upgrading any system with only one cpu to one with multiple cpus, you must
edit the system conguration le of the machine to dene SMP as an option. Include
this line in the system conguration le:
options SMP

After you change the system conguration le, be sure to run the config(8)
program on it and then run make depend and make vmunix for the new system
conguration.
Not all device drivers supplied by Digital have been made symmetric. Those that
have not been modied are still supported by asymmetric driver support. Whether a
device driver is symmetric or not is determined by the eld "d_afnity" in the block
device switch ( bdevsw ) or character device switch ( cdevsw ). A value of zero
means that only the boot processor can execute the driver. A value of -1 means that
all processors can execute the driver.
C.1.5.30

VAX C/ULTRIX – This section of the release notes covers new features added in
ULTRIX/UWS Version 4.0 of VAX C/ULTRIX (vcc). VAX C/ULTRIX is for VAX
machines only. There is also new documentation for VAX C/ULTRIX included in
ULTRIX/UWS Version 4.0. You should consult the VAX/C for ULTRIX
documentation for details on new features.

C.1.5.30.1 New Object Format – In ULTRIX/UWS Version 4.0 of VAX C/ULTRIX, the
vcc compiler now generates BSD .o format for its object les. This means that the ld
linker can now be used to link object les generated by vcc.
The previous object le format can still be generated, but this is controlled by a new
qualier, -V LKOBJECT. The default value of this switch is -V NOLKOBJECT.
The vcc shell will automatically pass the BSD objects to ld to be linked. If les with
a .obj extension appear on the command line, or if -V LKOBJECT is specied, the
les will be passed to lk instead.
You should note that the object les produced by both -V LKOBJECT and -V
NOLKOBJECT are both sufxed by the .o le extension. However, ld will not link
les produced by using vcc -V LKOBJECT or produced by versions of vcc prior to
ULTRIX/UWS Version 4.0. If you attempt to do so, the ld linker will tell you that
the symbol _MUST_USE_LK_TO_LINK_THIS_OBJECT is undened.

Changes and New Features in Version 4.0 C–27

C.1.5.30.2 Function Inlining – In ULTRIX/UWS Version 4.0 of VAX C/ULTRIX, a
signicant new optimization has been implemented called function inlining. In this
optimization the compiler automatically attempts to place the code of a function body
directly inline at the locations where the function is called. This eliminates the
overhead of a call instruction. This optimization is only attempted for functions
dened in the module.
Not all functions are automatically inlined. The compiler estimates the code size and
amount of CPU time that the function consumes, and uses these heuristics to select
candidates for automatic inlining. Functions will not be automatically inlined if the
compiler judges that performance would not be signicantly improved. However,
you are able to override the compiler’s decision on any individual eligible function
by specifying the function in a pragma:
#pragma [no]inline (function_name [,function_name...])

The [no]inline pragma must appear before the denitions of the functions named.
However, the denition of a function need not precede its calls for the function to be
inlined.
Some functions cannot be inlined at all. Functions that take the address of their
parameters, or functions that use varargs are not inlined by the compiler. If the
compiler is unable to inline a function that you have suggested be inlined (with
#pragma inline), informational messages are generated.
You can also specify that the optimizer should run but not perform function inlining
by using the qualier -V OPTIMIZE=NOINLINE on the command line. The default
is -V OPTIMIZE=INLINE.
C.1.5.30.3 Access to Specialized VAX Instructions – In ULTRIX/UWS Version 4.0 of
VAX C/ULTRIX, access to some VAX instructions is possible directly from C code.
In particular, access to the following instructions is provided: ADAWI, BBCCI,
BBSSI, FFC, FFS, HALT, INSQHI, INSQTI, INSQUE, LDPCTX, LOCC, MFPR,
MOVC3, MOVC5, MOVPSL, MTPR, PROBER, PROBEW, REMQHI, REMQTI,
REMQUE, SCANC, SKPC, SPANC, and SVPCTX.
These instructions are accessed through a function call syntax. These functions give
you capabilities similar to asm in pcc. However, instead of providing a string which
contains an assembler instruction as the parameter as asm requires, C variables and
expressions are the parameters.
A new pragma has been added to ULTRIX/UWS Version 4.0 of VAX C/ULTRIX to
allow you to selectively enable or disable compiler recognition of these instruction
functions. The syntax of the new pragma is:
#pragma [no]builtins

The default setting is #pragma nobuiltins. You must include the builtins pragma in
your modules prior to calls to builtin functions. See the Guide to VAX C/ULTRIX for
information on the parameters to these builtin functions.
C.1.5.30.4 New Behavior for -E – In ULTRIX/UWS Version 4.0 of VAX C/ULTRIX, cpp
is no longer invoked when -E is specied on the command line. Instead, VAX
C/ULTRIX preprocesses the le, and produces source output. There is not a separate
preprocessor; this capability is built into the VAX C/ULTRIX compiler.
The use of the -Em qualier will still cause cpp to be invoked. VAX C/ULTRIX
does not generate makele dependencies.

C–28 Changes and New Features in Version 4.0

C.1.5.30.5 Function Pointer Syntax Now Accepted – In ULTRIX/UWS Version 4.0 of
VAX C/ULTRIX, function pointers are now allowed to be used in function calls
without being deferenced, as pcc allows. Thus, if p is a pointer to a function, the
following expressions are equivalent:
(*p)()
and
p()
These expressions are calls to the function pointed at by p. VAX C/ULTRIX will
accept both expressions as legal.
C.1.5.30.6 Minor ANSI C Extensions – In ULTRIX/UWS Version 4.0 of VAX
C/ULTRIX, oating point constants can take the following sufxes, as allowed by
the draft ANSI C standard:
Lowercase "l"
Uppercase "L"
Lowercase "f"
Uppercase "F"
If the constant has the sufx "l" or "L", then it has type double. If the constant has
the sufx "f" or "F", then it has type oat. Unsufxed oating point constants
continue to be interpreted as having type double.
If an integer constant has the uppercase "U" or lowercase "u" sufx, it is an unsigned
constant. The "U" or "u" sufx can be used in conjunction with the "l" or "L" sufx
to create constants of type unsigned long.
C.1.5.30.7 Pragma for enabling/disabling -V STANDARD=PORTABLE – In
ULTRIX/UWS Version 4.0 of VAX C/ULTRIX, a new pragma has been
implemented which allows you to selectively turn off the -V
STANDARD=PORTABLE qualier for sections of your code.
The syntax for this new qualier is:
#pragma [no]standard

If #pragma nostandard is specied, it turns off -V STANDARD=PORTABLE
checking; this pragma has no effect if -V STANDARD=PORTABLE has not been
specied on the command line. If #pragma standard is specied, it allows the
previous setting of -V STANDARD=PORTABLE to be in effect. These pragmas can
be nested; if two nostandard pragmas are specied in a row, two standard pragmas
are required to restore portability checking.

C.1.6

Documentation Component Features
There have been many changes and additions to the documentation for
ULTRIX/UWS Version 4.0. Please refer to the manual Reader’s Guide and Master
Index for a thorough introduction to the documentation.

Changes and New Features in Version 4.0 C–29

C.1.7

Reference Pages Subsections Defined
The list of subsections is important because layered products can only use
subsections known to /usr/ucb/man. For example, someone developing a
layered product called XYZ wants all their reference pages to be in xyz subsections.
Because xyz is not known to /usr/ucb/man (the default man command), the
alpha.1xyz reference page will not be found by typing the following command:
% man alpha

The only way to nd the alpha.1xyz reference page is to type one of the
following commands:
% man 1xyz alpha
% /usr/bin/man alpha

The list of subsections known to /usr/ucb/man is hard coded, and is generally
expanded for each ULTRIX release. Therefore, you need to use /usr/bin/man if
/usr/ucb/man can’t nd a reference page. See the man(1) reference page for
more information.
One of the features of /usr/ucb/man is that it supports subsections. The
reference pages database is divided up into 8 standard sections (1-8), plus
nonstandard sections l, n, o, p, 0, and 9. Six of the standard sections can be further
split into subsections. Each subsection is a section sufx consisting of 1 or more
alphanumeric characters, the rst of which must be a letter. Sections 1-5 and 8 can
have reference pages assigned to subsections.
The command /usr/ucb/man has a restriction in that it recognizes a hard-coded
list of subsections. If a reference page is added to a subsection not known to
/usr/ucb/man, that reference page will not be found unless the subsection is
specically requested. Therefore, it is important to know what subsections are
currently dened, and the topics associated with those subsections.
The following is a list of the subsections dened for the ULTRIX/UWS Version 4.0
release. In some cases the meaning of a subsection depends on the primary section
number.
Subsection
----------

Topic
------------------------------------------------

c

- Section
Section
Section
Section
Section
Section

1:
2:
3:
4:
5:
8:

commands for communication with other systems
*** No Defined Meaning ***
subroutines for communication with other systems
*** No Defined Meaning ***
*** No Defined Meaning ***
commands for communication with other systems

cur
dn
Dwt

- X/Open curses
- DECnet-ULTRIX (Layered Product)
- ULTRIX Worksystem Software (UWS) DECwindows XUI Toolkit
Functions

f

- Section 1:
Section 2:
Section 3:
Section 4:
Section
Section 8:

g

- Section 1: commands used for graphics & computer-aided

*** No Defined Meaning ***
*** No Defined Meaning ***
FORTRAN* reference pages
network protocol families
5: *** No Defined Meaning ***
*** No Defined Meaning ***

C–30 Changes and New Features in Version 4.0

design,
Section 2:
Section 3:
Section 4:
Section 5:
Section 8:

plus DECPhigs/ULTRIX (Layered Product)
*** No Defined Meaning ***
DECPhigs/ULTRIX (Layered Product)
*** No Defined Meaning ***
*** No Defined Meaning ***
*** No Defined Meaning ***

int

- Internationalization commands and functions

j

- *** No Defined Meaning ***
- supported by BSD 4.2 /usr/ucb/man but topic is not
known

krb

- Kerberos

m

- Section
Section
Section
Section
Section
Section

1:
2:
3:
4:
5:
8:

*** No Defined Meaning
*** No Defined Meaning
Math Subroutines
*** No Defined Meaning
*** No Defined Meaning
System Maintenance

***
***
***
***

mh

- RAND Mail Handler (MH)

n

- Section
Section
Section
Section
Section
Section

ncs
nfs

- Network Computing System (NCS)
- Networked File System (NFS)

osi

- DECnet-ULTRIX (Layered Product) Open Systems Interface (OSI)

p

- Section
Section
Section
Section
Section
Section

1:
2:
3:
4:
5:
8:

1:
2:
3:
4:
5:
8:

*** No Defined Meaning ***
*** No Defined Meaning ***
Network subroutines and SNMP
networking facilities
Simple Network Management Protocol (SNMP)
Simple Network Management Protocol (SNMP)

*** No Defined Meaning
*** No Defined Meaning
*** No Defined Meaning
Internet Protocols
*** No Defined Meaning
*** No Defined Meaning

***
***
***
***
***

r

- *** No Defined Meaning ***
- supported by BSD 4.2 /usr/ucb/man but topic is not
known

s

- Section
Section
Section
Section
Section
Section

sh5

- System V Shell

sql

- ULTRIX/SQL components

svs

- *** RESERVED FOR FUTURE USE BY Digital Equipment Corp. ***

ufs

- ULTRIX File System (UFS)

v

- Sections 1-5: *** No Defined Meaning ***
Section 8: Archiver, "crash", and disk format

1:
2:
3:
4:
5:
8:

*** No Defined Meaning ***
*** No Defined Meaning ***
Standard I/O Subroutines
*** No Defined Meaning ***
*** No Defined Meaning ***
*** No Defined Meaning ***

Changes and New Features in Version 4.0 C–31

X

- UWS X Graphic applications, Graphic maintenance commands, X
servers and X system utilities

x

- Section 3: Special Library Functions
- miscellaneous subroutines and libraries

X11

- UWS X11 Xlib Functions

Xt

- UWS DECwindows XUI Toolkit Intrinsics

xti

- X/Open Transport Interface

yp

- Yellow Pages (YP)

New subsections may be added in future releases.
The eight standard sections correspond to 8 subdirectories in /usr/man: man1 man8. These sections have the following meanings:
1
2
3
4
5
6
7
8

-

Commands
System Calls
Subroutines
Special Files
File Formats
Games
Macro Packages and Conventions (plus miscellaneous)
Maintenance

In addition to the eight standard sections, customers may create the following
additional subdirectories in /usr/man:
manl
mann
mano
manp
man0
man9

-

for
for
for
for
***
***

"local" reference pages
"new" reference pages
"old" reference pages
"public" reference pages
No Defined Meaning ***
No Defined Meaning ***

The les in /usr/man/manl must have names ending in .l, les in mann must
names ending in .n, and so forth.

C.1.8

Customer Services Components Features
System integrated and individual software services are available for ULTRIX.
Individual services include telephone support, installation services, and media and
documentation update services. For more information on these and new services for
ULTRIX, contact your local sales ofce.
In addition, three services have been added:
System Management Service (SMS)
SMS provides single point of access to a customer support center and a
proactive problem resolution process.
Software Update Installation Service (SUIS)
SUIS provides a software update installation at a customer site by Digital
specialists, who also explain the changes in the new release of the software.
Source Code Update Service (SCUS)
SCUS provides automatic updates of source code to customers with each
scheduled version release of the operating system.

C–32 Changes and New Features in Version 4.0

C.1.9

Software Features No Longer Supported
All software components supported in the previous release (ULTRIX-32, Version
3.1) remain supported in ULTRIX/UWS Version 4.0.

C.1.10

Hardware No Longer Supported
All hardware components supported in the previous release
(ULTRIX-32, Version 3.1) remain supported in ULTRIX/UWS Version 4.0.

C.2 ULTRIX Worksystem Software Changes and New Features
This section discusses the following changes and new features in ULTRIX
Worksystem Software that apply to ULTRIX/UWS Version 4.0:
Conformance to Standards
X Window System Changes
DECwindows Toolkit Changes
DECwindows Application Changes
Font Format Changes
Conformance to Standards

C.2.1

X Window System
This section discusses X Window System-related changes in ULTRIX/UWS Version
4.0

C.2.1.1

Xlib Changes – Changes to the Xlib data structures and programming interfaces to
support the Inter-Client Communication Conventions include:
Removal of the PAllWMSizeHints macro.
Removal of the XGetWMCommand and XSetWMCommand routines.
Correction of the order of screen and window arguments in
XIconifyWindow, XWithdrawWindow, and
XReconfigureWMWindow.
The killid eld in the denition of XStandardColormap has not been
voted on by the wmtalk (window manager talk) list but is viewed as a necessary
change by the Director of the X Consortium. A change in this part of the
interface is possible if the wmtalk group comes up with an alternative proposal.

C.2.1.2

New Xlib Programming Interfaces – In ULTRIX/UWS Version 2.2, the
following interfaces were added to Xlib.

C.2.1.2.1

Allocating Structures for Property Data – The following routines allocate
memory for the various data structures reecting information stored in properties. By
allocating these structures at run time instead of declaring them at compile time,
clients avoid memory overwriting problems should additional elds ever be added to
these structures.
XSizeHints *XAllocSizeHints ()

Changes and New Features in Version 4.0 C–33

XStandardColormap *XAllocStandardColormap ()
XWMHints *XAllocWMHints ()
XClassHint *XAllocClassHint ()
XIconSize *XAllocIconSize ()

The XAllocSizeHints, XAllocStandardColormap, XAllocWMHints,
XAllocClassHint, and XAllocIconSize routines allocate and return
XIconSize XAllocIconSize () pointers to XSizeHints,
XStandardColormap, XWMHints, CWXClassHint, and XIconSize
structures, respectively. Pointer elds will be set to NULL and all other elds will
be set to zero. If sufcient memory is not available, NULL is returned.
C.2.1.2.2

Manipulating Top-Level Windows – The following routines change the size or
visibility of top-level windows (created as children of the root window).
The XIconifyWindow function sends a WM_CHANGE_STATE ClientMessage
event with a format of 32 and a rst data element of IconicState to the root window
of the specied screen (for more information on IconicState, see the Inter-Client
Communications Manual, Section 4.1.4, Changing Window State) Window managers
may elect to receive this message and, if the window is in its normal state, may treat
it as a request to change the window’s state from normal to iconic. If the
WM_CHANGE_STATE atom cannot be interned, no message is sent, and a status of
0 is returned. A nonzero status is returned if the client message is sent successfully;
otherwise, a status of 0 is returned.
Status XIconifyWindow (dpy, w, screen)
Display *dpy;
Window w;
int screen;

The XIconifyWindow function can generate a BadWindow error.
The XWithdrawWindow function unmaps the specied window and sends a
synthetic UnmapNotify event to the root window of the specied screen. Window
managers may elect to receive this message and treat it as a request to change the
window’s state to withdrawn. When a window is in the withdrawn state, neither its
normal nor its iconic representations is visible. A nonzero status is returned if the
UnmapNotify event is sent successfully; otherwise, a status of 0 is returned.
Status XWithdrawWindow (dpy, w, screen)
Display *dpy;
Window w;
int screen;

The XWithdrawWindow function can generate a BadWindow error.
The XReconfigureWMWindow function does a ConfigureWindow on the
specied top-level window. If the stacking mode is changed and the request fails
with a BadMatch error, the error event is trapped and a synthetic
ConfigureRequestEvent containing the same conguration parameters is sent
to the root of the specied window. Window managers may elect to receive this
event and treat it as a request to recongure the indicated window.
Status XReconfigureWMWindow (dpy, w, screen, mask, changes)
Display *dpy;
Window w;
int screen;
unsigned int mask;
XWindowChanges *changes;

C–34 Changes and New Features in Version 4.0

The XReconfigureWMWindow function can generate BadValue and BadWindow
errors.
C.2.1.2.3

String Lists – The following routines convert between lists of pointers to
character strings and text properties.
The XStringsToTextProperty routine sets the specied XTextProperty
to be of type STRING (format 8) with a value representing the concatenation of the
specied list of null-separated character strings. An extra byte containing NULL
(which is not included in the count tally) is allocated for the value eld of
text_prop_return. Storage for this eld may be released using XFree. If
insufcient memory is available for the new value string, none of the elds in
text_prop_return are set and 0 is returned; otherwise, a nonzero status is returned.
Status XStringListToTextProperty (list, count, text_prop_return)
char **list;
int count;
XTextProperty *text_prop_return;

The XTextPropertyToStringList routine returns a list of strings
representing the null-separated elements of text_prop. The data in text_prop must be
of type STRING and format 8; multiple elements (such as the strings in a disjoint
text selection) are separated by a NULL (encoding 0). The property is not nullterminated. Storage for the list and its contents may be released using
XFreeStringList. If insufcient memory is available for the list and its
elements, neither of the return values is set and a status of 0 is returned; otherwise, a
nonzero status is returned.
Status XTextPropertyToStringList (text_prop, list_return, count_return)
XTextProperty *text_prop;
char ***list_return;
int *count_return;
void XFreeStringList (list)
char **list;

The XFreeStringList routine releases memory allocated by
XTextPropertyToStringList.
C.2.1.2.4

Manipulating Text Properties – The following routines are used to obtain and
specify information on properties that are intended to hold text. Note that Xlib does
not enforce any encoding of textual information.
The XGetTextProperty routine reads the specied property from the window
and stores the data in the value eld of text_prop_return, the type of the data in the
encoding eld, the format of the data in the format eld, and the number of items of
data in the nitems eld. The particular interpretation of the property’s encoding
and data as text is left to the calling application.
Status XGetTextProperty (display, window, text_prop_return, property)
Display *display;
Window window;
XTextProperty *text_prop_return;
Atom property;

If the property does not exist on the window, the value eld of
text_prop_return is set to NULL, the encoding eld is set to None, the format
eld is set to 0, and the nitems eld is set to 0.
Changes and New Features in Version 4.0 C–35

The function returns a nonzero status if it was able to set the elds of
text_prop_return; otherwise it returns 0.
The XGetTextProperty routine can generate BadWindow, BadAtom, or
BadValue errors.
The XGetWMName,XGetWMIconName, and XGetWMClientMachine routines
are convenience routines that perform a XGetTextProperty on the WM_NAME,
WM_ICON_NAME, WM_CLIENT_MACHINE properties respectively.
Status XGetWMName (dpy, w, text_prop_return)
Status XGetWMIconName (dpy, w, text_prop_return)
Status XGetWMClientMachine (dpy, w, text_prop_return)
Display *dpy;
Window w;
XTextProperty *text_prop_return;

The XGetWMName routine supersedes XFetchName. The XGetWMIconName
routine supersedes XGetIconName.
The XSetTextProperty routine replaces (or sets if the property does not exist)
the specied property for the indicated window with the data given by the value eld
of text_prop, the type given by the encoding eld, the format given by the format
eld, and the number of items given by the nitems eld.
void XSetTextProperty (dpy, w, text_prop, property)
Display *dpy;
Window w;
XTextProperty *text_prop;
Atom property;

The XSetTextProperty routine can generate BadWindow, BadAtom, BadValue,
or BadAlloc errors.
The XSetWMName, XSetWMIconName, and XSetWMClientMachine routines
are convenience routines that perform an XSetTextProperty on the
WM_NAME, WM_ICON_NAME, and WM_CLIENT_MACHINE properties,
respectively.
void XSetWMName (dpy, w, text_prop)
void XSetWMIconName (dpy, w, text_prop)
void XSetWMClientMachine (dpy, w, text_prop)
Display *dpy;
Window w;
XTextProperty *text_prop;

The XSetWMName routine supersedes XStoreName. The XSetWMIconName
routine supersedes XSetIconName.
The XGetCommand routine reads the WM_COMMAND property from the
specied window and returns a string list. If the WM_COMMAND property exists,
is of type STRING and format 8, and if there is enough memory to contain the string
list, the argvp and argcp elds are lled in with a string list that may be freed
with XFreeStringList. Upon successful completion, a nonzero status is
returned; otherwise, a 0 status is returned.
Status XGetCommand (dpy, w, argvp, argcp)
Display *dpy;
Window w;
char ***argvp;
int *argcp;

C–36 Changes and New Features in Version 4.0

C.2.1.2.5

Size Hints – The following routines obtain and specify size hints:
The XGetWMSizeHints routine returns the size hints stored in the indicated
property on the specied window. If the property is of type WM_SIZE_HINTS and
format 32 and is long enough to contain a size hints structure, the various elds of
the hints_return structure are set and a nonzero status is returned; otherwise, a status
of 0 is returned. To get a window’s normal size hints, the XGetWMNormalHints
routine may be used instead.
Status XGetWMSizeHints (dpy, w, hints_return, property)
Display *dpy;
Window w;
XSizeHints *hints_return;
Atom property;

The XGetWMSizeHints routine can generate BadWindow, BadAtom, or
BadValue errors.
The XGetWMSizeHints routine supersedes XGetSizeHints.
The XSetWMSizeHints routine replaces (or sets if the property does not exist)
the size hints for indicated property on the specied window. The property is stored
with a type of WM_SIZE_HINTS and a format of 32. To set a window’s normal
size hints, the XSetWMNormalHints routine may be used instead.
void XSetWMSizeHints (dpy, w, hints, property)
Display *dpy;
Window w;
XSizeHints *hints;
Atom property;

The XSetWMSizeHints routine can generate BadWindow, BadAtom, or
BadValue errors.
The XSetWMSizeHints routine supersedes XSetSizeHints.
The XGetWMNormalHints routine returns the size hints stored in the
WM_NORMAL_HINTS property on the specied window. If the property is of type
WM_SIZE_HINTS, format 32, and is long enough to contain a size hints structure,
the various elds of the hints_return structure are set and a nonzero status is returned;
otherwise, a status of 0 is returned.
Status XGetWMNormalHints (dpy, w, hints_return)
Display *dpy;
Window w;
XSizeHints *hints_return;

The XGetWMNormalHints routine can generate BadWindow, BadAtom, or
BadValue errors.
The XGetWMNormalHints routine supersedes XGetNormalHints.
The XSetWMNormalHints routine replaces (or sets if the property does not exist)
the size hints for the WM_NORMAL_HINTS property on the specied window.
The property is stored with a type of WM_SIZE_HINTS and a format of 32.
void XSetWMNormalHints (dpy, w, hints)
Display *dpy;
Window w;
XSizeHints *hints;

The XSetWMNormalHints routine can generate BadWindow, BadAtom, or
BadValue errors.
Changes and New Features in Version 4.0 C–37

The XSetWMNormalHints routine supersedes XSetNormalHints.
C.2.1.2.6

Window Manager Protocols List – The following routines obtain and specify
the list of window manager protocols in which the client is willing to participate:
The XGetWMProtocols routine returns the list of atoms stored in the
WM_PROTOCOLS property on the specied window. These atoms describe
window manager protocols in which the owner of this window is willing to
participate. If the property exists, is of type ATOM, is of format 32, and the atom
WM_PROTOCOLS can be interned, protocols_return is set to a list that the caller
may release with XFree of atoms, and count_return is set to the number of
elements in the list. Upon successful completion, a nonzero status is returned;
otherwise, a status of 0 is returned and neither of the return values is set.
Status XGetWMProtocols (dpy, w, protocols_return, count_return)
Display *dpy;
Window w;
Atom **protocols_return;
int *count_return;

The XGetWMProtocols routine can generate BadWindow, BadAtom, or
BadValue errors.
The XSetWMProtocols routine replaces (or sets if the property does not exist)
the WM_PROTOCOLS property on the specied window to contain the list of atoms
given by protocols. The property is stored with a type of ATOM and a format of 32.
If the routine is unable to intern the atom WM_PROTOCOLS, a status of 0 will be
returned. Otherwise, a nonzero status is returned.
Status XSetWMProtocols (dpy, w, protocols, count)
Display *dpy;
Window w;
Atom *protocols;
int count;

The XSetWMProtocols routines can generate BadWindow, BadAtom, BadValue,
or BadAlloc errors.
C.2.1.2.7

Window Manager Colormap Windows List – The following routines are used
to obtain and specify the list of windows whose colormaps should be installed by the
window manager:
The XGetWMColormapWindow routine returns the list of window identiers
stored in the WM_COLORMAP_WINDOWS property on the specied window.
These windows indicate the colormaps that the window manager may need to install
for this window. If the property exists, is of type WINDOW, is of format 32, and the
atom WM_COLORMAP_WINDOWS can be interned, windows_return is set to a list
that the caller may release with XFree of window identiers, and count_return is
set to the number of elements in the list. Upon successful completion, a nonzero
status is returned; otherwise, a status of 0 is returned and neither of the return values
is set.
Status XGetWMColormapWindow (dpy, w, windows_return, count_return)
Display *dpy;
Window w;
Window **windows_return;
int *count_return;

C–38 Changes and New Features in Version 4.0

The XGetWMColormapWindows routine can generate BadWindow, BadAtom, or
BadValue errors.
The XSetWMColormapWindows routine replaces (or sets if the property does not
exist) the WM_COLORMAP_WINDOWS property on the specied window to
contain the list of windows given by colormap_windows. The property is stored with
a type of WINDOW and a format of 32. If the routine is unable to intern the atom
WM_COLORMAP_WINDOWS, a status of 0 will be returned; otherwise, a nonzero
status is returned.
Status XSetWMColormapWindows (dpy, w, colormap_windows, count)
Display *dpy;
Window w;
Windows *colormap_windows;
int count;

The XSetWMProtocols routine can generate BadAlloc, BadAtom, and
BadWindow errors.
C.2.1.2.8

Standard Colormaps – The following functions are used to obtain and specify
standard colormaps:
The XGetRGBColormaps routine returns the RGB colormap denitions stored in
the indicated property on the specied window. If the property exists, is of type
RGB_COLOR_MAP, is of format 32, and is long enough to contain a colormap
denition (if the visualid is not present, the default visual for the screen on which the
window is located is assumed; if the killid is not present, None, indicating that the
resources cannot be released, is assumed), space for the returned colormaps is
allocated and is lled in. Upon successful completion, a nonzero status is returned;
otherwise, none of the elds are set and a status of 0 is returned. It is the caller’s
responsibility to honor the Inter-Client Communications Conventions Manual
(ICCCM) restriction that only RGB_DEFAULT_MAP contain more than one
denition.
Status XGetRGBColormaps (dpy, w, stdcmap_return, count_return, property)
Display *dpy;
Window w;
XStandardColormap **stdcmap_return;
int *count_return;
Atom property;

The XGetRGBColormaps routine can generate BadAtom and BadWindow errors.
The XGetRGBColormaps routine supersedes XGetStandardColormap.
The XSetRGBColormaps routine replaces (or sets if the property does not exist)
the RGB colormap denition in the indicated property on the specied window. The
property is stored with a type of RGB_COLOR_MAP and a format of 32. It is the
caller’s responsibility to honor the ICCCM’s restriction that only
RGB_DEFAULT_MAP contain more than one denition.
void XSetRGBColormaps (dpy, w, stdcmap, count, property)
Display *dpy;
Window w;
XStandardColormap *stdcmap;
int count;
Atom property;

Changes and New Features in Version 4.0 C–39

The XSetRGBColormaps routine can generate BadAlloc, BadAtom, and
BadWindow errors.
The XSetRGBColormaps routine supersedes XSetStandardColormap.
C.2.1.2.9

Convenience Routines – In ULTRIX/UWS Version 2.2, the following routines
were added to provide convenient interfaces to new property formats:
The XSetWMProperties routine provides a convenient interface for setting the
essential properties on the specied window for communicating with other clients
(particularly window and session managers).
void XSetWMProperties (dpy, w, window_name, icon_name, argv, argc,
normal_hints, wm_hints)
Display *dpy;
/* user’s display connection */
Window w;
/* window to decorate */
XTextProperty *window_name;
/* name of application */
XTextProperty *icon_name;
/* name string for icon */
char **argv;
/* command line */
int argc;
/* size of command line */
XSize_hints *normal_hints;
/* size hints in normal state */
XWM_hints *wm_hints;
/* misc. window manager hints */

If window_name is nonnull, the WM_NAME property is set using XSetWMName.
If icon_name is nonnull, WM_ICON_NAME is set using XSetWMIconName.
If argv is nonnull, WM_COMMAND is set using XSetCommand (note that an
argc of 0 is allowed to indicate a zero-length command). The hostname of this
machine is stored using XSetWMClientMachine. If normal_hints is
nonnull, WM_NORMAL_HINTS is set using XSetWMNormalHints. If
wm_hints is nonnull, WM_HINTS is set using XSetWMHints.
The XSetWMProperties routine can return any of errors generated by the
routines mentioned above.
The XSetWMProperties routine supersedes XSetStandardProperties.
The XWMGeometry routine combines geometry information (given in the format
used by XParseGeometry) specied by you and by the calling program with size
hints (usually the ones to be stored in WM_NORMAL_HINTS) and returns the
location, size, and gravity (NorthWestGravity, NorthEastGravity,
SouthEastGravity or SouthWestGravity) describing the window. If the
base size is not set in the hints structure, then the minimum size will be used if set;
otherwise, a base size of 0 is assumed. If no minimum size is set in the hints
structure, the base size is used.
int XWMGeometry (dpy, screen, user_geom, def_geom, bwidth, hints,
x_return, y_return, width_return, height_return,
gravity_return)
Display *dpy;
/* user’s display connection */
int screen;
/* screen queried */
char *user_geom;
/* user provided geometry spec */
char *def_geom;
/* default window geometry spec */
unsigned int bwidth;
/* border width */
XSizeHints *hints;
/* usually WM_NORMAL_HINTS */
int *x_return, *y_return;
/* set location if successful */
int *width_return, *height_return; /* set size if successful */
int *gravity_return;
/* coordinates’ gravity */

Invalid geometry specications may cause a width or height of 0 to be returned. The
caller may pass the address of the hints win_gravity eld as
gravity_return to update the hints directly.
C–40 Changes and New Features in Version 4.0

The XWMGeometry routine supersedes XGeometry.
C.2.1.3

Obsolete Functions in Xlib – The following functions in Xlib became obsolete
starting in ULTRIX/UWS Version 2.2:
XGeometry
XGetNormalHints
XGetSizeHints
XGetStandardColormap
XGetZoomHints
XSetNormalHints
XSetSizeHints
XSetStandardColormap
XSetStandardProperties
XSetZoomHints

C.2.1.4

Obsolete Constants in Xutil.h – The following constants became obsolete in
Xutil.h starting in ULTRIX/UWS Version 2.2:
DontCareState
InactiveState
ZoomState

C.2.1.5

Superseded by WMGeometry
Superseded by GetWMNormalHints
Superseded by GetWMSizeHints
Superseded by GetRGBColormaps
No longer supported by ICCCM
Superseded by SetWMNormalHints
Superseded by SetWMSizeHints
Superseded by SetRGBColormaps
Superseded by SetWMProperties
No longer supported by ICCCM

No longer supported by ICCCM
No longer supported by ICCCM
No longer supported by ICCCM

Convenience Functions – The following functions were marked in
ULTRIX/UWS Version 2.2 as convenience functions for window and icon names
encoded as STRING properties:
XFetchName
XGetIconName
XSetIconName
XStoreName

Generalized by XGetWMName
Generalized by XGetWMIconName
Generalized by XSetWMIconName
Generalized by XSetWMName

C.2.1.6

Changes to Xlib Interfaces – In ULTRIX/UWS Version 2.2, the following
changes were made to the Xlib interfaces that correct omissions in previous releases.

C.2.1.6.1

Getting Screen Number from Screen Pointer – A member containing the
number of the screen has been added to the opaque Screen structure and a macro
and function have been added to access the index. This allows applications that use
screen pointers instead of indices with routines that take screen numbers. Xlib tends
to use screen numbers rather than screen pointers.
int ScreenNumberOfScreen(scr)
int XScreenNumberOfScreen(scr)
Screen *scr;

The ScreenNumberOfScreen macro and XScreenNumberOfScreen
functio n return the screen index corresponding to the indicated screen pointer.

Changes and New Features in Version 4.0 C–41

C.2.1.6.2

Pixmap Formats – To provide an interface to the Pixmap Format information
returned in the connection setup block, the following structure analogous to
XGCValues has been added to Xlib.h:
typedef struct {
int depth;
int bits_per_pixel;
int scanline_pad;
} XPixmapFormatValues;

In addition, the following function for retrieving the information has also been added:
XPixmapFormatValues *XListPixmapFormats (dpy, count)
Display *dpy;
int *count;

The XListPixmapFormats function returns an array of
XPixmapFormatValues structures describing the types of Z format images
supported by the display. The argument count is set to the number of pixmap
formats supported by the display. The storage for the returned structures can be
released by calling XFree. If insufcient memory is available, NULL is returned.
C.2.1.6.3

Returning Old Error Handlers – To make nesting of error handlers possible,
the declarations of the routines XSetErrorHandler and
XSetIOErrorHandler return the previous handler, are as follows:
int (*XSetErrorHandler (handler))()
int (*XSetIOErrorHandler (handler))()
int (*handler)();

C.2.1.6.4

Getting XGCValues from a GC – To make it easier to reuse GCs, a new
routine was added in the ULTRIX/UWS Version 2.2 release for retrieving the
contents of a GC that the XGCValues structure can set.
Status XGetGCValues (dpy, gc, valuemask, values_return)
Display *dpy;
GC gc;
unsigned long valuemask;
XGCValues *values_return;

The XGetGCValues function returns the elds indicated by valuemask of the
specied graphics context. The clip mask and dash list (represented by the
GCClipMask and GCDashList bits in valuemask) can not be requested. If valuemask
contains a valid set of GC mask bits and no errors occur, the requested elds in
values_return are set and a nonzero status is returned; otherwise, a status of 0
is returned. Valid GC mask bits are:
GCArcMode
GCCapStyle
GCClipYOrigin
GCFillRule
GCFont
GCFunction
GCJoinStyle
GCLineWidth
GCStipple
GCTile
GCTileStipYOrigin

GCBackground
GCClipXOrigin
GCDashOffset
GCFillStyle
GCForeground
GCGraphicsExposures
GCLineStyle
GCPlaneMask
GCSubwindowMode
GCTileStipXOrigin

C–42 Changes and New Features in Version 4.0

C.2.2

DECwindows Toolkit Programming
This section describes new and changed features pertaining to the DECwindows
programming toolkit since ULTRIX/UWS Version 2.1:

C.2.2.1

New Widgets and Gadgets – This section describes the widgets and gadgets that
have been added to the Toolkit since ULTRIX/UWS Version 2.1.
Pulldown Menu Entry Gadgets
Color Mix Widget
Compound String Text Widget

C.2.2.1.1

Pulldown Menu Entry Gadgets – In ULTRIX/UWS Version 4.0, the
DECwindows Toolkit provides pull-down menu entry gadgets and widgets. As with
gadget variants of other widgets, they should be used unless the gadget does not
provide enough exibility.
The DwtPullDownMenuEntryCreate routine has been added to the Toolkit.
This routine creates a pull-down menu entry gadget. See the Guide to the XUI
Toolkit: C Language Binding manual for a description of this routine.

C.2.2.1.2

Color Mix Widget – In ULTRIX/UWS Version 2.2, the color mixing widget was
added. This widget enables end users to dene colors. It is a pop-up dialog box
with two components: a color display region and a color mixing tool. The default
color display region contains two color tiles: one presents the original color, and the
other shows the new color as it is modied by the user. The default mixing tool
follows the RGB colormodel.
Both the color display region and mixing tool can be replaced with custom
components by the application. The color values returned to the application are
standard X Window System, Version 11, RGB values (0 through 65,535). Note that
the color mixing widget is simply a mechanism for applications to query users for a
color. It does not allocate resources (color cells) for the application.
The color mix widget includes the following routines:
DwtColorMixCreate - Creates the color mix widget (low-level create only).
DwtColorMixGetNewColor - Gets the current RGB values of new color.
DwtColorMixSetNewColor - Sets the current RGB values of new color.

C.2.2.1.2

Hue Lightness Saturation (HLS) Colormodel – In ULTRIX/UWS Version
4.0, the Hue Lightness Saturation colormodel was added. The XUI color mix widget
now supports both the HLS and RGB colormodels. This functionality is built into
the color mixer. No code changes are required and the same X11 RGB callback
information is returned regardless of which colormodel is used. The impact is only
to end users. A new option menu presents the colormodel choices HLS and RGB
giving users the ability to switch between models at will.

Changes and New Features in Version 4.0 C–43

There are 11 new resources (10 of which are labels):
DwtNcolorModel colormodel currently being used. Choices are
DwtColorModelHLS (the default), and DwtColorModelRGB.
Note
It is assumed that applications probably will only set this resource
before the widget is managed (if at all), and will allow users to
switch colormodels themselves using the option menu.
DwtNhueLabel label of hue scale widget. The default is "Hue:".
DwtNlightLabel label of lightness scale widget. The default is
"Lightness:".
DwtNsatLabel label of saturation scale widget. The default is "Saturation:".
DwtNblackLabel label for zero end of lightness scale widget. The default is
"Black".
DwtNwhiteLabel label for 100% end of lightness scale widget. The default
is "White".
DwtNgrayLabel label for zero end of saturation scale widget. The default is
"Gray".
DwtNfullLabel label for 100% end of saturation scale widget. The default
is "Full".
DwtNoptionLabel label for colormodel option menu. The default is "Color
Model: ".
DwtNhlsLabel label for colormodel option menu HLS option. The default is
"HLS".
DwtNrgbLabel label for colormodel option menu RGB option. The default
is "RGB".
C.2.2.1.3

Colormix Red, Green and Blue Labels – There is a problem in the toolkit
color mixing widget such that the Red, Green, and Blue labels cannot be modied
after widget creation. You must specify label changes during widget creation.

C.2.2.1.4

Attached Dialog Box Widget – The attached Dialog Box widget does not retain
offsets after widget creation. The values returned by XtGetValues are zero,
instead of what they were when the widgets were created.

C.2.2.1.5

Compound String Text Widget – The compound string text widget supports
the same routines and attributes as SText, except that it uses compound strings
instead of C null-terminated strings.
The compound string text widget includes the following routines:
CS TEXT - Create cs text widget (high-level call).
CS TEXT CREATE - Create cs text widget (low-level call).
CS TEXT CLEAR SELECTION - Clears global selection.

C–44 Changes and New Features in Version 4.0

CS TEXT GET EDITABLE - Obtains current permission state.
CS TEXT GET MAX LENGTH - Obtains maximum allowable text length.
CS TEXT GET SELECTION - Retrieves global selection.
CS TEXT GET STRING - Retrieves current text.
CS TEXT REPLACE - Replaces a portion of the current text.
CS TEXT SET EDITABLE - Sets permission state.
CS TEXT SET MAX LENGTH - Sets maximum allowable text length.
CS TEXT SET SELECTION - Makes specied text current global selection.
CS TEXT SET STRING - Sets text.
C.2.2.2

New Routines – This section describes additions to the following routines that
have been added since ULTRIX/UWS Version 2.1:
Low Level Routines
Compound String Routines
Cut and Paste Routines
Convenience Routines

C.2.2.2.1

New Resources for Low-Level Toolkit Routines – The XUI Toolkit
provided new resources for low-level routines in the ULTRIX/UWS Version 2.2
release. The following table lists some of those new widget attributes and
corresponding resource names, and provides descriptions of the attributes and their
associated default values.
FILE SELECTION WIDGET
Attribute:
Resource Name:
Description:
Default Value:
Attribute:
Resource Name:
Description:
Default Value:

file_to_extern_proc
DwtNfileToExternProc
Converts native internal le names to custom
external le names displayed to the user.
NULL
file_to_intern_proc
DwtNfileToInternProc
Converts custom external le names,
displayed to the user, to native internal
le names.
NULL

Default Value:

mask_to_extern_proc
DwtNmaskToExternProc
Converts native internal directory masks to
custom directory masks displayed to the user.
NULL

Attribute:
Resource Name:
Description:

mask_to_intern_proc
DwtNmaskToInternProc
Converts custom external directory masks,

Attribute:
Resource Name:
Description:

Changes and New Features in Version 4.0 C–45

FILE SELECTION WIDGET

Default Value:

displayed to the user, to internal
directory masks.
NULL

HELP WIDGET
Attribute:
Resource Name:
Description:
Default Value:

gototopic_label
DwtNgototopicLabel
The label for the Go To Topic menu entry.
"Go To Topic"

Attribute:
Resource Name:
Description:

gobacktopic_label
DwtNgobacktopicLabel
The label for the Go Back push button in
the help widget window.
"Go Back"

Default Value:
Attribute:
Resource Name:
Description:
Default Value:
Attribute:
Resource Name:
Description:
Default Value:
Attribute:
Resource Name:
Description:
Default Value:
Attribute:
Resource Name:
Description:
Default Value:

visittopic_label
DwtNvisittopicLabel
Label for the Visit Topic menu item in
the View pull-down menu.
"Visit Topic"
close_label
DwtNcloseLabel
Label for the Exit push button in
the help widget window.
"Exit"
helphelp
DwtNhelphelpLabel
The label for the Overview menu item in the Using
Help pull-down menu.
"Overview"
helpontitle_label
DwtNhelpontitleLabel
Label for the help widget title bar used in
conjunction with the applications name.
"Help On"

Default Value:

help_acknowledge_label
DwtNhelpAcknowledgeLabel
Label for the Acknowledge push button in
the error message box.
"Acknowledge"

Attribute:
Resource Name:
Description:
Default Value:

help_on_help_title
DwtNhelpOnHelpTitle
Label for the title bar in the Help-on-Help widget.
"Using Help"

Attribute:
Resource Name:
Description:

C–46 Changes and New Features in Version 4.0

HELP WIDGET
Attribute:
Resource Name:
Description:
Default Value:
Attribute:
Resource Name:
Description:
Default Value:

cache_help_library
DwtNcacheHelpLibrary
A Boolean attribute that species whether
or not the text of the help library is
stored in the help widget’s cache memory.
FALSE
map_callback
DwtNmapCallback
The callback routine or routines called when
the help widget is mapped.
NULL

MENU WIDGET
Attribute:
Resource Name:
Description:

Default Value:
Attribute:
Resource Name:
Description:
Default Value:

change_vis_ atts
DwtNchangeVisAtts
A Boolean specifying whether a menu
can modify the visual attributes of its children.
When this attribute is FALSE, a menu widget
cannot make changes to its children.
TRUE
menu_extend_last_row
DwtNmenuExtendLastRow
The width of the menu (for vertical menus) or the
height of the menu (for horizontal menus).
TRUE

POP-UP DIALOG WIDGET
Attribute:
Resource Name:
Description:
Default Value:

auto_unrealize
DwtNautoUnrealize
A Boolean that species whether a dialog box
unrealizes itself when it is unmanaged.
FALSE

MESSAGE BOX WIDGET
Attribute:
Resource Name:
Description:
Default Value:

second_label
DwtNsecondLabel
The text for a secondary label.
NULL

Attribute:
Description:
Default Value:

label_alignment
The alignment of the primary label.
AlignmentCenter

Changes and New Features in Version 4.0 C–47

MESSAGE BOX WIDGET
AlignmentBegin
AlignmentEnd
Attribute:
Resource Name:
Description:
Default Value:

second_label_alignment
DwtNsecondLabelAlignment
The alignment of the secondary label.
DwtAlignmentBeginning

Attribute:
Resource Name:
Description:
Default Value:

icon_pixmap
DwtNiconPixmap
The pixmap used for the icon.
"!" for caution box icon
"*" for message box icon
wait cursor (watch) for work box icon

PUSH BUTTON WIDGET
insensitive_pixmap
DwtNinsensitivePixmap
The pixmap used when the push button is set to
insensitive. Applies only if push button label
is specied as pixmap.
NULL

Attribute:
Resource Name:
Description:
Default Value:

SCROLL BAR CREATE WIDGET
show_arrows
DwtNshowArrows
A Boolean indicating whether or not scroll
bar has stepping arrows.
TRUE

Attribute:
Resource Name:
Description:
Default Value:

STEXT WIDGET
Attribute:
Resource Name:
Description:
Default Value:

user_data
DwtNuserData
Any private data to be associated with the
textwidget. The XUI Toolkit does not interpret this data.
NULL

TOGGLE BUTTON WIDGET
Attribute:
Resource Name:
Description:

C–48 Changes and New Features in Version 4.0

insensitive_pixmap_on
DwtNinsensitivePixmap
Displayed when the button state is TRUE

TOGGLE BUTTON WIDGET
Default Value:
Attribute:
Resource Name:
Description:
Default Value:

C.2.2.2.2

and widget is insensitive.
NULL
insensitive_pixmap_off
DwtNinsensitivePixmapOff
Displayed when button state is FALSE
and widget is insensitive.
NULL

New Compound String Routines – The following new compound string
routines have been added since the ULTRIX/UWS Version 2.1 release:
STRING INIT CONTEXT -- Initializes the context required by GET NEXT
SEGMENT
STRING FREE CONTEXT -- Frees a compound string context structure
For more information see the section Performance of Init Get Segment in these
release notes.

C.2.2.2.3

Cut and Paste Routines – The following Cut and Paste routines have been
added since ULTRIX/UWS Version 2.1:
Start Copy to Clipboard -- Identical to Begin Copy to Clipboard, except that the
time stamp of the event is included.
Start Copy from Clipboard -- Indicates that the application is ready to start
copying data from the clipboard.
End Copy from Clipboard -- Indicates that the application has completed
copying data from the clipboard.
Clipboard Register Format -- Registers the length of the data for formats not
specied by the Inter-Client Communications Conventions Manual (ICCCM).

C.2.2.2.4

New Convenience Routines – The following convenience routines have been
added since ULTRIX/UWS Version 2.1:
ACTIVATE WIDGET CONVENIENCE ROUTINE -- Provides a mechanism
for applications to activate a UWS Toolkit pushbutton. This is useful in cases
where buttons present actions also available in menus. For example, in
DECwindows mail you can reply to a message either by activating the REPLY
button or by selecting the Reply menu item. If the menu item is selected,
ACTIVATE WIDGET can be used to ash the REPLY button presenting a
more consistent UI.
GET USER DATA CONVENIENCE ROUTINE -- Provides a short-cut for
retrieving the widget user data eld. Returns the user data associated with the
widget.

Changes and New Features in Version 4.0 C–49

C.2.2.3

Bug Fixes and Other Changes – This subsection describes problem xes and
miscellaneous changes to the XUI Toolkit since the ULTRIX/UWS Version 2.1
release.

C.2.2.3.1

Changes to Existing Convenience Routines – The UWS Version of the
XUI Toolkit corrected the binding for number children DwtNumChildren.

C.2.2.3.2

DEC Windows Resource Manager (DRM) – Both the Intrinsics and the
DECwindows resource manager (DRM) can now be initialized as many times as
required by the application. This is an extension of the MIT R3 Intrinsics and should
not be used by applications that want to remain R3 compatible.

C.2.2.3.3

Internal Format of Compound Strings – Beginning with the ULTRIX/UWS
Version 2.2 release, Compound strings are stored in CDA format. This change is
transparent to applications that treat compound strings as opaque entities.

C.2.2.3.4

Performance of INIT GET Segment – In the ULTRIX/UWS Version 2.2
release, the change to compound strings signicantly decreased the performance of
the DwtInitGetSegment when used to fetch multiple segments from a
compound string. Because of this, the STRING INIT CONTEXT and STRING
FREE CONTEXT routines were added and should be used for better performance.

C.2.2.3.5

dwtappli.h – Two erroneous declarations are contained in dwtappli.h They
are:
DwtGetSlider
DwtSetSlider

C.2.2.3.6

Font Units – In this release, the XUI Toolkit uses the AVERAGE_WIDTH and
RESOLUTION_Y properties.

C.2.2.3.7

Destroy Callback – Unlike other toolkit callbacks, the destroy callback returns
only two arguments: widget id and tag. The reason argument is NULL.
Applications therefore should avoid setting destroy callbacks to call general callback
routines (handling numerous actions such as activate, arm, disarm, and so forth) that
depend on a reason argument.

C.2.2.3.8

Listbox Dynamic Sizing – The proper way to change listbox width is
through the SetValues attribute. listbox does not support dynamic dimension
changes. Therefore, placing a listbox inside an attached dialog box, with
attachments to both the left and right side of the attached dialog box, may lead to the
items selectable area not spanning the full width of the listbox. This is because
when attached dialog boxes change size they dynamically resize their children.
Also note that the proper way to change the listbox height is through the
ItemsCount attribute. Modifying the height attribute will not change the number
of visible items. For example, doubling the listbox height but not modifying the
ItemsCount attribute results in a listbox only half full of items, with the
remaining area left blank.

C–50 Changes and New Features in Version 4.0

There is a problem in listbox such that if resize is Fixed (FALSE) and a wide
item is added in the visible region of the listbox the List Box menu does not
grow and the horizontal scroll bar fails to get updated. This behavior only occurs if
the added item is visible. A workaround is always to add the item in the nonvisible
region of listbox. For example:
(1) DwtListBoxSetPos (top)
(2) DwtListBoxAdditem (do not specify a position, it will be added at
the bottom of the list - non-visible area)

C.2.2.3.9

Help Widget Listbox – Under certain circumstances, the help widget’s listbox
selectable area does not span the entire width of the widget. However, items may
still be selected by clicking the mouse button on the item text.

C.2.2.3.10 DECwindows Toolkit and the MIT R3 Intrinsics. – The version number of
the Intrinsics supplied as part of the DECwindows kit does not match the MIT R3
Intrinsics. The MIT R3 Intrinsics version number is 11003, while the DECwindows
Intrinsics are 7001.
The DECwindows XtNameToWidget routine does not conform to the MIT R3
Intrinsics. The specication states that the rst component of the names parameter is
matched against the children of the passed reference widget; the implementation
matches the rst component of the names parameter against the reference widget, not
the children. Thus to use the DECwindows version, add the name of the reference
widget to the beginning of the name list.
C.2.2.3.11 Selection Pushbuttons – Setting the OK and CANCEL pushbutton labels to
NULL or to empty strings does not remove the pushbuttons as stated in the
documentation; instead, it results in blank labels.
C.2.2.3.12 Using Accelerators on Pushbutton and Togglebutton Gadgets – Only
the rst gadget child of a widget parent may have a "#" operator, such as #override,
in its button accelerator specication. All gadget button accelerators of a widget
parent will have the same # operator as the rst gadget child.
C.2.2.3.13 Generating Widget/Gadget Exposes – Generating widget/gadget exposes by
calling SetValues without visual changes is not supported.
In previous versions of the XUI toolkit, some widgets incorrectly redisplayed after
SetValues whenever the arglist contained a visual eld, even if that eld did not
change. For example, an application could initiate a pushbutton redraw by passing
an unchanged borderwidth in SetValues if the widget was a child of a dialog box
using font units.
Applications can redraw widgets either by changing a visual eld or by calling
XClearArea on the widget window.
C.2.2.3.14 Toggle Button Set State Routine – A problem in the toolkit
DwtToggleButtonSetState affects toggle buttons with on/off pixmaps. If the
widget has not been realized, SetState correctly updates the toggle button value
but not the on/off pixmap. When realized, they display the wrong pixmap.

Changes and New Features in Version 4.0 C–51

A simple workaround is to use the SetValues mechanism instead setting
DwtNvalue to TRUE. This correctly updates the pixmap as well as the toggle
button value regardless of whether the widget is realized.
C.2.2.3.15 Toggle Button Gadgets – Toggle button gadgets no longer redraw themselves
after applications change their value through SetValues (although their values do
change). This problem only affected visible toggle button gadgets modied through
SetValues.
A problem introduced in the MIT R3 intrinsics that prevented applications that read
in user’s X defaults les from opening more than one display has been xed.
C.2.2.3.16 Dialog Box Race Condition – XUI Toolkit dialog boxes perform an
XGrabKey on the TAB key so that they can synchronously transfer focus to the next
child within the Dialog Box. If a Dialog Box receives a TAB key while the Toolkit is
ltering events (for example, while another modal dialog box is up), the original
Dialog Box does not see the TAB event and never calls XAllowEvents to
unfreeze the keyboard. If this happens, you must exit the application and restart it to
unfreeze the keyboard.
C.2.2.3.17 Right to Left Compound Strings – Right to left compound strings are
displayed left to right in dialog box title resource.
C.2.2.3.18 DwtResolvePartOffsets Function – This function is obsolete. The
-DNOT_VMS_V1 ag has been removed. Any programs that depend on this
function must be aware that the ag is no longer valid. All interfaces (both VAX and
RISC) should act as if the ag were set at all times.
C.2.2.3.19 Delete Sub-Menu – If an application destroys the original sub-menu and
immediately updates the eld with the new menu using SetValues, the sub-menu
eld is updated with the new widget id. However, because destroy is a two-phase
process, the menu does not know its original sub-menu has been destroyed and when
the second phase executes (later in the Mainloop), the parent menu is informed that
its sub-menu has been destroyed and sets that eld to NULL even though it now
points to the new widget. This can result in an "X - NOT A VALID Window" error.
The workaround is to return to Mainloop and wait a sufcient period of time to
allow the second phase of destroy to complete ( and menu to clear its sub-menu eld)
before updating using SetValues.
C.2.2.3.20 Size of Core – Do not count on the size of the core part record as a xed size;
obtain the size at widget initialization time. This will prevent you from having to
recompile programs whenever a new version of UWS is released. Indices and part
offsets are used to access elds in your own widgets. For further information, see the
Guide to the XUI Toolkit: C Language Binding.

C–52 Changes and New Features in Version 4.0

C.2.2.3.21 DwtWidget.h File – The following problem in ULTRIX/UWS Version 2.2 was
xed in ULTRIX/UWS Version 4.0:
When compiling a program that includes DwtWidget.h, or
DECDwtWidgetProg.h that is linked to DwtWidget.h, fatal syntax errors were
reported due to the typedef Object not being declared.
C.2.2.3.22 Option Menus – Option menus are documented as being able to have a parent
that is a shell widget. However, only a menu shell widget can be the parent of an
option menu widget. If you attempt to parent an option menu widget with any other
type of shell widget an empty, transparent window will be displayed with no menu
button available.
To create an application that only uses one option menu make the option menu a
child of a popup menu. The following code fragment provides an example of this:
include 
.
.
.
Widget toplevel, popup, options;
Widget buttons[3];
int num_args;
Arg args[1];
toplevel = XtInitialize("example", "Example",
(XrmOptionDescRec *) NULL,
0, &argc, argv);
popup = DwtMenuPopupCreate(toplevel, "Popup1", (ArgList) NULL, 0);
buttons[0] = DwtPushButtonGadgetCreate(popup, "a", (ArgList) NULL, 0);
buttons[1] = DwtPushButtonGadgetCreate(popup, "b", (ArgList) NULL, 0);
buttons[2] = DwtPushButtonGadgetCreate(popup, "c", (ArgList) NULL, 0);
XtManageChildren(buttons, 3);
num_args = 0;
XtSetArg(args[num_args], DwtNsubMenuId, popup);
num_args++;
options = DwtOptionMenuCreate(popup, "Options", args, num_args);
XtManageChild(options);
XtRealizeWidget(toplevel);
.
.
.

C.2.2.3.23 Popup Dialog Boxes – A problem in the intrinsics allows popup dialog boxes
with no icon button, DwtNnoIconify set TRUE, to be initially created iconied
DwtNiconic TRUE. The "iconied" popup does not have an icon box and cannot
be popped up. Additionally, attempting operations such as SetInputFocus on
the popup will lead to an access violation.
C.2.2.3.24 New and Omitted Widget Arguments – Several widget arguments have been
added since ULTRIX/UWS Version 2.2:
attached_dialog_box:
caution_box:
color_mix:

direction_r_to_l
direction_r_to_l
hue_label, light_label, sat_label, black_label,
white_label, gray_label, full_label, option_label,

Changes and New Features in Version 4.0 C–53

command_window:
dialog_box:
menu_bar:
popup_menu:
pulldown_menu:
radio_box:
work_area_menu:
list_box:
file_selection:
selection:
help_box:
main_window:
message_box:
option_menu:
popup_attached_db:
popup_dialog_box:
scale:
scroll_bar:
scroll_window:
separator:
window:
work_in_progress_box:

direction_r_to_l
direction_r_to_l
menu_extend_last_row, direction_r_to_l
menu_extend_last_row, direction_r_to_l
menu_extend_last_row, direction_r_to_l
menu_extend_last_row, direction_r_to_l
menu_extend_last_row, direction_r_to_l
spacing, direction_r_to_l
auto_unmanage, auto_unrealize, direction_r_to_l
auto_unmanage, auto_unrealize, direction_r_to_l
direction_r_to_l
direction_r_to_l
direction_r_to_l
direction_r_to_l
direction_r_to_l
direction_r_to_l
direction_r_to_l
direction_r_to_l
direction_r_to_l
direction_r_to_l
direction_r_to_l
direction_r_to_l

C.2.2.3.25 Constraint Attributes – Constraint attributes are no longer allowed on
nonconstraint widgets.
C.2.2.3.26

Large Value Tables – Large value tables now t into DRM context buffers.

C.2.2.3.27 DEC_KANJI or DEC_HANZI as the Default Character Set – Setting
DEC_KANJI or DEC_HANZI as the default character set no longer incorrectly
generates the error "support for this character set may be removed in a future
release."
C.2.2.3.28 Large Pixmaps – Pixmaps that are larger than the size of offscreen memory
cause the server to send an error and cause the client to crash.
To avoid this problem, always allocate pixmaps that are no larger than the available
offscreen memory.
C.2.2.4

User Interface Language (UIL) – The following is a list of the new UIL features
since ULTRIX/UWS Version 2.1:
Continuous image support (color and gray scale)
Multiple callback procedures per reason
Direct support of constraint arguments
Integer tables (for use as tag values in callbacks)
Support for CS Text widget
Support for XBITMAPFILE function (reads X bitmap les from disk)
Support for new compound string routines
Support for multiple segment compound string creation using either the
specied or the default character set

C–54 Changes and New Features in Version 4.0

The following arguments are not directly available in the UIL compiler for
ULTRIX/UWS Version 4.1:
Argument

Data Type

Default Value

Valid for These Objects

auto_unmanage

Boolean

True

auto_unrealize

Boolean

False

direction_r_to_l
grab_key_syms

integer
translation_table

menu_extend_last_row

Boolean

DwtDirectionRightDown
Default translation table
syntax
True

selection
le_selection
selection
le_selection
color_mix
color_mix

no_resize
take_focus

Boolean
Boolean

True
True (modal); False
(modeless)

menu_bar
popup_menu
pulldown menu
radio_box
work_area_menu
color_mix
color_mix

To set one of these arguments in a UIL module, use the ARGUMENT function to
dene the argument. See the Guide to the XUI User Interface Language Compiler
for information on the ARGUMENT function.

C.2.3

DECwindows Applications Changes
This section discusses changes to DECwindows applications in ULTRIX/UWS
Version 2.2 and ULTRIX/UWS Version 4.0.

C.2.3.1

CDA Viewer - dxvdoc – The menus for the dxvdoc program have changed
slightly to conform better with other UWS applications. The Set-Up... menu item
has moved from the File menu to the Customize menu and has been renamed
Options.... It provides the same functionality as the old Set-Up... menu item, allowing
you to change processing options.
The dxvdoc program now starts up in the center rather than the upper left of the
screen.

C.2.3.2

Calculator - dxcalc – All text in dxcalc is now in UIL les and the following
features have been added since ULTRIX/UWS Version 2.1:
Context-sensitive help for each key
Support for standard Edit menu accelerators
A Customize Menu with standard, savable features

Changes and New Features in Version 4.0 C–55

C.2.3.3

Cardfiler - dxcardfiler – All text in dxcardfiler is now in UIL les and the
following features have been added since ULTRIX/UWS Version 2.1:
Context-sensitive help for each key
Support for standard menu accelerators
A Customize Menu with standard, savable features

C.2.3.4

Clock - dxclock – All text in dxclock is now in UIL les and the following
features have been added since ULTRIX/UWS Version 2.1:
Context-sensitive help for each key
A Customize Menu with standard, savable features
A display that uses less screen space. The new arrangement allows for use of a
smaller window while keeping all the information displayed and readable.
A 24-hour time display

C.2.3.5

Notepad - dxnotepad – Since ULTRIX/UWS Version 2.2, the dxnotepad
application has the following new features:
Edit
Search
Navigate
Customize
In addition, please note the following change to the UNDO command:
Selecting all the text in dxnotepad, indenting plus or minus four spaces and
selecting UNDO causes all the text to disappear until you select UNDO a
second time or select REDO once. Thus, it appears that UNDO loses all your
text when it really does not.

C.2.3.6

PostScript Previewer - dxpsview – The following are changes to dxpsview
since ULTRIX/UWS Version 2.1:
Skipping from page to page is faster on structured les. This works only if the
les are structured and commented correctly. If you are unable to preview a le,
try toggling the Use Comments option under the Options menu.
You now can specify whether dxpsview draws images directly to the screen
or stores images until an entire page is ready to display using the Watch
Progress option from the Options menu.
You can change the scale by which images are magnied or shrunk. To change
the scale, chose the Sheet Selection option from the Option menu. See the
"Scale Factors Larger than 2.0" note in Chapter 4 of these release notes for an
important caveat regarding scale factor usage.

C–56 Changes and New Features in Version 4.0

C.2.3.7

Puzzle - dxpuzzle – All text in dxpuzzle is now in UIL les and the following
features have been added since ULTRIX/UWS Version 2.1:
Context-sensitive help is available for each key
A Customize Menu with standard, savable features

C.2.3.8

Session Manager - dxsession – The following notes describe changes to the
Session Manager since ULTRIX/UWS Version 2.1:

C.2.3.8.1

Customize Language – The Customize Language dialog box now allows you to
specify a language (for example, English US, French) for subsequent applications.
The language list also includes a selected entitled Default that indicates a default set
of user interface specications that are installation dependent. These are used if
language-specic specications are unavailable.
If you select a language, the dxsession program sets the xnlLanguage
resource for all applications, and records this setting in the user’s .Xdefaults le.
It also sets the $LANG environment variable. If you use the Default option, the
xnlLanguage resource is removed from the root property and the user’s
.Xdefaults le, and the $LANG environment variable is set to the empty string.
Note that the dxsession’s use of the $LANG variable is inconsistent with the
naming conventions used by NLS (Native Language System). This inconsistent use
of the $LANG variable may cause XPG3 conforming internationalized applications
to behave in an unexpected fashion. For example, applications will not be able to
change their locale based on the dxsession’s setting of $LANG. See the
lang(5int) reference pages for a description of supported languages.
Note
For a language to take effect, it must be installed and licensed.

C.2.3.8.2

Customize Window – You can now change the window manager through the
Customize Window dialog box that will change the resource value for
sm.windowManagerName in your .Xdefaults le.
If you decide to use the default window manager, the session manager will use the
value of the sm.windowManagerName_default resource. Typically, this is
set only in the app-defaults le for the session manager. If no such value exists, the
default window manager value default is /usr/bin/dxwm.

C.2.3.8.3

New Per-View Resources – There are some new per-view resources; they are
iconFormat and titleFormat. The value of these are printf-like format
strings with the following conventions:
%v is replaced by the view name
%d is replaced by the current directory

To specify a eld width, replace % with %n, where n is the eld width to be used. If
you specify a negative number, the eld will be left-justied. Otherwise, the eld
will be right-justied, which is the default. To specify a literal newline, use \n. To
specify a literal tab, use \t.
The iconMaxDirSegments and titleMaxDirSegments resources provide
further control over the contents of icons and title bars. They specify how many

Changes and New Features in Version 4.0 C–57

segments of the current directory appear in the place of %d in a format string. If
iconMaxDirSegments is 2, then the last two segments of the path will appear in
the icon.
Views can now be customized individually by name. The resource name of the
background color of the startup view is *Startup.background. The resource
names of the icon format and title bar format resources are also at this level. The
names of these resources of the startup view are:
*Startup.iconFormat
*Startup.titleFormat
*Startup.iconMaxDirSegments
*Startup.titleMaxDirSegments

New views that are not named have the name Unnamed. Changing the name of a
view does not cause new resources to be applied to it. A renamed view retains the
resources of its original name.
C.2.3.9

C.2.4

User Executive - dxue – Since ULTRIX/UWS Version 2.1, the dxue application
has changed some resources and some of its widget hierarchy. Its class name has
changed to Executive and its instance name is argv[0], which is the name by
which it is invoked. Any resources supplied in your .Xdefaults le that are
specic to dxue must change to use this new name.

Font Format Changes
When you upgrade from ULTRIX/UWS Version 4.0 to ULTRIX/UWS Version 4.1,
no changes to screen fonts are required. Any layered application that runs under
ULTRIX/UWS Version 2.1 and bundles screen fonts might be affected by changes in
the ULTRIX/UWS Version 4.0 and ULTRIX/UWS Version 4.1 font formats and le
extensions. If the application bundled the BDF form of the fonts, you can upgrade
them, using the dxfc command (or the dxfc3d command for a Xgb server).
However, if the application bundled only the compiled form of the fonts, you cannot
automatically upgrade the fonts to use with ULTRIX/UWS Version 4.0 or
ULTRIX/UWS Version 4.1

C.2.5

Conformance to Standards
While Xlib is ICCCM compliant, the Intrinsics are not. Clients that subclass the Shell
widget must recompile in order to work with Xlib Release 4.

C–58 Changes and New Features in Version 4.0

RISC-VAX System Differences and Porting
Hints

D

This appendix discusses the following topics:
The differences between RISC-based and VAX-based systems
Some hints for porting software to RISC-based systems

D.1 Differences Between RISC-Based and VAX-Based Systems
The following components differ on RISC-based and VAX-based systems:
Executable images
Executable images on RISC-based systems are larger and therefore take up
more disk space than their counterparts on VAX-based systems. This is due to
the instruction set of the RISC architecture. Typically, images on RISC-based
systems are 30 to 40 percent larger than on VAX-based systems.
Shared Memory Segments (SMS)
The attach points for Shared Memory Segments (SMS) in the virtual address
space of a process on RISC-based systems are different than on VAX-based
systems. Shared Memory Segments are attached by means of the shmat
system call and, by default, fall between the text segment and the private data
segment. This means that the problem of private data segment expansion (by
using the sbrk or brk system call) being restricted by an attached SMS does
not exist on RISC-based systems. Programs should let the system default the
attach address, whenever possible. For more details, see shmop(2) in the
ULTRIX Reference Pages.
Attach points for Shared Memory Segments (SMS) in the virtual address space
of a process must be aligned on 4-Mbyte boundaries. Shared Memory
Segments are attached by means of the shmat system call. Processes that
permit the system to default the attach points will nd that they are properly
aligned. Processes that explicitly attach to a given address will nd that the
attach will succeed only if the given address is 4-Mbyte aligned or if the
SHM_RND ag is set. Note that the latter case will cause the address to round
down to a 4-Mbyte boundary. This restriction is imposed by hardware
constraints. Programs should let the system default the attach address whenever
possible. For more details, see shmop(2) in the ULTRIX Reference Pages.
Floating
There is no oating or double in the kernel. The FPU is assigned to a process,
and the kernel manipulates scalars only. The fixpoint.h header le
contains macros to convert an integer to its oating point format. User
programs can use this.

Float format
VAX processors typically use D-oat oating-point format. RISC processors
use IEEE oating-point format (close to G-oat). Thus, on RISC-based
systems, there is greater range of oating numbers but less precision (fewer
decimal places).
Programs that need the extra precision of D-oat and programs that need to be
cognizant of the low-level format of oating point numbers will have problems.
This will be true in RISC-based systems FORTRAN or any language that does
oating-point work.
In addition, there is no equivalent to D-oat or H-oat.
Programs that incorrectly treat a oat as a double, or vice versa, sometimes
work on a VAX system in spite of the error. On a RISC system, this
programming error causes incorrect results.
Page size
The page size on a RISC-based system is 4 Kbytes (4*1024) in contrast to 1
Kbyte on VAX-based system. Programs should use the getpagesize system
call or include vmmac.h and use the macros for page size manipulations. For
further information, see getpagesize(2) in the ULTRIX Reference Pages.
prof
The RISC version of prof is functionally different from the VAX version. For
further information, see prof(1) in the ULTRIX Reference Pages.
ranlib
The ranlib command organizes archives of object les to allow faster
linking. While this command still exists for RISC-based systems, it is a shell
script to pass a ag to the ar librarian, which then performs the same function.
lint
Differences in the messages printed and the conditions checked exist between
the RISC and VAX versions of lint. To build lint libraries, use one of the
following:
% lint –C libname myprog.c (VAX-based systems)
% lint –c myprog.c (RISC-based systems)

Note that the command line on RISC-based systems uses System V syntax.
nlist
Because RISC-based systems use Common Object File Format (COFF) for
object les, this structure is different from that used on VAX-based systems.
Programs with hard-coded initializations that assume the VAX nlist structure
will have to be changed.
Common Object File Format (COFF)
RISC-based systems use the Common Object File Format (COFF) in its object
les and load modules. Therefore, the following utilities that make use of the
object le format have been replaced by their new versions: nm (has more
symbol types), dbx, as, ld, ar, size, and strip.

D–2 RISC-VAX System Differences and Porting Hints

nroff
The nroff command with the -h (tab) option produces different output on
RISC systems than on VAX systems.
The version of nroff on RISC-based systems uses ASCII device driver tables
in contrast to the version on VAX systems, which uses device driver tables in
the format of binary VAX object les.
Note that this applies to nroff only. It does not apply to troff, as was
previously documented. The troff command does not use device driver
tables to format output.
a.out.h
The a.out.h header le does not include exec.h on RISC-based systems, as
it does on VAX-based systems.
brk
On VAX-based systems, the brk program’s virtual address space begins at
zero. Text starts at zero and runs to &etext. Data then follows to &edata. The
bss segment then follows to &end, and the rest is available for growth.
On RISC-based systems, the virtual address space begins at 0x00400000. Text
starts at 0x00400000 and runs to &etext. There is a gap to 0x10000000, where
the data begins. Data runs to &edata, is followed by bss to &end, and the rest is
available for growth.
The major implication here is the interaction between brk and getrlimit.
On VAX-based systems, doing a getrlimit for RLIMIT_DATA was a
possible approximation for the maximum value that could be passed to brk.
On RISC-based systems, the correct value is as follows:
"the value returned by a getrlimit" +0x10000000;

On VAX-based systems, the correct value is as follows:
"the value returned by a getrlimit"+&etext.

One solution is to use sbrk, not brk.
cc
The RISC C compiler is different from the VAX C compiler. The following
differences should be noted:
–

This version of cc does not support the const keyword.

–

Pointers in RISC-based systems are unsigned; in VAX-based systems they
are signed.

–

On RISC-based systems, you cannot dereference NULL pointers; includes
arg to strlen.

–

RISC-based systems do not support asm in any form.

–

The RISC C compiler does not allow ‘‘old-fashioned initialization.’’ An
example of this, which worked on VAX-based systems but gave a
warning, and does not work on RISC-based systems is ‘‘int i 0;’’.

–

The varargs function is different on RISC-based systems. Any program
that tries to walk the argument list by taking the address of an argument
and incrementing it will not be successful, especially for double precision
RISC-VAX System Differences and Porting Hints D–3

arguments. Programs using the macros in varargs.h will work.
Compiling with the –varargs option on RISC-based systems will
attempt to detect nonportable code.
–

The setjmp/longjmp buffer is larger on RISC-based systems.
Programs with a hard-coded 10 word buffer will fail; programs that
correctly include < setjmp.h > and declare a ’jmp_buf’ will work
correctly.

–

The RISC C compiler has boundary alignment rules. User programs
should only see this as a performance issue (the kernel does x-ups). It is
better, however, to align double-words, words, and half-words on natural
boundaries. See uac(1) in the ULTRIX Reference Pages.

–

Pointers cannot be used as the variable on switch statements on RISCbased systems.

–

The RISC C compiler will not allow the same .c or .o le to be listed
twice. It will generate doubly dened symbol errors; the VAX C compiler
( cc ) allowed this.

–

On VAX-based systems, the cc –L option on the command line
collectively affects –l options. On RISC-based systems, the cc –L
option is seen strictly left to right. Therefore, if –L is supposed to affect
–l, the –L must come rst.

–

On RISC-based systems, global symbols do not have an extra leading
underscore. This mostly affects assembler programmers.

–

The –R option (read-only text) is not supported.

–

The –Md or –Mg options are not needed on RISC-based systems; the
hardware has only one double precision format.

–

RISC-based systems dene a macro (for example, LANGUAGE_C) for
the preprocessor that makes it possible to write multilingual include les.

–

For cpp predened symbols, ultrix, unix, and bsd4_2 are dened
on both RISC-based and VAX-based systems. On RISC-based systems,
the equivalent predened symbol of vax is mips and MIPSEL and
host_mips are also dened.

–

The following RISC C compiler options are not supported on VAX-based
systems: –P (preprocess, produce .i); –Wphase,opt; RISC-based
systems recognize the environment variables ROOTDIR and TMPDIR;
–cpp and –nocpp (most useful for languages other than C); –G (relevant
only to RISC architecture), –j, –k, and –ko (relevant only to RISC-based
systems compiler design); –std (warn nonstd usage; vcc has –V
standard=portable); –volatile and –varargs (modify
compiler behavior in certain areas); –V (print versions); and –EB and –EL.
For more information, see the Guide to Languages and Programming.

Proling on VAX-based systems has two levels that can be selected with the –p
and –pg options. Proling on RISC-based systems also has two levels that can
be selected with the –p option or by running the post-processor pixie
program. The RISC C compiler is not affected by either option; all work is
done in the assembler or loader (or postprocessor).
One level of optimization exists on VAX-based systems, which is off by default
and enabled with the –O option. Five levels of optimization exist on RISC-

D–4 RISC-VAX System Differences and Porting Hints

based systems. By default, the second level is used, which can be disabled with
the –O0 option. The –O or –O2 options invoke something comparable to
VAX-level optimization. There are rather more complex processes that can be
used with –O3 and –O4 options. RISC-based systems also have the –Olimit
option that allows optimization to be bypassed with overly complicated code
sections.
On both RISC-based and VAX-based systems, the –t and –B options specify
passes and paths; however, the pass names for –t differ (there are more on
RISC-based systems), and the semantics of –B belong to the –h option. The
–B option is used to specify a command sufx instead. RISC-based systems
also have the –H, –K, and –# options that are designed for compiler
development work.
Like optimization, RISC-based systems offer four levels for debugging
information (controlled by the –g option). VAX-based systems have only two
(on and off).
If a global data item is used as if it were a code location (for example, if a data
structure has the same name as a system call), an error message similar to the
following will be printed at load time:
/lib/libc.a(gethostent.o): jump relocation out-of-range, bad object
file produced, can’t jump from 0x4197a0 to 0x10008198 (stat)

If this happens, you should change the name of the data structure (in this
example, it was named stat).

D.2 Hints for Porting Software to RISC-Based Systems
The following are provided as helpful hints for porting software to a RISC-based
system:
NULL pointers
On VAX-based systems, a NULL pointer can be dereferenced because page zero
of user process space is mapped and valid. On RISC-based systems, however,
you cannot dereference a NULL pointer without a segmentation violation. The
pointer must be tested for non-NULL rst.
Alignment
On VAX-based systems, short words (2 bytes) or long words (4 bytes) can be
accessed on any byte boundary. On RISC-based systems, however, references
must be ‘‘naturally aligned.’’ Short words (2 bytes) must be on an even byte
boundary. Long words (4 bytes) must be accessed on a boundary evenly
divisible by 4.
Unaligned accesses in user programs cause a ‘‘trap’’ into the kernel (the system
attempts to ‘‘xup’’ the unaligned access). If the system is able to accomplish
the xup, a message is printed to the controlling tty (if there is one) stating at
what pc the alignment error was encountered. If the system is not able to xup
the unaligned access, the process will be terminated with a SIGBUS (bus error)
signal. Doing the xups for the program does have a performance impact on
the program. For further information, see uac(1) in the ULTRIX Reference
Pages.

RISC-VAX System Differences and Porting Hints D–5

Signed and unsigned pointers
On VAX-based systems, if a pointer type function returns a –1 as an error
status, the comparison "if (ptr < 0)" can be made, because pointers are signed
values.
On RISC-based systems, if a pointer type function returns a –1 as an error
status, the comparison "if (ptr < 0)" will never be true, because pointers are
unsigned values. (Thus, the compiler removes the code for the comparison.)
The error returns are not caught. The comparison could be "if ((int)ptr < 0)" or
"if (ptr == (char *) –1)".
Variable number of arguments
On RISC-based systems, a set of macros exists to declare formal parameters and
access arguments in a list of a variable number of arguments. For further
information, see the /usr/include/varargs.h or /sys/h/varargs.h
les.

D–6 RISC-VAX System Differences and Porting Hints

How to Order Additional Documentation

Technical Support
If you need help deciding which documentation best meets your needs, call 800-343-4040 before placing
your electronic, telephone, or direct mail order.

Electronic Orders
To place an order at the Electronic Store, dial 800-234-1998 using a 1200- or 2400-baud modem from
anywhere in the USA, Canada, or Puerto Rico. If you need assistance using the Electronic Store, call
800-DIGITAL (800-344-4825).

Telephone and Direct Mail Orders
Your Location

Call

Contact

Continental USA,
Alaska, or Hawaii

800-DIGITAL

Digital Equipment Corporation
P.O. Box CS2008
Nashua, New Hampshire 03061

Puerto Rico

809-754-7575

Local Digital Subsidiary

Canada

800-267-6215

Digital Equipment of Canada
Attn: DECdirect Operations KAO2/2
P.O. Box 13000
100 Herzberg Road
Kanata, Ontario, Canada K2K 2A6

International

—————

Local Digital subsidiary or
approved distributor

Internal*

—————

SSB Order Processing - WMO/E15
or
Software Supply Business
Digital Equipment Corporation
Westminster, Massachusetts 01473

* For internal orders, you must submit an Internal Software Order Form (EN-01740-07).

Reader’s Comments

ULTRIX/UWS
Release Notes
AA-ME85D-TE

Please use this postage-paid form to comment on this manual. If you require a written reply to a software
problem and are eligible to receive one under Software Performance Report (SPR) service, submit your
comments on an SPR form.
Thank you for your assistance.

Please rate this manual:

Excellent

Good

Fair

Accuracy (software works as manual says)
Completeness (enough information)
Clarity (easy to understand)
Organization (structure of subject matter)
Figures (useful)
Examples (useful)
Index (ability to nd topic)
Page layout (easy to nd information)
What would you like to see more/less of?

What do you like best about this manual?

What do you like least about this manual?

Please list errors you have found in this manual:
Page
Description

Additional comments or suggestions to improve this manual:

What version of the software described by this manual are you using?
Name/Title
Company
Mailing Address

Dept.
Date
Email

Phone

Poor

Do Not Tear ! Fold Here and Tape

dig i tal

TM
NO POSTAGE
NECESSARY
IF MAILED IN THE
UNITED STATES

BUSINESS REPLY MAIL
FIRST−CLASS MAIL PERMIT NO. 33 MAYNARD MA
POSTAGE WILL BE PAID BY ADDRESSEE

DIGITAL EQUIPMENT CORPORATION
OPEN SOFTWARE PUBLICATIONS MANAGER
ZKO3−2/Z04
110 SPIT BROOK ROAD
NASHUA NH 03062−9987

Do Not Tear ! Fold Here

Cut
Along
Dotted
Line

Reader’s Comments

ULTRIX/UWS
Release Notes
AA-ME85D-TE

Please use this postage-paid form to comment on this manual. If you require a written reply to a software
problem and are eligible to receive one under Software Performance Report (SPR) service, submit your
comments on an SPR form.
Thank you for your assistance.

Please rate this manual:

Excellent

Good

Fair

Accuracy (software works as manual says)
Completeness (enough information)
Clarity (easy to understand)
Organization (structure of subject matter)
Figures (useful)
Examples (useful)
Index (ability to nd topic)
Page layout (easy to nd information)
What would you like to see more/less of?

What do you like best about this manual?

What do you like least about this manual?

Please list errors you have found in this manual:
Page
Description

Additional comments or suggestions to improve this manual:

What version of the software described by this manual are you using?
Name/Title
Company
Mailing Address

Dept.
Date
Email

Phone

Poor

Do Not Tear ! Fold Here and Tape

dig i tal

TM
NO POSTAGE
NECESSARY
IF MAILED IN THE
UNITED STATES

BUSINESS REPLY MAIL
FIRST−CLASS MAIL PERMIT NO. 33 MAYNARD MA
POSTAGE WILL BE PAID BY ADDRESSEE

DIGITAL EQUIPMENT CORPORATION
OPEN SOFTWARE PUBLICATIONS MANAGER
ZKO3−2/Z04
110 SPIT BROOK ROAD
NASHUA NH 03062−9987

Do Not Tear ! Fold Here

Cut
Along
Dotted
Line



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.3
Linearized                      : No
Page Count                      : 276
Title                           : 
Author                          : 
Subject                         : 
Apple Keywords                  : 
Creator                         : Preview
Producer                        : Mac OS X 10.5.8 Quartz PDFContext
Create Date                     : 2010:06:11 04:26:12Z
Modify Date                     : 2010:06:11 04:26:12Z
EXIF Metadata provided by EXIF.tools

Navigation menu