» Sign in
  


##############################################################################

                        Release Notes for HP-UX 11.0

                              HP 9000 Computers

                              Edition 3 (E1298)
                         Product Number: B3782-90716
                           Printed in United States

                   Copyright 1998 Hewlett-Packard Company

Legal Notices are at the end of the file.

----------------------------------------------------------------------------

Searching for Information or Topics

The following "search strings" will help you locate chapters, main headings,
and subheadings.
----------------------------------------------------------------------------

String      Action Taken by Searching on the String
----------------------------------------------------------------------------

##########  Takes you to a chapter beginning.

@@@@@@@@@@  Takes you to a first level heading.

**********  Takes you to a second level heading.

==========  Takes you to a third level heading.

#VALUE!

::::::::::  Takes you to a fifth level heading.

----------------------------------------------------------------------------

##############################################################################
Table of Contents

Chapter 1: Overview of Release Notes for HP-UX 11.0

1.1 Where Should I Begin?
1.2 What's In This Chapter?
1.3 What's In The Remaining Chapters?
1.4 Where Else Can I Find 10.x and 11.0 Versions of the Release Notes?
1.5 The Purpose of HP-UX Release Notes
1.6 Where to Find Information on Transitioning to 64-bit HP-UX
1.7 Other Sources of Information on HP-UX Releases
1.7.1 README Documents
1.7.2 White Papers on the HP-UX 11.0 Media
1.7.3 Manpages
1.7.4 The HP-UX Documentation Set
1.7.5 Instant Information
1.7.6 The World Wide Web
1.8 Changes to Supported Workstations and Workstation Software for 11.0
1.8.1 Workstation Systems Supported for 11.0
1.8.2 Workstations Obsolete as of 11.0
1.8.3 Bundled Workstation Software Supported for 11.0
1.8.4 Bundled Workstation Software Not Supported for 11.0
1.8.5 I/0 Support
1.8.5.1 Supported:
1.8.5.2 NOT Supported:
1.8.6 Peripherals
1.8.6.1 Supported:
1.8.6.2 NOT Supported:

Chapter 2: Major Changes and Features of HP-UX 11.0

2.1 What's In This Chapter?
2.2 Introduction of the 64-bit Operating System
2.2.1 Benefits of 64-bit Applications
2.2.2 HP-UX Compilers
2.2.3 Transition Tools
2.2.4 HP C/HP-UX
2.2.4.1 New or Changed Options
2.2.4.2 New Preprocessor Macros
2.2.4.3 New Features
2.2.4.4 New Pragmas
2.2.4.5 New Libraries and Loader
2.2.4.6 New Defaults
2.2.5 strtold(3C)
2.2.5.1 Alternatives
2.2.6 Cross-Platform Development
2.2.6.1 Compiler Options for Cross Development
2.2.7 Compatibility with Previous Releases
2.2.8 HP-UX Developer's Kit for Java(tm) and the HP-UX Virtual Machines
(with JIT)
2.3 Asian System Environment (ASE)
2.3.1 JSE (The Japanese System Environment)
2.3.2 KSE (The Korean System Environment)
2.3.3 SSE (The Simplified-Chinese System Environment)
2.3.4 TSE (The Traditional-Chinese System Environment)
2.4 Unified Binary Implementation for HP-UX 11.0
2.4.1 64-bit Capable Enterprise Server Systems Supported for 11.0
2.4.2 32-bit and 64-bit Kernel Support
2.4.3 Kernel Interaction
2.4.4 Identifying System Model Information
2.4.5 Command Name: uname(1) and uname(2)
2.4.6 Command Name: model(1) and model(4)
2.4.7 Command Name: machid(1)
2.5 V-Class Server V2200
2.6 DCE Bundled Client (libdce, libcma)
2.7 Using Oracle 7.3.3 (HP-UX 10.20 Build)
2.7.1 Applications Built on HP-UX 10.30 Using libcma.1
2.8 NCS/NCK Product Obsolescence
2.9 HP-IB and Fiber Link Support Discontinued
2.10 Dynamically Loadable Kernel Modules (DLKM)
2.10.1 Kernel Configuration
2.10.1.1 New User Level Commands
2.10.1.1.1 kmadmin(1M)
2.10.1.1.2 kminstall(1M)
2.10.1.1.3 kmsystem(1M)
2.10.1.1.4 kmtune(1M)
2.10.1.1.5 kmmodreg(1M)
2.10.1.1.6 kmupdate(1M)
2.10.1.2 Modified User Level Commands
2.10.1.2.1 config(1M)
2.10.1.2.2 mk_kernel(1M)
2.10.1.3 New Files and Directories
2.10.1.4 Modified Master File
2.10.1.5 Additional Details
2.11 Performance-Optimized Page Sizing (POPS)
2.11.1 Performance
2.12 New APIs and Commands
2.12.1 libgen
2.12.2 fmt(1) and infocmp(1M)
2.13 Recovery Tools For 11.0
2.13.1 System Recovery
2.13.1.1 make_recovery(1M)
2.13.1.2 save_config(1M)
2.13.1.3 check_recovery(1M)
2.13.1.4 Impact
2.14 CDE & Motif
2.14.1 HP Common Desktop Environment (HP CDE 2.1)
2.14.1.1 Changes for 11.0
2.14.1.2 User Documentation
2.14.1.3 Impact
2.14.1.4 hpterm Discontinued After 11.0
2.14.1.5 Configuring a Host as a Font Server or Font Client
2.14.2 X/Motif Libraries
2.14.2.1 Changes to X Window System
2.14.2.2 Changes to Motif
2.14.2.3 Impact
2.14.2.4 Compatibility
2.15 Software Distributor (SD-UX)
2.15.1 Important Information for HP-UX Updates
2.15.2 Features and Changes
2.15.3 Summary of Changes
2.15.3.1 Source Depot Auditing
2.15.3.2 Patch Management
2.15.3.3 Multi-Stream Attributes
2.15.3.3.1 Product Specification File (PSF) Changes
2.15.4 swinstall Command Line User Interface (CLUI) Changes
2.15.5 swlist Command Line User Interface (CLUI) Changes
2.15.6 swmodify Command Line User Interface (CLUI) Changes
2.15.7 swcopy Command Line User Interface (CLUI) Changes
2.15.8 Interactive User Interface Changes
2.15.8.1 Other Changes
2.15.8.2 Impact
2.15.8.3 Compatibility
2.15.8.4 Performance
2.15.8.5 Known Problem
2.16 HP Distributed Print Service (HPDPS)
2.17 Fast Memory Dump
2.17.1 Configuring Dumps
2.17.2 Memory Dump Disk Space Requirements
2.17.3 Obsolescence
2.18 LicensePower/iFOR
2.18.1 Summary of Changes
2.18.1.1 For Systems Updating from HP-UX 10.30
2.18.1.2 For Systems Updating from HP-UX 10.20 or 10.10
2.18.2 Impact
2.18.3 Compatibility
2.18.3.1 License Database Conversion from Version 3 to Version 4
2.18.3.2 Version 2 Client Incompatibility
2.19 SAM
2.19.1 Summary of Changes
2.19.2 Kernel Configuration
2.19.3 64-Bit Systems
2.20 Lazy Swap
2.20.1 Lazy Swap Reservation
2.20.1.1 Programming Impact
2.20.2 SWLZY Flag
2.20.3 mmap(2) MAP_NORESERVE
2.21 Uniprocessor Emulation, Driver Binding and Per-Processor Callouts
2.21.1 Impact
2.21.2 Performance
2.21.3 Configuration
2.21.4 Obsolescence
2.22 POSIX 1003.1b Asynchronous Input/Output
2.22.1 Asynchronous I/O Control Block (aiocb)
2.22.1.1 Summary of Change
2.22.1.2 Impact
2.23 Miscellaneous Changes
2.23.1 maxusers Parameter
2.23.2 SO_LINGER Sockets
2.23.3 Erroneous SD-UX Error Message
2.23.4 OnLineJFS Not Available on Workstations

Chapter 3: Compatibility

3.1 Compatibility Statement for HP-UX 11.0
3.1.1 Binary Compatibility
3.1.2 Source Compatibility
3.1.3 Data Compatibility
3.1.4 Upgrade Compatibility
3.1.5 Relocatable Binary Compatibility
3.1.5.1 HP-UX 10.x Applications on HP-UX 11.0
3.1.5.2 Moving a 9.x Application to 11.0
3.1.6 Compatibility Support and Status
3.1.7 Compatibility of Non-HP Products
3.1.8 Obsolescence
3.1.9 Link Restrictions
3.1.10 Using New Features
3.1.11 Compatibility Exceptions in 11.0
3.1.11.1 Binary Compatibility Exceptions
3.1.11.2 Source Compatibility Exceptions
3.1.11.3 Relocatable Object Code Compatibility Exceptions
3.1.11.4 Makefile Changes (When Recompiling)
3.2 Internet Services (ARPA Services) APIs in libc
3.2.1 Internet Services API Binary Compatibility Statement
3.2.2 Differences Between 10.20 and 11.0
3.2.2.1 Removal of YP APIs
3.2.2.2 Dynamic Name Service Switch
3.2.2.3 Internet Services Mix-n-Match Statement
3.3 Non-Portable and Non-Compatible APIs
3.3.1 Context APIs
3.3.2 nlist
3.3.3 pstat
3.3.4 ptrace/ttrace
3.3.5 [sig]setjmp/longjmp
3.3.6 sigstack/sigspace
3.3.7 uname(1)
3.4 Shared Library Versioning in 10.30
3.4.1 Do I Need to Version?
3.4.2 I Need to Version. Now What Do I Do?
3.4.3 Core HP-UX Versioned Libraries (HP-UX 10.30)
3.4.4 Optional Product Libraries
3.4.5 libc Versioning Information
3.5 Deprecation and Obsolescence of APIs
3.5.1 Terms and Definitions
3.5.2 Architecture-Related Changes
3.5.2.1 ARG_MAX
3.5.2.2 PAGE_SIZE and PAGESIZE
3.5.2.3 Diskless Cluster Interfaces
3.5.2.4 Structured Directory Format (SDF) Commands
3.5.2.5 tcio(1)
3.5.2.6 libdvio.a
3.5.3 Miscellaneous Clean-up of Unsupported Features
3.5.3.1 Pre-Processor Macros
3.5.3.2 Header Files
3.5.3.2.1 a.exec.h
3.5.3.2.2 alarm.h
3.5.3.2.3 audnetd.h
3.5.3.2.4 dumprestor.h
3.5.3.2.5 initptr.h
3.5.3.2.6 nan.h
3.5.3.2.7 ndir.h
3.5.3.2.8 stab.h
3.5.3.2.9 tp_defs.h
3.5.4 Interface Replacement
3.5.5 Standards
3.5.5.1 Deprecated by Standards
3.5.5.2 Withdrawn Commands
3.5.6 HP-UX Legacy Interfaces
3.5.6.1 nl_tools_16 interfaces
3.5.6.2 strtold
3.5.6.3 Curses
3.5.7 Secure Password File Access Interfaces
3.5.7.1 libPW.a
3.5.7.2 Block Mode Terminal Interfaces
3.5.7.3 PRIV_SETRUGID Feature of setgid
3.5.7.4 Signal Mask
3.5.7.5 getpw
3.5.7.6 cue
3.5.7.7 Switch/Over Commands
3.5.7.8 backup(1M)
3.5.7.9 Threads
3.5.7.10 HP-UX Proprietary _unlocked Interfaces:
3.5.8 Internationalization
3.5.8.1 Miscellaneous NLS Interfaces and Commands
3.5.8.2 strftime formats
3.5.8.3 HP-proprietary Locale Names
3.5.8.4 Miscellaneous Locales
3.5.8.5 Right-to-Left Processing
3.5.8.6 Codesets
3.5.8.7 libportnls.a
3.5.9 Compatibility with Other Platforms
3.5.9.1 Device Control
3.5.9.2 libBSD.a
3.5.9.3 File System Descriptor File Entry
3.5.9.4 sadp
3.5.9.5 setup
3.5.9.6 getdirentries
3.5.9.7 vfsmount
3.5.9.8 ftime
3.6 ONC/NFS Binary Compatibility
3.6.1 API Binary Compatibility
3.6.2 The NFS Subsystem
3.6.2.1 Header Files
3.6.2.2 vfsmount() system calls
3.6.2.3 stat(), fstat(), statfs(), fstatfs() or fstatvfs() system calls
3.6.3 NFS Compatibility Matrix - Mixing NFS PV2 and PV3
3.6.4 The Secure RPC subsystem
3.6.4.1 portmap Obsolescence
3.6.4.2 exportent() Obsolescence
3.6.4.3 End-User and ISV Porting Options

Chapter 4: 64-Bit Capable Implementation

4.1 64-bit Address Space Layout
4.1.1 Summary of Change
4.1.1.1 Impact
4.1.1.2 Backwards Compatibility Issues
4.2 64-bit Programs and Large Files
4.3 32-bit Libraries Compilable/Linkable on 64-bit HP-UX
4.4 32-bit Libraries Not Compilable/Linkable on 64-bit HP-UX
4.5 Libraries Compilable/Linkable Only on 64-bit HP-UX
4.6 Where to Find the HP-UX 64-bit Porting and Transition Guide
4.7 Interfaces with Limitations in 64-bit
4.7.1 struct regex_t
4.8 Commands
4.8.1 adb debugger for 64-bit
4.8.2 getconf(1)
4.8.3 localedef(1M)
4.9 System Calls
4.9.1 pstat(2)
4.9.2 sysconf(2)
4.9.2.1 _SC_KERNEL_BITS
4.9.2.2 _SC_HW_32_64_CAPABLE
4.9.2.3 _SC_CPU_CHIP_TYPE
4.9.2.4 _SC_XBS5...
4.10 Library Interface Changes to Support 64-Bit
4.10.1 libc
4.10.1.1 asctime(3C)
4.10.1.2 confstr(3C)
4.10.1.2.1 _CS_KERNEL_BITS
4.10.1.2.2 _CS_HW_CPU_SUPP_BITS
4.10.1.2.3 _CS_MACHINE_MODEL
4.10.1.2.4 _CS_XBS5_ILP32_OFF32_CFLAGS
4.10.1.2.5 _CS_XBS5_ILP32_OFF32_LDFLAGS
4.10.1.2.6 _CS_XBS5_ILP32_OFF32_LIBS
4.10.1.2.7 _CS_XBS5_ILP32_OFF32_LINTFLAGS
4.10.1.2.8 _CS_XBS5_ILP32_OFFBIG_CFLAGS
4.10.1.2.9 _CS_XBS5_ILP32_OFFBIG_LDFLAGS
4.10.1.2.10 _CS_XBS5_ILP32_OFFBIG_LIBS
4.10.1.2.11 _CS_XBS5_ILP32_OFFBIG_LINTFLAGS
4.10.1.2.12 _CS_XBS5_LP64_OFF64_CFLAGS
4.10.1.2.13 _CS_XBS5_LP64_OFF64_LDFLAGS
4.10.1.2.14 _CS_XBS5_LP64_OFF64_LIBS
4.10.1.2.15 _CS_XBS5_LP64_OFF64_LINTFLAGS
4.10.1.2.16 _CS_XBS5_LPBIG_OFFBIG_CFLAGS
4.10.1.2.17 _CS_XBS5_LPBIG_OFFBIG_LDFLAGS
4.10.1.2.18 _CS_XBS5_LPBIG_OFFBIG_LIBS
4.10.1.2.19 _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS
4.10.1.3 ctime(3C)
4.10.1.4 getdate(3C)
4.10.1.5 gmtime(3C)
4.10.1.6 localtime(3C)
4.10.1.7 mktime(3C)
4.10.1.8 strptime(3C)
4.10.1.9 sleep(3C)
4.10.2 libpam
4.10.3 libpsm
4.10.4 libsec
4.10.5 nlist64.o
4.11 BSD Sockets: IP Addresses
4.11.1 Examples
4.11.2 Alternatives
4.12 Data Link Provider Interface (DLPI) to the Services of the Data Link
Layer
4.13 inetsvcs Libraries (libc.a, libc.2)
4.14 NetTL
4.15 STREAMS/UX
4.15.1 STREAMS Function Registration
4.15.2 STREAMS ioctl Commands (M_IOCTL, M_IOCDATA), stream.h
4.15.3 STREAMS Header File stream.h : toid_t
4.15.4 STREAMS Header File tihdr.h
4.15.5 STREAMS Header File xti.h
4.15.6 TLI/XTI (libnsl_s.sl, libnsl_s.a, libxti.sl, libxti.a - STREAMS)

Chapter 5: Major Changes for HP-UX 10.30

5.1 Archive Internationalized Applications
5.1.1 Example of sh using CCOPTS and LDOPTS
5.1.2 Example Using cc Line Only
5.2 Asian System Environment (ASE)
5.2.1 Features
5.2.1.1 ASE Common
5.2.1.2 JSE
5.2.1.3 KSE
5.2.1.4 SSE
5.2.2 Summary of Changes
5.2.2.1 ASE Common
5.2.2.2 JSE
5.2.2.3 KSE
5.2.3 Impact
5.2.3.1 JSE
5.2.3.2 KSE
5.2.4 Compatibility
5.2.4.1 JSE
5.2.5 Alternatives
5.2.5.1 JSE
5.2.5.2 KSE
5.3 Auditing
5.3.1 Impact
5.3.2 Performance
5.3.3 Alternatives/Compatibility
5.4 HP Common Desktop Runtime Environment (CDE 1.0)
5.4.1 Printing and Building Help Volumes in Multibyte Locales
5.4.2 CDE Migration Tool
5.4.3 Accessing Font Aliases for Remote CDE Sessions
5.4.4 Changing Languages Between Sessions in CDE
5.4.5 CDE Limitations
5.4.5.1 Addition to the "CDE Advanced User's and System Administrator's
Guide"
5.4.5.2 Addition to the CDE "Advanced User's and System Administrator's
Guide"
5.4.5.3 Addition of the "HP CDE Getting Started Guide - Addendum for HP-UX
10.30"
5.4.5.4 Correction to the "CDE Advanced User's and System Administrator's
Guide"
5.4.5.5 Correction to the "CDE ToolTalk Programmer's Guide"
5.4.6 Pluggable Authentication Modules (PAM)
5.4.6.1 Impact
5.4.6.2 Configuration
5.4.6.3 Known Problems
5.4.7 HP CDE and Single Logical Screen (SLS) Server
5.5 Command Header File Changes
5.5.1 Interface Names
5.5.1.1 curses.h
5.5.1.2 disktab.h
5.5.1.3 errno.h
5.5.1.4 hpsecurity.h
5.5.1.5 iconv.h
5.5.1.6 limits.h
5.5.1.7 ndir.h
5.5.1.8 prot.h
5.5.1.9 shadow.h
5.5.1.10 stddef.h
5.5.1.11 stdio.h
5.5.1.12 stdlib.h
5.5.1.13 strings.h
5.5.1.14 syslog.h
5.5.1.15 term.h
5.5.1.16 time.h
5.5.1.17 utmp.h
5.5.2 Obsoleted Headers
5.5.2.1 nl_ctype.h
5.5.2.2 Impact
5.5.2.2.1 Impact Due to Addition of or Changes in Function Prototypes
5.5.2.2.2 Impact Due to Changes in typedefs
5.5.2.3 Compatibility
5.6 DCE
5.7 DNS
5.7.1 Support for Negative Caching
5.7.2 Round-Robin
5.7.3 Additional "stub" Server Type Boot File Directive
5.7.4 "Slave" Directive Deprecated
5.7.5 Nonrecursive Servers
5.7.6 Query Logging
5.7.7 Inverse Query Pseudosupport
5.7.8 Name Server Tuning
5.7.9 Security Type Changes
5.7.9.1 Zone Transfer Restrictions
5.7.9.2 Bogus Name Server Control
5.7.10 Segmented Boot Files
5.7.11 "options no-round-robin"
5.7.12 Resource Records
5.7.13 Signals
5.7.14 Command Line Options
5.7.15 Compatibility
5.8 elm 2.4
5.8.1 MIME support (RFC 1521)
5.8.2 Attachment Support
5.8.3 JIS Support for Japanese email Messages
5.8.4 New Stand-Alone Utilities
5.8.5 Changes to Command Line Options
5.8.6 Changes in alias Options
5.8.7 Changes to the User Interface
5.8.7.1 Example
5.8.7.2 Example
5.8.7.3 Example
5.8.8 New C Option
5.8.9 Compatibility
5.8.10 Unsupported Variables
5.8.11 Configuration File Variables
5.8.11.1 New Variables
5.8.11.2 Renamed Variables
5.8.11.3 Obsoleted Variables
5.9 FTP, RCP, and RDIST
5.9.1 Compatibility for RCP
5.9.2 Compatibility for RDIST
5.10 GeoCustoms
5.10.1 Compatibility
5.10.2 Performance
5.10.3 Alternatives
5.10.4 Obsolescence
5.11 HP Distributed Print Service (HPDPS)
5.12 iFOR/LS
5.12.1 Summary of Change
5.12.2 Impact
5.12.3 Compatibility
5.13 Ignite-UX
5.13.1 Impact
5.13.2 Performance
5.13.3 Configuration
5.13.4 Size Requirement
5.14 Integrated Login
5.15 I/O Forwarding
5.15.1 Summary of Change
5.15.2 Impact/Performance
5.16 JFS as the Default File System
5.16.1 Impact
5.16.2 Performance
5.16.3 Compatibility
5.16.4 Alternatives
5.17 Kernel Threads (1x1)
5.17.1 Summary of Change
5.17.2 Impact
5.17.3 Performance
5.17.4 Compatibility
5.18 Login Requirement
5.19 LVM
5.19.1 Automatic Hot Sparing of PVs
5.19.2 LV Timeouts
5.19.3 Summary of Change
5.19.4 Impact
5.19.5 Compatibility
5.19.6 Configuration
5.20 NIO Fiber Link
5.21 PAM_AUTHTOK
5.22 Pluggable Authentication Modules (PAM)
5.22.1 Features
5.22.2 Impact
5.22.3 Configuration
5.22.4 Size Requirement
5.22.5 passwd
5.22.6 su.c
5.22.7 login.c
5.22.8 map_ids.c
5.22.9 Realtime (queued) signals - part of POSIX 1003.1b realtime extensions
5.22.9.1 Impact
5.22.9.2 Performance
5.22.9.3 Compatibility
5.23 POSIX Real-time Semaphores
5.24 Software Distributor (SD-UX)
5.24.1 Features
5.24.2 Auditing
5.24.3 Compatibility Attributes
5.24.3.1 Packager PSF Changes
5.24.3.2 swinstall Command Line Interface (CLUI) Changes
5.24.3.3 swlist Command Line Interface (CLUI) Changes
5.24.3.4 swmodify Command Line Interface (CLUI) Changes
5.24.3.5 swcopy Command Line Interface (CLUI) Changes
5.24.3.6 Interactive User Interface Changes
5.24.4 Interactive swlist
5.24.5 Additional Changes
5.24.6 Impact
5.24.7 Compatibility
5.24.8 Performance
5.25 Support for Dates Beyond the Year 2000
5.25.1 Patches for Earlier Systems
5.25.1.1 Patches for 10.20
5.25.1.2 Patches for 10.10
5.25.1.3 Patches for 10.01
5.26 System Compatibility
5.27 System Configuration
5.28 Technical Print Service
5.28.1 Impact
5.28.2 Performance
5.28.3 Size Requirement
5.28.4 Machines Affected
5.29 Trusted Table Synchronization Daemon (ttsyncd)
5.30 Upgrade Tool

Chapter 6: Other Operating System and Subsystem Changes

6.1 Netscape Fasttrack 2.01 and Navigator Gold 3.01
6.2 Curses
6.2.1 Features of X/Open Curses
6.2.2 Features of HP Curses
6.2.3 Summary of Change to X/Open Curses
6.2.4 Summary of Change for HP Curses
6.2.5 Impact on X/Open Curses: Compliance to X/Open Curses, Issue 4, Version
2
6.2.5.1 API prototype declarations
6.2.5.2 X/Open Enhanced Curses features
6.2.6 Curses-Color
6.2.6.1 Effect on Applications
6.2.7 Curses Documentation
6.3 Distributed Computing Environment (DCE)
6.3.1 Functionality
6.3.2 Impact
6.3.3 Compatibility
6.3.4 Optional-Bundled Software
6.4 Distributed Debugging Environment (DDE)
6.4.1 Summary of Change
6.4.2 Changes to the Menu Bar
6.4.3 Impact
6.4.4 Compatibility
6.4.5 Performance
6.5 Diagnostics
6.5.1 Summary of Change
6.5.2 Impact and Compatibility
6.5.3 Performance
6.5.4 Size Requirement
6.5.5 Obsolescence
6.6 FORTRAN 77 and Fortran 90
6.6.1 Summary of Change
6.6.2 Impact
6.6.3 Compatibility
6.6.4 Performance
6.7 fpclassify
6.7.1 Functions Converted To Macros
6.7.2 New Macros
6.7.3 Value of Existing Macro Changed
6.7.4 Impact
6.7.5 Compatibility
6.7.6 Performance
6.8 HP Performance Analysis Toolkit
6.8.1 Features
6.8.2 Summary of Change
6.8.3 Impact
6.9 Kernel Header Files: ANSI Function Prototypes
6.9.1 Summary of Change
6.9.2 Impact
6.10 Kernel Instrumentation (KI) Traces
6.10.1 Impact
6.10.2 Compatibility
6.11 Linker for 10.30
6.11.1 Features
6.11.2 Summary of Change
6.11.3 Defects Repaired
6.11.4 Compatibility
6.12 Math Library (libm.a and libm.sl)
6.12.1 Features
6.12.2 Summary of Change
6.12.3 <math.h>
6.12.4 <fenv.h>
6.12.5 Impact
6.13 Multimedia for 10.30
6.13.1 Multimedia Applications No Longer Part of HP-UX CORE
6.13.2 Multimedia Applications Supplied as Part of MPower/Web Product
6.13.3 MPower/Web Product Numbers
6.13.4 ImagingSubsystem swverify Messages
6.13.5 ScreenCapture swverify Messages
6.13.6 matherr
6.13.7 HP C/ANSI C
6.13.7.1 Impact
6.14 SAM (System Administration Manager)
6.14.1 Users and Groups
6.14.2 Auditing and Security
6.14.3 Disks and File Systems
6.14.4 Kernel Configuration
6.14.5 Printers and Plotters
6.14.6 Print Server
6.14.7 Networking and Communications
6.14.8 Peripheral Devices
6.14.9 Terminals and Modems
6.14.10 Performance
6.15 SharedPrint/UX
6.15.1 Additional Printer Support
6.15.2 Setting Up SharedPrint/UX
6.15.3 Configuring a Jet Direct Printer
6.15.4 Using the SharedPrint/UX Dialog
6.15.5 Printing with Default Options
6.15.6 Printing a Screen Image
6.16 SwitchOver/UX
6.17 VUE (HP VUE 3.0)
6.18 X Windows
6.18.1 X11 Fonts
6.18.1.1 Compatibility
6.18.2 Motif, Xlib, and Intrinsics Libraries

Chapter 7: Networking

7.1 arp Command
7.1.1 Warning of Impact
7.2 BSD Sockets
7.2.1 BSD Sockets: 7.0 Binary Compatibility
7.2.1.1 Compatibility
7.2.2 BSD Sockets: Port Numbers
7.2.2.1 Impact
7.2.2.2 Alternatives
7.2.3 BSD Sockets: ECONNRESET
7.2.3.1 Compatibility
7.2.3.2 Impact
7.2.3.3 Alternatives
7.3 Data Link Provider Interface (DLPI)
7.3.1 Fast Ethernets and Lanlink
7.3.1.1 Impact
7.3.1.2 Performance
7.3.2 Replacement of LLA LAN Driver Interface with DLPI
7.3.3 Changes to DLPI
7.3.4 Patches
7.4 HSC Fibre Channel/9000
7.4.1 Known Problems and Workarounds
7.5 Inetd
7.5.1 inet_cots and inet_clts (t_open)
7.6 Internet Services (ARPA Services)
7.6.1 BIND Name Service
7.6.2 ftp
7.6.3 sendmail
7.6.3.1 Changes
7.6.3.2 Compatibility
7.6.4 gated
7.6.4.1 Configuration File Changes
7.6.4.2 Other Changes
7.6.4.3 Compatibility
7.6.5 mrouted (DVMRP)
7.6.5.1 Configuration File Changes
7.6.5.2 Other Changes
7.6.6 telnet
7.6.7 Secure Internet Services
7.7 LAN Driver Products
7.7.1 Device Driver Changes for Streams
7.7.2 lanadmin
7.7.3 lanconfig
7.7.4 lanscan
7.7.5 linkloop
7.8 Lock Manager Formatting
7.8.1 Header File Changes
7.8.2 Changes to C Source Files
7.8.3 Makefile Changes
7.8.4 New NLM Version 4 Output Format
7.9 Loopback Drivers
7.10 mount_nfs Command
7.10.1 Configuration
7.11 Name Service Switch
7.11.1 APIs
7.11.2 Lookups
7.11.3 Performance
7.11.4 Compatibility
7.12 NetTL
7.12.1 Compatibility
7.12.2 Obsolescence
7.13 NFS Automounter
7.14 NFS Protocol Version 3
7.15 NFS PV3 & mountd (Version 3) Formatting
7.16 NFS Services APIs
7.17 NIS+
7.17.1 Compatibility with Previous Releases
7.17.2 Advantages of NIS+
7.17.3 Command and Function Names
7.17.4 Size Requirement
7.18 Path Maximum Transmission Unit (PMTU) Discovery
7.18.1 route Command
7.19 RPCBIND (Versions 3 and 4) Formatting
7.19.1 rpcbind Command
7.20 rpcgen
7.21 rpcinfo
7.22 rpc.lockd
7.23 rpc.mountd
7.24 Streams
7.24.1 XTI/TLI Use with Multi-threaded Applications
7.25 TCP/IP
7.25.1 Obsolete Features
7.25.2 Changes to /etc/rc.config.d/netconf
7.25.2.1 LANCONFIG_ARGS
7.25.2.2 INTERFACE_NAME
7.25.2.3 New Statements: INTERFACE_STATE, DHCP_ENABLE
7.25.3 Logical Interfaces: IP Multiplexing
7.25.4 Logical Interfaces: IP/Ethernet vs. IP/IEEE802.3
7.25.4.1 IEEE802.3 and DTCs, JetDirect, MPE-XL
7.25.5 Interface Names
7.25.6 Configuring Multiplexed IP Addresses
7.25.7 Configuring SNAP/IEEE802.3 Interfaces
7.25.8 lanconfig
7.25.9 ifalias
7.25.10 netstat Command
7.25.11 netstat
7.25.11.1 Changes to netstat -r
7.25.12 nettune and ndd
7.25.13 SLIP and PPP
7.25.14 netman and ni Drivers
7.25.15 Copy-on-Write (COW)
7.25.16 Loopback Interface (lo0)
7.25.17 IP Packets to Local Host Address
7.25.18 TCP Keepalive Packets
7.25.19 Networking Memory for Fragment Reassembly
7.25.20 Netisr Priority
7.25.21 TCP Hash Table Size
7.25.22 Interface information: ioctl SIOCGIFCONF/SIOCGIFNUM
7.25.23 TCP Timers: setsockopt TCP_ABORT_THRESHOLD and
TCP_CONN_ABORT_THRESHOLD
7.26 Transport-Independent RPC (TI-RPC)
7.26.1 Impact
7.27 X/Open Sockets: socklen_t

Chapter 8: Commands and Libraries

8.1 Changed User Commands in Section 1
8.1.1 admin(1)
8.1.2 at(1)
8.1.3 cmp(1)
8.1.4 crontab(1)
8.1.5 csplit(1)
8.1.6 date(1)
8.1.7 dd(1)
8.1.7.1 Summary of Change
8.1.8 diff3(1)
8.1.9 ex(1)
8.1.10 file(1)
8.1.11 find(1)
8.1.12 finger(1)
8.1.13 grep(1)
8.1.14 ipcs(1)
8.1.15 last(1), lastb(1)
8.1.16 ls(1)
8.1.17 make(1)
8.1.18 man(1)
8.1.19 mesg(1)
8.1.20 more(1)
8.1.21 mt(1)
8.1.22 pg(1)
8.1.23 ps(1)
8.1.24 uname(1)
8.1.25 vi(1)
8.2 Changed System Management Commands in Section 1M
8.2.1 cron(1M)
8.2.2 localedef(1M)
8.2.3 mrouted(1M)
8.2.4 strdb(1M)
8.2.5 sysdef(1M)
8.2.6 tic(1M)
8.2.7 useradd(1M) and usermod(1M)
8.2.8 volcopy(1M)
8.2.9 volcopy_hfs(1M)
8.2.10 volcopy_vxfs(1M)
8.2.11 whodo(1M)
8.3 Obsolete and Deprecated User and System Management Commands (1 and 1M)
8.3.1 backup(1M)
8.3.1.1 Alternative
8.3.2 cue(1)
8.3.3 sadp(1M)
8.3.3.1 Status
8.3.4 lvmmigrate
8.3.4.1 Status
8.3.5 setp(1M)
8.3.5.1 Status
8.3.6 tcio(1)
8.4 X/Open Commands Withdrawn/To be Withdrawn
8.4.1 pack(1)
8.4.1.1 Status
8.4.1.2 Alternative
8.4.2 pcat(1)
8.4.2.1 Status
8.4.2.2 Alternative
8.4.3 pg(1)
8.4.3.1 Status
8.4.3.2 Alternative
8.4.4 spell(1)
8.4.4.1 Status
8.4.5 sum(1)
8.4.5.1 Status
8.4.5.2 Alternative
8.4.6 tar(1)
8.4.6.1 Status
8.4.6.2 Alternative
8.4.7 unpack(1)
8.4.7.1 Status
8.4.7.2 Alternative
8.4.8 sdb(1)
8.4.8.1 Status
8.4.9 wall(1M)
8.4.9.1 Status
8.4.9.2 Alternative
8.4.10 SwitchOver Commands
8.4.10.1 Status
8.4.11 Miscellaneous NLS Interfaces and Commands
8.4.12 SDF (Structured Directory Format) Commands
8.5 Functions and Interfaces
8.5.1 asctime(3C)
8.5.1.1 Alternatives
8.5.2 ctime(3C)
8.5.2.1 Alternatives
8.5.2.2 Obsolescence
8.5.3 getdate(3C)
8.5.4 gmtime(3C)
8.5.5 localtime(3C)
8.5.6 mktime(3C)
8.5.7 setmntent(3X)
8.5.8 sleep(3C)
8.5.8.1 Summary of Change
8.5.8.2 Performance
8.5.9 strptime(3X)
8.5.10 Miscellaneous Clean-up of Unsupported Features
8.5.10.1 Preprocessor Macros
8.5.10.2 Header Files
8.5.10.3 Interface Replacement
8.5.10.4 Standards
8.5.10.4.1 Threads POSIX interfaces
8.5.10.4.2 Status
8.5.10.4.3 Alternatives
8.5.10.4.4 Deprecated by Standards
8.6 Application Programming Interfaces (APIs)
8.6.1 libnsl.sl/a
8.6.1.1 Summary of Change
8.6.1.2 Impact
8.6.1.3 Compatibility
8.6.2 librpcsvc.sl
8.6.3 libnisdb.sl/a
8.7 Library Routines (libc)
8.7.1 POSIX.1C Threads
8.7.2 NIS+/Dynamic Name Service Switch
8.7.3 Internationalization- and Localization-related Changes
8.7.4 Miscellaneous libc changes
8.7.5 Impact of libc Changes on Applications
8.7.6 Source Compatibility:
8.7.7 Impact of libc Changes on Libraries
8.8 Library Routines (libd4r)
8.8.1 Alternatives/Compatibility
8.9 Library Routines (libnsl)
8.10 Security Library (libsec)
8.10.1 NIS+ and the Name Service Switch
8.10.2 Binary Compatibility Considerations
8.10.3 Summary of Change
8.10.4 NIS+ and the Name Service Switch
8.10.4.1 Impact
8.10.4.2 Performance
8.10.4.3 Alternatives/Compatibility
8.10.5 Function: sendfile(2)
8.10.6 New C Math Library Functions
8.10.7 Millicode versions of math library functions
8.10.8 Interface: libm (math.h)
8.10.8.1 Summary of Changes
8.10.8.2 Impact
8.10.8.3 Compatibility
8.10.9 Interface: libsec
8.10.9.1 Compatibility
8.10.9.2 Performance
8.10.9.3 Size Requirement
8.11 Obsolete and Deprecated Interfaces
8.11.1 Diskless Cluster Interfaces
8.11.1.1 Status
8.11.2 Interface: libdvio.a
8.11.3 Miscellaneous Clean-up of Unsupported Features
8.11.3.1 Preprocessor Macros
8.11.3.2 Header Files
8.11.3.3 Interface Replacement
8.11.3.4 Standards
8.11.3.5 Threads POSIX interfaces
8.11.3.6 Status
8.11.3.7 Alternatives
8.11.3.8 Deprecated by Standards
8.11.4 Pre-SPEC1170
8.11.4.1 Status
8.11.5 HP-UX Legacy Interfaces
8.11.5.1 Status
8.11.5.2 Alternatives
8.11.6 Interface: Curses libHcurses.a, libHcurses.sl
8.11.6.1 Status
8.11.6.2 Alternative
8.11.7 Interface: Curses Libcur_colr.a, libcur_colr.sl
8.11.7.1 Status
8.11.7.2 Alternatives
8.11.8 Secure Password File Access Interfaces
8.11.8.1 Status
8.11.8.2 Alternatives
8.11.9 Interface: libPW.a
8.11.9.1 Status
8.11.9.2 Alternatives
8.11.10 utmp File Access Interfaces
8.11.10.1 Status
8.11.10.2 Alternatives
8.11.11 Block Mode Terminal Interfaces
8.11.11.1 Status
8.11.12 PRIV_SETRUGID feature of setgid
8.11.12.1 Status
8.11.13 Signal Mask
8.11.13.1 Status
8.11.13.2 Alternatives
8.11.14 Function: getpw(3C)
8.11.14.1 Status
8.11.14.2 Alternatives
8.11.15 Threads
8.11.15.1 Status
8.11.15.2 Alternatives
8.11.16 Interfaces: libdbm.a, libdbm.sl, libndm.a, libndbm.sl, libdbm.1
8.11.16.1 Status
8.11.16.2 Alternatives
8.11.16.3 Function: nl_tools_16(3C) interfaces
8.11.16.4 Status
8.11.16.5 Alternatives
8.11.16.6 Function: strftime(3C)
8.11.16.7 Status
8.12 Interimplementation Compatibility
8.12.1 Device Control
8.12.1.1 Status
8.12.1.2 Alternatives
8.12.2 Interface: libBSD.a
8.12.2.1 Status
8.12.2.2 Alternatives
8.12.3 Interface: libV3.a
8.12.3.1 Status
8.12.3.2 Alternatives
8.12.4 Interface: libdbm.a, libdbm.sl, libndbm.a, libndbm.sl, libdbm.1
8.12.4.1 Status
8.12.4.2 Alternatives
8.12.5 Interface: File System Descriptor File Entry
8.12.5.1 Status
8.12.5.2 Alternatives
8.12.6 Function: getdirentries(2)
8.12.6.1 Status
8.12.6.2 Alternatives
8.12.7 Function: vfsmount(2)
8.12.7.1 Status
8.12.7.2 Alternatives
8.12.8 Function: ftime(2)
8.12.8.1 Status
8.12.8.2 Alternatives
8.12.9 OBSOLETE Bundle
8.12.10 Interface: libdvio.a
8.13 Computer Languages
8.13.1 Linker and object file tools: ld, crt0.o, dld.sl, nm, size, and
strip.
8.13.1.1 New linker options for PA64
8.13.1.2 New Environment Variable LD_LIBRARY_PATH
8.13.1.3 dld.sl changes for PA64
8.13.1.4 Function: dlopen(3C)
8.13.1.5 Function: dlclose(3C)
8.13.1.6 Function: dlget(3C)
8.13.1.7 Function: dlgetname(3C)
8.13.1.8 Function: dlmodinfo(3C)
8.13.1.9 Function: dlsym(3C)
8.13.1.10 Function: crt0(3) changes for PA64:
8.13.1.11 Command: nm(1) changes for PA64:
8.13.1.12 Command: strip(1) changes for PA64:
8.13.1.13 Command: size(1) changes for PA64:
8.13.1.14 Command: chatr64(1) changes for PA64
8.13.1.15 Function: elf(3E) (new format)
8.13.1.16 Function: nlist64(3C) (new tool)
8.13.2 ANSI/ISO C++
8.13.2.1 Summary of Change
8.13.2.2 Impact
8.13.2.3 Compatibility
8.13.2.4 Performance
8.13.2.5 Alternatives
8.13.2.6 Configuration
8.13.2.7 Size Requirement
8.13.2.8 Machines affected
8.13.3 Command: chatr64(1)
8.13.3.1 Summary of Change
8.13.3.2 Options
8.13.3.3 Command Line Syntax
8.13.3.4 Impact
8.13.3.5 Compatibility
8.13.4 HP DDE Debugger dde(1)
8.13.4.1 Features
8.13.4.2 Impact
8.13.4.3 Compatibility
8.13.4.4 Performance
8.13.4.5 Alternatives
8.13.5 Function: elf(3E)
8.13.5.1 Impact
8.13.5.2 Compatibility
8.13.6 Fortran 90 and Fortran 77
8.13.6.1 Summary of Change
8.13.6.2 Impact
8.13.6.3 Compatibility
8.13.7 HP C
8.13.7.1 Features
8.13.7.2 Impact
8.13.7.3 Compatibility
8.13.7.4 Performance - Compile time
8.13.8 Function: nlist64(3C)
8.13.8.1 Summary of Change
8.13.8.2 Compatibility
8.13.9 HP Native Language Support (NLS)
8.13.9.1 HP Proprietary Locale Names
8.13.9.2 Status
8.13.9.3 Miscellaneous Locales
8.13.9.4 Status
8.13.9.5 Right-to-Left Processing
8.13.9.6 LANGOPTS (environment variable).
8.13.9.7 Status
8.13.9.8 Codesets
8.13.9.9 Status
8.13.9.10 Interface: libportnls.a
8.13.9.11 Status
8.13.9.12 Alternatives
8.13.10 HP Performance Analysis Toolkit
8.13.10.1 Preliminary Features
8.13.10.2 Summary of Change
8.13.10.3 Impact
8.14 POSIX 1003.1B
8.14.1 POSIX 1003.1B Asynchronous Input/Output
8.14.1.1 Asynchronous I/O Control Block (aiocb):
8.14.1.2 Summary of Change
8.14.2 POSIX 1003.1B Message Passing
8.14.2.1 Summary of Change
8.14.3 POSIX 1003.1B Shared Memory Objects
8.14.3.1 Summary of Changes
8.14.4 POSIX 1003.1B Memory Locking
8.14.4.1 Summary of Change
8.14.4.2 Compatibility
8.14.4.3 Performance
8.14.4.4 Alternatives

Footnotes

Legal Notices

Printing History


##############################################################################
Chapter 1: Overview of Release Notes for HP-UX 11.0

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1.1 Where Should I Begin?

This document contains information about HP-UX Release 11.0 (in this
document referred to as "11.0"). Also included in this document is
information about the HP-UX Release 10.30.

Use the following table as a guide as to where you may want to begin:

----------------------------------------------------------------------------

  If you are     then...
  updating
  your system
  from...

  HP-UX          you are probably already familiar with the changes
  Release        introduced with the 10.30 Release, so you will probably
  10.30          want to continue reading this document, skipping Chapter
                 5, Major Changes for HP-UX 10.30".

  HP-UX          first read Chapter 5: Major Changes for HP-UX 10.30,
  Release        then continue reading this document.
10.2

  a 10.x         first consult the archival release
  release        notes(/usr/share/doc/10.xRelNotes) for information about
  prior to       the HP-UX Releases 10.00, 10.01, and 10.10., then read
  Release        Chapter 5: Major Changes for HP-UX 10.30, then continue
  10.20          reading this document.

----------------------------------------------------------------------------

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1.2 What's In This Chapter?

This introductory chapter:

   * describes HP-UX Release Notes

   * explains the purpose of HP-UX Release Notes

   * points to other sources of information about HP-UX Release 11.0

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1.3 What's In The Remaining Chapters?

Here are the names of the remaining chapters of these Release Notes:

   * Chapter 2: Major Changes and Features of HP-UX 11.0

   * Chapter 3: Compatibility

   * Chapter 4: 64-Bit Capable Implementation

   * Chapter 5: Major Changes for HP-UX 10.30

   * Chapter 6: Other Operating System and Subsystem Changes

   * Chapter 7: Networking

   * Chapter 8: Commands and Libraries

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1.4 Where Else Can I Find 10.x and 11.0 Versions of the Release Notes?

Release Notes are found in the following:

   * HP Instant Information CD-ROM. See Section 1.7.5 Instant Information
     for more information.

   * Both ASCII and HTML files that are part of the core HP-UX Release 11.0
     (/usr/share/doc/11.0RelNotes). Also included in this directory is the
     10x.RelNotes file, containing information about previous 10.x releases
     of HP-UX.

   * The World Wide Web; see http://docs.hp.com/hpux/os/.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1.5 The Purpose of HP-UX Release Notes

HP-UX Release Notes describe what is new, changed, or obsolete within an
HP-UX release as compared with previous releases. HP-UX Release Notes apply
only to features that are part of the HP-UX operating system. For
information on product-specific release notes, see below.

"Release Notes for HP-UX 11.0" is primarily to explain the major differences
between HP-UX Release 10.30 and 11.0, with a summary of information on what
changed between 10.20 and 10.30. For full information on changes to HP-UX
occurring at various HP-UX 10.x releases, consult the archival release notes
located in: /usr/share/doc/10.xRelNotes for information about the HP-UX
Releases 10.00, 10.01, 10.10, 10.20, and 10.30.

Release Notes do not completely document all of the features of a release.
Instead, they contain high-level information and provide pointers to more
detailed operating system and product-specific documentation.

Where appropriate, release notes also tell you about changes in the support
of products.

Additional product-specific release notes files are located in the /opt
directory, in sub-directories named /opt/<product name>/newconfig/RelNotes
(where <product name> represents the name of the product for which those
release notes apply). For example, Distributed Computing Environment (DCE)
release notes are loaded in the /opt/dce/newconfig/RelNotes directory.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1.6 Where to Find Information on Transitioning to 64-bit HP-UX

The 64-bit implementation of HP-UX at 11.0 requires an understanding of the
features and benefits of 64-bit computing and thoughtful planning before
undertaking the transition. A lot of information is available to aid you in
this planning process. Here are some resources to assist you:

   * "Installing and Updating HP-UX Release 11.0" contains specific
     information about the steps and order of tasks necessary to upgrade
     your hardware system to the 64-bit version of HP-UX Release 11.0. See
     below for a list of systems that are capable of 64-bit operation (or
     upgradable to 64-bit operation).

   * "Read Me Before Installing or Updating to HP-UX Release 11.0" contains
     important information about firmware upgrades that might be necessary
     to upgrade your system for use with the 64-bit version of HP-UX Release
     11.0.

   * Chapter 4: 64-Bit Capable Implementation of this document contains a
     roadmap of the paths available for transitioning to the 64-bit version
     of HP-UX Release 11.0.

   * The web site:

     http://www.software.hp.com/products/IA64/index.html

     is an excellent source of introductory information.

   * "The Software Transition Kit" available from the above web site by
     clicking on "HP-UX 11.00 STK", contains information about the impact of
     64-bit computing, transitioning to and developing in a 64-bit
     environment, tools available to make your transition smooth, and
     compatibility information. See Section 2.2.3 Transition Tools in
     Chapter 2 for more information. Also see "Getting Started with the
     HP-UX 11.00 Software Transition Kit".

   * "Managing Systems and Workgroups" is also available on Instant
     Information and on the web site http://docs.hp.com. System
     administrators may want to review this information before transitioning
     to 64-bit on 11.0.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1.7 Other Sources of Information on HP-UX Releases

In addition to these release notes, you have many other sources of
information available to you.

******************************************************************************
1.7.1 README Documents

README documents contain information about the installation process that may
not appear in the installation manual. Any product may have a README
document, so you may have available several README documents.

******************************************************************************
1.7.2 White Papers on the HP-UX 11.0 Media

A number of white papers are available on 11.0 systems inthe directory
/usr/share/doc. For a list of online documents, refer to Table 1-4 in the
"HP-UX 11.0 Documentation Map" white paper. This white paper is available as
a PostScript file (doc_map.ps) and as an ASCII file (doc_map.txt), also in
/usr/share/doc.

******************************************************************************
1.7.3 Manpages

For 11.0 and 10.30 systems, the manpages are available in Instant
Information under the title "HP-UX Reference" volumes 1 through 5, and
always, by using the man command.

----------------------------------------------------------------------------
NOTE

For 10.10 and 10.20 systems, the manpages are available in HP LaserROM under
the title "HP-UX Reference". For 10.01 systems, the manpages are available
in LaserROM under the title "HP-UX Reference" as well as in hardcopy as the
"HP-UX Reference".

----------------------------------------------------------------------------

******************************************************************************
1.7.4 The HP-UX Documentation Set

The HP-UX documentation set describes how to set up and use the basic HP-UX
operating system. It includes information on system administration
(including the new "Managing Systems and Workgroups" document which replaces
"HP-UX System Administration Tasks" as of 11.0), networking, the X Window
System, and so on. For more information on the 11.0 documentation set, refer
to the HP-UX 11.0 Documentation Map white paper. The HP-UX 11.0
Documentation Map is available as a PostScript file (doc_map.ps) and as an
ASCII file (doc_map.txt) in /usr/share/doc.

******************************************************************************
1.7.5 Instant Information

As of HP-UX Release 10.30, Hewlett-Packard introduced a new product, Instant
Information, which provides HP-UX documentation on a CD-ROM. This new format
replaces the HP LaserROM product as of HP-UX Release 11.0. Instant
Information provides improved online presentation, print quality and search
capabilities.

******************************************************************************
1.7.6 The World Wide Web

Hewlett-Packard now provides a web site where the latest HP-UX documentation
and updates are available. The site can be accessed through
http://docs.hp.com.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1.8 Changes to Supported Workstations and Workstation Software for 11.0

******************************************************************************
1.8.1 Workstation Systems Supported for 11.0

Release 11.0 provides 32-bit support for the following workstations:

B-Class: B132L, B160L

C-Class: C100, C110, C160, C160L, C180, C180XP

All J-Class Systems

712

715/64, 715/80, 715/100, 715/100XC

725/100

----------------------------------------------------------------------------
NOTE

Instant Ignition will not be available at 11.0 for workstation systems. All
workstation users will be required to cold install or update to HP-UX
Release 11.0.

----------------------------------------------------------------------------

******************************************************************************
1.8.2 Workstations Obsolete as of 11.0

The following workstations have become obsolete as of HP-UX Release 11.0:

705, 710, 715/33, 715/50, 715/75, 720, 725/50, 725/75, 730, 735, 750,
755, and the following graphics workstations: GRX, CRX-8, CRX-24,
CRX-24Z,CRX-48Z, HCRX-8Z, and HCRX-24Z

******************************************************************************
1.8.3 Bundled Workstation Software Supported for 11.0

   * Motif (latest version)

   * CDE

   * X11R6

   * 2-D graphics software (X) on the following supported hardware: Dual
     Color Graphics, HCRX-8Z, HCRX-24Z, Visualize-8, Visualize-24,
     Visualize-48XP, and Visualize-EG. (Only Visualize-EG is supported for
     64-bit HP-UX.)

******************************************************************************
1.8.4 Bundled Workstation Software Not Supported for 11.0

   * NFS-D

   * 3-D graphics software. None of the following APIs will be supported:
        o PEX

        o PHIGS

        o OGL

        o Starbase

   * Workstation Instant Ignition

******************************************************************************
1.8.5 I/0 Support

==============================================================================
1.8.5.1 Supported:

   * HSC FWD SCSI-2 card

==============================================================================
1.8.5.2 NOT Supported:

   * EISA HP-IB host adaptor

   * EISA Fast SE SCSI-2 host adaptor

   * EISA Fast differential SCSI-2 host adaptor

******************************************************************************
1.8.6 Peripherals

==============================================================================
1.8.6.1 Supported:

   * All legacy peripherals supported by the legacy workstations

   * All new peripherals added at HP-UX 11.0 that are appropriate to
     workstations

==============================================================================
1.8.6.2 NOT Supported:

   * Discontinued peripherals at HP-UX 11.0

   * "Server-Class" peripherals such as StorageTek

##############################################################################
Chapter 2: Major Changes and Features of HP-UX 11.0

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.1 What's In This Chapter?

Chapter 2 describes the following HP-UX 11.0 changes:

   * Introduction of the 64-bit operating system

   * Asian System Environment (ASE)

   * Unified binary implementation

   * V-Class Server V2200

   * Distributed Computing Environment (DCE) bundled client (libdce, libcma)

   * Using Oracle 7.3.3 (HP-UX 10.20 build)

   * NCS/NCK product obsolete

   * HP-IB and Fiber Link support discontinued

   * Dynamically Loadable Kernel Modules (DLKM)

   * Performance-Optimized Page Sizing

   * New API's and commands

   * Recovery tools for 11.0

   * HP Common Desktop Environment (CDE) 2.1 & Motif

   * Software Distributor (SD-UX)

   * HP Distributed Print Service (HPDPS)

   * Fast memory dump

   * LicensePower/iFOR

   * SAM

   * Lazy Swap

   * Uniprocessor emulation, driver binding and per-processor callouts

   * POSIX 1003.1b asynchronousinput/output

   * Miscellaneous changes

Also see the following chapters for additional 10.30 and 11.0 changes:

   * Chapter 4: 64-Bit Capable Implementation

   * Chapter 6: Other Operating System and Subsystem Changes

   * Chapter 7: Networking

   * Chapter 8: Commands and Libraries

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.2 Introduction of the 64-bit Operating System

HP-UX 11.0 provides maximum computing power with a full 64-bit operating
system. Properly coded applications (those using only level 4 or level 5
APIs and not using any obsolete APIs) will generally run unmodified on HP-UX
11.0, providing binary compatibility. HP-UX 11.0 is a superset of HP-UX
10.x, with kernel threads, enhanced system administration tools, and
improved system management capabilities. For more information on
compatibility, see Section 3.1 Compatibility Statement for HP-UX 11.0 in
Chapter 3 of this document.

HP-UX Release 11.0 can run as either a 32-bit or 64-bit operating system on
systems that support 64-bit operation, with the exception of the V2200 which
only supports 64-bit operation. See Section 2.4.2 32-bit and 64-bit Kernel
Support for a list of server systems that support 64-bit operation.

----------------------------------------------------------------------------
NOTE

In order to use the 64-bit version of HP-UX Release 11.0, you MUST have
64-bit compatible firmware installed on your system.

----------------------------------------------------------------------------

HP-UX Release 11.0 offers several features to enable the full power of
64-bit computing. Tools are included to transition applications from 32-bit
to 64-bit mode. The release:

   * Provides 64-bit addressing when the 64-bit version of HP-UX is
     installed on HP 64-bit hardware platforms. This enables programs to
     take advantage of very large address spaces and larger physical memory
     limits.

   * Provides kernel level threads for maximum efficiency of multi-threaded
     applications.

   * Complies with the latest NIS+ (Network Information Service) and NFS PV3
     standards for more secure network name services and larger network file
     systems.

   * Runs in 32-bit mode and/or 64-bit mode, depending on which hardware
     platform you have.

   * Supports run-time execution of both 32-bit and 64-bit applications on
     HP-UX 64-bit platforms.

   * Supports inter-process communication between 32-bit and 64-bit
     applications with message queues, pipes, shared memory, and networking
     protocols.

   * Provides a cross-platform development environment for developing 32-bit
     and 64-bit applications.

The following table shows the evolution of recent HP-UX releases:

----------------------------------------------------------------------------
               Table 2-1: Capacities of Recent HP-UX Releases:

  Attribute          10.01    10.10    10.20           11.0 (64-bit)

  File System        4 GB     128 GB   128 GB          128 GB

  File Size          2 GB     2 GB     128 GB local,   128 GB local, 128
                                       2 GB network    GB network

  Physical RAM       2 GB     3.75     3.75 GB         4 TB
                              GB

  Shared Memory      1.75     1.75     2.75 GB         8 TB
                     GB       GB

  Process Data       .9 GB    1.9 GB   1.9 GB          4 TB
  Space

  # File             2 K      60 K     60 K            60 K
  Descriptors

  # of User Ids      60 K     60 K     ~2,000 K        ~2,000 K

----------------------------------------------------------------------------

******************************************************************************
2.2.1 Benefits of 64-bit Applications

Some applications need to transition to 64-bit mode because they are limited
by the 32-bit address space. Examples include:

   * database management systems

   * engineering and mechanical design automation systems

   * simulation and modeling programs

   * decision support applications

The advantage of transitioning 32-bit applications to 64-bit applications
include:

   * Large file caches are allowed on systems with large amounts of physical
     memory.

   * Database servers have improved performance when they can load
     significant portions of the database into memory.

   * Large process data space is mapped in a large virtual address space.

   * Simulation programs are able to map the entire simulation model into
     virtual memory.

   * Large file support uses standard system library calls.

   * Databases can contain data sets larger than 2 GB. It is simpler to
     store this information for a large data set in a single file.

   * 64-bit applications can use standard I/O routines to access files
     larger than 2 GB.

******************************************************************************
2.2.2 HP-UX Compilers

The following HP compiler products support both 64-bit and 32-bit program
development:

   * HP C

   * HP aC++

   * HP Assembler

   * HP DDE (debugger bundled with compilers)

   * HP PAK (performance toolkit bundled with compilers)

   * HP Linker toolset (bundled with the operating system)

The following HP compiler products do not support 64-bit program
development, but are available for 32-bit program development:

   * HP Fortran 77 and Fortran 90

   * HP Pascal

   * HP MicroFocus COBOL

******************************************************************************
2.2.3 Transition Tools

There are several tools that can help transition your application from
previous releases of HP-UX:

   * HP-UX Software Transition Kit (STK)

     The STK provides a complete solution that enables the HP-UX application
     developer to easily transition software from HP-UX 10.x to either the
     32-bit or the 64-bit version of HP-UX 11.0. In most cases, you will not
     need to make source changes to run your software on HP-UX 11.0. The
     HP-UX STK helps you answer high-level planning questions such as:

        o What new features does HP-UX 11.0 offer and how can I take
          advantage of them?

        o Do I want a 32-bit or 64-bit version of my application?

        o Can I run my application on HP-UX 11.0 without making any changes
          to it, or should I port it?

     The STK provides complete process descriptions for planning and
     performing the transition. It contains easy-to-follow instructions, a
     set of background documents, and tools to help you identify and resolve
     any required API changes in your C or C++ source code. These tools are
     known as scansummary and scandetail. scansummary summarizes the number
     and type of API transition problems in your source files, and is useful
     for planning; scandetail lists each instance of API problems by source
     file name and line number and is useful for making source code changes.

     If you use these types of source files:

        o C programs

        o C++ programs

        o scripts

        o makefiles

     the HP-UX STK tools help you locate and fix any changed or obsolete:

        o functions

        o commands

        o macros

        o structures and structure members

        o header files

        o language keywords

        o libraries

        o variables

     The HP-UX STK tools also identify opportunities for using enhanced
     features of HP-UX 11.0. In addition to these tools, the HP-UX STK
     explains how to use the compiler and lint to identify and fix other
     64-bit transition issues such as data model changes (for example not
     assigning longs to ints).

     The Software Transition Kit is not a standard part of HP-UX but is
     available on the HP-UX 11.0 Application Release CD-ROM, or via the
     World Wide Web at http://www.software.hp.com/products/IA64/index.html

   * HP-UX Script Scanner

     A new tool, /usr/sbin/scanscript, is available to help you locate and
     fix any changed or obsolete functionality in installation or shell
     scripts. scanscript can help you determine if your scripts contain any
     commands, paths, libraries, or variables that must be changed. For more
     information, see the scanscript(1M) man page.

******************************************************************************
2.2.4 HP C/HP-UX

Release A.11.00 of the HP C/HP-UX compiler product includes support for both
the 32-bit data model and the new 64-bit data model. New compile-line
options, new pragmas and macros, and a new object file format support the
64-bit mode. Changes to the online and hardcopy documentation describe the
new features.

The default compilation mode has not changed; it remains 32-bits. The
default target architecture is determined by the host machine and the system
file /usr/lib/sched.models.

In 64-bit mode, the long and pointer data types are 64-bits long. In 32-bit
mode, the long and pointer data types are the same size as the int data
type.

The term used to specify the 64-bit mode in which the long and pointer types
are 64-bits is LP64, and the term for 32-bit mode in which the int, long and
pointer types are 32-bits is called ILP32.

==============================================================================
2.2.4.1 New or Changed Options

   * -dynamic--Lets you tell the linker that position-independent code (PIC)
     objects are being linked, causing the creation of a dynamically-bound
     executable. This option is available in 64-bit mode only and is the
     default in that mode.

   * -noshared--Lets you tell the linker that the program you are building
     does not use shared libraries. This overrides the LP64 default option,
     -dynamic. This option is available in 64-bit mode only.

   * +DA2.0 or +DA2.0N--Equivalent options which allow you to compile in
     32-bit mode (narrow mode) for the PA-RISC 2.0 architecture.

   * +DD32--This option allows you to compile in 32-bit mode (narrow mode)
     for the PA-RISC 1.1 architecture. This option is equivalent to
     +DAportable.

   * +DA2.0W--Allows you to compile in 64-bit mode (wide mode) specific for
     the PA-RISC 2.0 architecture.

   * +DCapptype--This option is provided for optimizing portable or embedded
     applications. Specify +DCemb to enable the code-generation options most
     often used to optimize code for embedded applications. This option is
     available in 64-bit mode only.

   * +M1--Turns on migration warnings regarding possible conflicts with
     future architectures.

   * +M2--Turns on LP64 data model migration warnings. This option is
     available in 64-bit mode only.

   * Advanced optimization options -- Options +Omultiprocessor and +Oextern
     have been added to optimize code for processor configuration and
     external symbol usage, respectively.

==============================================================================
2.2.4.2 New Preprocessor Macros

   * __LP64__--Defined by compiler in 64-bit mode.

   * _PA_RISC2_0--Defined when compiling for PA2.0 in 32- or 64-bit modes.

==============================================================================
2.2.4.3 New Features

   * The compiler now generates standard SVR4 ELF object module format in
     64-bit mode.

==============================================================================
2.2.4.4 New Pragmas

   * PACK-like HP_ALIGN, but more intuitive. Allows user to set the
     alignment of structs and unions along n-byte boundaries.

   * INIT, FINI-pragmas for program initialization and termination.

   * The Fast Libcall Pragmas:

        o HP_DEFINED_EXTERNAL (32-bit only)

        o HP_LONG_RETURN

        o HP_NO_RELOCATION

==============================================================================
2.2.4.5 New Libraries and Loader

   * 64-bit libraries:

     /opt/langtools/lib/pa20_64/libl.a
     /opt/langtools/lib/pa20_64/liby.a

   * 64-bit dynamic loader:

     /usr/lib/pa20_64/dld.sl

   * New libraries for threads:

     /opt/langtools/lib/libl_thread.a
     /opt/langtools/lib/pa20_64/libl_thread.a

==============================================================================
2.2.4.6 New Defaults

   * The compiler option +Z is the default in 64-bit mode (position
     independent code, or "PIC", is generated). The default in 32-bit mode
     remains non-PIC.

For more information on the HP C/HP-UX 11.0 release and documentation see
the HP C/HP-UX Release Notes included with the HP C/HP-UX product in the
text file /opt/ansic/newconfig/RelNotes/ansic.11.00.

******************************************************************************
2.2.5 strtold(3C)

strtold(3C) is being deprecated and may be replaced in a future release by
an API of the same name but with a different return type (the deprecated
strtold returns long_double (which is an array of four unsigned 32-bit
ints); the future strtold, if implemented, will return an ANSI C long double
(which is a 128-bit floating point scalar).

New applications should avoid using strtold whenever possible. If ANSI C
applications must use strtold, they should convert the returned long_double
to a long double as described below (see the "Alternatives" section below).

==============================================================================
2.2.5.1 Alternatives

Applications that need to convert a long_double returned by strtold into an
ANSI C long double should either use memcpy or use the C union type. Here is
a code excerpt showing how to do the conversion with a union:

union {
               long_double l_d;
               long double ld;
       } u;
/* convert str to a long_double; store return val in union */
/* (Putting value into union enables converted value to be */
/* accessed as an ANSI C long double)*/
u.l_d = strtold( (const char *)str, (char **)NULL);

----------------------------------------------------------------------------
WARNING

Applications must not cast a long_double * to a long double *. They are
aligned on different boundaries, and the cast may cause a processor fault
(bus error).

----------------------------------------------------------------------------

******************************************************************************
2.2.6 Cross-Platform Development

HP-UX 11.0 provides a cross-platform development environment. You can
compile and link both 32-bit and 64-bit applications on HP-UX 11.0 32-bit
systems. Also, you can compile and link both 32-bit and 64-bit applications
on HP-UX 11.0 64-bit systems.

You can optionally install 64-bit versions of HP-UX 11.0 system libraries on
HP-UX 11.0 32-bit systems for cross-development. The 64-bit system libraries
are in separate directories from the 32-bit system libraries.

Linking 32-bit and 64-bit object files (.o, .sl, .a) together is not
supported. All modules in a program must be linked from either 32-bit
objects or 64-bit objects.

You will need access to a 64-bit hardware platform running the 64-bit
version of HP-UX 11.0 to test 64-bit programs.

Please note the following cross-platform limitations:

   * Debugging and program dump analysis tools for 64-bit programs are only
     supported on 64-bit HP-UX.

   * Kernel cross-platform development is not supported; you can not build a
     64-bit kernel on 32-bit HP-UX, nor can you build a 32-bit kernel on
     64-bit HP-UX.

   * If the device driver refers to kernel header files and libraries,
     development must be done on the same platform as the target run-time
     platform. That is, 64-bit kernel headers and libraries are not
     installed on the 32-bit HP-UX, nor are 32-bit kernel headers and
     libraries installed on 64-bit HP-UX.

   * The cross platform development environment supports only 32-bit and
     64-bit cross-platform development environment on the same HP-UX
     release.

==============================================================================
2.2.6.1 Compiler Options for Cross Development

Unless specified, HP compilers generate object files that are compatible
with the hardware on which you are compiling.

HP-UX 64-bit platforms use the PA-RISC 2.0 system architecture. The default
compilation mode for these systems is 32-bit narrow mode for PA-RISC 2.0.
PA-RISC 2.0 narrow mode programs only run on PA-RISC 2.0 systems. The
compiler command line option for this mode is +DA2.0 or +DA2.0N.(+DA means
destination architecture; N stands for narrow mode.)

HP compilers generate 64-bit code when you specify the +DA2.0W command-line
option. This is known as PA-RISC 2.0 wide mode; W stands for wide mode.
PA-RISC 2.0 wide mode programs only run on PA-RISC 2.0 systems running the
64-bit version of HP-UX. (For more detail, see the "HP-UX 64-bit Porting and
Transition Guide" which ships with HP C and HP aC++ as an online PostScript
file; within HP C, the PostScript file is
/opt/ansic/newconfig/RelNotes/64bitTrans.bk.ps; within HP aC++, the
PostScript file is /opt/aCC/newconfig/TechDocs/64bitTrans.bk.ps. It is also
available on the HP-UX 11.0 Instant Information CD-ROM and on the
http://docs.hp.com web site.)

******************************************************************************
2.2.7 Compatibility with Previous Releases

HP-UX 11.0 is binary compatible with HP-UX 10.x. Fully bound shared or
archived applications that work on any HP-UX 10.x release continue to work
on this release without recompiling, relinking, or modifying the
application. A fully bound shared application consists of an executable
program and all of its related user shared libraries.

For more information on compatibility see Chapter 3: Compatibility

******************************************************************************
2.2.8 HP-UX Developer's Kit for Java(tm) and the HP-UX Virtual Machines
(with JIT)

The HP-UX Virtual Machines with JIT for Java(tm) and the HP-UX Developer's
Kit for Java (JDK) release 1.1.2 for HP-UX 11.0 provide the solutions
necessary to develop or deploy performance-enhanced Java applications on HP
9000 Enterprise Servers, HP 9000 workstations, and HP Visualize
Workstations.

Release 1.1.2 for HP-UX 11.0 includes the addition of a second virtual
machine which permits you to use kernel threads to implement Java threads
thus allowing a single Java application to make use of additional processors
in a multiprocessor machine. This new virtual machine is the default virtual
machine. The other virtual machine does not make use of kernel-threads to
implement Java threads--it uses a portable, user-level "green threads"
package.

You have the option of using either virtual machine, and may want to try
both to see which provides the best performance for your application.

Release 1.1.2 for both the 100% Java compatible HP-UX Virtual Machines with
JIT for Java and HP-UX Developer's Kit for Java also continues to provide a
comprehensive and rich set of API library packages:

   * Reflection provides a type-safe and secure means to discover and access
     the fields and methods of Java objects at runtime, including new
     services such as JavaBeans and object scripting, and tools such as
     inspectors, browsers and debuggers.

   * Abstract Window Toolkit -- includes APIs for printing, faster
     scrolling, popup menus, imaging, graphics, and flexible font support.

   * Basic graphical user interface (GUI) components such as windows,
     buttons, text field, and menu choices provide a standard and extensible
     base for creating GUI-based applications. This release also includes
     new popup menu and scrollplane classes.

   * A lightweight user interface (UI) framework allows Java programs to
     directly extend components and containers.

   * Graphics image handling features in Release 1.1.2 give improved and
     faster image cropping, scaling, and rendering.

   * Users can activate Java programs with menu functions by keyboard
     shortcuts.

   * New printing capabilities allow users to easily print all screen
     graphics.

   * Security Package-- provides for digital signatures, certificate and key
     management and access control.

     Java Cryptography Architecture is a flexible API which includes digital
     signatures and message digests. This architecture provides
     cross-provider interoperability, and supports algorithm independence
     and widely used algorithms such as DSA, SHA and MD5.

     The java.security APIs provide a standard set of algorithm- specific
     interfaces, access control, secure hash functions, and 100% Java
     implementation of DSA, MD5 and SHA.

     The Security Utilities provide a number of security functions such as
     code-signing facilities for x.509 certificate parsing and generation,
     certificate requests, and private key encoding according to Public Key
     Cryptography Standards.

   * Internationalization Support -- enables development of localizable
     applications.

     This release enables developers to create multilingual programs easily
     and to format output and parse common data types for specific
     user-selected locales.

   * Remote Method Invocation (RMI) -- permits Java to Java communication.

     The Java to Java Object Distribution feature enables an object in one
     Java Virtual Machine (VM) to seamlessly invoke methods on objects in a
     remote VM.

     RMI supports communication among applets and applications over the
     internet by using the HTTP protocol.

     Distributed Polymorphism is an extension to object polymorphism. RMI
     sanctions this over distributed applications.

   * Java Database Connectivity(tm) (JDBC) -- provides SQL database access.

     The JDBC API provides database independent connectivity between a Java
     application and a wide range of databases. ODBC bridge drivers from
     your vendor of choice provide access to most popular databases.

   * JavaBeans(tm) -- gives end users a model with which to turn software
     components from one or more parties into applications.

     The JavaBeans APIs enable developers to write re-usable components.
     JavaBeans developers will have a seamless and powerful means to run
     their applications in COM/ActiveX, OpenDoc, and Netscape's
     LiveConnect(tm).

   * Java Native Interface (JNI) -- allows Java to call other language
     libraries.

     The Java Native Interface is a standard native method interface that
     allows Java to call up native libraries written in C, C++, assembly, or
     other languages. JNI offers a VM-independent programming interface to
     native programs that enables developers to write a single native method
     library version that will be binary compatible with all Java VMs on a
     given platform.

     The Invocation Interface API allows software vendors to load the VM
     into arbitrary native applications, and therefore, integrate Java-based
     applications or functionality into their applications.

     Native methods usage information and examples for the HP platform are
     available on the JDK software. The documentation installs in
     /opt/java/docs/hpux. Any updates will be published via our URL
     http://www.hp.com/esy/go/java.html.

   * Networking Package -- provides basic support for managing connections.

     The URL and Socket Connections feature provides the basic support for
     managing connections using UDP or TCP sockets. It also provides the
     basic support for managing IP addresses and Web URLs.

     New Socket options such as TCP_NODELAY and SO_TIMEOUT provide greater
     control over socket connections.

     New Extendible Socket and ServerSocket classes enable custom functions
     such as compression and encryption.

   * I/O Package -- supports 16-bit Unicode characters.

     The Basic Byte-Stream I/O classes provide basic facilities for file
     I/O, buffering, pipes, filtering, and reading and writing binary data
     in a portable format.

     The Character-Stream I/O package allows developers to use 16-bit
     Unicode characters to make it easy to internationalize programs.

     Object Serialization converts Java objects into a stream of bytes that
     can be saved, stored, transmitted, and later used to create objects.

   * Other APIs -- provide useful functions:

     The java.lang core language classes such as String, Thread, Math, and
     class wrappers for primitive data types extend the functionality of
     Java providing, for example, control over strings, math operations and
     multi-threading.

     Runtime classes such as ClassLoader, SecurityManager, and Runtime
     provide access to the VM so developers can customize runtime behavior.

     The text manipulation package java.text provides support for text
     formatting, input, and manipulation.

     Core Utility Classes include data structures which are useful in
     typical Java applications: a hash table, a class to manipulate dates,
     and a random number generator, for example.

     java.util.zip provides zip archival and retrieval support.

For reference, the Java sources for the API classes are in the /opt/java/src
directory.

In addition to the rich set of APIs, release 1.1.2 also improves application
performance by reducing call overhead for synchronized methods, improves
garbage collection, and includes the JAR (Java ARchive) platform independent
file format. The JAR format enables fast downloads and allows entries to be
digitally signed to authenticate origin.

For more information, see the release notes included with the Java product
or check our web page at http://www.hp.com/esy/go/java.html.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.3 Asian System Environment (ASE)

ASE is the system environment covering the Asian countries of Japan, Korea,
and China. It includes these four system environments:

JSE

     Japanese System Environment

KSE

     Korean System Environment

SSE

     Simplified-Chinese System Environment

TSE

     Traditional-Chinese System Environment

The following information is common to each of these environments:

   * ximsstart is replaced with dtimsstart on HP-UX 11.0 CDE. With this
     change, XimsMode in "Application Manager - Desktop_tools" on CDE is
     replaced with DtImsMode.

   * The command /usr/bin/X11/ximsmode has been removed at HP-UX 11.0. No
     alternative is provided.

   * The following HP proprietary old locale names are no longer supported.

     japanese

     japanese.euc

     korean

     chinese-s

     chinese-t

     chinese-t.big5

     Instead of HP proprietary old locale names, use the following locales:

     -----------------------------------------------------------------------

       Old              New

       japanese         ja_JP.SJIS

       japanese.euc     ja_JP.eucJP

       korean           ko_KO.eucKR

       chinese-s        zh_CN.hp15CN

       chinese-t        zh_TW.ccdc

       chinese-t.big5   zh_TW.big5

     -----------------------------------------------------------------------
   * HP proprietary old X11 fonts are no longer supported. These X11 fonts
     under the following directories have been deleted:

     /usr/lib/X11/fonts/hp_japanese/75dpi

     /usr/lib/X11/fonts/hp_korean/75dpi

     /usr/lib/X11/fonts/hp_chinese_s/75dpi

     /usr/lib/X11/fonts/hp_chinese_t/75dpi

     If you use the old X11 fonts, you are impacted. Use the new X11 fonts
     instead of Intellifont.

     Instead of HP proprietary old X11 fonts, use the new fonts under the
     following directories:

     /usr/lib/X11/fonts/hp_japanese/100dpi

     /usr/lib/X11/fonts/hp_korean/75dpi

     /usr/lib/X11/fonts/hp_chinese_s/75dpi

     /usr/lib/X11/fonts/hp_chinese_t/75dpi

   * Asian Starbase fonts have been deleted.

   * udcsc(1) - The tool for User Defined Characters in Starbase stroke
     fonts has been deleted.

   * Open NLIO library (libnlio) has been deleted. Instead of Open NLIO
     library (libnlio), use X11R5 Ximp or X11R6 XIM protocol.

   * Printers in the LaserJet II Series are no longer supported. Instead of
     LaserJet II Series printers, use printers from the LaserJet III, 4, and
     5 Series.

   * Printing Asian PCL files to LIPS, PS, ESC/P, and Japanese PCL printers
     is no longer supported. Thus, you can no longer print Asian PCL files
     using the following model files as of HP-UX Release 11.0:

     -----------------------------------------------------------------------

       Model file  Option

       LIPS3       -opcl

       LIPS4       -opcl

       PS.nlio     -opcl

       ESCP        -opcl

       PCL5.asian  -oapcl

     -----------------------------------------------------------------------
   * Various printing options supporting the LP spooler and HPDPS have been
     removed as of this release. For details, see the HP-UX file
     /usr/share/doc/PRINT-ASE-NOTE.

******************************************************************************
2.3.1 JSE (The Japanese System Environment)

   * The following printers are now supported:

     -----------------------------------------------------------------------

       Printer                   LP model   DPS model

       Canon LBP-730PS           PS.nloo    LBP-730PS

       Canon LBP-740             LIPS4      LBP-740

       Canon LBP-750             LIPS4      LBP-750

       Canon LBP-930             LIPS4      LBP-930

       Oki Microline 900PSII LT  PS.nloo    ML900PSIILT

       Oki Microline 902PSII     PS.nloo    ML902PSII

       Oki Microline 903PSII     PS.nloo    ML903PSII

       Oki Microline 903PSII+F   PS.nloo    ML903PSII+F

       Oki Microline 905PSII+F   PS.nloo    ML905PSII+F

       EPSON VP-2200             ESCP       VP-2200

       EPSON VP-4200             ESCP       VP-4200

       EPSON VP-5200             ESCP       VP-5200

     -----------------------------------------------------------------------
   * 106/109 Keyboards have been added to keyboard support.

   * Some of UDC files have been removed, renamed, and resized.

   * Japanese Intellifont is no longer supported.

     If you use Intellifonts, you are impacted. Use the TrueType option of
     Ricoh instead.

   * Japanese FA/FM fonts are no longer supported.

   * Xsi protocol of XJIM is no longer supported.

   * FSlib - Font Server Access Library is no longer supported.

     Use the X Print Server instead.

   * jtos(1) - the code conversion commands, jtos, jtou, stoj, stou, utoj,
     and utos are no longer supported.

     Instead of jtos(1), use iconv(1) as follows:

     jtos: iconv -f jis   -t sjis
     jtou: iconv -f jis   -t eucJP
     stoj: iconv -f sjis  -t jis
     stou: iconv -f sjis  -t eucJP
     utoj: iconv -f eucJP -t jis
     utos: iconv -f eucJP -t sjis

   * The following function groups in the Japanese library (libjpn) are not
     supported:

     jcode(3X), ibmjcode(3X), jisconv(3X), jctype(3X), jwctype(3X),
     jconv(3X), jwstring(3X), cset(3X), getwidth(3X), euclen(3X),
     wstostr(3X)

     Instead of the Japanese library, use iconv(3C), wctype(3C).

   * dictmerge - the dictionary merge tool for XJIM is not supported.

   * The Kana Kanji conversion library (libjpn) is not supported.

     Instead of the conversion library, use Xlib or OSF/Motif.

   * Printing applications that use Font Server access Library (FSlib)
     provided by JSE should be modified to use the X Print Server.

******************************************************************************
2.3.2 KSE (The Korean System Environment)

No Korean-specific changes for this release.

******************************************************************************
2.3.3 SSE (The Simplified-Chinese System Environment)

No Simplified-Chinese-specific changes for this release.

******************************************************************************
2.3.4 TSE (The Traditional-Chinese System Environment)

tconv, one tool of Traditional Chinese Toolkit (TTK), provides two new code
conversions: GBK to Big5 and Big5 to GBK.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.4 Unified Binary Implementation for HP-UX 11.0

HP-UX 11.0 has been designed and implemented as a unified binary -- the same
kernel runs on HP 9000 server and workstation platforms.

In previous releases of HP-UX, separate kernels existed for servers and
workstations. Although both kernels provided the same APIs and functions,
their implementations were architecturally dependent on the hardware. The
server kernel would not function on a workstation and vice versa.

As of 11.0, the kernel is available in two modes: a 32-bit kernel and a
64-bit kernel. These kernels are the same source compiled as a 32-bit
program or as a 64-bit program. The same 32-bit kernel will operate on a
workstation or a server. The 64-bit version of 11.0 is not supported on
workstations. Refer to Chapter 4: 64-Bit Capable Implementation for more
details about the 32-bit and 64-bit implementations.

The single 32-bit kernel provides infrastructure support for the entire HP
9000 platform range but this does NOT mean that every server function will
operate on every workstation. Conversely, traditionally recognized
workstation functions may not operate on all servers. For example,
MC/ServiceGuard is a high availability software product that is only
supported on servers. Similarly, many graphics display implementations are
dependent on specific hardware being attached to the system. Only a limited
number of graphics hardware sets are supported on servers.

******************************************************************************
2.4.1 64-bit Capable Enterprise Server Systems Supported for 11.0

The following table shows which servers provide 64-bit support:

----------------------------------------------------------------------------
                           Table 2-2:

  New Systems    Existing Systems         Support Provided

  V2200                                   64-bit only

  T600 (12-way)  K370, K570, D280, D380   Both 32-bit and 64-bit

----------------------------------------------------------------------------

----------------------------------------------------------------------------
NOTE

The list in the preceding table may not be a complete list. See
http://www.hp.com/esy/software_applications/hp_ux/products/hpuxtb.html.

----------------------------------------------------------------------------

----------------------------------------------------------------------------
IMPORTANT

The use of the 64-bit version of HP-UX requires that compatible firmware be
installed on the system. Refer to the "Installing HP-UX 11.0 and Updating
HP-UX 10.x to 11.0" manual, and the "Read Me Before Installing or Updating
to HP-UX 11.0" for more information regarding firmware requirements.

----------------------------------------------------------------------------

******************************************************************************
2.4.2 32-bit and 64-bit Kernel Support

The 32-bit kernel can execute on any server and workstation supported on
11.0 except the V2200 server. The 64-bit kernel executes only on certain
servers. The V2200 requires the use of the 64-bit kernel. Note that not all
PA8xx CPU equipped systems are supported for 64-bit operation. The following
table summarizes the HP 9000 server implementations:

----------------------------------------------------------------------------

  32-bit Only        32-bit AND 64-bit   64-bit Only

  D, E, F, G, H, I,  K-Class (PA8xx);    V2200
  K-Class (PA7xx);   T600
  T500; T520

----------------------------------------------------------------------------

----------------------------------------------------------------------------
NOTE

The list in the preceding table may not be a complete list. See
http://www.hp.com/esy/software_applications/hp_ux/products/hpuxtb.html for more information.

----------------------------------------------------------------------------

******************************************************************************
2.4.3 Kernel Interaction

HP-UX 11.0 is only supported in 32-bit mode on HP 9000 workstations.

On 32-bit only platforms, only the 32-bit version of 11.0 can be updated to
or installed. Only 32-bit applications will execute on these systems.

For platforms that run both 32 and 64-bit, either 32-bit or 64-bit versions
can be installed. You can update or install only one version at any given
time.

If the system is running 32-bit 11.0, only 32-bit applications can be
executed. If the system is running 64-bit 11.0, both 32-bit and 64-bit
applications can executed.

For 64-bit only platforms, only the 64-bit version of 11.0 can be installed.
These systems will permit execution of both 32-bit and 64-bit applications.

The development environment available with HP-UX 11.0 permits the
compilation and linking of application code for 32-bit or 64-bit operation
regardless of the type of the operating system on which the compilation is
performed. The rules listed above apply to application execution only. For
example, the compilers and linker on a 32-bit system can produce either
32-bit or 64-bit code. If the output binary is 32-bit, it can be executed on
the system. If the output binary is 64-bit, it cannot be executed on the
system. It must be moved to a 64-bit system to execute.

The unified binary implementation will not affect most applications. Other
HP-UX 11.0 changes might. Therefore, you should review this entire document
to determine whether or not 11.0 will affect your application(s).

It is important for applications that have hardware architecture
dependencies, to properly determine the capabilities of the hardware on
which they are executing and take appropriate action.

******************************************************************************
2.4.4 Identifying System Model Information

In the past, HP 9000 systems have been separated into two categories,
servers and workstations, the servers all having unique 8xx number
identifiers and workstations having unique 7xx identifiers. HP now markets
HP 9000 systems with class identifiers (X-Class where X is a letter).

Examples:

HP 9000 C-Class Workstations

HP 9000 K-Class Enterprise Servers

Up to now, HP has continued to assign unique 7xx and 8xx values for most
classes of machines even though such values are not used by HP for support
purposes.

As of 11.0, HP will no longer assign unique 8xx and 7xx identifiers to HP
9000 systems. All new PA-RISC systems introduced at and after 11.0 will have
a neutral value of "800" or "700" in the hardware model string. This will be
done to maintain compatibility with scripts or application software that
requires a 7xx or 8xx value in the model string.

Formal identification of systems should be achieved using the POSIX standard
system information APIs to determine the true server or workstation
classification (such as K460, B130, V2200). See manpages getconf(1),
sysconf(2), and confstr(3C) or Chapter 4: 64-Bit Capable Implementation for
details on these APIs. All existing servers and workstations will retain
their previously assigned 8xx and 7xx values.

******************************************************************************
2.4.5 Command Name: uname(1) and uname(2)

Identification of the system type has often used the uname function. Two
implementations are available: uname(1) and uname(2). uname(1) is a command
that interprets several items of information pertaining to the system and
prints them. uname(2) is a programmatic version of this command returning
the information in string buffers.

The length of the return strings are governed by the standards based
definition of the UTSNAME data structure found in the file <sys/utsname.h>.

Of particular interest is the machine type return value from this interface.
It is of the form:

9000/8xx or 9000/7xx

Since the machine value is limited to only three characters, the information
returned will not fully identify the platform. It is strongly suggested that
any of these instances in scripts or application code be replaced by the
POSIX standard system information APIs which will correctly identify system
attributes. The attribute functions are discussed more fully later in this
chapter.

Hewlett-Packard intends to ship computer systems in the future which will
not be marketed as 800 or 700 systems, nor will model strings contain 7xx or
8xx values (not even the neutral values 700 or 800) and the uname interface
will not be able to fully specify the system type. Making changes to scripts
or application code prepared for 11.0 to use the POSIX standard system
information APIs will ensure your scripts or code are prepared to identify
future systems from Hewlett-Packard.

The uname interface will continue to be supported in 11.0. Elements of the
UTSNAME structure such as nodename, license level, and hardware id are only
accessible through this interface.

******************************************************************************
2.4.6 Command Name: model(1) and model(4)

The model(1) command will continue to operate normally and return the full
model string information. For example, on a K460 the model command will
return:

9000/889/K460

while the uname -m command would only return:

9000/889

Note that the model string of a system may now be returned programmatically
using the POSIX standard system information APIs. See confstr(3C),
getconf(1), and sysconf(2) or Chapter 4: 64-Bit Capable Implementation for
details.

----------------------------------------------------------------------------
NOTE

Definitions for model(4) implemented in the header file <model.h> will
continue to be supported for compatibility with application code written in
previous HP-UX releases. Some of these constants may be misleading, and
their use is discouraged.

For example,

#define HP_S_800 CPU_PA_RISC1_0

The value for this definition is found in <sys/magic.h> and indicates that
any HP 9000 system with a PA-RISC 1.0 CPU should always be treated as a
Series 800 system. This is clearly no longer a useful definition because:

1) Series 800 system definitions are no longer used

2) Newer HP 9000 servers use PA-RISC 1.1, 1.2, or 2.0 CPUs

Instead of these definitions, the use of the POSIX standard system
information APIs is encouraged.

----------------------------------------------------------------------------

******************************************************************************
2.4.7 Command Name: machid(1)

The use of machid(1) and aliased commands such as hp9000s800 will continue
to be supported but as with uname, cannot fully identify the system on which
they are executed. Also some commands are not particularly useful. For
example, hp9000s800 always returns TRUE on any PA-RISC system. This means
that the use of the hp9000s800 command on an HP 9000 workstation would
return TRUE.

It is strongly suggested that scripts using these commands be modified to
use the getconf(1) function to yield the model string and correctly
interpret it.

See the man page for machid(1) for a full list of the commands involved.

Users of Software Distributor may wish to refer to the Control Script
Writers Guide for more information on the types of changes to consider.

In general, to make scripts and code better able to correctly interpret
system information and take appropriate action, it is strongly suggested
that modifications be made to avoid the use of uname(1), uname(2), model(1),
model(4), machid(1) in favor of confstr(3C), getconf(1), and sysconf(2) for
determining exactly what type a system is.

Remember that uname and model may still have legitimate uses. In particular
uname is still the only method to return certain information.

Example:

The following segment of script code determines whether it is executing on a
Series 700 or 800 and takes appropriate action.

if hp9000s800
then
    # system is Series 700 or 800
        if hp9000s700
        then
            # system is Series 700
            # Series 700 code segment goes here
        else
            # system is Series 800
            # Series 800 code segment goes here
        fi
fi

The script would be better written in 11.0 by adapting the following script
template. System specific items could be executed either by embedding them
in the appropriate case statements or by using the values of script
variables as conditionals later. Note how this script uses a legitimate
uname(1) return.

# First figure out what the model string is
# May have to use multiple methods to get a valid string
case `uname -r` in
 *.09.*) mod=`uname -m` ;;
 *.10.*) mod=`model` ;;
      *) mod=`getconf MACHINE_MODEL` ;;
esac

# Break up the string
mod2=`echo $mod | awk -F'/' '{print $2 }'`
mod3=`echo $mod | awk -F'/' '{print $3 }'`
# Now figure out which category the system is in
# The following variables will be set:
#  server: TRUE | FALSE
#          the system is an HP 9000 server
#          with either an old 8xx designator
#          or is a DEFGHIKTV-class system
#
#  workstation: TRUE | FALSE
#               the system is an HP 9000
#               workstation with either an
#               old 7xx designator or is a
#               BCJ-class system
#
# system: set to the first character of
#         the designator which will be
#         one of [78BCDEFGHIJKTV]

mod3=`echo $mod3 | cut -c 1 `
case ${mod3} in
  [DEFGHIKTV] )
        server=TRUE
        workstation=FALSE
        system=$mod3
     ;;
  [BCJ] )
        server=FALSE
        workstation=TRUE
        system=$mod3
     ;;
  *)
     # Doesn't have a letter - do some more checks
     mod2=`echo $mod2 | cut -c 1 `
     if (($mod2 == "8"))
 then server=TRUE
      workstation=FALSE
      system=$mod2
 else if (($mod2 == "7"))
      then server=FALSE
           workstation=TRUE
           system=$mod2
      else # box is tahoe
           # don't know what to do yet...
                  system=unknown
                  server=FALSE
                  workstation=FALSE
      fi
     fi
    ;;
esac
echo system = $system
echo server = $server
echo workstation = $workstation

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.5 V-Class Server V2200

To support the V2200, support for non-contiguous physical memory has been
added to HP-UX 11.0.

Some of the variables and data structures in the kernel have changed. For
example: physmem, which used to represent the number of pages of physical
memory, has been removed. This may impact applications that use /dev/kmem to
read kernel information. (Most generic commands have been ported to use the
pstat(2) interface.)

PCI device drivers ported to the V2200 must use shared memory.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.6 DCE Bundled Client (libdce, libcma)

The following have changed; details follow:

   * DCE module for the Name Service Switch

   * DCE support of Kerberos V5 Beta 5-7 and Release 1.0

   * New entries for the /etc/services file

   * Login utilities now use PAM technology

   * DCE 32-bit application only

The DCE module for the Name Service Switch allows the getpwnam (and
getgrnam) family of calls to retrieve user information directly from the DCE
registry rather than from /etc/passwd. The major benefit is that customers
are no longer required to frequently run passwd_export to keep /etc/passwd
synchronized with the DCE registry.

The DCE configuration script, dce_config, has been updated to create the
Kerberos configuration file, /etc/krb5.conf, in order to support Kerberos V5
Beta5-7 and Release 1.0 applications. The responsibility to maintain this
configuration file is left to the administrator. DCE continues to create and
maintain the Kerberos configuration files /krb5/krb.conf and
/krb5/krb.realms to support Kerberos applications written prior to Beta 5.

The DCE configuration script has also been updated to support the Kerberos
V5 Beta5-7 and Release 1.0 keytab files by creating links from /etc/v5srvtab
and /etc/krb5.keytab to /krb5/v5srvtab, the Beta4 version of the keytab
which DCE continues to create and maintain.

The following entries are added to /etc/services by the DCE configuration
script to further support Kerberos V5 and secure remote utilities:
kerberos-sec, klogin, kshell, ekshell, and eklogin.

The migration of integrated login utilities from the libauth technology to
the PAM technology has been completed. All integrated login utilities
(login, su, passwd, dtlogin, dtsession, ftpd) now use PAM.

DCE is a 32-bit application only. Properly built DCE applications will
continue to run on both the 32-bit and the 64-bit versions of HP-UX.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.7 Using Oracle 7.3.3 (HP-UX 10.20 Build)

Oracle version 7.3.3, was built on HP-UX 10.20 and was compiled using libc.a
(archived libc) and libcma.sl (shared libcma). This compilation mechanism is
neither recommended by Hewlett-Packard, nor is it Oracle's usual compilation
practice. However, in the specific case of Oracle 7.3.3, this mechanism was
used and has led to a specific issue with running the HP-UX 10.20 compiled
Oracle 7.3.3 on HP-UX 11.0.

In HP-UX 11.0, two shared versions of libcma.sl are provided in the HP-UX
runtime product. The file /usr/lib/libcma.2 (the default libcma.sl) was
compiled on 11.0. The file /usr/lib/libcma.1 is the latest 10.20 revision
incorporating several defect repairs for problems uncovered in the field
with HP-UX 10.20.

A defect repair for large file size support in libcma.1 makes reference to
the symbol getrlimit64. This symbol was not referenced in the original 10.20
version of libcma.1 used by Oracle for the 7.3.3 build. If you attempt to
install and run the 10.20 build of Oracle 7.3.3 on HP-UX 11.0, it will
likely fail at runtime with the error: dld: could not resolve getrlimit64
from /usr/lib/libcma.1

There are two ways to avoid the problem:

  1. Obtain the 11.0 compiled version of Oracle 7.3.3 by contacting your
     Oracle Sales Representative. This version will operate correctly on
     HP-UX 11.0.

  2. Obtain the original 10.20 libcma.1 file and use it to replace the later
     revision of this file provided with 11.0. Please make a backup copy of
     the 11.0 version. The original file stamp for libcma.1 on HP-UX 10.20
     is:

# ll /usr/lib/libcma.1
-r-xr-xr-x 1 bin        bin   520192 May 30 1996 /usr/lib/libcma.1
#
# what /usr/lib/libcma.1
/usr/lib/libcma.1:
   HP DCE/9000 1.5 Module: libcma.sl (Export) Date: Apr 29 1996 22:11:24
#

******************************************************************************
2.7.1 Applications Built on HP-UX 10.30 Using libcma.1

Since the version of libcma.1 provided with HP-UX 11.0 is the latest HP-UX
10.20 revision, if you attempt to install and run an application built on
HP-UX 10.30 referencing libcma.1, the application will fail. You must
reference the libcma.2 file provided with HP-UX 11.0 for the application to
run.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.8 NCS/NCK Product Obsolescence

The NCS/NCK product has been completely obsoleted as of this release. The
development environment for NCS has not been available for any of the HP-UX
10.x releases. The runtime environment was the only functionality available
on the HP-UX 10.x versions. With HP-UX 11.0, the runtime environment is no
longer available and has been removed from the system as part of the
installation process.

The replacement functionality for NCS runtime is DCE. Applications that have
been designed to use NCS need to be ported to the DCE functionality. Consult
the DCE documentation for information.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.9 HP-IB and Fiber Link Support Discontinued

HP-IB and Fiber Link disks and interface cards are not supported by HP-UX
Release 11.0. All such devices should be removed from your system before
installing or upgrading to HP-UX Release 11.0.

If you have HP-IB or Fiber Link disks, you should back up their data or copy
it to non-HP-IB or Fiber Link disks to retain the data. You should make
other arrangements for any services that are now being performed by HP-IB
devices.

If you do not disconnect the HP-IB and Fiber Link devices, your system will
still update to 11.0, but you will not be able to get to the data on these
disks or otherwise use these devices.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.10 Dynamically Loadable Kernel Modules (DLKM)

An advanced operating system feature called Dynamically Loadable Kernel
Modules (DLKM) provides the infrastructure necessary to load different
subsystems into a running kernel. DLKM also provides the mechanisms to
unload, configure, and query loaded subsystems.

The current HP-UX kernel configuration mechanism has been extended to
support the configuration of DLKM. This introduces new commands, extends
existing commands and adds files and directories to the current HP-UX
directory structure.

With the introduction of DLKM, the system now contains both the static
kernel and a set of loaded modules, each of which contains separate symbol
tables and unwind information. Commands, libraries, and any applications
which interact with kernel data, symbols, etc., must now also address
loadable modules in order to view the entire system.

User level interfaces into the kernel have been modified to be made
"DLKM-aware" in order to obtain information from both the static kernel and
any modules that have been loaded.

Additional commands and system calls have been added to load, unload,
configure, and query for loadable modules.

The primary user level interface changes are as follows:

   * New system calls: getksym(2), modadm(2), modload(2), moduload(2),
     modpath(2), modstat(2).

     The getksym(2) system call obtains global kernel symbol information.

     The modadm(2) system call provides administrative access to DLKM
     modules.

     The modload(2) system call loads a loadable kernel module.

     The moduload(2) system call unloads kernel modules.

     The modpath(2) system call changes the search path for loadable
     modules.

     The modstat(2) system call obtains information about loadable modules.

   * Modified system call: ioctl(2)

     The ioctl(2) will be extended to include the following:

     MIOC_READKSYM - Read buflen bytes of kernel memory starting at the
     address for the symbol name.

     MIOC_WRITEKSYM - Write buflen bytes into kernel memory starting at the
     address for the symbol name.

     MIOC_IREADKSYM - Indirect read: Read sizeof(void *)bytes of kernel
     memory starting at the address for the symbol name. Use that address to
     read buflen bytes of the kernel memory.

     MIOC_IWRITEKSYM - Indirect write: read sizeof(void *) bytes of kernel
     memory starting at the address for the symbol name. Use that as the
     kernel memory address into which buflen bytes from buf are written.

     MIOC_LOCKSYM - Increase by one the hold count on the module whose name
     is given as the third argument to ioctl, thereby preventing the module
     from being unloaded.

     MIOC_UNLOCKSYM - Decrease by one the hold count on the module whose
     name is given as the third argument to ioctl, thereby making the module
     a candidate for unloading if the hold count is now 0.

******************************************************************************
2.10.1 Kernel Configuration

The change in the kernel configuration design for DLKM revolves around the
introduction of modules. A module may be viewed as an atomic unit that may
be installed or removed from the system, to be configured and built as
desired.

The following information presents primary kernel configuration features
visible to users.

==============================================================================
2.10.1.1 New User Level Commands

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2.10.1.1.1 kmadmin(1M)

kmadmin(1M) is an administrative command for dynamically loadable kernel
modules allowing administrators to load, unload, and query for loadable
modules.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2.10.1.1.2 kminstall(1M)

kminstall(1M) installs, removes or updates a module on a system.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2.10.1.1.3 kmsystem(1M)

kmsystem(1M) provides an interface to set the flags indicating whether a
module needs to be configured and whether it needs to be built as loadable
or static.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2.10.1.1.4 kmtune(1M)

kmtune(1M) provides an interface to set the tunable parameters for a module.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2.10.1.1.5 kmmodreg(1M)

kmmodreg(1M) registers or unregisters a loadable module with the kernel.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2.10.1.1.6 kmupdate(1M)

kmupdate(1M) updates default kernel file and associated modules and context
files or updates specified loadable modules.

==============================================================================
2.10.1.2 Modified User Level Commands

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2.10.1.2.1 config(1M)

config(1M) currently is used to build the static kernel. New options are
added to this command to allow the build of loadable modules. It will be
possible to build the specified loadable modules individually and
dynamically, without requiring a rebuild or reboot of the entire system.

Old Usage:

/usr/sbin/config [-t] [-m master] [-c c_file] [-l m_file] [-r dir] [-s]
systemfile

New Usage:

/usr/sbin/config [-S] [-#] [-t] [-m master] [-c c_file] [-l m_file] [-r dir]
[-u] [-s] systemfile

#VALUE!

#VALUE!
shutdown.

-# option will be the debug option.

/usr/sbin/config -M module [[-M mod-name]...] [-m master] [-u] [-#]

#VALUE!

#VALUE!

-# option will be the debug option.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2.10.1.2.2 mk_kernel(1M)

mk_kernel(1M) currently calls config(1M) to build the static kernel. New
options to build loadable modules are added to this command. It will call
config(1M) with the extended options accordingly.

Old Usage:

/usr/sbin/mk_kernel [-v] [-o <target file] [-s <system file>]

New usage:

/usr/sbin/mk_kernel[[-M mod-name]..][-v][-o <target file][-s <system file]

#VALUE!

==============================================================================
2.10.1.3 New Files and Directories

New Directories

/usr/conf/interface.d

/usr/conf/km.d

/usr/conf/km.d/<mod-name>

/stand/build/dlkm.vmunix_test

/stand/build/dlkm.vmunix_test/mod.d

/stand/build/dlkm.vmunix_test/node.d

/stand/build/dlkm.vmunix_test/system.d

/stand/build/km.d

/stand/build/km.d/<mod-name>

/stand/build/mod_wk.d

/stand/dlkm

/stand/dlkm/mod.d

/stand/dlkm/node.d

/stand/dlkm/system.d

/stand/dlkm.vmunix.prev

/stand/dlkm.vmunix.prev/mod.d

/stand/dlkm.vmunix.prev/node.d

/stand/dlkm.vmunix.prev/system.d

/stand/system.d

New Files

/usr/conf/gen/config.lm

/usr/conf/interface.d/<name.<ver>>

/usr/conf/master.d/<mod-name>

/usr/conf/km.d/<mod-name>/space.h

/usr/conf/km.d/<mod-name>/mod.o

/usr/conf/km.d/<mod-name>/Modstub.o

/stand/build/dlkm.vmunix_test/mod_register

/stand/build/dlkm.vmunix_test/mod.d/<mod-name>

/stand/build/dlkm.vmunix_test/node.d/<mod-name>

/stand/build/dlkm.vmunix_test/system

/stand/build/dlkm.vmunix_test/system.d/<mod-name>

/stand/build/km.d/<mod-name>/mod_reg

/stand/build/mod_wk.d/<mod-name>

/stand/dlkm/mod_register

/stand/dlkm/mod.d/<mod-name>

/stand/dlkm/node.d/<mod-name>

/stand/dlkm/system

/stand/dlkm/system.d/<mod-name>

/stand/build/tune.h

/stand/build/config.mod

/stand/system.d/<mod-name>

==============================================================================
2.10.1.4 Modified Master File

The format of the master file has been extended to include the following
additional sections:

$LOADABLE section - indicates whether module is capable of being loaded.

$VERSION section - indicates version number.

$INTERFACE section - indicates the interfaces on which the module depends.

$TYPE section - indicates the type of a module and type specific
information.

All the currently existing sections will still be maintained.

==============================================================================
2.10.1.5 Additional Details

With the introduction of DLKM, commands, libraries, and tools accessing
kernel information will need to be modified to access loadable module
information in addition to the static kernel. This includes, but is not
limited to, kernel debuggers, profiling tools, system administration
facilities, system installation, and kernel dump utilities.

Prior to 11.0, there was only one system file, /stand/system. With the
introduction of DLKM, every modulenow has its own system file.

The /stand/system file still exists for current subsystems. A user or
program should use kmsystem(1M) and kmtune(1M) to edit the /stand/system
file and individual system files for modules. kmsystem(1M) is used to
specify whether a module needs to be configured or unconfigured.
kmsystem(1M) is also used to specify whether a loadable module needs to be
configured as loadable or static. The kmtune(1M) command is used to set,
retrieve, query, or increment tunable parameters for a module.

The kernel is no longer a single executable (/stand/vmunix). It rather
consists of a collection of static kernel files in memory, the kernel symbol
table file, and the loadable images of dynamic modules. The user may may
build the complete new kernel the same way as before. Since the kernel is no
longer a single file, moving /stand/build/vmunix_test to /stand/vmunix and
rebooting will no longer be sufficient.

The user will need to execute a new command, kmupdate(1M), that initiates
the move of the specified kernel file together with its associated directory
containing related files during the next shutdown. Instead of rebooting, the
user will need to execute the shutdown command.

Programs using mk_kernel(1M) or config(1M) will need to be compiled with the
new options in order to take full advantage of the DLKM feature.

The DLKM feature provides the ability to add kernel subsystems on an as
needed basis. Modules can be loaded on demand (via the kmadmin(1M) command)
or automatically when the functionality contained within the modules has
been accessed. This capability enables the system to operate with a static
kernel providing the capability to add functionality as needed without
rebuilding/rebooting the entire kernel. The impact on the system when a
module is first loaded is expected to be negligible.

With the DLKM feature, it will no longer be necessary to relink the entire
kernel and reboot the system in order to include a loadable module. The
kernel configuration extension will allow loadable modules to be built
individually and dynamically as required. This will reduce the number of
kernel rebuilds and system downtime, thereby enhancing the overall
performance of kernel configuration.

DLKM not only provides the ability to build dynamic modules but also to
build loadable modules as static modules which enables administrators to
include the module's functionality in the static kernel.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.11 Performance-Optimized Page Sizing (POPS)

----------------------------------------------------------------------------
NOTE

Performance-Optimized Page Sizing is often referred to as Variable Page
Sizing.

----------------------------------------------------------------------------

Performance-Optimized Page Sizing (POPS) now provides the potential for
improved performance to ALL processes on processors that support POPS (for
example, PCX-U processors). Previous releases provided POPS only to
processes that locked their image into physical memory with plock(2).

The POPS feature enables administrators to specify how large a page size an
application can use. This is most useful on heavily loaded systems
experiencing table lookaside buffer thrashing. It is available only on
PA-8xx-based systems.

Existing options to chatr(1) allow the user to specify the optimum page size
for a given executable. See the chatr(1) man page for more details. In the
absence of a chatr "hint", heuristics will transparently determine the
optimum page size. These heuristics are configurable via new kernel
tunables.

   * There are new kernel tunables to assist transparent page size
     selection. See SAM's help facility for details.

   * Options to the chatr command will override transparent page size
     selection. See the chatr(1) man page for more details.

Additional information is available in the "HP-UX 11.0 Performance Optimized
Page Sizing" whitepaper at the Electronic Support Center (formerly known as
HP Supportline).

******************************************************************************
2.11.1 Performance

The heuristics used to transparently determine optimum page size, in
conjunction with the default values for the new kernel tunables, may not be
effective for all executables and environments. Performance may be degraded.

If the heuristics and default tunable values do not provide satisfactory
performance, users may want to modify the tunables and/or use the chatr
functionality to hand-tune the optimum page size. New tools that analyze a
process's run-time behavior will assist users in selecting the correct page
size. See the chatr(1) man page.

Performance-Optimized Pages functionality will only be visible to machines
that support this feature (for example, PCX-U processors).

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.12 New APIs and Commands

HP and Santa Cruz Operation (SCO) have jointly developed a 64-bit common
Application Programming Interface (API) specification. The API specification
is based on the practical convergence of HP-UX and SCO UnixWare to provide
software developers with a consistent platform for developing applications
on UNIX platforms. HP-UX will conform to the specification over time.

In the 11.0 release, a new library and six new APIs as well as two new
commands are introduced. These interfaces are new to HP-UX but they have
been available on SCO's UnixWare. In addition, many HP-UX commands have been
changed to conform with the specification. Some additional features make the
interfaces more robust. See individual command descriptions in Section 8.1
Changed User Commands in Section 1 and Section 8.2 Changed System Management
Commands in Section 1M in Chapter 8 for impacted commands.

See find(1) and make(1) command descriptions for improvement in performance.

******************************************************************************
2.12.1 libgen

The following six new library interfaces are now available in a new library
named libgen:

bgets(3G) - read stream up to next delimiter

bufsplit(3G) - split buffer into fields

copylist(3G) - copy a file into memory

mkdirp(3G), rmdirp(3G) - create, remove directories in a path

pathfind(3G) - search for named file in named directories

******************************************************************************
2.12.2 fmt(1) and infocmp(1M)

The following two new commands are now available:

fmt(1) - a simple text formatter that fills and joins lines to output lines
of (up to) the number of characters specified in its -w <width> option.

----------------------------------------------------------------------------
NOTE

Prior to the 11.0 release, HP-UX provided a proprietary command, called
fmt(1M), to format an HP SCSI disk array LUN. This disk formatting command
has been renamed to format(1M).

----------------------------------------------------------------------------

infocmp(1M) - compares or prints out terminfo descriptions.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.13 Recovery Tools For 11.0

The "expert" system recovery tools formerly delivered on the SUPPORT MEDIA
(that allow a user to attempt to repair a corrupted system) are now found on
the CORE media and are accessible by booting from the CORE media.

Two new tools and their manpages are included with the Ignite-UX product,
which is on the Application Release media. You will need to load the
Ignite-UX-11-00 bundle from the media. (Ignite-UX-11-00 is also available
from http://www.software.hp.com).

   * The make_recovery command creates a system recovery tape. This tape can
     be used to boot and recover a system which has become unbootable due to
     corruption of the root disk or root volume group. As a "customized"
     installation medium, it makes use of the installation technology
     provided by Ignite-UX.

     A system can be booted and installed from the tape without user
     intervention for configuration, customization, software selection,
     hostname, or IP address.

   * The make_medialif command creates a bootable LIF image which can be
     copied to either a DDS tape or a writable CD to create an Ignite-UX
     install medium.

     -----------------------------------------------------------------------
     NOTE

     The copyutil tool, formerly supplied as part of the Support Media, is
     not supported for HP-UX 11.x or later. Instead, you should use the
     make_recovery tool for creating a system recovery tape.

     -----------------------------------------------------------------------

For more information on expert recovery, make_recovery(1M), and
make_medialif(1M) are described in the manual "Installing HP-UX 11.0 and
Updating HP-UX 10.x to 11.0".

******************************************************************************
2.13.1 System Recovery

HP-UX system recovery has been enhanced at 11.0 to support recovery of
customized systems. System recovery permits the customer to create a
customized system install image of the existing system on a bootable tape.
Coupled with a full backup, the customer can recover the system in the event
of a catastrophic failure of the system disk or root volume group.

The following new commands have been added for system recovery :

==============================================================================
2.13.1.1 make_recovery(1M)

The make_recovery command is used to create the system recovery image on a
bootable tape. (See above.)

==============================================================================
2.13.1.2 save_config(1M)

The save_config command can be run by the system administrator to create a
configuration file that reflects the current hardware and software
configuration of the system.

==============================================================================
2.13.1.3 check_recovery(1M)

The check_recovery command will check whether the system recovery image
needs to be re-created.

For details about these new commands, please refer to their manual pages,
included with the Ignite-UX product.

----------------------------------------------------------------------------
NOTE

These commands and manpages are not installed on your system as part of the
core HP-UX operating system. They are part of the Ignite-UX software package
and will be installed on your system when you install Ignite-UX. Ignite-UX
is located on the HP-UX 11.0 Application Release media.

----------------------------------------------------------------------------

==============================================================================
2.13.1.4 Impact

Prior to 11.0, a catastrophic failure of the system disk or root volume
group required a cold install and re-installing customized system settings
to return the system to its previous state. With enhanced system recovery,
the customer only needs to recover using the system recovery image. An
up-to-date system recovery will require creating a current system recovery
image whenever any modifications are made, such as adding new software,
hardware, or patches.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.14 CDE & Motif

******************************************************************************
2.14.1 HP Common Desktop Environment (HP CDE 2.1)

HP CDE 2.1 is the HP product version of the latest release of the CDE
industry standard UNIX desktop. Basic features include:

   * For end users, CDE provides basic desktop services along with a
     collection of tools such as a GUI mailer, a calendar manager, and a
     print queue manager.

   * For developers, CDE provides a rich set of API's at all levels
     supporting desktop integration, while accommodating existing
     applications without change.

   * For system administrators, CDE provides a significant advance in ease
     of use in administering heterogeneous environments by standardizing
     desktop configurations and administration procedures.

==============================================================================
2.14.1.1 Changes for 11.0

HP CDE 2.1 is the latest version on HP-UX 11.0, superseding HP CDE 1.0 as
shipped with previous releases.

HP CDE 2.1 is built using the Motif 2.1 toolkit, providing Motif 2.1 style
and behavior consistency which is very close to the style/behavior provided
previously by Motif 1.2.6.

There are a few small functional differences between the run-time
functionality of HP CDE 1.0 and 2.1. For HP CDE 2.1:

   * The user can select between current and home sessions from the login
     screen (both display-independent and display-dependent versions). In
     addition, system administrators can add to the login option menu
     additional sessions that can be selected.

   * The Calendar Manager (dtcm), Mailer (dtmail), and Editor (dtpad) now
     use the X Print Server (and related functionality) to print. The print
     dialogs are different than those used with HP CDE 1.0.

   * For selected locales, input methods can be selected at session start
     (using dtimstart).

   * Several actions and utilities have been added to manage the action
     cache.

The HP CDE 2.1 shared libraries (Tooltalk, etc.) support threaded
applications and applications developed using the ANSI C++ compiler.

HP CDE 1.0 was localized in 10 languages. HP CDE 2.1 will be fully localized
(including interfaces, messages, on-line help, and manuals) for English,
Japanese, German, and French. It will have localized interfaces and messages
for Chinese (traditional and simplified), Korean, Swedish, Italian and
Spanish.

==============================================================================
2.14.1.2 User Documentation

The CDE English run-time documentation is available online via the HP
Instant Information CD-ROM. Instant Information is the new on-line book
viewer that replaces HP LaserROM. The CDE English documents are also
available on the World Wide Web at http://docs.hp.com. Other languages may
also be available on the Instant Information CD-ROM. In addition, the "HP
CDE 2.1 Getting Started Guide" (HP Part Number: B1171-90141) is provided in
hardcopy for all languages.

Technical Print Service documentation is provided in online help volumes.

==============================================================================
2.14.1.3 Impact

The impact on users moving from HP CDE 1.0 to HP CDE 2.1 will be minimal.
Functional changes are generally minimal, additive, and optional.HP CDE 2.1
is compatible with HP CDE 1.0 in all areas, including configuration files,
API's and desktop behavior. A small exception is in the way dtcm, dtpad, and
dtmail print.

==============================================================================
2.14.1.4 hpterm Discontinued After 11.0

Two terminal emulators, hpterm and dtterm, have been available since 10.10.
With the discontinuance of VUE at the 10.30 release, CDE became the default
desktop environment and dtterm became the default terminal emulator. hpterm
will no longer be shipped after 11.0.

==============================================================================
2.14.1.5 Configuring a Host as a Font Server or Font Client

The utilities associated with configuring a host to be a font server are no
longer provided. These were the commands mk_fnt_srvr, mk_fnt_clnt, and part
of set_parms. To establish a host as a font server you can now simply start
the font server, xfs. To do this, enter:

/usr/bin/X11/xfs -port 7000 -daemon

See the xfs(1) manpage for more details.

To configure a host to use a font server (that is, to configure your system
as a font client), you need to run xset to add the host of the font server
to your font path. For example:

xset +fp tcp/hpcvxaa:0

See the xset(1) manpage for more details.

To ensure that the host is always configured to be a font server upon
reboot, change the line in /etc/rc.config.d/xfs to

RUN_X_FONT_SERVER=1

otherwise, use

RUN_X_FONT_SERVER=0

The utility /sbin/init.d/xfs can be used to stop all instances of xfs (xfs
may clone itself). To do this:

/sbin/init.d/xfs stop

******************************************************************************
2.14.2 X/Motif Libraries

For 11.0, the changes fall into two types:

   * To the X Window System Version 11 from Release 6.1 libraries to Release
     6.2 libraries

   * To OSF Motif from 1.2 libraries to 2.1 libraries

==============================================================================
2.14.2.1 Changes to X Window System

Changes from X11 R6.1 to 6.2

   * Defect fixes

   * Print Extension

   * Vertical Writing & User-Defined characters

==============================================================================
2.14.2.2 Changes to Motif

Changes from Motif 1.2 to 2.1

   * Defect fixes

   * New Widgets: XmNotebook, XmContainer, XmIconGadget, XmComboBox,
     XmSpinBox, and XmScale

   * Enhancements in libXm:

        o Simplified programming of popup menus

        o X Pixmap (XPM) format support, with multicolor icons

        o List-quick navigation

        o Drawing area traversable via keys; virtual key associated with
          multiple real keys

        o Visuals

        o XmScreen resources

        o Resolution independence unit conversion

   * New format Xme API for integrating custom widgets interfaces without
     accessing Motif source code

   * All extensions using Xme API are "full citizens"

   * Manager and primitive widget subclassing

   * Trait mechanism for Motif widgets, allowing multiple inheritance of C
     class methods

   * Support for X Print Server

   * Libraries are thread-safe

   * Internationalization support: on-the-spot input method and vertical
     text writing

   * UIL enhancements:

        o Support for new and custom widgets

        o 64-bit architecture support

==============================================================================
2.14.2.3 Impact

At HP-UX 11.0, Motif 1.2 will no longer be the Motif development
environment. Only the run-time version of Motif 1.2 libraries are provided
to support the current existing Motif 1.2 applications. Motif 2.1 will be
the Motif development environment on an HP-UX 11.0 system.

X11 R6.2 is only an update version of the previous X11 R6.* As such, there
should be no impact on current existing X11 R6.* applications.

==============================================================================
2.14.2.4 Compatibility

X11 R6.2 is backward compatible with the previous X11 R6.* versions. Motif
2.1 is backward compatible with the previous Motif 1.2.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.15 Software Distributor (SD-UX)

******************************************************************************
2.15.1 Important Information for HP-UX Updates

The following information is critical to proper updates from HP-UX 10.x
releases to 11.0 and moving between 32-bit and 64-bit versions of 11.0.

The -x os_name and -x os_release options MUST be set on the command line for
the swinstall command used to perform the update. This is true even if the
Interactive User Interface is used. For example, a command to bring up
swinstall in interactive mode to update to the 32-bit version of 11.0 from
HP-UX 10.x looks like:

swinstall -x os_name=HP-UX:32 -x os_release=B.11.00

(Note: this is AFTER performing the swgettools step.)If the update is being
done from 10.20 or 10.30 to the 64-bit version of 11.0 (on hardware capable
of supporting it), the -x os_name argument becomes HP-UX:64. After doing an
update to 11.0, the bit width of the current HP-UX system can be determined
by the command:

getconf KERNEL_BITS

To update from 32-bit to 64-bit versions of the 11.0 system (or vice versa),
the swgettools step must first be executed, just as if the system were being
updated from 10.x. In addition to the -x os_name and -x os_release options
mentioned above, the -x reinstall=true and -x reinstall_files=true options
MUST be set.

The -x allow_incompatible=true option should NEVER be used when performing
updates to 11.0 or between the 32-bit and 64-bit versions of 11.0. Use of
this option is likely to result in a failed update and possibly an
unbootable system.

After executing the swgettools step to perform an update, additional
information on recommended syntax for these options can be found by
executing the command:

swlist -l product -a readme SW-DIST

******************************************************************************
2.15.2 Features and Changes

----------------------------------------------------------------------------
NOTE

Some of these features were provided in the 10.30 release of HP-UX.

----------------------------------------------------------------------------

   * Source depot auditing is now provided on the machine that contains the
     source depot.

   * The SD-UX commands have been enhanced to provide better support for
     software patches. Several new options and attributes have been added to
     facilitate this feature.

   * Multi-Stream support has been added which enables SD-UX to store
     products and filesets of more than one type (32 or 64 bit) in a single
     SD-UX depot, manage these software collections, and install them to
     systems. In addition, the -x os_name and -x os_release options have
     been implemented to permit updates from merged depots.

   * The -i option has been added to swlist which invokes the Interactive
     User Interface.

   * The SD-UX logfiles can now be viewed interactively.

   * Any previously successfully selected depot is offered as a choice
     during an interactive command.

   * Interactive swinstall and swcopy will automount the CD-ROM device.

   * SD-UX will enforce UNIX95 "classic" behavior for HP-UX 10.30/11.0.

   * Numerous changes have been made to bring SD-UX into compliance with the
     IEEE 1387.2 standard. The default format for depot layouts and the
     default data model for SD-UX data structures has changed.

   * Interactive control scripts are now supported via the swask command.

   * Diskless clusters are not supported in HP-UX 11.0. The swcluster
     command is no longer supported. Any system updated to 11.0 must be a
     stand-alone system.

   * The fpkg2swpkg command has been removed. This was intended as a
     temporary aid to assist customers in updating their software packages
     from 9.x to 10.x.

   * The update and updist commands and supporting files have been removed
     from 11.0. These were also intended as temporary aids to ease the 9.x
     to 10.x transition. They (and fpkg2swpkg) were included in the
     SW-DIST.RUPDATE fileset, which will not be delivered at 11.0. Any
     existing version of this fileset will be removed during the update
     process.

   * The operation of the ancestor attribute and the match_target option has
     been modified to allow better handling of patches and future SD-UX
     features.

******************************************************************************
2.15.3 Summary of Changes

==============================================================================
2.15.3.1 Source Depot Auditing

If both the source and target machines are updated to 10.30 or a later
version of HP-UX, the system administrator at the source depot machine can
turn the audit functionality on or off. This functionality tracks WHO pulls
WHAT software and WHEN using the source depot log information.

If the system administrator at the source depot machine sets

swagent.source_depot_audit=true

in the /var/adm/sw/defaults file, a swaudit.log file is created on the
source depot (for writable directory depots) or in /var/tmp (for tar image,
CD-ROM, or other nonwritable depots). This works like the swagent.log for
the source depot.

Users can also use the swlist Interactive User Interface (swlist -i -d) to
view the audit information on a remote/local depot based on his or her
language preference, as long as the system has the corresponding SD-UX
message catalog files on it. For example, a user can view the source audit
information in Japanese one time, and view the same information in English
the next time. The user can also print the audit information or save it to a
file.

==============================================================================
2.15.3.2 Patch Management

Additional options have been added to the command line interface, and a
"Manage Patch Selection" action has been added in the Interactive User
Interface for the swinstall and swcopy commands. The "Manage Patch
Selection" dialog allows patch_match_target and autoselect_patches to be
turned on or off and if either is on, allows the patch filter to be
specified. Patch attributes were added to the Software Description screen at
the product and fileset level, and a column "Patch?" was added to the
Software Selection Window for products and filesets.

In addition, the swlist command has been enhanced to allow easy listing of
patch information.

Several new attributes have been added to facilitate packaging and
management of patches. Details of these attributes can be found in the
documentation for SD-UX commands. Note that the new SD-UX options described
in this section only apply to patches packaged using the new attributes. The
following new options will be available at the command line. They will be
accessible via the -x flag and through the defaults files.

   * autoselect_patches=true (default)|false

     When the default is selected, this option causes the latest patches
     associated with software selections to be selected during swinstall and
     swcopy operations.

     Applies to swinstall and swcopy.

   * patch_match_target=true|false (default)

     This option corresponds to the existing match_target option, except
     that only the latest patches (identified by the is_patch attribute) are
     automatically selected for installation or copying. The default value
     of this option is false. This option would normally not be used during
     operating system updates.

     Applies to swinstall and swcopy.

   * patch_filter=software_specification

     This option is used in conjunction with the autoselect_patches or
     patch_match_target options to filter the selected patches to those
     meeting the tag, version, and category filtering specified. The default
     value of this option is "*.*".

     Applies to swinstall and swcopy.

   * patch_save_files=true (default)|false

     This option allows the user to save changed files when patches are
     installed, enabling rollback of patches, or to not save files (meaning
     that patches can not be rolled back).

     Applies to swinstall.

   * patch_commit=true|false (default)

     This option, when true is set, causes saved files for the patches
     specified to be removed. A committed patch cannot be rolled back
     (removed).

     Applies to swmodify.

In addition, the ability to specify a file as an object module to be applied
to a library using the ar command has been added to file specifications in
the packager. This is primarily intended to permit easier patching of
archive libraries.

==============================================================================
2.15.3.3 Multi-Stream Attributes

Attributes have been added to the fileset level to allow fileset-level
filtering and selection. These include os_name, os_release, os_version,
machine_type, and architecture.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2.15.3.3.1 Product Specification File (PSF) Changes

Certain SD-UX attributes may now be specified at the fileset or product
level. If they are specified at the product level, filesets which do not
specify them will use the values from their parent product (which will
provide the existing 10.x behavior). Filesets which do provide them will use
their own values, not the values of their parent product. This will allow a
single product to contain, for example, a fileset compatible with both
32-bit and 64-bit machines, another fileset specific to 32-bit hardware, and
another specific to 64-bit. The attributes affected are os_name, os_release,
os_version, machine_type, architecture and revision.

******************************************************************************
2.15.4 swinstall Command Line User Interface (CLUI) Changes

The -x os_name and -x os_release options have been added to permit the
target system to appear it has a specified architecture/revision for the
purpose of compatibility checking. For example, if a system has been
installed as 11.0/32-bit and the user wishes to update to the 64-bit version
of HP-UX, the system appears as a 64-bit system for the purpose of
compatibility checking against the merged depot by specifying the options -x
os_name=HP-UX:64 and -x os_release=B.11.00.

Since the revision and architecture attributes can now also be used for
specification at the fileset level, a new way to specify this has been
added. This is accomplished through the fa= and fr= software specification
fields, which act in a similar way to a= and r= at the product level, but
apply at the fileset level.

When installing from a media containing multiple revisions of products to a
root, the source must be resolved to a single revision per selected fileset.
For example, suppose the source depot contains the following:

OS-Core.KERN2-RUN,fa=HP-UX_B.11.00_32 OS-Core.KERN2-RUN,fa=HP-UX_B.11.00_64

Only one fileset can be installed to a given root, but both can be copied
with swcopy to a depot. If the compatibility filtering does not result in
one revision for each fileset for installing to a root, an error is produced
and the install fails.

******************************************************************************
2.15.5 swlist Command Line User Interface (CLUI) Changes

The product level attributes os_name, os_release, os_version, machine_type
and architecture will now be available for both products and filesets. They
can be listed with swlist -l fileset as well as swlist -l product. For
example:

 swlist -l fileset -a architecture OS-Core

******************************************************************************
2.15.6 swmodify Command Line User Interface (CLUI) Changes

The swmodify command can now modify the os_name, os_release, os_version,
machine_type and architecture attributes for either products or filesets
(rather than just for products as was previously the case). These variables
have the same syntax and semantics as the previous product level attributes.

******************************************************************************
2.15.7 swcopy Command Line User Interface (CLUI) Changes

The changes to swcopy are similar to those for swinstall. However, there is
one key difference. For depots, there may be more than one version of a
particular fileset selected for copying. That is, the compatibility
attributes need not resolve multiple source versions to a single software
item. (For example, a product containing both 32-bit and 64-bit filesets may
be copied completely from one depot to another.)

******************************************************************************
2.15.8 Interactive User Interface Changes

Since compatibility is now maintained at the fileset level, the
subproduct/fileset level of the Software Selection Window was updated to add
an architecture column and to filter for compatibility (as has always been
done at the bundle and product levels).

There is no Interactive User Interface for the -x os_name and -x os_release
options in 11.0. These options MUST be specified on the command line when
performing an update, even if the Interactive User Interface is used for the
remainder of the process.

   * Interactive swlist is invoked by typing swlist -i for browsing roots
     and swlist -i -d for browsing depots. This allows interactive browsing
     (no operations) of roots, depots, and the software on them.

   * Interactive swlist for roots and depots allows viewing of the logfile
     for that depot or root. This logfile will include multiple sessions
     that occured for that root or depot in the past. Interactive swlist for
     depots allows viewing of the audit logfile. Again, this will include
     multiple past sessions.

   * Whenever the user successfully accesses a depot source during an
     interactive command (i.e., swinstall -i), any further invocations of
     the same command will remember the host for that source and offer it in
     the choices list for the "Hostname" on the "Source Selection" dialog.

   * SD-UX uses a new script provided by sam - /usr/sam/lbin/find_cdroms. If
     this script is present, SD-UX can determine the number and device files
     for local CD-ROM devices. If SD-UX determines that there is exactly one
     CD-ROM device, interactive swinstall and swcopy will mount the CD-ROM
     in that device to the default CD-ROM directory. If SD-UX mounted the
     CD-ROM, it will unmount it on exit or when the user changes the source.

==============================================================================
2.15.8.1 Other Changes

   * All processes invoked by SD-UX will have an environment which forces
     "classic" command behavior in the following manner:

     The shell environment variable "UNIX95" will be cleared. If it was set
     in the environment from which the SD-UX command was installed, that
     setting is nullified for the duration of the SD-UX command execution.

     The shell environment variable "PRE_U95" will be set to "1".

   * By default, SD-UX on 11.0 will produce depots, packages and internal
     structures with a layout_version level of 1.0 and a data_model_revision
     of 2.4. These depots and packages comply with the POSIX software
     distribution standard 1387.2, and include numerous changes in the
     internal format of attributes. For full details, refer to the swpackage
     manpages.

     A key feature added as part of this enhancement is the ability to
     explicitly specify hard links and symbolic links in PSF files.

   * The swask command is new in the 11.0 release, along with the ask option
     for swinstall and swconfig. These facilities allow execution of an
     interactive control script (the "request" script) which should create a
     "response" control file as its output. The "response" file is then
     available for use by other control scripts during the installation or
     configuration process.

   * Filesets specified in an ancestor attribute may contain full fileset
     specifications. In addition, if any ancestor attributes are specified
     for a fileset, then the fileset should specify itself as its own
     ancestor. A separate "name match" step is no longer done as part of the
     match_target option. Instead, if no ancestor filesets are specified, a
     "default" ancestor is generated for a fileset which uses the fileset's
     own name, and specifies a revision less than or equal to the current
     revision of the fileset. (This change was effective starting at HP-UX
     10.30.)

==============================================================================
2.15.8.2 Impact

   * There is a small increase in disk space usage on the system where the
     source depot is located.

   * Commands which are called from control scripts and from other SD-UX
     agent child processes will be executed with their "classic" behavior.
     Control scripts and other code that calls those commands can expect
     their classic behavior.

   * Users employing diskless clusters must convert these systems to
     stand-alone configurations before updating to 11.0.

==============================================================================
2.15.8.3 Compatibility

   * Users should be aware that the default value of the autoselect_patches
     option is true. This means that if patches (packaged using the new
     patch attributes) exist in a software depot along with non-patch
     software, selection of software will by default also select patches
     applying to that software.

     Existing software packages will not be affected by these changes.

   * The Multi-Stream attributes will be stored in SD-UX physical media
     (tapes, CD-ROMs, etc.). The new uname attributes will be added to the
     fileset level. These fileset level compatibility attributes will not be
     used by older versions of SD-UX. This is not a problem for the update
     process, because swgettools is used to obtain a version of SD-UX which
     can use all the new attributes. However, if a disk depot is created,
     fileset level compatibility filtering will not be available to systems
     running an older SD-UX and installing from this depot.

   * Older versions of SD-UX will not be able to properly process depots and
     roots created with the new data_model_revision and layout_version. If
     software is being packaged for older (10.x) versions of HP-UX, the
     option layout_version=0.8 must be used when creating or copying a
     depot. This forces the resulting package/depot to have a
     data-model_revision of 2.1.

   * Note that depots/packages for 11.0 must use the default layout_version
     and data_model_revision. This is required in order to properly handle
     new features of the 11.0 release.

     Existing packaging specification files will be accepted by swpackage,
     but the output of the packager will by default be in "POSIX" format,
     which will include changes to attribute names. (Packager output format
     can be modified by using the layout_version option.)

     Changes to product PSF files may be required in order to produce
     POSIX-compliant packages. In particular, layout_version 1.0 treats
     category and vendor objects significantly differently.

     The output of swlist will by default reflect "POSIX" specifications for
     attributes. This may affect users who parse the output of the swlist
     command.

     The 11.0 version of SD-UX will properly package and copy depots in the
     10.x (layout_version 0.8) format if the layout_version option is set to
     0.8 in the swpackage and swcopy commands.

   * Software packages which specify ancestor attributes may require
     modification to add a fileset's own name to its ancestor list. This
     will allow for proper selection if a reinstall is done with the
     match_target=true option. If no ancestors are specified for a fileset,
     then in general no change will be necessary.

==============================================================================
2.15.8.4 Performance

There may be a slight performance impact from adding compatibility filtering
to a fileset level.

==============================================================================
2.15.8.5 Known Problem

The swask option:

swinstall -x ask=<[ >true|as_needed <]>

will not work when the software with a "request" script is distributed on a
CD-ROM.

The workaround is:

swcopy -s /SD_CDROM The_software

to copy the software to the local depot /var/spool/sw. Then do:

swinstall -s /var/spool/sw -x ask=true The_software

to complete the installation.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.16 HP Distributed Print Service (HPDPS)

Summary of HPDPS changes in the 11.0 Release:

   * HPDPS has added a new command, pdgwcfg, to simplify the administration
     of Gateway Printers in the Basic Environment. See pdgwcfg(1M) for more
     information.

   * HPDPS supports a new environment variable PDIDTABLE in order to control
     the size of the table, created for a user, that maps local job
     identifier and global job identifier.

   * HPDPS has added 3 new environment variables (PD_MAXRETRIES,
     PD_RETRY_INTERVAL, and PD_MAXTHREADS) to provide flexibility in tuning
     load handling when necessary. See "Getting Started with HPDPS" in the
     11.0 HPDPS Administration Guide for more information.

   * HPDPS supports submitting a job with multiple documents using a
     reference file. If you frequently need to print a group of documents,
     you can reference the documents in a file. Then, when you need to print
     the group, you can submit the reference file instead of typing the
     names of all the documents in the job. HPDPS prints each file listed in
     the reference file.

   * When submitting jobs consisting of more than one document, you can
     supply information with the job on the number of pages in each
     document. You can also specify a page count for a job consisting of a
     single document. Operators or administrators can use this information
     to help manage job flow.

   * HPDPS supports multiple client daemons in different languages. HPDPS
     can support multiple locales on the same host. Multiple Client Daemons
     are brought up, each to support a specific locale. HPDPS sends
     messages, including messages written to the error logs, in the language
     for the locale.

   * HPDPS supports 2 new delivery methods in notification profile:

       1. file

       2. file-add-to

     See the chapter "Using Notification" in the 11.0 HPDPS Administration
     Guide for more information.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.17 Fast Memory Dump

The kernel dump path and all aspects of configuring, taking, and
manipulating kernel crash dumps are replaced with new, re-architected
versions which allow for much faster and smaller crash dumps.

----------------------------------------------------------------------------
NOTE

The following places provide detailed information about the new Fast Memory
Dump features:

   * "Managing Systems and Workgroups" under "Abnormal Shutdowns".

   * The "HP-UX 11.0 System Crash White Paper" located in the HP-UX file
     /usr/share/doc/sys_crash.txt.

----------------------------------------------------------------------------

Crash dumps now contain, under most circumstances, only that subset of
system memory which is expected to be useful when debugging the cause of the
crash.

The destination and contents of a crash dump are now configurable without
rebooting, using the new crashconf(1M) and crashconf(2) interfaces.
(Configuration while building the kernel remains possible.)

The old savecore(1M) command has been replaced by two new commands.
savecrash(1M) runs at boot time to save any information that may be
overwritten by normal system activity. crashutil(1M) can be used to save or
manipulate the rest of the crash dump (if desired).

The on-disk and file system formats of a crash dump have changed. The
library libcrash(3) is provided to allow programmatic access to a crash
dump. It supports all past and current crash dump formats. Under specific
configurations, crash dumps no longer need to be copied into the file system
before they can be debugged.

At crash time, the system operator may now choose whether or not to dump,
and whether the dump should be the relevant subset of memory or all of
memory (Operator interaction is not required).

By default, crash dumps will take much less time and space.

Installations which call savecore(1M) in any way other than from the
HP-supplied, unmodified /sbin/init.d/savecore script, will need to change to
use savecrash(1M) and/or crashutil(1M).

----------------------------------------------------------------------------
NOTE

There is a problem when crashutil copies kernel module files. Often the
copied kernel module file will be shorter than the original. In these cases,
the kernel module files must be copied manually.

----------------------------------------------------------------------------

Users or programs that read system crash dumps will need to to use the new
libcrash(3) to read them, or will need to convert crash dumps to an older
format using crashutil(1M) before reading them.

Programs and users relying on the savecore(1M) command or on the format of a
system crash dump will need to change to use savecrash(1M) instead.

Runtime performance will be marginally degraded. This change should not be
measurable and should not be significant.

System crash times will be shorter. On average, a small memory system may
see a 50% improvement; a large memory system may see a 90% improvement. Full
dumps are still performed in some cases, so the worst case time for any
given size of machine is unchanged from previous releases.

If dedicated dump devices are configured (i.e., dump devices that are not
also used for swap), their contents will not be saved by savecrash(1M) at
boot time, but rather can be used directly from the dump device by any
caller to libcrash(3). This results in faster boot time for those systems
with dedicated dump devices.

It is expected that all kernel debuggers and other programs that read crash
dumps will read those dumps using libcrash(3). However, crashutil(1M) can be
used to convert a dump into an older format for use by any programs which
cannot use libcrash(3).

******************************************************************************
2.17.1 Configuring Dumps

Dump configuration now allows specification of which classes of system
memory are to be included in the dump, in addition to the destination
devices for the dump.

As before, dump devices can be selected at kernel build time. They can now
also be configured using the crashconf command or system call, or by placing
an entry in /etc/fstab. This latter method is preferred. See manpages:
crashconf(1M), crashconf(2), fstab(4), and savecrash(1M) for details.

******************************************************************************
2.17.2 Memory Dump Disk Space Requirements

Dump device space usage will be reduced proportionally to the amount of
crash time as described above.

File system space used for crash dumps can be minimal if dedicated dump
devices are configured.

Key data structures used by the dump path will increase kernel memory usage
by approximately 0.025% of system memory.

******************************************************************************
2.17.3 Obsolescence

The savecore(1M) command is obsolete. It is replaced by savecrash(1M) and
crashutil(1M).

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.18 LicensePower/iFOR

HP-UX 11.0 uses Version 4 of LicensePower/iFOR from Isogon Corporation.
Previous HP-UX releases included Versions 4 and earlier of iFOR/LS from
Gradient Technologies, Incorporated. Additionally, because NCS is not part
of HP-UX 11.0, Version 4 of LicensePower/iFOR supports only the direct
binding model of license server discovery.

******************************************************************************
2.18.1 Summary of Changes

On June 23, 1997, Isogon Corporation assumed responsibility for Gradient
Technologies' iFOR/LS license management system, which was renamed to
LicensePower/iFOR.

==============================================================================
2.18.1.1 For Systems Updating from HP-UX 10.30

LicensePower/iFOR Version 4 is functionally identical to Gradient
Technologies iFOR/LS Version 4 which was shipped on HP-UX 10.30; only the
name has changed. However, NCS has been removed from HP-UX 11.0, and
therefore only the direct binding model of license server discovery is
supported.

==============================================================================
2.18.1.2 For Systems Updating from HP-UX 10.20 or 10.10

Because NCS has been removed from HP-UX 11.0, only the direct binding model
of server discovery is supported. License clients obtaining licenses from a
LicensePower/iFOR Version 4 server must be configured to use direct binding,
not NCS.

Defects fixed for this release include changes available in patch PHSS_8508:

i4target returning "ff000000" for systems which have multiple LAN cards or
FDDI Interface.

The directory structure of the iFOR/LS product is simplified to reduce the
number of symlinks and the number of directory levels where the files are
delivered. Two unnecessary directory levels are removed for this release.
Files formerly delivered to /opt/ifor/ls/os/hpux are now delivered to
/opt/ifor/ls. For example, commands are found under /opt/ifor/ls/bin, the
one remaining shared library is under /opt/ifor/ls/dll, and configuration
files are under /opt/ifor/ls/conf.

The symbolic links from /opt/ifor/bin and from /opt/ifor/ls/bin to
/opt/ifor/ls/os/hpux/bin are removed.

The symbolic links from /opt/ifor/dll and from /opt/ifor/ls/dll to
/opt/ifor/ls/os/hpux/dll are removed.

The removal of these links and of the obsolete files is accomplished by a
LSSERV product level preinstall script.

The user interface to the i4config script is modified. This script permits
you to configure a license client system using direct binding to a server
rather than through the NCS name server capability.

NCS has been removed from HP-UX 11.0, and therefore only the direct binding
model of license server discovery is supported.

******************************************************************************
2.18.2 Impact

For those clients using direct binding, the only change is in the name of
the product. Using direct binding is easy and quick, and avoids NCS
problems. However, Version 4 on HP-UX 11.0 is incompatible with Version 2
and earlier. Workarounds are discussed below.

******************************************************************************
2.18.3 Compatibility

==============================================================================
2.18.3.1 License Database Conversion from Version 3 to Version 4

A license database file built with Version 3 of iFOR/LS (HP-UX 10.20 and
10.10) is not compatible with this 11.0 version. Translating an existing
license database is accomplished by executing the command
/opt/ifor/ls/bin/v3tov4. This command, if necessary, is executed when the
new version of the LSSERV product is installed. Data files created with this
version are not portable to a system running an older version of iFOR/LS.
License databases created with iFOR/LS Version 4 on HP-UX 10.30 are
compatible with the HP-UX 11.0 release.

==============================================================================
2.18.3.2 Version 2 Client Incompatibility

Clients linked with Version 2 and earlier iFOR/LS libraries obtaining
licenses from an HP-UX 11.0 server will be affected because these clients
rely on NCS to communicate with the server.

The preferred solution is for the application to be relinked with the
Version 3 or Version 4 iFOR/LS libraries configured to use direct binding.
If that is not possible, the customer should contact Hewlett Packard for
further support.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.19 SAM

******************************************************************************
2.19.1 Summary of Changes

Aside from defect repair and some minor enhancements, the main areas of
change in SAM are in the kernel configuration area and support for 64-bit
systems.

******************************************************************************
2.19.2 Kernel Configuration

   * Dynamically Loadable Kernel Modules (DLKM) - SAM's driver section has
     been modified to support dynamically loadable drivers. The driver list
     now indicates whether a driver is statically or dynamically loadable.
     When adding or removing a dynamic driver, SAM no longer needs to reboot
     the system.

   * Fast Memory Dump - SAM's dump configuration has been modified to
     support new "fast memory dump" features. This includes allowing the
     user to add, modify or remove dump specifications done as part of the
     kernel system file or run-time dump specifications. Adding, modifying
     or removing run-time dump specifications does not require a new kernel
     to be built nor a system reboot. Users are now also able to control
     which portions of the kernel information are included in the dump file.
     This can lead to faster dumps and analyses when a subset of the
     possible information is selected.

******************************************************************************
2.19.3 64-Bit Systems

SAM has been modified to recognize and run on the new 64-bit systems. There
are no explicit system management requirements associated with 64-bit
systems. SAM itself remains a 32-bit application.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.20 Lazy Swap

******************************************************************************
2.20.1 Lazy Swap Reservation

Runtime environments in which multiple processes map large private data
regions into their address spaces will put an exorbitant demand on a
system's swap resources. It can be demonstrated that in such environments
the swap pool becomes inefficiently utilized.

The Lazy Swap Reservation (SWLZY) feature means that a swap reservation for
a process-private page is deferred until the process actually attempts to
modify the page (i.e. copy-on-write is broken). Essentially, for Lazy Swap
private regions, swap resources are used only for dirtied private pages
(which really require swap backing-store in the event of a possible
page-out).

==============================================================================
2.20.1.1 Programming Impact

Although a SWLZY process more efficiently utilizes swap resources by not
reserving swap for all private pages at either exec(2) or fork(2) time, a
process may receive an unexpected SIGBUS signal at run time as a result of a
failed attempt at making a swap reservation. Consequently, a discerning
program must be written to handle the SIGBUS signal and invoke appropriate
recovery steps. These steps may include a limited retry, a check-pointing of
any significant or volatile data, or simply exiting.

******************************************************************************
2.20.2 SWLZY Flag

When loading an executable file, exec(2) service now recognizes the SWLZY
program attribute by testing defined flags in the a.out file. Both SOM and
ELF executables have been enhanced to support a program attribute flag
specifying that any statically or dynamically allocated private data region
must be lazily evaluated in regards to swap space reservation (excludes
stack segment in this implementation).

The chatr(1) command has been enhanced to provide the +z enable command-line
switch to generate a Lazy Swap executable. From a user's perspective, the
convenience in using the chatr(1) utility lies in the fact that an existing
executable would not have to be rebuilt as would be the case with a cc(1) or
ld(1) flag. The SWLZY flag can only be applied to a program's a.out file and
can not be applied to a shared library file. This means that there is no
change to the underlying VM management of shared library regions. In the
case of a SWLZY process, the associated private data region(s) created when
the library is dynamically linked will be lazily evaluated.

******************************************************************************
2.20.3 mmap(2) MAP_NORESERVE

HP-UX mmap(2) has been enhanced to support a MAP_NORESERVE flag for
requesting that swap reservations be lazily evaluated for the mapping.
Contrasting the default case (i.e. without this flag), where successful
execution of a MAP_PRIVATE mapping requires that swap space equal to the
size of the mapping be reserved, the MAP_NORESERVE flag is used. The success
of the first attempted write to a mapped page depends on the deferred
reservation and the current availability of swap resources. If the swap
reservation for the page can be made successfully (the expected case), the
write will succeed and a private copy of the written page is created.
Conversely, if swap space is not available at that time, the write fails and
a SIGBUS signal is delivered to the writing process.

If a SWLZY process (as described above) executes a mmap(2) request with
MAP_PRIVATE, whether or not MAP_NORESERVE is specified, the process will use
lazily evaluated swap. In short, SWLZY processes which map MAP_PRIVATE
always set MAP_NORESERVE behavior.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.21 Uniprocessor Emulation, Driver Binding and Per-Processor Callouts

Uniprocessor (UP) Emulation and Driver Binding is required to properly
execute non-multithreaded drivers and other non-threaded kernel
functionality on a symmetric multiprocessing (SMP) system. The current HP-UX
Uniprocessor Emulation and Driver Binding is implemented through a
combination of the up_io_sema and the spl_lock. These are both global locks
with high contention rates. To meet scalability requirements for upcoming
platforms, HP will be removing the spl_lock and replacing the up_io_sema
with a binding mechanism. This design is a shift towards a multiprocessor
(MP) centered design which will no longer stall out MP processing to
accommodate uniprocessor (UP) modules. If the performance impact incurred by
a UP module as a result of this model shift is determined to be
unacceptable, then that module should be made MP-SAFE.

******************************************************************************
2.21.1 Impact

There are no driver or module changes required as a result of implementing
this new model. The changes required to implement this feature are contained
within what would typically be considered the kernel framework or
infrastructure.

The design being implemented will bind the uniprocessor driver/module to a
single processor, eliminating the need for the up_io_sema/spl_lock
combination. In addition to the global lock removal, the overhead associated
with checking for a uniprocessor module will be removed from the primary
code path. A secondary advantage to the design will be the simplification of
the spl code path .

The binding mechanism is being leveraged from existing interfaces put in
place for processor affinity. The processor affinity interface will be
extended to introduce binding functionality. The streams subsystem will be
modified to place binding calls instead of acquiring the up_io_sema, and a
new callout interface will be created to address streams requirements. To
enhance the callout processing and facilitate the design of the new callout
interface, per-processor callouts will be introduced.

The existing uniprocessor specific message passing infrastructure will have
to be modified to support message forwarding. This code path will be
modified to ensure that messages destined for uniprocessor modules will be
forwarded to the correct processor in the correct order.

The only user level visable manifestation of this change will be the
possibility of a mpctl() system call failing an affinity request due to
bound driver requirements. This will only occur if the user specified a
mandatory binding. If an advisory binding was requested the affinity will be
overtaken if necessary.

******************************************************************************
2.21.2 Performance

Uniprocessor drivers and modules executing on an MP system will most likely
experience a performance decrease. Uniprocessor systems will not be
affected. MP systems might show a small performance increase.

******************************************************************************
2.21.3 Configuration

This feature will be available in both 32- and 64-bit environments.

******************************************************************************
2.21.4 Obsolescence

Two kernel internal global locks are being removed, the up_io_sema and the
spl_lock.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.22 POSIX 1003.1b Asynchronous Input/Output

Asynchronous Input/Output allows a process (thread) to start multiple
simultaneous read and/or write operations to multiple files, to wait for or
obtain notification of completion of requested operations, and to retrieve
the status of completed operations. The purpose of the POSIX Asynchronous
I/O facility is to allow a process (thread) to overlap some elements of
computation and information processing with I/O processing. The POSIX
Asynchronous I/O facility includes the following interface functions:
----------------------------------------------------------------------------

  lio_write(2)    Start a list of asynchronous write operations

  lio_listio(2)   Start a list of asynchronous I/O operations

  aio_suspend(2)  Wait for completion of one or more asynchronous I/O
                  operations

  aio_error(2)    Retrieve the error status of an asynchronous I/O
                  operation

  aio_return(2)   Retrieve the return status of an asynchronous I/O
                  operation and free any associated system resources

  aio_cancel(2)   Request cancellation of a pending asynchronous I/O
                  operation

  aio_fsync(2)    Initiate synchronization of the media image of a file
                  to which asynchronous operations have been addressed

----------------------------------------------------------------------------

******************************************************************************
2.22.1 Asynchronous I/O Control Block (aiocb)

The Asynchronous I/O Control Block is used as a parameter to all of the
asynchronous I/O functions. The aiocb specifies parameters for an
asynchronous I/O operation in a call to aio_read() , aio_write(), or
lio_listio() and then may be used as a "handle" for the enqueued
asynchronous I/O operation in a subsequent call to aio_cancel(),
aio_suspend(), aio_fsync(), aio_error(), or aio_return(). The aiocb
structure is defined in sys/aio.h .

==============================================================================
2.22.1.1 Summary of Change

This is new functionality that is being introduced in 11.0.

The following is the list of manpages for the POSIX Asynchronous I/O system
calls:

aio_cancel(2)

aio_error(2)

aio_fsync(2)

aio_read(2)

aio_return(2)

aio_suspend(2)

aio_write(2)

lio_listio(2)

aio(5)

==============================================================================
2.22.1.2 Impact

The addition of this new functionality does not impact the operation of the
rest of the system.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2.23 Miscellaneous Changes

******************************************************************************
2.23.1 maxusers Parameter

The maxusers parameter must be set no greater than 4096 with the NPROC value
no greater than 32,769. Setting the maxusers parameter to a higher number
will render the kernel unbootable. SAM has been modified to disallow a
higher setting for this parameter.

******************************************************************************
2.23.2 SO_LINGER Sockets

Commands or applications that use SO_LINGER will experience as much as a two
second delay to terminate. This delay can adversely affect the performance
of programs or scripts. For example, a script which has many invocations of
remsh could take significantly more time.

******************************************************************************
2.23.3 Erroneous SD-UX Error Message

Some SD-UX control scripts generate the following erroneous error message:

rm <file> non-existent

This error message can be safely ignored.

******************************************************************************
2.23.4 OnLineJFS Not Available on Workstations

For 11.0, the additional OnLineJFS product, which allows you to perform
certain added tasks with a JFS file system, is available only for server
systems. You will not be able to order it for use on 11.0 workstations.

##############################################################################
Chapter 3: Compatibility

This chapter discusses the following topics:

   * Compatibility Statement for HP-UX 11.0

   * Internet Services APIs in libc

   * Non-Portable and Non-Compatible APIs

   * Shared Library Versioning

   * Obsolescence and Deprecation of APIs

   * ONC/NFS Binary Compatibility

   * NFS Compatibility Matrix - Mixing NFS PV2 and PV3

For compatibility issues relevant to a particular component, refer to the
information in this document that describes that component. For example, see
the information in this document on curses, libc, libsec, and the math
library for a detailed description on source code compatibility issues
regarding those components.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
3.1 Compatibility Statement for HP-UX 11.0

Hewlett-Packard has a long record of providing HP-UX compatibility. This
feature protects your investment and allows you to easily upgrade your
systems. HP has always recognized that HP-UX compatibility is an important
feature that HP customers demand.

Compatibility requirements span across HP-UX products to third party
products as well. All third party products (and products the third party
products call) are equally important components in the complete customer
environment. Customer solutions often have complex, multiple chains of
dependent applications spanning the entire range of HP-UX products as well
as third party products. One broken link in the chain of dependencies may
result in an application that no longer works. The unbroken string of
compatibility support on HP-UX is one of the biggest and best benefits
provided by HP.

HP-UX supports forward compatibility from pre-11.0 to 11.0. This chapter
will describe what this means for executable applications, object files,
source files, data, and libraries, and will also discuss compatibility
exceptions.

HP-UX supports the following types of compatibility in HP-UX 11.0:

   * binary compatibility

   * source compatibility

   * data compatibilty

   * upgrade compatibility

   * relocatable binary compatibility

******************************************************************************
3.1.1 Binary Compatibility

An application that ran on an HP-UX 10.x release will generally continue to
run with the same behavior on 32-bit and 64-bit HP-UX 11.0 provided that any
dependent shared libraries are also present. An executable is a binary file
that has been processed by the HP link editor with ld or indirectly with the
compiler, and can be run by the HP-UX loader (exec).

******************************************************************************
3.1.2 Source Compatibility

32-bit software that compiled on an HP-UX 10.x release can be recompiled
without change on HP-UX 11.0. The term "source" includes input source to
compilers, scripts, and makefiles.

******************************************************************************
3.1.3 Data Compatibility

A 32-bit application can continue to access persistent data files, such as
system files, backup/recovery formats, and HP-documented data formats via
supported APIs in the same manner as the previous release. A 64-bit
application can access the same data in the same manner as a 32-bit
application. For example, if you access the password file information via
getpwent() rather than directly reading the file, your application will
maintain data compatibility.

******************************************************************************
3.1.4 Upgrade Compatibility

Customized configurations and data from HP-UX 10.x are preserved upon
installation/upgrade to 32-bit or 64-bit HP-UX 11.0.

******************************************************************************
3.1.5 Relocatable Binary Compatibility

A relocatable object can be a file (.o), shared library (.sl), or an archive
library (.a).

Several types of object binary compatibility are included here:

   * Release-to-release relocatable object binary compatibility - an
     executable created by linking with forward-compatible, relocatable
     objects from different releases or using shl_load()/dlopen() to
     dynamically load shared libraries built on a different release than the
     application is NOT SUPPORTED.

     For example, this can occur when you recompile your components on HP-UX
     11.0, but link with ISV libraries that were created for HP-UX 10.x.
     This means that if one object is recompiled on 11.0, all objects that
     comprise the executable must be recompiled on 11.0; you cannot link
     both pre-11.0 libraries and 11.0 libraries in one relocatable
     object/executable. Note that you will not see warning messages if you
     do this; but the executable may exhibit incorrect behavior.

   * Archive and shared relocatable object compatibility - an executable
     created by linking with a mixture of shared and archive libraries. Link
     restrictions are described in a following section. NOT RECOMMENDED.

   * Data model relocatable object compatibility - an executable created by
     linking with a mixture of 32-bit and 64-bit objects. NOT SUPPORTED. The
     loader will not permit this.

For detailed information see the following two documents:

   * "HP-UX 11.0 Software Developer's Guide"

     This white paper addresses various features and benefits of moving
     applications to HP-UX 11.0. See /usr/share/doc/11dev.ps or
     http://docs.hp.com/hpux/os.

   * "HP-UX 64-bit Porting and Transition Guide"

     This guide describes the changes you need to make to compile, link and
     run programs on a 64-bit operating system. See
     /opt/ansic/newconfig/RelNotes/64bitTrans.bk.ps,
     /opt/aCC/newconfig/TechDocs/64bitTrans.bk.ps, or
     http://docs.hp.com/hpux/os.

==============================================================================
3.1.5.1 HP-UX 10.x Applications on HP-UX 11.0

HP-UX 11.0 provides compatibility for the great majority of applications
that compile and run on HP-UX 10.x releases. Most applications will be
source compatible for both 32-bit and 64-bit HP-UX 11.0. For binary
compatibility, most 32-bit applications will run on 32-bit HP-UX 11.0.
32-bit applications will also run on 64-bit HP-UX 11.0, with a few
exceptions.

----------------------------------------------------------------------------
NOTE

You do not have to port most software to run it on HP-UX 11.0. The majority
of 10.x software will run acceptably on 11.0 without source changes or
recompilation.

----------------------------------------------------------------------------

To determine if a specific 32-bit application is binary compatible on a
64-bit operating system, you can do the following:

   * If you have purchased a third-party application:

     Check with the application vendor to ensure that the application is
     supported on HP-UX 11.0. If you will be running the 64-bit version of
     11.0, ask the vendor for a statement regarding 64-bit application
     interoperability with 32-bit applications.

   * If you have locally-written software:

     See the "HP-UX 11.0 Software Transition Kit" (STK) for detailed
     information on how to ensure that your code is compatible on HP-UX
     11.0. The HP-UX STK is available on the HP-UX 11.0 Application Release
     CD-ROM, or via the World-Wide Web at
     http://www.software.hp.com/products/IA64/index.html.

==============================================================================
3.1.5.2 Moving a 9.x Application to 11.0

If you are transitioning a 9.x application to 11.0, you DO NOT need to
transition your 9.x application to 10.x and test it on 10.x prior to
transitioning it to 11.0.

You should transition your application directly to 11.0. Note that your
application will be affected by any compatibility issues that occurred in
9.x and 10.x, as compatibility issues are generally cumulative. One issue
that may impact your 9.x application is the 10.x file system layout. Please
refer to the 10.x Release Notes for further details on this issue.

******************************************************************************
3.1.6 Compatibility Support and Status

In general, compatibility is supported where the application is well-behaved
and follows good programming practices. Good programming practices include
using only documented Application Programming Interfaces (APIs), including
the required header files, avoiding architecture-specific knowledge, and
avoiding APIs that have portability and compatibility issues.

Changes to the syntax or semantics of APIs are avoided where possible.
Unfortunately, compatibility is sometimes compromised in order to comply
with new standards, add new features, and enhance performance. In most
cases, these changes can be implemented in a way that maintains
compatibility. In extreme cases, changes are mandated by a standard that
compromises compatibility.

******************************************************************************
3.1.7 Compatibility of Non-HP Products

Compatibility can also be affected by the compatibility support of end-user
or Independent Software Vendor (ISV) products, such as third party compiler
products. HP can influence the compatibility of the products that HP
provides, but has no control over the compatibility support of others
products.

******************************************************************************
3.1.8 Obsolescence

APIs can be removed from HP-UX after adhering to a recommended phased
obsolescence plan. Interfaces that are to be obsoleted are clearly
identified in HP documentation at least one release prior to obsolescence.
Applications that use these obsoleted interfaces may not run after support
has been discontinued or removed.

******************************************************************************
3.1.9 Link Restrictions

Be aware of the type of libraries (shared or archive) linked to an
application. The way in which the libraries are linked can affect binary
compatibility. The application should not be linked with shared libraries
that have dependencies on archive HP-UX system libraries. Instead, the
application should use the shared versions of these libraries where they
exist. See "Coding Practices that Impact Compatibility" below for more
information.

Library providers cannot include HP-supplied libraries inside their own
library. Applications and libraries cannot explicitly load HP-supplied
shared libraries with shl_*() APIs.

Lastly, applications do not need to include -lc on the C compile line. The C
compiler driver automatically includes the C library during the link phase.
Shared libraries must not establish explicit dependencies with libc via -lc.

******************************************************************************
3.1.10 Using New Features

In general, usage of new release features will minimally require a recompile
and perhaps source code changes. For example, you will need to recode and
recompile to take advantage of 11.0 kernel threads.

In order to take advantage of 64-bit large address space and large memory in
11.0, an application must minimally recompile, make makefile changes, and
may require source code changes to remove 32-bit limitations from the code.
See the "HP-UX 11.0 Software Transition Kit" or "HP-UX 64-bit Porting and
Transition Guide" for more information. (See
/opt/ansic/newconfig/RelNotes/64bitTrans.bk.ps,
/opt/aCC/newconfig/TechDocs/64bitTrans.bk.ps, or the Instant Information
CD-ROM.) Applications wanting to take advantage of kernel threads will also
need to make source and makefile changes.

******************************************************************************
3.1.11 Compatibility Exceptions in 11.0

There are a few compatibility exceptions in 11.0; most of these exceptions
are primarily corner cases with a small impact. Here are some highlights
that can be readily detected in C/C++ sources with the "HP-UX 11.0 Software
Transition Kit" source scanner tools. For the complete list and further
details on specific exceptions, see the impacts found by the HP-UX 11.0 STK
source scanner. See Section 2.2.3 Transition Tools in Chapter 2 for more
information.

==============================================================================
3.1.11.1 Binary Compatibility Exceptions

   * fsmount() no longer supports NFS; use nfs_mount() instead.

   * stat*() APIs can no longer be used to determine the file system type;
     use getfstype() instead.

   * uname -m on the V-Class -- model names more than 8 bytes are truncated;
     use getconf instead.

   * 10.x archive applications which use the database enumeration APIs may
     not work correctly on NIS+ converted systems.

   * ARG_MAX is increased from 2K in 10.20 to 20K in 11.0. Applications that
     allocated buffers of ARG_MAX may fail when there is more than 20K in
     the environment.

==============================================================================
3.1.11.2 Source Compatibility Exceptions

   * Xcurses APIs changed to adhere to the XPG4.2 standard

   * Year 2000 support -- the old behavior was for two-digit year to map to
     the system clock. The Year 2000-safe behavior is to map 00-68 to
     2000-2068 and 69-99 to 1969-1999.

   * ANSI C is the default C compiler behavior as opposed to K&R compatible
     C.

   * API obsolescence in libc, libm, and libportnls.

   * PAGE_SIZE/PAGESIZE symbols have been removed to adhere to standards
     since HP-UX supports variable page size (POPS); use sysconf() instead.

   * Architecture dependencies (runtime architecture)

   * New features will need code changes to enable the new functionality in
     an application:

        o Kernel threads

        o Year 2000 safe and large dates beyond the Year 2038 to encode the
          number of seconds since 1970

        o Transition from Cfront to ANSI C++ and from F77 to Fortran90

        o 64-bit applications and 64-bit applications interoperating with
          32-bit applications

        o 64-bit ELF support for applications that are dependent on object
          file format, debug/unwind format

        o OOCOBOL (Object Oriented COBOL)

        o 32-bit pstat() applications which will be run on the 64-bit OS. 9
          fields can overflow to 64-bit on the 64-bit OS. Use the __PSTAT64
          wrappers.

==============================================================================
3.1.11.3 Relocatable Object Code Compatibility Exceptions

The following types of objects cannot be combined in one executable:

   * +Oparallel with non-+Oparallel

   * Year 2000 with non-Year 2000 (getdate(), strptime(), and dependent
     APIs)

   * The POSIX.1c compliant APIs are provided in libpthread. Linking
     libdce/libcma and libpthread in the same application will result in
     incorrect application behavior.

   * ONC/NFS RPC APIs (svctpc_create(), svcudp_bufcreate(), ...) objects
     from 11.0 and pre-11.0, due to a change in the underlying
     implementation from sockets to streams in 11.0.

   * Large file APIs and standard file APIs with the same file stream (since
     10.10)

   * UNIX95 and non-UNIX-95 in certain circumstances (since 10.10)

==============================================================================
3.1.11.4 Makefile Changes (When Recompiling)

   * Database enumeration APIs (i.e. getpwent(), getgrent(), ...) in libc
     and libsec have a new dependency on libdld.sl shl_load()/dlopen() to
     load the appropriate service for NIS, NIS+, DNS, and the direct file.

   * Some libc APIs were moved to libm or libnsl due to standards/de facto
     standards and will require a link line change to find the APIs in the
     new library.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
3.2 Internet Services (ARPA Services) APIs in libc

The following external interfaces are available on a 64-bit operating
system:

   * get<<x>><by><<y>>() networking calls (for example, gethostbyname(),
     getservbyname(), and gethostbyaddr() )

     -----------------------------------------------------------------------
     NOTE

     Before 10.30, get<<x>>by<<y>>_r() calls were also included.

     -----------------------------------------------------------------------

   * resolver calls (for example, res_send(), res_query(), etc.)

   * inet*() calls (for example, inet_addr(), inet_ntoa(), etc.)

   * r*() calls (for example, rcmd(), ruserok(), etc.)

******************************************************************************
3.2.1 Internet Services API Binary Compatibility Statement

End users and ISV software developers who do not rely on kernel structures
and system calls can execute on 11.0 without the need to recompile.

******************************************************************************
3.2.2 Differences Between 10.20 and 11.0

==============================================================================
3.2.2.1 Removal of YP APIs

The YP APIs in libc.2/a that existed in 10.20 and were removed in 10.30,
will stay removed in 11.0, and can be bound during compilation only if you
include -lnsl. For binary compatibility, the old Internet Services APIs are
being supported in libc.1.

Applications that currently link with only libc to bind the YP APIs must now
also link with -lnsl.

Impact: Removing the YP code affects the following APIs:

gethostbyname  gethostbyaddr       gethostent
getnetbyname   getnetbyaddr        getnetent
getprotobyname getpprotobynumber   getprotoent
sethostent     endhostent          setnetent
endnetent      setprotoent         endprotoent

Because these APIs were recoded to use the new dynamic Name Service Switch
technology (described shortly), the impact of the YP APIs moving is
minimized and their interfaces are the same.

Obsolescence: Routines that exist in 10.20 as external APIs, but that were
obsoleted from libc in 10.30 and later releases (including 11.0), are the
following:

gethostbyname_r   gethostbyaddr_r     gethostent_r
getnetbyname_r    getnetbyaddr_r      getnetent_r
getprotobyname_r  getpprotobynumber_r getprotoent_r

These routines have been moved to lib4dr, which is part of the DCE
libraries. Application writers have to link with that library now to get the
above routines.

The yellowup routine was obsoleted at 10.30. There is no replacement API
available for this functionality.

Compatibility: Binary compatibility is being provided by versioning libc.
libc.1 still contains the old YP APIs in 11.0.

==============================================================================
3.2.2.2 Dynamic Name Service Switch

The dynamic loading Name Service Switch (NSS) is a complete replacement for
Hewlett-Packard's current implementation of the name service switch. This
change made it possible to add the new Name Service technology without
having to change the APIs in libc.2 and decouple networking code from
libc.2.

The dynamic loading Name Service Switch removes the need for the API to know
about name services. The new NSS software provides a mechanism for loading a
shared library that will be responsible for communicating with a name
service. Hewlett-Packard provides shared libraries that support the
following Name Services:

FILES

NIS

NISPLUS

DNS

COMPAT

The Internet Services provide the following shared library, which supports
DNS:

/usr/lib/libnss_dns.sl

Compatibility: The new Name Service Switch in 10.30 is not compatible with
the old switch in 10.20, and it remains incompatible in 11.0. Some
compatibility is available by using the provided default configuration file,
/etc/nsswitch.hp_defaults, which initializes the switch to behave in a
compatible manner. To obtain the default, you must copy the file
/etc/nsswitch.hp_defaults to /etc/nsswitch.conf. This default configuration
uses COMPAT mode, which is the slowest performing name service
configuration. We recommend that, instead, you use the FILES, NIS, or
NISPLUS mode. See the nsswitch.conf(4) manpage for more details.

_r Support Via the Dynamic Name Service Switch: The dynamic Name Service
Switch provides support for all existing database API *_r() routines, with
the following caveat: All [set|get|end]*ent() routines are no longer thread
specific; they are process specific. The new switch technology currently
does not support a thread-specific database enumeration lookup policy. There
is no compatibility issue with the get<<x>><by><<y>>() database API
routines.

Internet Services APIs that are affected by compatibility changes are the
following:

gethostent_r  getnetent_r  getprotoent_r  sethostent_r
endhostent_r  setnetent_r  endnetent_r    setprotoent_r
endprotoent_r

These routines have been moved to lib4dr, which is part of the DCE
libraries. Application writers have to link with that library now to get the
above routines.

A complete archived bound application cannot be created if that application
invokes any of the APIs that support the dynamic Name Service Switch. This
is because of the shl_load() calls, which require libdld.sl.

Impact: The dynamic Name Service Switch affects the following Internet
Services APIs:

gethostbyname gethostbyaddr   gethostent     getnetbyname
getnetbyaddr  getnetent       getprotobyname getpprotobynumber
getprotoent   sethostent      endhostent     setnetent
endnetent     setprotoent     endprotoent

In 10.20, these routines know how to call files and NIS APIs. In 10.30 and
11.0, they call only the switch APIs provided by the new NSS functionality.

==============================================================================
3.2.2.3 Internet Services Mix-n-Match Statement

Although there are no changes in any of the Internet Services external API
interfaces between 10.20 and 11.0, mix-n-match cannot be fully guaranteed.
As noted above, there are mix-n-match issues with the *_r() calls, related
to their usage of threads. There might also be some unknown problems with
the get<<x>><by><<y>>() calls associated with the use of the new Name
Service Switch. For the resolver calls and the r*() calls, the risk of
mix-n-match failure is lower, but again, cannot be fully guaranteed without
further analysis and complete mix-n-match testing.

Mix-n-match is fully guaranteed between 10.30 and 11.0 for all Internet
Services APIs.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
3.3 Non-Portable and Non-Compatible APIs

Avoid using APIs deemed non-portable and non-compatible. APIs defined by
standards are typically source compatible from vendor to vendor and from
release to release, but not necessarily binary compatible from release to
release. Some APIs, even some standards-defined APIs, are specified such
that they expose the internal system architecture, which may need to change
from release to release.

The following is not an exhaustive list of non-portable and non-compatible
APIs, but examples of some important ones.

******************************************************************************
3.3.1 Context APIs

Context APIs are not recommended due to possible compatibility problems from
release to release because context APIs are very architecture-specific. The
context APIs "expose" the architecture to the application, such that the
application may not be compatible with all releases.

If you must use context APIs, be aware of the following: Do not copy the
context yourself. It is not contiguous. The context may have pointers that
point back to the original context rather than in the copied context.
Therefore, you may break the context.

The size of the context will vary in length from release to release.

******************************************************************************
3.3.2 nlist

Use of nlist() beyond checking for the existence of symbols will reduce
binary and source compatibility in the application. Great care must also be
taken in handling the error case if the symbol is not available.

******************************************************************************
3.3.3 pstat

32-bit applications that will be deployed on 64-bit HP-UX must use the
pstat() wrappers turned on with -D_PSTAT64 in order to function correctly
and remain compatible on 64-bit HP-UX . See Section 4.9.1 pstat(2) in
Chapter 4 for more details.

******************************************************************************
3.3.4 ptrace/ttrace

The function signature of the API will maintain source compatibility from
release to release. Much of the functionality of ptrace() is highly
dependent on the underlying hardware. An application that uses this system
call should not be expected to be portable across architectures or
implementations.

******************************************************************************
3.3.5 [sig]setjmp/longjmp

The contents of the jmp_buf buffer are architecture- and compilation
environment-specific. Thus, objects built using these functions may not be
supported across architectures.

******************************************************************************
3.3.6 sigstack/sigspace

There is not enough information provided in sigstack() to completely handle
stack sizes, directions, and multi-threading from release to release.
sigstack() and sigspace() system calls should not be used for systems
desiring future compatibility. Instead, use the existing sigaltstack()
interface.

******************************************************************************
3.3.7 uname(1)

Code that uses uname(1) to obtain the model string should be changed to use
the model(1) command. The uname(1) command may display an incorrect model on
future machines. uname(1) is restricted to eight characters for the model.
However, some future machines will have more than eight characters for the
model. If the model string is longer than eight characters, uname(1) will
truncate the model string to eight characters. Therefore, use the model(1)
or getconf(1) command to obtain the model string.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
3.4 Shared Library Versioning in 10.30

----------------------------------------------------------------------------
NOTE

The following information is pertinent to shared library providers; others
can skip this section.

----------------------------------------------------------------------------

Many 10.30 features, such as NIS+, threads, IEEE math, year 2000 support,
performance enhancements, and so on, unfortunately could not be implemented
in the libraries in a compatible manner.

In order to avoid breaking binary compatibility for applications compiled
prior to 10.30, system V.4 versioning was used to maintain compatibility for
the affected libraries. This versioning technique is not the only way to
maintain binary compatibility for your libraries, but it was used in this
case due to the large number of incompatibilities.

Shared libraries that depend on (call) the incompatible APIs in libraries
that they depend on need to evaluate if they will pass the incompatible
syntax or semantic changes to the callers of their libraries. If they do
pass the incompatibilities, they should version (versioning is discussed in
the next section).

For shared library providers to fully assess if they are affected by
incompatible APIs in the versioned libraries on which their library depends,
you need to build a complete list of versioned libraries with API
incompatibilities and technical information on how they are impacting their
callers:

                   lib_d lib_e
                       ^ ^
Libraries        lib_b | /     Q: How is lib_my.sl affecting
Dependent on        ^  |/         libraries that depend on it?
lib_my.sl     lib_a | lib_c
                 ^  |  ^
                 |  |  |
                 |  |  |
                 +--+--+--+--+
                 |           |
- - - - - - - - -|- - - - - -|- - - - - - - - - - -
                 | lib_my.sl |
                 +-----------+
Libraries           ^     ^       Q: How is lib_my.sl affected
lib_my.sl           |     |          by the incompatible APIs
Depends on          |     |          in libc and libC?
                    libc libC

******************************************************************************
3.4.1 Do I Need to Version?

NOTE: The term "version" or "versioning", which is used throughout this
chapter, is meant to encompass the various techniques that could be employed
to maintain compatibility in libraries. One technique is system V.4
versioning; others are discussed in this section. Refer to the white paper
entitled "Steps to Version your Libraries" for more information. See
usr/share/doc/V4.version.pa.

The first step is to ascertain if your library is exposing any
incompatibilities and thus may need to version. System V.4 library
versioning is not without cost (such as support/patch streams, memory usage,
disk space, and so on), so this decision needs to be made wisely.

  1. Identify all of the shared libraries that your library depends on.

  2. Evaluate the versioning plans and technical information describing
     incompatible changes in the libraries you depend on.

     Because you are most likely dependent on libc, start investigating your
     dependencies on libc:

     To help assess if your library is affected by any libc API changes,
     refer to the sections "libc" and "libc Versioning Information" in this
     document.

  3. If any of the shared libraries that you are dependent on are
     versioning, you need to understand if your library depends on any of
     the incompatible API changes.

     -----------------------------------------------------------------------
     NOTE

     You cannot complete your investigation until all of the results of the
     investigations of your dependencies are analyzed.

     -----------------------------------------------------------------------

     The core HP-UX system libraries that have been versioned are included
     in the section "Core HP-UX Versioned Libraries". If your shared
     libraries depend on any of those versioned libraries, you need to
     investigate if you need to version your libraries by following the rest
     of the instructions. Your product may also depend on libraries that are
     optional products supplied by HP, by third party vendors, or products
     that third party vendors call. A similar investigation needs to take
     place with those libraries.

  4. If your library calls any of the incompatible APIs, you need to assess
     if your library will expose any of the API incompatibilities to the
     users of your library. If it does, you may need to employ a versioning
     technique.

     You do not have to version simply because one or more of the shared
     libraries that you depend on is versioning.

  5. Your library may need to change for reasons of its own, such as
     standards, obsolescence, defect repair, and so on. If any of these
     changes are incompatible and visible to the users of your library, you
     may need to employ a versioning technique.

******************************************************************************
3.4.2 I Need to Version. Now What Do I Do?

  1. See the HP white paper, "Steps to Versioning Your Shared Library"
     (/usr/share/doc/V.4version.ps). Using V.4 versioning is one way of
     insulating your library users from incompatibilities. There are other
     techniques that you could employ to maintain compatibility in your
     library.

  2. Provide product documentation to your users describing the incompatible
     API changes that you are either directly or indirectly exposing. This
     information needs to have a level of detail such that other libraries
     that depend on your library can adequately assess if they need to
     version based on your impacts.

******************************************************************************
3.4.3 Core HP-UX Versioned Libraries (HP-UX 10.30)

The following list of core HP-UX version libraries does not contain optional
products or non-HP products. See the supplier of the other libraries for
compatibility information.

libc.2         libcgm.sl    libcgm.sl   libcl.2
libC.2         libC.ansi.2  libCsup.2   libdld.2
libdld.2       libDtHelp.2  libDtSvc.2  libDtSvc.2
libDtWidget.2  libhpgfx.sl  libICE.2    libICE.2
libilefs.2     libm.2       libphigs.sl librt.2
librwtool.2    libsec.2     libstd.2    libstream.2
libSM.2        libtt.2      libX11.sl   libXext.sl
libXhp11.sl    libXi.sl     libXIE.2    libXm.sl
libXt.sl       libXtst.sl

******************************************************************************
3.4.4 Optional Product Libraries

----------------------------------------------------------------------------
           Table 3-1:

  Product          Library

  C++              libC.2

  C++              libC.ansi.2

  C++              libCsup.2

  C++              libstd.2

  C++              libstream.2

  C++              librwtool.2

  FTAM             libapli.sl

  FTAM             libxap.sl

  FTAM             librose.sl

  Vistualize       libIVL.sl

  Glance/PerfView  libnums.sl

----------------------------------------------------------------------------

******************************************************************************
3.4.5 libc Versioning Information

The following information is pertinent to shared library providers that
depend on libc. Refer to the appropriate sections in this document more
information on the topics listed below. Also, obtain a copy of the white
paper entitled "Steps to Version your Libraries" for more information. See
/usr/share/doc/V.4version.ps.

  1. Do you plan to enhance your pre-10.30 libraries to handle the following
     new 10.30 features? Please check the appropriate box.

     Kernel Threads?

     ___ no

     ___ yes

     If "no", skip to the next question.

     If "yes", you MUST do ALL of the following:

        o Make some source code changes to enable this feature.

        o Version your shared library.

     2000 Rollover?

     ___ no

     ___ yes

     If "no", skip to the next question.

     If "yes", you MUST do ALL of the following:

        o Make some source code changes to enable this feature.

        o Version your shared library.

  2. Do you use the following APIs: getdate() or strptime()?

     ___ no

     ___ yes

     If "no", skip to the next question.

     If "yes", you MUST do ALL of the following:

        o Make some source code changes to enable this feature.

        o Version your shared library.

  3. Do you use any of the following POSIX.1C _r APIs?

     asctime_r    ctime_r     getgrgid_r  getgrnam_r
     getlogin_r   getpwuid_r  getpwnam_r  gmtime_r
     localtime_r  readdir_r   ttyname_r   rand_r

     ___ no

     ___ yes

     If "no", skip to the next question.

     If "yes", continue with the next questions.

     Can your library be used by both DCE and non-DCE applications?

     ___ no

     ___ yes

     If "no", do the following:

        o Warn customers to link with libd4r and use D_PTHREADS_DRAFT4.

     If "yes", version your shared library.

  4. Do you use any of the following HP-Proprietary _r or _unlocked APIs?

     ecvt_r             fcvt_r         getdate_r    ldecvt_r
     acltostr_r         crypt_r        encrypt_r    setkey_r
     erand48_r          jrand48_r      lcong48_r    lrand48_r
     nrand48_r          seed48_r       srand48_r    getlocale_r
     ltoa_r             ltostr_r       ultoa_r      ultostr_r
     getusershell_r     setusershell_r getmntent_r  getdiskbyname_r
     getutent_r         getutid_r      getutline_r  pututline_r
     utmpname_r         endgrent_r     fgetgrent_r  getgrent_r
     endpwent_r         fgetpwent_r    getpwent_r   setpwent_r
     strerror_r         ptsname_r      wcstok_r     endhostent_r
     gethostbyname_r    gethostent_r   sethostent_r endnetent_r
     getnetbyname_r     getnetent_r    setnetent_r  endservent_r
     getservbyport_r    getservent_r   setservent_r endprotoent_r
     getprotobynumber_r getprotoent_r  setprotoent_r inet_ntoa_r
     fputs_unlocked     puts_unlocked  clearerr_unlocked
     ferror_unlocked    fileno_unlocked   fflush_unlocked
     fclose_unlocked    fread_unlocked    fseek_unlocked
     fwrite_unlocked    getw_unlocked     putw_unlocked
     setvbuf_unlocked   ungetc_unlocked   fgetwc_unlocked
     fputwc_unlocked    fputws_unlocked   getwc_unlocked
     putwc_unlocked     putwchar_unlocked putws_unlocked
     getwchar_unlocked  ungetwc_unlocked

     ___ no

     ___ yes

     If "no", skip to the next question.

     If "yes", you must do ALL of the following:

        o Warn customers to link with libd4r and use -D_PTHREADS_DRAFT4.

        o Warn customers that they cannot build their executable fully
          archive.

  5. Do you use any of the following APIs?

     endgrent_r()    getgrent_r()    setgrent_r()
     endpwent_r()    getpwent_r()    setpwent_r()
     endhostent_r()  gethostent_r()  sethostent_r()
     endnetent_r()   getnetent_r()   setnetent_r()
     endservent_r()  getservent_r()  setservent_r()
     endprotoent_r() getprotoent_r() setprotoent_r()

     ___ no

     ___ yes

     If "no", skip to the next question.

     If "yes", you may need to do the following:

        o Make some source code changes to support threads.

  6. If you use any of the group/password/host APIs below, you will not be
     able to build a totally archive application. Note that there is a
     transitive effect in all other APIs that depend directly or indirectly
     on any of these APIs.

     Do you use any of the following group/password/host APIs to read the
     group/password/host database?

     getpwent     getpwuid       getpwnam
     fgetpwent    getgrent       getgrgid
     getgrnam     fgetgrent      getnetgrent
     innetgr      getrpcbyname   getrpcbynumber
     getrpcent    gethostbyname  gethostbyaddr
     gethostent   getnetbyname   getnetbyaddr
     getnetent    getprotobyname getpprotobynumber
     getprotoent  setpwent       endpwent
     setgrent     endgrent       setnetgrent
     endnetgrent  setrpcent      endrpcent
     sethostent   endhostent     setnetent
     endnetent    setprotoent    endprotoent
     getpwent_r   getpwuid_r     getpwnam_r
     fgetpwent_r  getgrent_r     getgrgid_r
     getgrnam_r   fgetgrent_r    getnetgrent_r
     initgroups   strtoacl       acltostr
     cuserid      ruserok        pw_nametoid
     pw_nametoaid pw_idtoname    pw_aidtoname
     gr_nametoid  gr_idtoname    acceptable_password
     randomchars  randomletters  randomword

     ___ no

     ___ yes

     If "no", skip to the next question.

     If "yes", you must do ALL of the following:

        o Make some makefile changes to use libnsl.

        o Modify your documentation, manpages, and release notes to warn
          customers that they cannot build a fully archive application.

  7. Do you use HUGE_VAL in your library?

     ___ no

     ___ yes

     If "no", skip to the next question.

     If "yes", you must do the following:

        o Version your shared library.

  8. To maximize overall compatibility, you should not build your library
     with a direct link dependency on libc (with -lc). Do you call libc APIs
     in your library and do you build your library with an explicit link
     dependency on libc?

     ___ no

     ___ yes

     If "no", skip to the next question.

     If "yes", you must make the following change:

        o Remove your direct link dependency on libc (-lc).

     If you cannot remove your direct link dependency on libc, you must make
     the following change:

        o Version your shared library.

  9. Do you use errno in a structure?

     ___ no

     ___ yes

     If "no", skip to the next question.

     If "yes", you must make the following change:

        o Make some source code changes to change the field name.

 10. Do you use the getprpwent or setprpwent Trusted System APIs in libsec?

     (The pr_file struct for these APIs changed in an incompatible way in
     10.20).

     ___ no

     ___ yes

     If "no", skip to the next question.

     If "yes", your pre-10.30 library may be broken already.

 11. Have you checked "yes" to any of the following questions:

     1, 2, 3, 4, 7, or 8

     ___ no

     ___ yes

     If "no", skip the rest of this question.

     NOTE: you may have to version your libraries due to other libraries as
     well. This questionaire covers only libc specific issues.

     If "yes", you should version your shared library.

 12. Do you plan to version your shared library?

     ___ no

     ___ yes

     If "yes", skip to the next question.

     If "no", understand the risk/resultant problems that may occur in your
     product and then answer these additional questions:

        o Could a customer (or a support engineer) easily isolate the
          resulting problem(s), or are the symptoms easy to confuse with
          other problems or are otherwise difficult to characterize?

        o What is the probability that customers would run into this
          problem?

        o What percentage of customers might see this as a problem?

        o What are the workarounds for this (if any)?

        o Could the problem be documented rather than fixed?

          ------------------------------------------------------------------
          NOTE

          Not versioning when you should could result in product failures.

          ------------------------------------------------------------------

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
3.5 Deprecation and Obsolescence of APIs

For more information, refer to the CAE X/Open System Interfaces and Headers
Version 4.2 manual.

This section defines the obsolescence of command and library Application
Programming Interfaces (APIs). The goals of this section are to:

   * provide common, standard APIs across UNIX-like vendors

   * enhance portability for ISVs

   * reduce the size of the libraries, thus increasing performance of shared
     libraries

   * reduce the effort for future architecture changes

   * reduce support costs

   * reduce confusion over which API or command to use

******************************************************************************
3.5.1 Terms and Definitions

Deprecated: A "deprecated" interface can have the following characteristics:

   * functionality is available on the system

   * deprecation is a step towards obsolescence

   * the specification is in flux

   * less value to users

   * functionality no longer makes sense

   * functionality has been replaced

   * support/enhancement expectations have been lowered

   * usage is discouraged

   * warnings against usage/alternatives are provided

   * the provider continues to test functionality

   * migration plan/tools are provided

The reasons for marking an interface as "deprecated" may include:

   * marked "to be withdrawn" by standards

   * support is available via more standard means

   * equivalent, enhanced, more reliable counterparts exist

   * also all reasons listed in the "Obsolete" section below

Obsolete: An "obsolete" interface may have the following characteristics:

   * functionality is no longer available on the system

   * runtime support is undefined

   * cannot develop or build with this interface

   * documentation is not provided or recommends against usage

   * the final stage of the product lifecycle has been reached

The reasons for marking an interface as "obsolete" may include:

   * underlying infrastructure in either the software or hardware is
     obsolete or not available

   * changes to the system have decreased reliability

   * miscellaneous business decisions such as:

        o third parties solution exists

        o not strategic

        o support costs are too high

        o not enough ROI

******************************************************************************
3.5.2 Architecture-Related Changes

==============================================================================
3.5.2.1 ARG_MAX

In order to support large numbers of arguments being passed into
applications, the total size of environment variables and arguments has been
increased from 20478 bytes to 2048000 bytes. This size change is reflected
in the ARG_MAX define in limits.h and in the value returned from
sysconf(_SC_ARG_MAX). Since ARG_MAX is no longer invariant, applications
should consider changing from using ARG_MAX to using sysconf(_SC_ARG_MAX).
Applications that assumed that there was no need for bounds checking when
copying the environment into a buffer that used the old value for ARG_MAX
may experience a core dump with a SIGSEGV when there is more than 20Kb in
the environment.

Changing code to use sysconf(_SC_ARG_MAX) is similar to the changes
documented in the next section to convert uses of PAGE_SIZE to
sysconf(_SC_PAGE_SIZE).

==============================================================================
3.5.2.2 PAGE_SIZE and PAGESIZE

Features: With the ability to support different page sizes on some
platforms, the #defines of PAGE_SIZE and PAGESIZE will give inaccurate
information.

The #defines for PAGE_SIZE and PAGESIZE in the header files have been
removed. This was done to retain conformance with the POSIX standard and
X/Open specifications that require these not to be defined if it can change
on a system. This also prevents the presentation of inaccurate information.

Impact: Older applications that used these definitions will work properly
because the size of the page defaults to the old value of these defines.
Also, if a new page size has been configured, it will always be larger than
the old value of these defines. The worse case situation is that an
application will request the use of more memory than it did in the past.

Applications that use these defines will need to use the value returned from
the interface sysconf() with the parameter _SC_PAGE_SIZE. This will always
return the size of the page in use.

To recompile sources, the code will have to be changed to replace the use of
the macro to using the sysconf() interface.

==============================================================================
3.5.2.3 Diskless Cluster Interfaces

The following diskless cluster interfaces have been removed:

getcdf   hidecdf  getccent getcccid getccnam setccent
endccent fgetccent

Impact: There may be possible source incompatibility. You must remove or
stub out to build.

Alternatives: There is no workaround.

Obsolescence: Obsolete in 10.30.

==============================================================================
3.5.2.4 Structured Directory Format (SDF) Commands

SDF was used on the S500 as the disk format; these commands are no longer
supported:

sdfchgrp sdfchmod   sdfchown  sdfcp  sdfdf
sdffind  sdffsck    sdffsdb   sdfll  sdfln
sdfls    sdfmkdir   sdfmv     sdfrm

Obsolescence: Obsolete in 10.30.

==============================================================================
3.5.2.5 tcio(1)

Obsoleted with the CS/80 device.

Obsolescence: Obsolete in 10.30.

==============================================================================
3.5.2.6 libdvio.a

The libdvio() interfaces are obsolete in the HP-UX 10.30 release. Customers
using this library should begin their transition because the library may not
be supported in future releases. The libdvio() interfaces are:

_dev_handler        gpio_get_status         gpio_set_ctl
hpib_abort          hpib_bus_status         hpib_card_ppoll_resp
hpib_eoi_ctl        hpib_io hpib_pass_ctl   hpib_ppoll
hpib_ppoll_resp_ctl hpib_ren_ctl            hpib_rqst_srvce
hpib_send_cmnd      hpib_spoll              hpib_status_wait
hpib_wait_on_ppoll  io_burst io_eol_ctl     io_get_term_reason
io_interrupt_ctl    io_lock io_on_interrupt io_reset
io_speed_ctl        io_timeout_ctl          io_unlock
io_width_ctl

Impact: There may be possible source code incompatibility in future HP-UX
releases. You must remove or stub out the library in order to build on
future releases.

Performance: There are no changes in performance.

Alternatives: There is no workaround.

Obsolescence: Obsolete in 10.30.

******************************************************************************
3.5.3 Miscellaneous Clean-up of Unsupported Features

The following functionality is not supported, may be error-prone, and may
not function as expected.

==============================================================================
3.5.3.1 Pre-Processor Macros

The following pre-processor macros are obsolete:

----------------------------------------------------------------------------
                                 Table 3-2:

  Macro                   Rationale

  _AES_SOURCE             Superseded by _XOPEN_SOURCE_EXTENDED

  _CLASSIC_TYPES          HP-UX 6.0 is no longer supported

  _XPG2, _XPG3, _SVID2    These denote functionality distinctions in
                          header files where the distinction is no longer
                          meaningful.

  _POSIX1_1988, _WSIO,    These denote functionality distinctions in
  _SIO                    header files where the distinction is no longer
                          meaningful.

  _XPG4, _XPG4_EXTENDED   Prototypes for _XOPEN_SOURCE and
                          _XOPEN_SOURCE_EXTENDED

  _INCLUDE__STDC__        It is no longer desirable to disable subsets of
                          ANSI C functionality

----------------------------------------------------------------------------

==============================================================================
3.5.3.2 Header Files

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3.5.3.2.1 a.exec.h

This file is deprecated because S300 systems are not supported by HP-UX
10.30 and subsequent releases.

Obsolescence: Deprecated in 10.30 and obsolete in the next release.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3.5.3.2.2 alarm.h

This file supports unreliable BSD termio functionality and hence is
deprecated.

Alternatives: Use functions associated with termios and the header file
<termios.h>.

Obsolescence: Deprecated in 10.30 and obsolete in the next release.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3.5.3.2.3 audnetd.h

This file is deprecated because this security file supports obsoleted
functionality.

Obsolescence: Deprecated in 10.30 and obsolete in the next release.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3.5.3.2.4 dumprestor.h

Tape drives and drivers referred by this file are no longer supported and
this file conflicts with VxFS. Therefore, this file is being deprecated.

Obsolescence: Deprecated in 10.30 and obsolete in the next release.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3.5.3.2.5 initptr.h

This file describes an obsolete object file format.

Obsolescence: Deprecated in 10.30 and obsolete in the next release.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3.5.3.2.6 nan.h

This header file is obsolete and is not in alignment with HP's current math
library and floating point support. Refer to the manpage for isnan for
recommended usage.

Obsolescence: Deprecated in 10.30 and obsolete in the next release.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3.5.3.2.7 ndir.h

This header file has been superseded by the functionality in dirent.h.

Alternatives: Use dirent.h instead. The old header file is still available
in /usr/old/usr/include.

Obsolescence: Deprecated in 10.30 and obsolete in the next release.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3.5.3.2.8 stab.h

This file describes obsolete s300 BSD debug information.

Obsolescence: Deprecated in 10.30 and obsolete in the next release.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3.5.3.2.9 tp_defs.h

This file contains obsolete defines for tape devices.

Obsolescence: Deprecated in 10.30 and obsolete in the next release.

******************************************************************************
3.5.4 Interface Replacement

Unless documented otherwise in the manpage, replacing core operating system
interfaces with interfaces (using the same names) provided by application
providers is not supported. Doing so may result in undesired and
unpredictable behavior.

******************************************************************************
3.5.5 Standards

----------------------------------------------------------------------------
NOTE

HP-UX has a very strong commitment towards investment protection and open
system standards and will monitor these new standards. In some cases,
standards may specify features that may be incompatible with previous
specifications. Hewlett-Packard will make every effort to support source and
binary compatibility for applications and will provide a migration plan
consistent with our commitment to investment protection and open standards.

----------------------------------------------------------------------------

The following interfaces will be or have been affected by standards.

==============================================================================
3.5.5.1 Deprecated by Standards

The following functions, global variables, and header files have been marked
for deletion by standards organizations because they are either unreliable
or deficient in capabilities. Most have reliable replacements already
defined by standards. These interfaces are currently required for
conformance to some standards and specifications. HP will be tracking these
standards and may deprecate the level of support for these as indicated by
the standards and customer requirements for standards.

DEPRECATED       RECOMMENDED
-----------      -----------
ERROR            regcomp(3C)
GETC             regcomp(3C)
INIT             regcomp(3C)
PEEK             regcomp(3C)
RETURN           regcomp(3C)
UNGETC           regcomp(3C)
advance          regcomp(3C)
chroot           none. Not portable
compile          regcomp(3C)
cuserid          getpwuid(getuid()),
                 getpwuid(geteuid()),
                 getlogin()
/etc/utmp        /etc/utmpx
/etc/wtmp        /etc/wtmpx
/etc/btmp        /etc/btmpx
extern char *locs          regcomp(3C)
extern char *__loc1        regcomp(3C)
extern char *loc1          regcomp(3C)
extern char *loc2          regcomp(3C)
gamma            lgamma(3M)
gethostid        none. Useless.
getpass          none
libgen.h         regex.h
re_comp          regcomp(3C)
re_comp.h        regex.h
re_exec          regcomp(3C)
regcmp           regcomp(3C)
regec            regcomp(3C)
regex            regcomp(3C)
regexp.h         regcomp(3C)
signgam          lgamma(3M)
sigstack         sigaltstack()
step             regcomp(3C)
tgetent          terminfo
tgetflag         terminfo
tgetnum          terminfo
tgetstr          terminfo
tgoto            terminfo
ttyslot          none. Not portable. Use getpid() for unique
                 process ID.
valloc           malloc(3C)
varargs.h        stdarg.h

----------------------------------------------------------------------------
NOTE

HP does not currently have any plans to remove the preceding commands from
the system. These are designated deprecated by X/Open. See the definition of
"deprecated" earlier in this chapter.

----------------------------------------------------------------------------

==============================================================================
3.5.5.2 Withdrawn Commands

The following commands have been marked "Withdrawn" or "To be Withdrawn" in
X/Open Commands and Utilities Issue 4 Version 2. This means that these
utilities will not be required on X/Open conformant systems in the future.
X/Open may choose to specify a similar replacement command that addresses
the problems in the existing command.

Thus, it is recommended that applications avoid using these commands because
this will affect the portability of the applications across platforms and
releases.

banner: Cannot be well specified in an internationalized environment
(particularly for large, complex character sets) and is rarely needed by
portable applications.

calendar: Cannot be well specified in an internationalized environment.
Portable applications should not use any operands to calendar.

cc: Use c89 instead. The behavior of c89 is more consistent because it is
based on a formal C standard. (-Aa ANSI C is the default setting in 10.30.
Compatible C behavior can be restored via -Ac).

chroot: Cannot be used portably by an application because standards avoid
mandating operating system filesystem layout.

col: Cannot be well specified in an internationalized environment. It may be
replaced in a future specification by a similar utility without the current
ASCII bias.

cpio: Cannot be used for portable communication of data with codesets
outside the ISO/IEC 646:1991 7-bit characters. pax should be used instead.
This may be implemented as a wrapper/link to pax. dircmp can also be used.
As an alternative, you can use diff -R.

line: Cannot be used portably in an internationalized environment. read
should be used instead.

lint: The behavior of lint is not portable.

mail: Cannot be used portably in an internationalized environment. mailx can
be used instead.

pack: The compress utility should be used instead because it has the
following advantages:

   * the algorithm used to create the output files is frequently more
     effective in reducing the size of files

   * the compress utility can compress data from its standard input, not
     just a named regular file. Thus, it is useful in pipelines.

pcat: zcat can be used instead.

pg: more can be used instead.

sdb: Symbolic debuggers are strongly system-dependent and may not be used
portably.

spell: Cannot be well specified in an internationalized environment. There
is no known technology that can be used to recognize general language for
user-specified input without providing a complete dictionary along with the
input file.

sum: Cannot be used portably. cksum can be used instead.

tar: Cannot be used for portable communication of data with codesets outside
the ISO/IEC 646:1991 7-bit characters. pax should be used instead. This may
be implemented as a wrapper/link to pax.

unpack: uncompress can be used instead.

wall: Cannot be used portably by an application. It is usually usable only
by an application with appropriate privileges.

Pre-SPEC1170: The following interfaces were provided in 10.0 as temporary
interfaces to maintain binary compatibility until the application sources
are modified to use the standards conformant SPEC1170 interface. The
temporary interfaces will be obsoleted. The preferred interfaces should be
used instead of the temporary interfaces.

----------------------------------------------------------------------------

  Temporary Interface  Preferred Interface

  nftw2                nftw

  setpgrp3             setsid

  setpgrp2             setpgid

----------------------------------------------------------------------------

Deprecated in 10.30.

******************************************************************************
3.5.6 HP-UX Legacy Interfaces

This section outlines the deprecation and obsolescence of HP proprietary
interfaces and utilities. These interfaces and utilities are not specified
by standards and are not portable across vendors' platforms. The use of
these interfaces and utilities is strongly discouraged and may not be
portable to future implementations of HP-UX.

==============================================================================
3.5.6.1 nl_tools_16 interfaces

Remove 16-bit character interfaces; these interfaces are obsoleted by
standard wide character interfaces. The interfaces are:

byte_status

firstof2

secof2

c_colwidth

Impact: Source incompatibility

Performance: No changes to performance.

Alternatives: Use standard WPI wide character interfaces in libc.

Obsolescence: Deprecated since HP-UX 7.0. Obsolete in 10.30.

==============================================================================
3.5.6.2 strtold

Obsolescence: The HP-proprietary strtold interface to convert a string to
long double-precision number is in conflict with the strtold API defined by
the upcoming C9X standard. Thus, the HP-proprietary strtold is deprecated in
10.30.

==============================================================================
3.5.6.3 Curses

The legacy HP Curses library (libHcurses.sl or libHcurses.a) is not X/Open
compliant. See Chapter 6: Other Operating System and Subsystem Changes

******************************************************************************
3.5.7 Secure Password File Access Interfaces

Remove the following secure password stub interfaces in libc. These are mere
stubs in libc; real interfaces are in libsec.

endspwent endspwent_r fgetspwent fgetspwent_r
getspwaid getspwaid_r getspwent  getspwent_r
getspwnam getspwnam_r getspwuid  getspwuid_r
putspwent setspwent   setspwent_r

Impact: Possible source incompatibility in makefiles

Alternatives: Makefile changes may be needed to include libsec.

Obsolescence: Linking with libsec, as documented in the HP-UX 10.0 Release
Notes and manpages, is obsolete in HP-UX 10.30.

==============================================================================
3.5.7.1 libPW.a

These interfaces are undocumented, unmaintained, non-standard, and may
perform slower than the related interface in libc:

alloca    any       anystr   balbrk   cat        clean_up curdir
findir    dname     fatal    fdfopen  giveup     imatch   index
lockit    mylock    onelock  unlockit logname    patoi    patol

__rpop    __rpush   __size   regcmp   __advance  __cclass
__execute __getrnge __xpop   __xpush  regex      rename
repeat    repl      satoi    setsig   setsig1    sname
strend    substr    trnslat  userdir  userexit   username
verify    xalloc    xfree    xfreeall xcreat     xlink
xopen     xpipe     xunlink  xwrite   xmsg       zero
zeropad   move      abspath  pop      push

Deprecated in 10.30. Many of the interfaces are already in libc.

utmp File Access Interfaces: The interfaces in this list expose the format
of the information in the utmp and wtmp files:

_pututline  endutent   endutent_r getutent    getutent_r
getutid     getutid_r  getutline  getutline_r pututline
pututline_r setutent   setutent_r utmpname    utmpname_r

These interfaces are deprecated in 10.30.

Alternatives: The libc interfaces getutxent(), getutxid(), getutxline(),
endutxent(), pututxline(), and setutxent() are SPEC 1170 replacements and
should be used instead.

These interfaces will no longer be supported, but they will be placed in
libcompat.a for source compatibility.

==============================================================================
3.5.7.2 Block Mode Terminal Interfaces

The HP-proprietary block mode support is not portable across platforms and
is not in alignment with the direction of the HP-UX terminal strategy.

blclose
blget
blopen
blread
blset
blmodeio.h

These interfaces are deprecated in 10.30.

==============================================================================
3.5.7.3 PRIV_SETRUGID Feature of setgid

It is recommended that the PRIV_SETRUGID capability be avoided because it is
provided for backward compatibility. This feature may be modified or dropped
from future HP-UX releases.

Alternatives: When changing the real user ID and real group ID, use
setresuid() and setresgid().

Obsolescence: Deprecated in 10.30.

==============================================================================
3.5.7.4 Signal Mask

The Berkeley signal mask interfaces (not SPEC1170) are being deprecated
because they are specified to use a 32-bit mask (1 bit per signal). There
are currently 34 signals, so they cannot control the behavior of all
signals.

sigsetmask
sigblock
sigpause
sigvector

Obsolescence: Deprecated in 10.30.

Alternatives: Use the POSIX.1 sigaction() interface.

==============================================================================
3.5.7.5 getpw

This routine is only provided for compatibility with previous releases.

Obsolescence: Deprecated in 10.30.

Alternatives: Applications should use getpwent().

==============================================================================
3.5.7.6 cue

This HP-proprietary command is non-standard, is not widely used, and does
not provide significant added benefit.

Obsolescence: Deprecated in 10.30.

==============================================================================
3.5.7.7 Switch/Over Commands

The Switch/Over product, including the following commands, will be obsoleted
in favor of the ServiceGuard product. This is a 9.0 to 10.0 transition tool.
Note that there is not a one-to-one mapping between Switch/Over commands and
ServiceGuard commands.

checkroot    convert_label   disklock
heartbeat    incdate         readpulse
setlan1      switch_convert  switchdiskl
switchheartb switchreadp     switchsetlan

Obsolescence: Deprecated in 10.30. This will be obsoleted when HP-UX 9.0 is
obsoleted.

Alternatives: Use /usr/sbin/lvmmigrate instead.

==============================================================================
3.5.7.8 backup(1M)

This HP-proprietary backup mechanism is not recommended for future use.

Alternative: Omniback or fbackup.

==============================================================================
3.5.7.9 Threads

HP-UX Proprietary _r Interfaces: The following HP-UX proprietary _r
(re-entrant) and _unlocked interfaces have been obsoleted from libc and
other HP-UX system libraries:

endhostent_r  endnetent_r    getnetbyaddr_r  getnetbyname_r
getnetent_r   setnetent_r    endservent_r    getservbyname_r
p_rr         _hostalias_r    inet_ntoa_r     ecvt_r fcvt_r
getdate_r     lecvt_r        dfcvt_r         acltostr_r crypt_r
encrypt_r     setkey_r       drand48_r       erand48_r jrand48_r
lcong48_r     lrand48_r       mrand48_r      nrand48_r seed48_r
srand48_r     getlocale_r     164a_r         ltoa_r ltostr_r trt
oacl_r        strtoaclpatt_r  ultoa_r ultostr_r
_setlocale90_r mywcstok_r     clnt_spcreateerror_r
clnt_sperrno_r clnt_sperror_r endnetgrent_r  getnetgrent_r
setnetgrent_r endrpcent_r     getrpcbyname_r getrpcbynumber_r
getrpcent_r   setrpcent_r     getgrgid_r     getgrnam_r getlogin_r
endusershell_r  getusershell_r setusershell_r getmntent_r
getdiskbyname_r endutent_r     getutent_r     getutid_r
getutline_r     pututline_r    setutent_r     utmpname_r
endgrent_r      fgetgrent_r    getgrent_r     setgrent_r
endpwent_r      fgetpwent_r    getpwent_r     setpwent_r
setlocale_r     strerror_r     ptsname_r      wcstok_r
endspwent_r     fgetspwent_r
getprotobyname_r getprotobynumber_r getprotoent_r setprotoent_r
getservbyport_r  getservent_r  setservent_r   endprotoent_r

==============================================================================
3.5.7.10 HP-UX Proprietary _unlocked Interfaces:

fgets_unlocked  fputs_unlocked   puts_unlocked   clearerr_unlocked
feof_unlocked   ferror_unlocked  fileno_unlocked _fflush_unlocked
fflush_unlocked fclose_unlocked  fread_unlocked  fseek_unlocked
ftell_unlocked  fwrite_unlocked  getw_unlocked   putw_unlocked
rewind_unlocked setvbuf_unlocked ungetc_unlocked fputws_unlocked
fgetwc_unlocked fgetws_unlocked  fputwc_unlocked
getwc_unlocked  getwchar_unlocked putwc_unlocked
putwchar_unlocked putws_unlocked  ungetwc_unlocked

Obsolescence: Deprecated in 10.30. Deprecated interfaces moved to libd4r.

Alternatives: Use the non _r and non _unlocked interfaces in libc.

******************************************************************************
3.5.8 Internationalization

All nl_tools_16(3C) interfaces are affected.

The following HP-proprietary APIs in nl_ctype.h are no longer provided
because they are no longer consistent with the internationalization support
of HP-UX. These APIs cannot be updated to be consistent with
internationalization support of HP-UX due to fundamental design and
specification limitations of 2-byte support in these APIs.

byte_status firstof2 secof2   c_colwidth ADVANCE  BYTE_STATUS
C_COLWIDTH  CHARADV  _CHARADV CHARAT     FIRSTof2 PCHAR
PCHARADV    SECof2   WCHAR    WCHAR      WCHARADV _WCHARADV
WC_COLWIDTH

This has been deprecated since HP-UX 7.0 and documented in the HP-UX 9.x
Release Notes. libc APIs, firstof2, and secof2 will no longer be accessible
for calling from libc.2 in 10.30. But, they will remain the versioned libc.1
for binary compatibility.

Alternatives: Use the standard wide character interfaces in libc.

==============================================================================
3.5.8.1 Miscellaneous NLS Interfaces and Commands

HP-proprietary, non-standard interfaces and utilities may be obsoleted over
time as standard utilities emerge. Usage of these utilities will not be
portable to other vendor's platforms:

getlocale(3C)
dumpmsg(1)
findmsg(1)
findstr(1)
findstr(1)
forder(1)
insertmsg(1)
insertmsg(1)
nljust(1)
uecset(1)

Obsolescence: Deprecated in HP-UX 10.0.

==============================================================================
3.5.8.2 strftime formats

The following strftime directives were provided for backward compatibility
and are now obsoleted.

----------------------------------------------------------------------------

  Deprecated Directive  Recommended Directive

  %                     %E%EC%Ey

  %F                    %B

  %N                    %EC

  %o                    %Ey

  %z                    %Z

----------------------------------------------------------------------------

Obsolescence: Deprecated in HP-UX 9.x.

==============================================================================
3.5.8.3 HP-proprietary Locale Names

HP-proprietary locale names may be obsoleted in favor of ISO standard locale
names.
----------------------------------------------------------------------------

  Name To be Obsoleted  Preferred Name     Language, Territory and Codeset

  n-computer            none               obsolete in 10.0 - use C or
                                           POSIX instead

  american              en_US.roman8       English, United States, roman8

  c-french              fr_CA.roman8       French, Canada, roman8

  danish                da_DK.roman8       Danish, Denmark, roman8

  dutch                 nl_NL.roman8       Dutch, Netherlands, roman8

  english               en_GB.roman8       English, United Kingdom, roman8

  finnish               fi_FI.roman8       Finnish, Finland, roman8

  french                fr_FR.roman8       French, France, roman8

  german                de_DE.roman8       German, Germany, roman8

  italian               it_IT.roman8       Italian, Italy, roman8

  norwegian             no_NO.roman8       Norwegian, Norway, roman8

  portuguese            pt_PT.roman8       Portuguese, Portugal, roman8

  spanish               es_ES.roman8       Spanish, Spain, roman8

  swedish               sv_SE.roman8       Swedish, Sweden, roman8

  icelandic             is_IS.roman8       Icelandic, Iceland, roman8

  katakana              ja_JP.kana8        Japanese, Japan, kana8 - to be
                                           OBSOLETED in next major release

  arabic                ar_SA.arabic8      Arabic, Saudi Arabia, arabic8

  arabic-w              ar_DZ.arabic8      Arabic, Algeria, arabic8

  greek/Note1/          el_GR.iso88597     Greek, Greece, greek8
                                           el_GR.greek8

  hebrew/Note2/         iw_IL.iso88598     Hebrew, Israel, hebrew8
                                           iw_IL.hebrew8

  turkish/Note3/        tr_TR.iso88599     Turkish, Turkey, turkish8
                                           tr_TR.turkish8

  thai                  th_TH.tis620       Thai, Thailand, tis620

  C                     C                  Computer default - same as
                                           POSIX

  POSIX                 POSIX              specified by POSIX - contains
                                           only POSIX portable characters

  american.iso88591     en_US.iso88591     English, United States, ISO
                                           8859/1

  c-french.iso88591     fr_CA.iso88591     French, Canadian, ISO 8859/1

  danish.iso88591       da_DK.iso88591     Danish, Denmark, ISO 8859/1

  dutch.iso88591        nl_NL.iso88591     Dutch, Netherlands, ISO 8859/1

  english.iso88591      en_GB.iso88591     English, United Kingdom, ISO
                                           8859/1

  finnish.iso88591      fi_FI.iso88591     Finnish, Finland, ISO 8859/1

  french.iso88591       fr_FR.iso88591     French, France, ISO 8859/1

  german.iso8859        1 de_DE.iso88591   German, Germany, ISO 8859/1

  italian.iso88591      it_IT.iso88591     Italian, Italy, ISO 8859/1

  norwegian.iso88591    no_NO.iso88591     Norwegian, Norway, ISO 8859/1

  portuguese.iso885     pt_PT.iso88591     Portuguese, Portugal, ISO
                                           8859/191

  spanish.iso88591      es_ES.iso88591     Spanish, Spain, ISO 8859/1

  swedish.iso88591      sv_SE.iso88591     Swedish, Sweden, ISO 8859/1

  icelandic.iso88591    is_IS.iso88591     Icelandic, Iceland, ISO 8859/1

  czech                 cs_CZ.iso88592     Czech, Czech Republic, ISO
                                           8859/2

  hungarian             hu_HU.iso88592     Hungarian, Hungary, ISO 8859/2

  polish                pl_PL.iso88592     Polish, Poland, ISO 8859/2

  rumanian              ro_RO.iso88592     Rumanian, Romania, ISO 8859/2

  serbocroatian         hr_HR.iso88592     Croatian, Croatia, ISO 8859/2

  none/Note4/           sk_SK.iso88592     Slovakian, Slovakia, ISO 8859/2

  slovene               sl_SI.iso88592     Slovenian, Slovenia, ISO 8859/2

  russian               ru_RU.iso88595     Russian, Russian Federation,
                                           ISO 8859/5

  bulgarian             bg_BG.iso88595     Bulgarian, Bulgaria, ISO 8859/5

  chinese-s             zh_CN.hp15CN       Simplified Chinese, China, GB
                                           2312-80

  chinese-t             zh_TW.ccdc         Traditional Chinese, Taiwan,
                                           CCDC

  chinese-t.big5        zh_TW.big5         Traditional Chinese, Taiwan,
                                           BIG5

  none/Note5/           zh_TW.eucTW        Traditional Chinese, Taiwan,
                                           CNS 11643-92

  japanese              ja_JP.SJIS         Japanese, Japan, SJIS

  japanese.euc          ja_JP.eucJP        Japanese, Japan, AJEC

  korean                ko_KR.eucKR        Korean, Korea, KS C5601

  arabic.iso88596       ar_SA.iso88596     Arabic, Saudi Arabia, ISO
                                           8859/6

  greek.iso88597        el_GR.iso88597     Greek, Greece, ISO 8859/7

  hebrew.iso88598       iw_IL.iso88598     Hebrew, Israel, ISO 8859/8

  turkish.iso88599      tr_TR.iso88599     Turkish, Turkey, ISO 8859/9

----------------------------------------------------------------------------

Note 1 In 10.0, the greek locale name is internally mapped to el_GR.iso88597
rather than el_GR.greek8.

Note 2 In 10.0, the hebrew locale name is internally mapped to
iw_IL.iso88598 rather than iw_IL.hebrew8.

Note 3 In 10.0, the turkish locale name is internally mapped to
tr_TR.iso88599 rather than tr_TR.turkish8.

Note 4 sk_SK.iso88592 is new in 10.0.

Note 5 zh_TW.eucTW is new in 10.0.

Obsolescence: Deprecated at HP-UX 10.0.

==============================================================================
3.5.8.4 Miscellaneous Locales

The locales ja_JP.kana8 and katakana are non-standard and may be obsoleted
in a future release. The locales el_GR.greek8, iw_IL.hebrew8, and
tr_TR.turkish8 are provided for backwards compatibility and may be obsoleted
in the next major release in favor of el_GR.iso88597, iw_IL.iso88598, and
tr_TR.iso88599.

Obsolescence: Deprecated at HP-UX 10.0.

==============================================================================
3.5.8.5 Right-to-Left Processing

The processing of right-to-left languages, such as Arabic and Hebrew, may
change or be obsoleted due to emerging standards. Some directly affected
components include:

strord(3C)
forder(1)
nljust(1)
nl_types.h
LANGOPTS (environment variable)

Other utilities may also be affected less directly.

Obsolescence: Deprecated at HP-UX 10.0.

==============================================================================
3.5.8.6 Codesets

To comply with standards and customer requirements, the default codeset for
many Western European languages may be changed from ROMAN8 to ISO 8859/1 in
future releases.

Obsolescence: ROMAN8 deprecated at HP-UX 10.0. The ISO codesets are the
recommended codesets.

==============================================================================
3.5.8.7 libportnls.a

Removed libportnls interfaces. These APIs are originally used for porting
applications between MPE and HP-UX 10.30. These interfaces are:

almanac          getcollate
getlangid        getlangs
gettables        nlappend
nlcollate        nlcollatesys
nlconvclock      nlconvcustdate
nlconvnum        sub_in_outstr
extract_nldt     format_nldt
get_end          getjulian
isvalidgregorian isvalidjulian
nlcrtm           calendar
clock            nlfindstr
nlfmtcalendar    nlfmtclock
nlfmtcustdate    nlfmtdate
nlfmtlongcal     format_outstr
nlfmt_cleanup

Impact: There is source incompatibility.

Alternatives: Use X/Open NLS interfaces in libc.

Obsolescence: These interfaces were deprecated since HP-UX 10.0.

Obsolete in 10.30.

******************************************************************************
3.5.9 Compatibility with Other Platforms

The following features are provided for compatibility with other
implementations.

==============================================================================
3.5.9.1 Device Control

These system calls (not the commands) are preserved for backward
compatibility with Bell Version 6:

stty(2)
gtty(2)

These calls provide as close an approximation as possible to the old Version
6 functions.

Obsolescence: Deprecated in 10.30.

Alternatives: All new applications should use TCSETA and TCGETA ioctl()
calls described in termio(7).

==============================================================================
3.5.9.2 libBSD.a

The 4.2 BSD-compatible process control facilities are: killpg, getpgrp,
setpgrp, sigvec, and signal.

These calls simulate (and are provided for backward compatibility with)
functions of the same name in the 4.2 Berkeley Software Distribution.

The comparable interfaces are already in libc.

The preferred libc interfaces are:

getwd   getcwd
killpg  kill
sigvec  sigaction
signal  sigaction/bsd_signal
setpgrp setpgid
getpgrp getpgid

Deprecated in 10.30. Obsoleted in 11.0.

Alternatives: See the preferred libc interface listed above.

==============================================================================
3.5.9.3 File System Descriptor File Entry

The following interfaces get a file system descriptor file entry. These
routines are included only for compatibility with 4.2 BSD.

getfsent
getfsspec
getfsfile
getfstype
setfsent
endfsent

Deprecated in 10.30.

Alternatives: For maximum portability and improved functionality, new
applications should use the getmntent(3X) library routines.

==============================================================================
3.5.9.4 sadp

This SOE command is non-standard and is no longer recommended for
portability.

Deprecated in 10.30.

==============================================================================
3.5.9.5 setup

This SOE command is non-standard and is no longer recommended for
portability.

Deprecated in 10.30.

==============================================================================
3.5.9.6 getdirentries

This routine is non-standard and is provided only for compatibility with Sun
Microsystems.

Deprecated in 10.30.

As an alternative, applications should use readdir (and opendir, closedir,
seekdir, telldir) instead.

==============================================================================
3.5.9.7 vfsmount

This routine is only provided for compatibility with Sun Microsystems.

Applications should use mount.

Deprecated in 10.30.

==============================================================================
3.5.9.8 ftime

ftime gets the date and time more precisely. This facility is provided for
backwards compatibility with Version 7 systems.

Deprecated in 10.30.

Either time() or gettimeofday() should be used in new programs.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
3.6 ONC/NFS Binary Compatibility

For 10.30:

******************************************************************************
3.6.1 API Binary Compatibility

Of approximately 200 external ONC NFS APIs and system calls available to the
end-user and ISV, there are two known areas of incompatibility and two areas
of documented obsolesence. They are:

----------------------------------------------------------------------------

  Incompatibility Areas     Obsolescence Areas

  The NFS subsystem         portmap obsolescence

  The secure RPC subsystem  exportent() obsolescence

----------------------------------------------------------------------------

******************************************************************************
3.6.2 The NFS Subsystem

==============================================================================
3.6.2.1 Header Files

In the 10.30 release, nfs.h is the only header file that contains NFS
protocol specification information. Header files such as klm_prot.h,
lockmgr.h, nfs_clnt.h and rnode.h are not included.

==============================================================================
3.6.2.2 vfsmount() system calls

The MOUNT_NFS type is no longer supported using the vfsmount() interface.

==============================================================================
3.6.2.3 stat(), fstat(), statfs(), fstatfs() or fstatvfs() system calls

Applications making calls to stat(), fstat(), statfs(), fstatfs() or
fstatvfs() to determine the file system type may require source code
changes.

Previously, NFS supported only protocol version 2 (PV2) and NFS had to
reside on file system slot one. Some applications assume if a call to
stat(), fstat(), statfs(), fstatfs(), or fstatvfs() on a file returns
st_fstype or f_sid equal to MOUNT_NFS (#define MOUNT_NFS 1), then the file
is NFS mounted. In the 10.30 release, both NFS PV2 and PV3 are supported.
Therefore, in 10.30 and beyond, calls to stat(), fstat(), fstatfs(), etc.
can potentially return numbers other than one. Numbers other than one
indicate that the file may reside on a NFS PV3 file system. Applications
that assume NFS files are always on slot one will no longer work on NFS PV3
file systems.

Recommendation:

The correct way for applications to determine the file system type is to
call stat(), statfs(), statvfs(), etc and then post-process the returned
st_fstype or f_sid using sysfs() with GETFSTYP opcode.

What to look for in your current code:

Any use of the define "MOUNT_NFS" in your code is a clear indication of a
potential problem. The problem may also exist even if MOUNT_NFS is not found
in the code since some programmers may have hard coded the value "1" in its
place. See below for more details.

If any code you support calls:

A) "stat" or "fstat" and then examines the "st_fstype" field of the returned
buffer to determine file system type as shown below:

Example: (grep for st_fstype)

struct stat statbuf;
...
stat( "/some/path", statbuf );
if( statbuf.st_fstype == MOUNT_NFS )
{
...
}

B) "Statfs" Or "Fstatfs" And Then Examines the "f_fsid[1]" field of the
returned buffer to determine file system type as shown below:

Example: (grep for f_fsid)

struct statfs sb;
...
statfs( "/some/path", sb );
if( sb.f_fsid[1] == MOUNT_NFS )
{
...
}

C) "statvfs" or "fstatvfs" and examines the "f_fsid" field of the returned
buffer to determine file system type as shown below:

Example: (grep for f_fsid)

struct statvfs vsb;

...

statvfs("/some/path", vsb);
if(vsb.f_fsid == MOUNT_NFS)
{
...
}

Application Example:

An example of how an application can correctly determine if a file is on an
nfs mounted file system:

#include <sys/types.h>
#include <sys/stat.h>
#include <sys/fstyp.h>
#include <mntent.h>
main()

{
   struct stat buf;
   char filetype[FSTYPSZ];
   stat("file_name, &buf);
   sysfs(GETFSTYP, buf.st_fstype, filetype);
   if (strcmp(filetype,MNTTYPE_NFS) == 0) { /* NFS PV2 */
   .
   }
   else if (strcmp(filetype,MNTTYPE_NFS3) == 0) { /* NFS PV3 */
   .
   }
   else
   .
   .

Workaround:

If your application does not care whether the NFS mounted file system is PV2
or PV3 (also known as NFS3), and will treat both in the same way, you might
use the following code sample to map the file system type returned from the
stat() call to its previous static value "NFS_MOUNT" (1).

/*
* Name: map_nfs3()
* The map_nfs3 routine maps the dynamic statbuf.st_fstype return * for NFS3
* file systems back to the previous NFS static value (MOUNT_NFS =   1)
*/
ushort

map_nfs3( ushort st_fstype )
{
     char typebuf[FSTYPEZ];
     if( sysfs(GETFSTYP, st_fstype, typebuf) != -1 )
     {
          if( strncmp(typebuf, MNTTYPE_NFS3, MNTMAXSTR) == 0)
               return MOUNT_NFS;
     }
     return st_fstype;
}

******************************************************************************
3.6.3 NFS Compatibility Matrix - Mixing NFS PV2 and PV3

Systems running NFS Protocol Version 3 (PV3) are capable of large file
support on mounted filesystems. However, systems running NFS Protocol
Version 2 (PV2) cannot support large files on a mounted file system. If you
have an environment which mixes systems running both NFS PV2 and PV3, refer
to the following table for information on compatibility.

----------------------------------------------------------------------------
                    Table 3-3: NFS Compatibility and Large File Support

  System Type     Client  Client    Client -   Client -  Non-HP Client PV2/
  (mount          PV2     PV2/PV3   PV2/PV3    PV2/PV3   PV3+RN.CVT.LITERALLAYOUT.STOP+
  option)                 default   mount      mount
                                    option     option
                                    -o         -o
                                    vers=2     vers=3

  HP Server       PV2     PV2 [1]   PV2 [2]    PV2 [3]   PV2
  -PV2
  (HP-UX 10.20
  or earlier)

  HP Server -     PV2     PV3 [5]   PV2 [7]    PV3 [9]   PV3 [11] large file support
  PV2/PV3         [4]     [6]       [8]        [10]
  (HP-UX 10.30
  or later)               large                large
                          file                 file
  mount option            support              support
  -o largefiles

  HP Server -     PV2     PV3 [12]  PV2 [14]   PV3 [15]  PV3 [17]
  PV2/PV3                 [13]                 [16]
  (HP-UX 10.30
  or later)

  mount option
  -o
  nolargefiles

  Non-HP Server   PV2     PV3 [18]  PV2 [19]   PV3 [20]  PV3 large file support
  - PV2/PV3               large                large
                          file                 file
                          support              support

----------------------------------------------------------------------------

For more information see the section "NFS Compatibility and Large File
Support " in the book "Managing Systems and Workgroups" which is on the
Instant Information CD-ROM.

******************************************************************************
3.6.4 The Secure RPC subsystem

Secure RPC applications will need to be recompiled on 10.30. The entire
support software for managing secure keys has changed with the introduction
of ONC+. The changes affected all commands and daemons that support secure
RPC. Therefore it is not practical to support the old secure RPC APIs.

APIs and commands affected:

key_call()      getpublickey()   getsecretkey()
setsecretkey()  publickey()      authdes_seccreate
key_gendes()    key_setsecret()  chkey
nekey           keylogin         keylogout
keyserv

==============================================================================
3.6.4.1 portmap Obsolescence

For 10.30 release, the portmap process has been replaced by the rpcbind

==============================================================================
3.6.4.2 exportent() Obsolescence

The following APIs have been obsoleted due to security issues:

exportent()    getexportent()  setexportent()  addexportent(),
remexportent() endexportent()  getexportopt()

==============================================================================
3.6.4.3 End-User and ISV Porting Options

To assist the end-user and ISV in porting their applications to Release
10.30 the following options are available:

   * Don't recompile your application and make sure you are using either
     versioned libraries or libraries compiled on the same release that the
     application was compiled on. This requirement is identical to the rest
     of HP's binary compatibility statements.

   * If your RPC application does not depend on socket API calls, recompile
     your application using the new RPC APIs or still use the old RPC APIs
     that have been coded to invoke the new RPC API.

   * If your RPC application is dependent on sockets, you may recompile you
     application using the socket RPC library which both Sun and HP will
     provide. NOTE: This library does not provide binary Mix-n-Match. The
     header files used to generate this library are the 10.30 RPC header
     files which are not compatible with the 10.20 header files.

##############################################################################
Chapter 4: 64-Bit Capable Implementation

This chapter covers two kinds of information with regard to the 64-bit
implementation for 11.0.

1. Core operating system topics:

   * 64-bit address space layout

   * 64-bit programs and large files

   * 32-bit libraries compilable/linkable on 64-bit HP-UX

   * 32-bit libraries not compilable/linkable on 64-bit HP-UX

   * Libraries compilable/linkable only on 64-bit HP-UX

   * Where to find the "HP-UX 64-bit Porting and Transition Guide"

   * Interfaces with limitations in 64-bit

        o struct regex_t

   * Commands

        o adb debugger for 64-bit

        o getconf(1)

        o localedef(1M)

   * System calls

        o pstat(2)

        o sysconf(2)

   * Library interface changes to support 64-bit

        o libc

             + asctime(3C)

             + confstr(3C)

             + ctime(3C)

             + getdate(3C)

             + gmtime(3C)

             + localtime(3C)

             + mktime(3C)

             + strptime(3C)

             + sleep(3C)

        o libpam

        o libpsm

        o libsec

        o nlist64.o

2. Networking topics:

   * BSD sockets: IP addresses

   * Data Link Provider Interface (DLPI) to the services of the data link
     layer

   * inetsvcs libraries (libc.a, libc.2)

   * NetTL

   * STREAMS/UX

        o STREAMS function registration

        o STREAMS ioctl commands (M_IOCTL, M_IOCDATA), stream.h

        o STREAMS header file stream.h : toid_t

        o STREAMS header file tihdr.h

        o STREAMS header file xti.h

        o TLI/XTI (libnsl_s.sl, libnsl_s.a, libxti.sl, libxti.a - STREAMS)

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
4.1 64-bit Address Space Layout

For 11.0, the address space layout of HP-UX on PA2.0 has been changed to
provide

   * larger process address space

   * concurrent execution of 64-bit and 32-bit applications

   * shared object mixed mode access

******************************************************************************
4.1.1 Summary of Change

Previously, only 32 bits of process address space was available to the user.
The 32-bit address space layout limited applications to:

   * 1.00 GB process text

   * .90 GB process private data using SHARE_MAGIC, or

   * 1.90 GB process private data using EXEC_MAGIC

   * 1.75 GB shared object space

   * .25 GB user I/O

With 64-bits of address space now available, users can access:

   * 4.00 TB process text

   * 4.00 TB private data

   * 8.00 TB shared object space

User I/O is 1/16 of 1.00 TB and is included within the 8.00 TB of shared
object space.

To take advantage of the larger address space, applications must be
recompiled as 64-bit executables. Existing 32-bit executables will continue
to run as before and can be run concurrently with 64-bit executables. 32-bit
and 64-bit applications will also be given the ability to access the same
shared objects. Sharing the same object is referred to as "mixed mode
access."

==============================================================================
4.1.1.1 Impact

   * Accessing the larger 64-bit address space requires more than a simple
     recompile. Applications must be made "64-bit clean" to access the
     entire address range available.

     Guidelines to make or create an application that is 64-bit clean are
     provided in /usr/share/doc/64bit_driver_migration.ps, a white paper
     entitled "How to Write a 64-bit Clean I/O Driver for HP-UX: A 32-bit to
     64-bit I/O Driver Migration Guide."

   * If a 64-bit application intends to share the same object with a 32-bit
     application, a new flag indicating mixed mode access must be passed
     through the mmap() or shmget() interface. For mmap(), the new flag is
     MAP_ADDR32. For shmget(), the new flag is IPC_SHARE32. A 32-bit
     application is not required to specify MAP_ADDR32 or IPC_SHARE32 for
     mixed mode access. Instead it will continue to use the MAP_SHARED or
     IP_CREATE flags as before.

   * A 64-bit process can do a shmat() to a shared memory segment already
     created by a 32-bit process without specifying the IPC_SHARE32 flag.

   * A 64-bit process can do a shmget() to a shared memory segment already
     created by a 32-bit process without specifying the IPC_SHARE32 flag, as
     long as the 64-bit process does not specify the IPC_CREAT flag at the
     time of the shmget().

Given the restrictions for mixed mode access as described above, a failure
is returned if:

   * a 32-bit process attempts to access a shared memory segment created by
     a 64-bit process that did not specify the IPC_SHARE32 flag, in addition
     to the IPC_CREAT flag, at the time of creation.

   * a 64-bit process attempts to perform a mmap() without specifying
     MAP_ADDR32 on a shared object that already exists in 32-bit address
     space (that is, the shared object was originally created by a 32-bit
     process)

   * a 64-bit process attempts to perform a mmap() with MAP_SHARED|MAP_FIXED
     set, but requests a fixed address < 4GB. For this to succeed, the
     64-bit process must specify MAP_SHARED|MAP_FIXED|MAP_ADDR32.

   * a 64-bit process attempts to perform a mmap() with
     MAP_SHARED|MAP_FIXED|MAP_ADDR32 set, but requests a fixed address >=
     4GB.

   * a 32-bit executable attempts to perform a mmap() or shmget() on an
     existing shared object in 64-bit address space.

In providing the mixed mode access functionality, quadrant contents have
been changed for 64-bit executables.

32-bit executables continue to use virtual address as follows:

   * text in quad1 (address range 0x00000000 through 0x3fffffff)

   * data in quad2 (address range 0x40000000 through 0x7fffffff)

   * shared objects (including I/O) in quads 3 and 4 (address range
     0x80000000 through 0xefffffff) with the maximum size of any single
     shared object being 1GB.

64-bit executables use virtual address space as follows:

   * text in quad2 (address range 0x40000000 00000000 through 0x400003ff
     ffffffff)

   * private objects (that is, data and private MMFs) in quad3 (address
     range 0x80000000 00000000 through 0x8000003ff ffffffff)

   * shared objects (including I/O) in quads 1 and 4 (address range
     0x00000000 00000000 through 0x000003ff ffffffff, and 0xc0000000
     00000000 through 0xc00003ff ffffffff) with the maximum size of any
     single shared object being 4TB.

Due to these quadrant content changes, any dependencies on expected
addresses for text, data, or shared objects are broken once an application
is recompiled from a 32-bit executable to a 64-bit executable.

On PA1.x, kernel I/O addresses were identical to user I/O addresses. On
PA2.0 with a 64-bit kernel running, kernel I/O addresses are no longer
identical to the user's I/O addresses. Any dependencies on these addresses
being identical will be broken.

The EXEC_MAGIC executable type was provided to support >.9GB of process
private data on 32-bit executables. Since 64-bit executables can now access
up to 4TB of process private data, 64-bit executables linked with the -N
option indicating EXEC_MAGIC, will fail along the exec() path.

In the 32-bit EXEC_MAGIC implementation, the text of an EXEC_MAGIC
executable was writable. Since EXEC_MAGIC is not supported for 64-bit
executables, writable text in EXEC_MAGIC is not available for 64-bit
executables.

The following new tunables are provided to perform boundary checking on
64-bit executables:

   * maxtsiz_64bit

   * maxdsiz_64bit


   * maxssiz_64bit

The 64-bit executable format is ELF. The 32-bit executable format remains
SOM.

This functionality will only be provided on PA2.0 800 systems at this time.

==============================================================================
4.1.1.2 Backwards Compatibility Issues

EXEC_MAGIC is not a supported executable type for 64-bit applications.

Because addresses are in different locations for 64-bit applications, 32-bit
applications that use fixed addresses cannot simply be recompiled and
expected to work.

The 64-bit address space layout is available only on PA2.0 hardware with the
supported 64-bit system build environment.

No new size requirements are introduced; however, please note that existing
programs might increase in size if recompiled as 64-bit executables.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
4.2 64-bit Programs and Large Files

HP supplies a Large Files White Paper, available in /usr/share/doc as
lg_files.ps or lg_files.txt, describing how 32-bit programs can access large
files (larger than 2 GB).

A 64-bit program can always open a large file, and can always extend a small
file past 2 GB if the file system has been enabled for large files. The
mechanisms described in the White Paper are unnecessary for 64-bit programs.

For porting convenience, HP-UX allows use of the "new API" described in the
White Paper (open64, lseek64, and so on) within a 64-bit program. However,
this is done by simply defining open64 as open, for example. For a 64-bit
application, there is no difference between the new API (open64) and the
POSIX API (open). This support for the open64/lseek64/etc API in 64-bit
applications is provisional, and may be removed in a future release.

The one name in the 32-bit API that is NOT usable by 64-bit applications is
O_LARGEFILE. This name is not visible in a 64-bit compilation, and the
corresponding bit is not set if the file flags are examined with fcntl.
Source code using this flag is not directly portable to 64 bits; it will
need to be modified to remove the reference to O_LARGEFILE.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
4.3 32-bit Libraries Compilable/Linkable on 64-bit HP-UX

The core 32-bit libraries listed below are linkable or compilable on 64-bit
HP-UX. When compiling executables, you may not link objects (.a, .o, .sl)
from different data models (LP64 vs ILP32).

----------------------------------------------------------------------------
NOTE

64-bit libraries are found under subdirectory pa20_64.

----------------------------------------------------------------------------

/usr/conf/lib/libhp-ux.a

/usr/conf/lib/libnet.a

/usr/conf/lib/libnms.a

/usr/conf/lib/libtun.a

/usr/conf/lib/libuipc.a

/usr/lib/libCsup.a

/usr/lib/libCsup.sl

/usr/lib/libc.a

/usr/lib/libc.sl

/usr/lib/libcl.a

/usr/lib/libcl.sl

/usr/lib/libcurses.sl

/usr/lib/libdld.sl

/usr/lib/liblwp.a

/usr/lib/liblwp.sl

/usr/lib/libm.a

/usr/lib/libm.sl

/usr/lib/libnsl.a

/usr/lib/libnsl.sl

/usr/lib/libnss_compat.1

/usr/lib/libnss_files.1

/usr/lib/libnss_nis.1

/usr/lib/libnss_nisplus.1

/usr/lib/libntl.sl

/usr/lib/libp/libc.a

/usr/lib/libpsm.sl

/usr/lib/libpthread.a

/usr/lib/libpthread.sl

/usr/lib/libpthread_tr.a

/usr/lib/libpthread_tr.sl

/usr/lib/librpcsvc.a

/usr/lib/librpcsvc.sl

/usr/lib/librt.sl

/usr/lib/libsec.a

/usr/lib/libsec.sl

/usr/lib/libstd.a

/usr/lib/libstd.sl

/usr/lib/libstream.a

/usr/lib/libstream.sl

/usr/lib/libxcurses.1

/usr/lib/libxnet.sl

/usr/lib/libxti.a

/usr/lib/libxti.sl

/usr/lib/milli.a

/usr/lib/unix95.o

/usr/lib/pa20_64/libelf.a

/usr/lib/pa20_64/libelf.sl

/usr/lib/pa20_64/libcps.sl

/usr/lib/pa20_64/libgen.sl

/usr/lib/pa20_64/libgprof.sl

/usr/lib/pa20_64/libprof.sl

/opt/langtools/lib/pa20_64/libl.a

/opt/langtools/lib/pa20_64/liby.a

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
4.4 32-bit Libraries Not Compilable/Linkable on 64-bit HP-UX

The 32-bit libraries listed below are not linkable or compilable on 64-bit
HP-UX.

/usr/lib/aCC/dld.sl

/usr/lib/arp/libphylan.sl

/usr/lib/libBSD.a

/usr/lib/libC.a

/usr/lib/libC.ansi.a

/usr/lib/libC.ansi.sl

/usr/lib/libC.sl

/usr/lib/libHcurses.a

/usr/lib/libHcurses.sl

/usr/lib/libM.sl

/usr/lib/libPW.a

/usr/lib/libV3.a

/usr/lib/libV7.a

/usr/lib/libbsd.a

/usr/lib/libcrypt.a

/usr/lib/libcur_colr.a

/usr/lib/libcur_colr.sl

/usr/lib/libdbm.a

/usr/lib/libdbm.sl

/usr/lib/libempty.a

/usr/lib/libfmtutil.sl

/usr/lib/libhppa.a

/usr/lib/libisamstub.sl

/usr/lib/libl.sl

/usr/lib/libld.a

/usr/lib/libmalloc.a

/usr/lib/libndbm.a

/usr/lib/libndbm.sl

/usr/lib/libndir.a

/usr/lib/libnlsstubs.sl

/usr/lib/libnm.sl

/usr/lib/libnsfmt.sl

/usr/lib/libnsl_s.a

/usr/lib/libnsl_s.sl

/usr/lib/libpam.sl

/usr/lib/libpicc.a

/usr/lib/libportnls.a

/usr/lib/librpcsoc.sl

/usr/lib/libsnet.a

/usr/lib/libsnet.sl

/usr/lib/libstrfmt.sl

/usr/lib/libtermcap.a

/usr/lib/libtermlib.a

/usr/lib/liby.sl

/usr/lib/pa1.1/libcl.1

/usr/newconfig/usr/lib/dld.sl

/usr/old/libmalloc3x.a

/usr/old/usr/lib/libtermcap.a

/usr/old/usr/lib/libtermlib.a

/usr/lib/pa20_64/liblwpdld.a

/usr/lib/pa20_64/libtrapU.a

/usr/lib/pa20_64/libuU.a

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
4.5 Libraries Compilable/Linkable Only on 64-bit HP-UX

The following 64-bit libraries are available as standard on HP-UX 11.0. Note
that an executable cannot compile/link with a mixture of both 32-bit and
64-bit libraries. An executable can only consist of all 32-bit or all 64-bit
objects (.o, .a, .sl).

32-bit and 64-bit applications can communicate/interoperate via standard IPC
mechanisms. See the "HP-UX 64-bit Porting and Transition Guide" for details.

/usr/lib/pa20_64/dld.sl

/usr/lib/pa20_64/libc.2

/usr/lib/pa20_64/libc.a

/usr/lib/pa20_64/libc.sl

/opt/langtools/lib/pa20_64/libcomp.sl

/usr/lib/pa20_64/libdl.1

/usr/lib/pa20_64/libdl.sl

/usr/lib/pa20_64/libdld.1

/usr/lib/pa20_64/libdld.sl

/usr/lib/pa20_64/libelf.a

/usr/lib/pa20_64/liblwp.1

/usr/lib/pa20_64/liblwp.a

/usr/lib/pa20_64/liblwp.sl

/usr/lib/pa20_64/liblwpdld.a

/usr/lib/pa20_64/libm.2

/usr/lib/pa20_64/libm.a

/usr/lib/pa20_64/libm.sl

/usr/lib/pa20_64/libnss_files.1

/usr/lib/pa20_64/libntl.sl

/usr/lib/pa20_64/libpam.1

/usr/lib/pa20_64/libpam.sl

/usr/lib/pa20_64/libpsm.1

/usr/lib/pa20_64/libpsm.sl

/usr/lib/pa20_64/libpthread.1

/usr/lib/pa20_64/libpthread.a

/usr/lib/pa20_64/libpthread.sl

/usr/lib/pa20_64/librt.2

/usr/lib/pa20_64/librt.sl

/usr/lib/pa20_64/libsec.2

/usr/lib/pa20_64/libsec.a

/usr/lib/pa20_64/libsec.sl

/usr/lib/pa20_64/libtrapU.a

/usr/lib/pa20_64/libuU.a

/usr/lib/pa20_64/libxti.a

/usr/lib/pa20_64/libxti.sl

/usr/lib/pa20_64/milli.a

/usr/lib/pa20_64/unix95.o

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
4.6 Where to Find the HP-UX 64-bit Porting and Transition Guide

The "HP-UX 64-bit Porting and Transition Guide" ships with HP C and HP aC++
as an online PostScript file. It is also available on the HP-UX 11.0 CD-ROM
and via the World-Wide Web. You can find this guide in the following
locations:

   * HP C

     /opt/ansic/newconfig/RelNotes/64bitTrans.bk.ps

   * HP aC++

     /opt/aCC/newconfig/TechDocs/64bitTrans.bk.ps

   * World-Wide Web

     http://www.software.hp.com/products/IA64/index.html

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
4.7 Interfaces with Limitations in 64-bit

Standards specifications limit the following interfaces in their capability
to fully support 64-bit strings, return counts, and other programmatic
characteristics:

int brk(const void *endds);
char *fgets(char *s, int n, FILE *stream);
char_t *fgetws(wchar_t *ws, int n, FILE *stream);
int fprintf(FILE *stream, const char *format, /* [arg,] */ ...);
int fscanf(FILE *stream, const char *format, /* [pointer,] */ ...);
int getsubopt(char **optionp, char *tokens[], char **valuep);
int mblen(const char *s, size_t n);
int mbtowc(wchar_t *pwc, const char *s, size_t n);
int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp,int msgflg);
int printf(const char *format, /* [arg,] */ ...);
int readlink(const char *path, char *buf, size_t bufsiz);
void *sbrk(int incr);
int scanf(const char *format, /* [pointer,] */ ...);
int sprintf(char *s, const char *format, /* [arg,] */ ...);
int sscanf(const char *s, const char *format, /* [pointer,] */ ...);
int vfprintf(FILE *stream, const char *format, va_list ap);
int vprintf(const char *format, va_list ap);
int vsprintf(char *s, const char *format, va_list ap);
int wcswidth(const wchar_t *ws, size_t n);

******************************************************************************
4.7.1 struct regex_t

Prior to 11.0, no applications had valid data in the __sys_id field of this
structure and any use of this member was invalid. The __sys_id field was
made __filler to preserve the structure size and to better facilitate the
identification of code that used invalid data and facilitate
compiling/executing properly under the LP64 model.

Applications that access __sys_id need to modify the portion of code that
uses __sys_id.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
4.8 Commands

******************************************************************************
4.8.1 adb debugger for 64-bit

A version of the adb(1) debugger, called adb64, is available for 64-bit
debugging.

adb64 has been created to support debugging of 64-bit kernels and
applications. adb64 uses the same commands as 32-bit adb. adb64 reads only
64-bit ELF files, kernel crash dumps, and application core files. adb calls
adb64 to process 64-bit files. See the adb(1) manpage for specifications.

The q4 and dde debuggers can be used instead of adb and adb64.

******************************************************************************
4.8.2 getconf(1)

In release 11.0, getconf(1) was enhanced with a -v option to return
configuration variables corresponding to a particular compilation
environment supported by HP-UX. See the table below for possible
specifications and meanings.

----------------------------------------------------------------------------

  Specification       int    long  pointer   off_t

  XBS5_ILP32_OFF32    32     32    32        32

  XBS5_ILP32_OFFBIG   32     32    32        >=64

  XBS5_LP64_OFF64     32     64    64        64

  XBS5_LPBIG_OFFBIG   >=32   >=64  >=64      >=64

----------------------------------------------------------------------------

getconf(1) supports the new system variables added by confstr(3C) and
sysconf(2). See confstr(3C) and sysconf(2) for additional information.

******************************************************************************
4.8.3 localedef(1M)

As of HP-UX release 11.0, the localedef command generates 64-bit locales, by
default, on a 64-bit operating system. 64-bit locales can be enabled on a
32-bit operating system, using the -e option.

For use on 64-bit operating systems and to do cross-platform development on
32-bit operating systems, certain restrictions on file placement must be
followed. Guidelines for customizing 64-bit locales may be found in the
following white papers, located in /usr/share/doc:

----------------------------------------------------------------------------

  nls_locale.txt  Locale Methods Customization

  iconv.txt       Iconv Customization

----------------------------------------------------------------------------

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
4.9 System Calls

******************************************************************************
4.9.1 pstat(2)

pstat(2) provides a number of wrappers and corresponding structures to get
information from the kernel.

When the values from a 64-bit kernel cannot be returned in 32-bit fields of
these structures, a new error, EOVERFLOW, is returned. The 64-bit version of
the pstat(2) interfaces will not return this error on a 64-bit system.

Binary compatibility is maintained for 32-bit applications on a 64-bit
system, except in cases where the values cannot be returned in 32-bit
fields. The following is a list of the fields that do not fit in the 32-bit
field and will cause the 32-bit pstat(2) interfaces to return EOVERFLOW:

struct pst_status:
long pst_addr;      /* address of process (in memory) */
long pst_wchan;     /* state PS_SLEEP: value sleeping on */
long pst_maxrss;    /* proc resident set size */

struct pst_dynamic:
long psd_vm;        /* total virtual memory */
long psd_avm;       /* active virtual memory */

struct pst_vm_status:
long pst_vaddr;     /* virtual address */

struct pst_shminfo:
ulong_t psh_segsz;  /* size of shm segment (bytes) */

struct pst_fileinfo:
off_t psf_offset;   /* offset into a file */

struct pst_ipcinfo:
long psi_shmmax;      /* maximum shared memory segment size*/

Any 32-bit application that uses the above pstat(2) structures and its
corresponding wrapper will get EOVERFLOW, if the kernel cannot fit the
values in the 32-bit fields listed. The rest of the fields in the structure
will still be filled in correctly.

Source compatibility is maintained for 32-bit applications migrating to a
LP64 data model. The names of wrappers (for example, pstat_getproc) and
structures (such as struct pst_status) remain unchanged. Structure fields
declared as "long" change from 32-bits to 64-bits wide.

The following alternatives are available to application writers:

   * 32-bit applications that do not use any of the above pstat structures
     continue to work correctly on a 64-bit system, without modification.

   * 32-bit applications can make use of the 64-bit version of pstat(2)
     wrappers by using the compiler option -D_PSTAT64. When this compiler
     flag is used, the pstat(2) interfaces alone become 64-bit interfaces.

   * Here is a list of guidelines for migrating an application to using the
     64-bit pstat(2) interface on a 32-bit system:

        o An application using wrappers such as pstat_getproc() can continue
          to use the same call in their source, regardless of whether the
          application is being built wide or narrow. This is true for the
          names of the various structures and fields too.

        o A 32-bit application built using strict ANSI (-Aa) cannot use the
          64-bit pstat on a narrow platform. Extended ANSI (-Ae) must be
          used instead. 64-bit data type "long long" is unavailable in
          strict ANSI mode.

        o Variables that get assigned values in the fields should be changed
          from (int, long to int64_t).

        o The printf format for printing the fields needs to be changed from
          %x,%d,%ld,... to %llx,%lld,%lld,....

        o The makefile for the application must be changed to add -D_PSTAT64
          to the compilation line (CFLAGS).

          32-bit applications using the 64-bit pstat(2) interface will get
          absolute binary compatibility on both 32-bit and 64-bit systems.

   * The application owner may choose to provide two distinct binaries, one
     for the 32-bit system and one for the 64-bit system. The 64-bit
     application uses the 64-bit pstat(2) interfaces, by default, and will
     not get EOVERFLOW. The 32-bit version of the application can continue
     to be used on the 32-bit system.

The following are the kind of changes needed to make an application 64-bit
clean, from a pstat perspective:

   * Variables that get assigned the values in the fields should be long
     (should not be a problem if the code had strictly followed the
     interface specification).

   * The arguments to the wrappers should strictly follow the interface
     specification.

     pstat_getdynamic(&dy, sizeof(dy), 0, 0) >

     pstat_getdynamic(&dy, sizeof(dy), (size_t)0, 0)

   * The printf format for printing the fields need to be changed from
     %x,%d,... to %lx,%ld....

******************************************************************************
4.9.2 sysconf(2)

Enhancements were made to in the 11.0 release to:

   * supplement the information currently provided by uname(1),

   * indicate whether certain information pertaining to a specific
     programming model can be obtained using confstr(3C).

The same information will also be available through the getconf command,
which relies on sysconf() to obtain the requested information.

==============================================================================
4.9.2.1 _SC_KERNEL_BITS

Return whether the executing kernel is running in 32-bit or 64-bit mode.

----------------------------------------------------------------------------

  System Variable Queried   Value Returned

  _SC_KERNEL_BITS           32, if kernel is 32-bit;

                            64, if kernel is 64-bit

----------------------------------------------------------------------------

==============================================================================
4.9.2.2 _SC_HW_32_64_CAPABLE

Return whether the system is 64-bit capable; that is, can the hardware
support a 64-bit kernel.

----------------------------------------------------------------------------

  System Variable Queried   Value Returned

  _SC_HW_32_64_CAPABLE      A 2-bit encoding

----------------------------------------------------------------------------

Use the following macros in <sys/unistd.h> to interpret the return:

# define _SYSTEM_SUPPORTS_ILP32OS(__x) ((__x) & 0x1)

# define _SYSTEM_SUPPORTS_LP64OS(__x) ((__x) & 0x2)

==============================================================================
4.9.2.3 _SC_CPU_CHIP_TYPE

Return the HPPA or SPPA processor implementation.
----------------------------------------------------------------------------

  System Variable Queried   Value Returned

  _SC_CPU_CHIP_TYPE         Encoding which indicates type of CPU chip
                            employed in system. Bits 21-26 identify the
                            model, bits 27-31 the revision.

----------------------------------------------------------------------------

==============================================================================
4.9.2.4 _SC_XBS5...

Return the value of the following symbolic constants. Return -1 if they are
not defined. This is used to determine if the corresponding _CS_XBS5
parameters (such as _CS_XBS5_ILP32_OFF32_CFLAGS,
_CS_XBS5_LP64_OFF64_LDFLAGS, _CS_XBS5_LPBIG_OFFBIG_LIBS, and so forth) are
supported by confstr(3C).
----------------------------------------------------------------------------

  System Variable Queried   Value Returned (as defined in <sys/unistd.h>)

  _SC_XBS5_ILP32_OFF32      _SC_XBS5_ILP32_OFF32

  _SC_XBS5_ILP32_OFFBIG     _SC_XBS5_ILP32_OFFBIG

  _SC_XBS5_LP64_OFF64       _SC_XBS5_LP64_OFF64

  _SC_XBS5_LPBIG_OFFBIG     _SC_XBS5_LPBIG_OFFBIG

----------------------------------------------------------------------------

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
4.10 Library Interface Changes to Support 64-Bit

******************************************************************************
4.10.1 libc

==============================================================================
4.10.1.1 asctime(3C)

asctime() supports dates beyond the year 2038 up to the year 9999 in both
the 32-bit and 64-bit application development environments. In both
environments, asctime() supports the following range of dates:

   * a minimum date of January 1 00:00:00 1900 UTC

   * a maximum date of December 31 23:59:59 9999 UTC

If the value of tm_year in timeptr is less than 0 or greater than 9999,
asctime() returns NULL and sets errno to ERANGE.

There is no impact on backward compatibility. Existing 32-bit X applications
have to be ported to 64-bit to support dates beyond the year 2038 via the
libc interfaces.

Use of strftime(3C) is recommended as an alternative to asctime(3C).

==============================================================================
4.10.1.2 confstr(3C)

The following enhancements were made to confstr(3C) in the 11.0 release:

   * to supplement the information currently provided by uname(1), and

   * to return the appropriate compiler options, libraries, and lint options
     to build/check an application using a particular programming model.

The same information is also available through the getconf command, which
relies on constr() to obtain the requested information.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.10.1.2.1 _CS_KERNEL_BITS

Returns whether the executing kernel is running in 32-bit or 64-bit mode.
----------------------------------------------------------------------------

  System Variable          Value Returned
  Queried

  _CS_KERNEL_BITS          32, if kernel is 32-bit;

                           64, if kernel is 64-bit (and therefore,
                           supports the execution of 32-bit and 64-bit
                           applications)

----------------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.10.1.2.2 _CS_HW_CPU_SUPP_BITS

Returns which kernel is supported on a particular system, irrespective of
what the hardware is actually capable of supporting. Not all systems using
PA8xx CPUs are supported for 64-bit.

----------------------------------------------------------------------------

  System Variable Queried  Value Returned

  _CS_HW_CPU_SUPP_BITS     32 (Only 32-bit HP-UX is supported.)

                           32/64 (Both 32-bit and 64-bit HP-UX are
                           supported.)

                           64 (Only 64-bit HP-UX is supported.)

----------------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.10.1.2.3 _CS_MACHINE_MODEL

Returns the hardware model string.
----------------------------------------------------------------------------

  System Variable Queried   Value Returned

  _CS_MACHINE_MODEL         The HP hardware model name for the system.
                            Example: "9000/800/V2200"

----------------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.10.1.2.4 _CS_XBS5_ILP32_OFF32_CFLAGS

Returns the set of initial options to be given to the cc(1) and c89(1)
utilities to build an application using a programming model with 32-bit int,
long, pointer, and off_t types.
----------------------------------------------------------------------------

  System Variable Queried      Value Returned

  _CS_XBS5_ILP32_OFF32_CFLAGS  The required flags to compile in this
                               mode.

----------------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.10.1.2.5 _CS_XBS5_ILP32_OFF32_LDFLAGS

Returns the set of final options to be given to the cc(1) and c89(1)
utilities to build an application using a programming model with 32-bit int,
long, pointer, and off_t types.
----------------------------------------------------------------------------

  System Variable Queried       Value Returned

  _CS_XBS5_ILP32_OFF32_LDFLAGS  The required flags to link in this mode.

----------------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.10.1.2.6 _CS_XBS5_ILP32_OFF32_LIBS

Returns the set of libraries to be given to the cc(1) and c89(1) utilities
to build an application using a programming model with 32-bit, int, long,
pointer, and off_t types.
----------------------------------------------------------------------------

  System Variable Queried    Value Returned

  _CS_XBS5_ILP32_OFF32_LIBS  The required libraries to build an
                             application in this mode.

----------------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.10.1.2.7 _CS_XBS5_ILP32_OFF32_LINTFLAGS

Returns the set of options to be given to the lint(1) utility to check
application source using a programming model with 32-bit int, long, pointer,
and off_t types.
----------------------------------------------------------------------------

  System Variable Queried         Value Returned

  _CS_XBS5_ILP32_OFF32_LINTFLAGS  The required flags to lint in this
                                  mode.

----------------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.10.1.2.8 _CS_XBS5_ILP32_OFFBIG_CFLAGS

Returns the set of initial options to be given to the cc(1) and c89(1)
utilities to build an application using a programming model with 32-bit int,
long, and pointer types, and an off_t type using 64 bits.
----------------------------------------------------------------------------

  System Variable Queried       Value Returned

  _CS_XBS5_ILP32_OFFBIG_CFLAGS  The required flags to compile in this
                                mode.

----------------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.10.1.2.9 _CS_XBS5_ILP32_OFFBIG_LDFLAGS

Returns the set of final options to be given to the cc(1) and c89(1)
utilities to build an application using a programming model with 32-bit int,
long, and pointer types, and an off_t type using 64 bits.

----------------------------------------------------------------------------

  System Variable Queried        Value Returned

  _CS_XBS5_ILP32_OFFBIG_LDFLAGS  The required flags to link in this mode.

----------------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.10.1.2.10 _CS_XBS5_ILP32_OFFBIG_LIBS

Returns the set of libraries to be given to the cc(1) and c89(1) utilities
to build an application using a programming model with 32-bit int, long, and
pointer types, and an off_t type using 64 bits.

----------------------------------------------------------------------------

  System Variable Queried     Value Returned

  _CS_XBS5_ILP32_OFFBIG_LIBS  The required libraries to build an
                              application in this mode.

----------------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.10.1.2.11 _CS_XBS5_ILP32_OFFBIG_LINTFLAGS

Returns the set of options to be given to the lint(1) utility to check
application source using a programming model with 32-bit int, long, and
pointer types, and an off_t type using 64 bits.

----------------------------------------------------------------------------

  System Variable Queried          Value Returned

  _CS_XBS5_ILP32_OFFBIG_LINTFLAGS  The required flags to lint in this
                                   mode.

----------------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.10.1.2.12 _CS_XBS5_LP64_OFF64_CFLAGS

Returns the set of initial options to be given to the cc(1) and c89(1)
utilities to build an application using a programming model with 32-bit int,
and 64-bit long, pointer, and off_t types.

----------------------------------------------------------------------------

  System Variable Queried     Value Returned

  _CS_XBS5_LP64_OFF64_CFLAGS  The required flags to compile in this mode.

----------------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.10.1.2.13 _CS_XBS5_LP64_OFF64_LDFLAGS

Returns the set of final options to be given to the cc(1) and c89(1)
utilities to build an application using a programming model with 32-bit int,
and 64-bit long, pointer, and off_t types.

----------------------------------------------------------------------------

  System Variable Queried      Value Returned

  _CS_XBS5_LP64_OFF64_LDFLAGS  The required flags to link in this mode.

----------------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.10.1.2.14 _CS_XBS5_LP64_OFF64_LIBS

Returns the set of libraries to be given to the cc(1) and c89(1) utilities
to build an application using a programming model with 32-bit int, and
64-bit long, pointer, and off_t types.

----------------------------------------------------------------------------

  System Variable Queried   Value Returned

  _CS_XBS5_LP64_OFF64_LIBS  The required libraries to build an
                            application in this mode.

----------------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.10.1.2.15 _CS_XBS5_LP64_OFF64_LINTFLAGS

Returns the set of options to be given to the lint(1) utility to check
application source using a programming model with 32-bit int, and 64-bit
long, pointer, and off_t types.

----------------------------------------------------------------------------

  System Variable Queried        Value Returned

  _CS_XBS5_LP64_OFF64_LINTFLAGS  The required flags to lint in this mode.

----------------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.10.1.2.16 _CS_XBS5_LPBIG_OFFBIG_CFLAGS

Returns the set of initial options to be given to the cc(1) and c89(1)
utilities to build an application using a programming model with an int type
using 32 bits and long, pointer, and off_t types using 64 bits.

----------------------------------------------------------------------------

  System Variable Queried       Value Returned

  _CS_XBS5_LPBIG_OFFBIG_CFLAGS  The required flags to compile in this
                                mode.

----------------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.10.1.2.17 _CS_XBS5_LPBIG_OFFBIG_LDFLAGS

Returns the set of final options to be given to the cc(1) and c89(1)
utilities to build an application using a programming model with an int type
using 32 bits and long, pointer, and off_t types using 64 bits.

----------------------------------------------------------------------------

  System Variable Queried        Value Returned

  _CS_XBS5_LPBIG_OFFBIG_LDFLAGS  The required flags to link in this mode.

----------------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.10.1.2.18 _CS_XBS5_LPBIG_OFFBIG_LIBS

Returns the set of libraries to be given to the cc(1) and c89(1) utilities
to build an application using a programming model with an int type using 32
bits and long, pointer, and off_t types using 64 bits.

----------------------------------------------------------------------------

  System Variable Queried     Value Returned

  _CS_XBS5_LPBIG_OFFBIG_LIBS  The required libraries to build an
                              application in this mode.

----------------------------------------------------------------------------

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4.10.1.2.19 _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS

Returns the set of options to be given to the lint(1) utility to check
application source using a programming model with an int type using 32 bits
and long, pointer, and off_t types using 64 bits.

----------------------------------------------------------------------------

  System Variable Queried          Value Returned

  _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS  The required flags to lint in this
                                   mode.

----------------------------------------------------------------------------

==============================================================================
4.10.1.3 ctime(3C)

ctime() supports dates beyond the year 2038 up to 9999 in 64-bit application
development environment. The maximum year supported by ctime() in 32-bit
11.0 remains as 2038.

The minimum date supported by ctime() in both 32-bit and 64-bit 11.0 is
Friday, December 13 20:45:52 UTC 1901.

The maximum date supported by ctime() in both 32-bit and 64-bit 11.0 is
Tuesday, January 19 03:14:07 UTC 2038 and Friday, December 31 23:59:59 9999
UTC, respectively.

In 64-bit 11.0, if the value of timer is less than the number of seconds
that corresponds to the minimum date supported (that is, INT_MIN, as defined
in limits.h) or exceeds the number of seconds that corresponds to the
maximum date supported, ctime() returns NULL and sets errno to ERANGE.

ctime() has no impact on backward compatibility. Existing 32-bit
applications have to be ported to 64-bit to support dates beyond the year
2038 via the libc interfaces.

Use of strftime(3C) is recommended as an alternative to ctime(3C).

==============================================================================
4.10.1.4 getdate(3C)

getdate() supports dates with a 4-digit year beyond 2038 up to 9999 in the
64-bit application development environment. The maximum year to be supported
in 32-bit 11.0 remains as 2038.

The minimum date supported by getdate() in both 32-bit and 64-bit 11.0 is
Friday, December 13 20:45:52 UTC 1901.

The maximum date supported by getdate() in 32-bit and 64-bit 11.0 is
Tuesday, January 19 03:14:07 UTC 2038 and Friday, December 31 23:59:59 9999
UTC, respectively.

A 4-digit year must be used with getdate() for dates beyond the 21st
century.

If the time specified is not within the supported range, getdate() returns
NULL and sets getdate_err to 8.

getdate() has no impact on backward compatibility. Existing 32-bit
applications have to be ported to 64-bit to support dates beyond the year
2038 via the libc interfaces.

==============================================================================
4.10.1.5 gmtime(3C)

The minimum date supported by gmtime() in both 32-bit and 64-bit 11.0 is
Friday, December 13 20:45:52 UTC 1901. The maximum date supported by 32-bit
and 64-bit 11.0 is Tuesday, January 19 03:14:07 UTC 2038 and Friday,
December 31 23:59:59 9999 UTC, respectively.

In 64-bit 11.0, if the value of timer less than the number of seconds that
corresponds to the minimum date supported (that is, INT_MIN, as defined in
limits.h) or exceeds the number of seconds that corresponds to the maximum
date supported, gmtime() returns NULL and sets errno to ERANGE.

gmtime(3C) has no impact on backward compatibility. Existing 32-bit
applications have to be ported to 64-bit to support dates beyond the year
2038 via the libc interfaces.

==============================================================================
4.10.1.6 localtime(3C)

The minimum date supported by localtime() in both 32-bit and 64-bit 11.0 is
Friday, December 13 20:45:52 UTC 1901.

The maximum date supported by 32-bit and 64-bit 11.0 is Tuesday, January 19
03:14:07 UTC 2038 and Friday, December 31 23:59:59 9999 UTC, respectively.

In 64-bit 11.0, if the value of timer less than the number of seconds that
corresponds to the minimum date supported (that is, INT_MIN, as defined in
limits.h) or exceeds the number of seconds that corresponds to the maximum
date supported, localtime() returns NULL and sets errno to ERANGE.

localtime(3C) has no impact on backward compatibility. Existing 32-bit
applications have to be ported to 64-bit to support dates beyond the year
2038 via the libc interfaces.

==============================================================================
4.10.1.7 mktime(3C)

The minimum and maximum values of time_t supported by mktime() are LONG_MIN
and LONG_MAX, respectively.

In 32-bit 11.0, these values are unchanged, whereas in 64-bit 11.0, these
values are much larger. (see limits.h for the definition of LONG_MIN and
LONG_MAX.)

If the value to be represented is not within the supported range, mktime()
returns -1 and sets errno to ERANGE.

mktime(3C) has no impact on backward compatibility. Existing 32-bit
applications have to be ported to 64-bit to support dates beyond the year
2038 via the libc interfaces.

==============================================================================
4.10.1.8 strptime(3C)

strptime() supports a minimum date of Friday, December 13 20:45:52 UTC 1901
in both 32-bit and 64-bit 11.0.

The maximum date strptime() supports in 32-bit and 64-bit 11.0 is Tuesday,
January 19 03:14:07 UTC 2038 and Friday, December 31 23:59:59 9999 UTC,
respectively.

strptime(3C) has no impact on backward compatibility. Existing 32-bit
applications have to be ported to 64-bit to support dates beyond the year
2038 via the libc interfaces.

==============================================================================
4.10.1.9 sleep(3C)

In a multi-threaded application, a thread calling sleep() returns from
sleep() when a SIGALRM is delivered to the thread. This change is made to
fix an existing defect in sleep() which causes a multi-threaded application
to terminate if the application does not have a handler for SIGALRM.

There is no impact on non-threaded applications. Multi-threaded applications
will now experience the correct behavior.

Threaded applications are encouraged to use nanosleep() as an alternative to
sleep(3C).

******************************************************************************
4.10.2 libpam

HP-UX 11.0 provides a 64-bit version of libpam.1, called
/usr/lib/pa20_64/libpam.1.

The new library does not impact the libpam interfaces. The 64-bit version of
libpam.1 is larger and causes some performance loss, as compared to the
32-bit version.

******************************************************************************
4.10.3 libpsm

HP-UX 11.0 provides a 64-bit version of libpsm.1, called
/usr/lib/pa20_64/libpsm.1.

The new library does not impact the libpsm interfaces nor affect backward
compatibility. The 64-bit version of libpsm.1 is larger and causes some
performance loss, as compared to the 32-bit version.

******************************************************************************
4.10.4 libsec

HP-UX 11.0 provides 64-bit versions of libsec.a and libsec.2, named
/usr/lib/pa20_64/libsec.a and /usr/lib/pa20_64/libsec.2, respectively.

The new libraries do not impact the libsec interfaces. Trusted Mode Security
applications compiled before 10.00 are not affected by the new interfaces.

Beginning with HP-UX 10.20, user IDs have been expanded in size from 16 bits
to 32 bits to allow support for more than the historical limit of 60000
unique user IDs. This expansion has affected binary compatibility of
programs that use the APIs listed in the getprpwent(3) manual page.

Applications and/or libraries that use the calls described in this manual
page and were compiled on 10.10 or earlier must be recompiled with the 10.20
or later prot.h file and relinked with the current libsec library to run
with 10.20 HP-UX or later.

The 64-bit versions of libsec.a and libsec.2 are larger than the
corresponding 32-bit versions and display some performance loss, as compared
to the corresponding 32-bit versions.

******************************************************************************
4.10.5 nlist64.o

nlist64.o is a profiled library (residing in libc for both PA32 and PA64)
that processes SOM and elf64 files. The nlist64 structure resides in
nlist.h.

This thread-safe interface works much like nlist(); however, it can process
64-bit file types. Users pass in the new nlist64 structure, with the n_name
field filled in with symbol names. A NULL string in this field terminates
the list. nlist64() fills in the other fields with the corresponding symbol
information from the input file. If a symbol is not found, nlist64 fills in
the fields with zeroes. The n_value field is zero-padded for SOM files.

nlist64 returns -1 if an error occurred; otherwise, it returns 0.

The nlist() libc routine is still available for 32-bit operation.

The syntax to use is:

nlist64(const char* file_name, struct nlist64* nl);

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
4.11 BSD Sockets: IP Addresses

IP addresses and masks are always 32 bits, that is, an unsigned int when
applications are compiled in a 64-bit compilation model. Consequently,
developers should examine how IP addresses are used in applications that are
converted from a 32-bit to a 64-bit compilation model.

Developers can use the new typedef name in_addr_t to define variables that
contain IP addresses and masks.

The following changes apply only to compilations using a 64-bit model.

   * In struct in_addr, the underlying type of s_addr is unsigned int, not
     unsigned long.

   * The typedef name in_addr_t is effectively unsigned int, not unsigned
     long.

   * The IN_CLASS macros return unsigned int constants, not unsigned long.

   * IP addresses should be stored in variables of type in_addr_t or
     unsigned int, not unsigned long.

In all cases, the underlying type remains unchanged for a 32-bit compilation
model, that is, unsigned long, which is the same size as unsigned int.

Although the size of these elements remains largely unchanged, the type
change from unsigned long to unsigned int may affect semantics.

   * For 32-bit applications, there is no source- or binary-compatibility
     problem because IP addresses and masks remain type unsigned long in
     32-bit mode.

   * For 64-bit applications, there is a potential impact on source
     compatibility when changing from unsigned long to unsigned int. Some
     applications that compile and execute without error in 32-bit mode
     might encounter compile-time or run-time warnings or errors, depending
     on coding practices.

Generally, this change is transparent to applications because HP library and
syscall functions only use the lower 32 bits of an IP address. (This assumes
that applications have the correct #include statements for HP library and
syscall interfaces.) However, some new lint warnings might result due to
"mismatched" types, which the compiler normally converts correctly.

Also, the change can affect applications that pass IP addresses to their own
functions, particularly when ANSI-C new-style function prototypes are not
used.

******************************************************************************
4.11.1 Examples

1. Declaring an IP address variable type unsigned long:

unsigned long ipaddr = 0xc0010203; /* 192.1.2.3 */

Even though 0xc0010203 will not be sign-extended (i.e. the value of ipaddr
will be 0x0...0c0010203, as desired), this can cause problems, depending on
how "ipaddr" is used.

In a 64-bit compile, sizeof(ipaddr) would be 8, but the size of an IP
address remains 4 bytes. This might cause unexpected consequences for the
protocols that pass the length of an IP address followed by the address
itself.

Use this instead:

in_addr_t ipaddr = 0xc0010203;

2. Passing the value of an IP address variable:

struct in_addr ipaddr;
myfunc(ipaddr.s_addr); /* call */
....
myfunc(addr) unsigned long addr; {...} /* definition */

In a 64-bit compile, the compiler will pass the value of the argument as
type unsigned int, in accordance with ANSI-C calling conventions. In rare
instances, this can result in leaving the upper 32 bits of the type unsigned
long parameter undefined (instead of zero) within the function "myfunc".

This might result in programming errors within "myfunc", depending on how
the function uses "addr". Comparisons of two IP addresses might fail
unexpectedly.

Use this instead:

myfunc(addr) in_addr_t addr; {...}

3. Passing the address of an IP address variable:

struct in_addr ipaddr;
myfunc(&ipaddr.s_addr);                 /* call */
....
myfunc(addr) unsigned long *addr; {...} /* definition */

In a 64-bit compile, there are two potential problems:

   * The address passed into the function "myfunc" points to only a 32-bit
     variable. Thus, the function will load or store into unrelated bits
     allocated after the variable "ipaddr".

   * The address of the int-aligned argument might not be long-aligned. This
     can result in a SIGSEGV address trap when "addr" is loaded or storedto
     in the function "myfunc".

Use this instead:

myfunc(addr) in_addr_t *addr; {...}

4. Using sizeof(unsigned long) for the size of an IP address:

int addrlen = sizeof(unsigned long);

In 64-bit compiles, sizeof(unsigned long) is 8, but the size of an IP
address remains 4 bytes. This could cause unexpected consequences for the
protocols that pass the length of an IP address followed by the address
itself.

Use this instead:

int addrlen = sizeof(in_addr_t);

******************************************************************************
4.11.2 Alternatives

   * Use the typedef name in_addr_t instead of type unsigned int or unsigned
     long for IP addresses and masks. This avoids all source compatibility
     problems.

     This typedef name was made generally available in HP-UX 10.30.
     Previously, it was limited to X/Open and Posix compilation models.

   * Use struct in_addr and member s_addr to store and use IP addresses and
     masks. This avoids all source compatibility problems.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
4.12 Data Link Provider Interface (DLPI) to the Services of the Data Link
Layer

On a 64-bit system, data types long and pointer are 64 bits in size, unlike
on 32-bit systems, where they are 32 bits in size.

The DLPI request/response primitives are exchanged as stream messages
between the data link service user (user application or upper protocol
layers) and the service provider( the DLPI pseudo-driver). The data
structure types that define the primitives are coded as long, where the
intent is a 32-bit integer. All such instances have been changed to
[u_]int32_t.

Files changed:

/usr/include/sys/dlpi.h

/usr/include/sys/dlpi_ext.h

Sample struct types:

dl_attach_req_t
dl_ok_ack_t
dl_bind_req_t
dl_bind_ack_t

The source change has no impact on the data link service provided by 32-/64-
bit kernels to 32-/64-bit applications, nor on 32-bit compiled applications.

If you are cross-compiling 64-bit targets on a 32-bit machine, make sure you
are using the correct include files:

/usr/include/sys/dlpi.h

/usr/include/sys/dlpi_ext.h

If you are 64-bit compiling these applications on the target machine, you
need to be aware of this change, so you can avoid any truncation warnings
from the compiler for using long and int interchangeably.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
4.13 inetsvcs Libraries (libc.a, libc.2)

The 64-bit applications support is provided for APIs. The following is a
list of all external interfaces available in 64-bit:

dn_comp             endprotoent           endservent
dn_expand           gethostbyaddr         gethostbyname
endhostent          endnetent             gethostent
getnetbyaddr        getnetbyname          getnetent
getprotobyname      getprotobynumber      getprotoent
getservbyname       getservbyport         getservent
herror              inet_addr             inet_lnaof
inet_makeaddr       inet_network          inet_ntoa
res_send.c          rcmd                  res_init
res_mkquery         res_query             res_search
res_send            rexec                 rresvport
ruserok             sethostent            setnetent
setprotoent         setservent

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
4.14 NetTL

At 11.0, the NetTL kernel space is 64-bit, but the user space remains
32-bit. This has several programmatic implications:

   * NetTL will continue supporting 32-bit user space subsystems.

   * 32-bit and 64-bit versions of libntl.sl are supported, the default
     being the 32-bit version.

     All 64-bit subsystems should use the 64-bit version of libntl.sl.

     All 32-bit subsystems should use the 32-bit version of libntl.sl.

     -----------------------------------------------------------------------
     NOTE

     32-bit subsystems cannot link with a 64-bit version of libntl.sl and
     64-bit subsystems cannot link with a 32-bit version of libntl.sl.

     -----------------------------------------------------------------------

   * The formatter library (libfmtutil.sl) remains 32-bit. 64-bit formatter
     libraries are not supported in the 11.0 release.

   * If 64-bit kernel subsystems need to trace/log 64-bit data types, they
     must provide appropriate data structures in user space. For example, a
     long in the kernel needs to be given 2 ints (that is, a long long) in
     user space, or ensure that the data being dumped by the subsystem is
     tracable by 32-bit formatters.

   * 64-bit subsystems must use default 32-bit NetTL formatters to perform
     tracing/logging via NetTL.

   * Even though the NetTL kernel component is 64-bit, no kernel subsystem
     tracing/logging APIs have been changed.

64-bit NetTL is supported only on PA2.0 HP-UX systems. 32-bit NetTL
continues to be supported on PA1.1 and PA2.0 HP-UX systems.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
4.15 STREAMS/UX

******************************************************************************
4.15.1 STREAMS Function Registration

A new STREAMS kernel service str_func_install() has been created, which
allows STREAMS kernel modules/drivers to register functions invoked when
data is copied across the user space kernel boundary (for example, whenever
a getmsg() or putmsg() system call occurs). stream.h has been modified to
incorporate the extra structures required for this new functionality.

The registered functions are typically used to convert data between the
32-bit and 64-bit models, when mixed-mode execution is being used. For
writers of STREAMS modules/drivers that will not execute in a mixed-mode
environment (such as a 32-bit user space application on a 64-bit kernel),
this new functionality has no impact. Likewise, there is no impact to user
space programs that include stream.h.

See "STREAMS/UX for the HP 9000 Reference Manual" (HP part number
J2237-90005) for overall information on STREAMS.

******************************************************************************
4.15.2 STREAMS ioctl Commands (M_IOCTL, M_IOCDATA), stream.h

New fields have been added to the iocblk and copyresp structures to enable
STREAMS modules/drivers to determine what type of user space model (that is,
32-bit or 64-bit) is the originator of the data contained within the STREAMS
message.

In stream.h, two structures have had fields added to indicate user space
model (32- or 64-bit):

   * struct iocblk has had the field ioc_flag added

   * struct copyresp has had the field cp_flag added.

These fields are set by the stream head to indicate the user space model
(32-/64-bit) of the user space process that is the originator of the STREAMS
message.

There is no impact to user space programs that include stream.h. For writers
of STREAMS modules/drivers not required to execute in a mixed-mode
environment (such as a 32-bit user space application on a 64-bit kernel),
this additional functionality has no impact. Otherwise, the new flags can be
used to determine if conversion of the message data by the module/driver is
necessary.

******************************************************************************
4.15.3 STREAMS Header File stream.h : toid_t

The type toid_t in the STREAMS header file stream.h has been changed from
int to long to match up with the pointer value returned by the system
timeout() call.

Any programs that use the type toid_t must ensure that they cater correctly
for the change in size if they are compiled 64-bit. Programs compiled in
32-bit will not be affected.

******************************************************************************
4.15.4 STREAMS Header File tihdr.h

The STREAMS header file tihdr.h now has structures that use fixed size
types, which are invariant regardless of the compilation model.

This change of functionality has no impact to programs that include tihdr.h,
unless they are compiled in 64-bit and make assumptions that the tihdr.h
structures can contain 64-bit values. There is no impact to programs
compiled in 32-bit mode.

******************************************************************************
4.15.5 STREAMS Header File xti.h

The STREAMS header file xti.h now has structures that use the opaque types
t_scalar_t and t_uscalar_t to make the structure size invariant between 32-
and 64-bit models.

There is no impact to programs that include xti.h, unless they are compiled
in 64-bit and make assumptions that the xti.h structures can be assigned
64-bit values. There is no impact to programs compiled in 32-bit.

******************************************************************************
4.15.6 TLI/XTI (libnsl_s.sl, libnsl_s.a, libxti.sl, libxti.a - STREAMS)

The TLI interface (that is, libnsl_s.sl, libnsl_s.a) is not supported in the
64-bit environment. Only the XTI transport level interface (that is,
libxti.sl, libxti.a) is supported.

The XTI interface is generally forward-compatible with TLI. Minimal changes
are required: The application must replace a required header file and link
with a different library. A correctly written TLI application functions
without problems on XTI.

Only applications that use TLI and are being re-compiled in 64-bit mode are
affected.

The following changes must be made to the application source for a 64-bit
environment:

----------------------------------------------------------------------------

  Source for 32-bit Environment       Replace with ...

  #include <tiuser.h>                 #include <xti.h>

  -lnsl_s (typically in make files)   -lxti

----------------------------------------------------------------------------

Other changes may be required, depending on how the application was designed
and implemented. These are the same changes that are required in 32-bit mode
when migrating from TLI to XTI.

If an application can be maintained as a 32-bit application, these changes
are not necessary.

##############################################################################
Chapter 5: Major Changes for HP-UX 10.30

This chapter describes the following HP-UX 10.30 changes:

   * Archive Internationalized Applications

   * Asian System Environment

   * Auditing

   * HP Common Desktop Runtime Environment (CDE 1.0)

   * Command Header File Changes

   * DCE

   * DNS

   * elm 2.4

   * FTP, RCP, and RDIST

   * GeoCustoms

   * HP Distributed Print Service (HPDPS)

   * iFOR/LS

   * Ignite-UX

   * Integrated Login

   * I/O Forwarding

   * JFS as the Default File System

   * Kernel Threads (1x1)

   * Login Requirement

   * LVM

   * NIO Fiber Link

   * PAM_AUTHTOK

   * Pluggable Authentication Modules (PAM)

   * POSIX Real-Time Semaphores

   * Software Distributor (SD-UX)

   * Support for Dates Beyond the Year 2000

   * System Compatibility

   * System Configuration

   * Technical Print Service

   * Trusted Table Synchronization Daemon (ttsyncd)

   * Upgrade Tool

Also see the following chapters for additional 10.30 changes:

   * Chapter 6 "Other Operating System and Subsytem Changes"

        o Curses for 10.30

        o Distributed Computing Environment (DCE)

        o Distributed Debugging Environment (DDE)

        o Diagnostics for 10.30

        o Fortran 77 and Fortran 90

        o fpclassify

        o HP Performance Analysis Toolkit

        o Kernel Header Files

        o Kernel Instrumentation (KI) Traces

        o Linker for 10.30

        o Math Library

        o Multimedia for 10.30

        o Programming Languages

        o SAM (System Administration Manager) for 10.30

        o SharedPrint/UX

        o SwitchOver/UX

        o VUE (HP VUE 3.0)

        o X Windows

   * Chapter 7, "Networking"

        o Data Link Provider Interface (DLPI)

        o inetd

        o Internet Services (ARPA Services) Secure Internet Services,

        o sendmail, mrouted, gated, and telnet

        o LAN Driver Products

        o Lock Manager Formatting

        o mount Command

        o Name Service Switch

        o NETTRACELOG

             + NetTL

             + netfmt

        o Networking _r Routines

        o NFS Automounter

        o NFS Protocol Version 3

        o NFS Service APIs

        o NIS+

        o rpcbind

        o rpcgen

        o rpcinfo

        o rpc.lockd

        o rpc.mountd

        o Streams

        o Streams TCP/IP

        o TCP/IP

        o Transport-Independent RPC (TIRPC)

   * Chapter 8, "Commands and Libraries"

        o Changed Commands in Section 1

        o Changed Commands in Section 1M

        o Application Programming Interfaces (APIs)

        o Library Routines (libc)

        o Changes to Other Commands and Files

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.1 Archive Internationalized Applications

----------------------------------------------------------------------------
WARNING

It is not recommended to build internationalized applications using an
archive libc. But if you must, there are build changes for all archive
programs that use NLS.

----------------------------------------------------------------------------

For any application that calls setlocale(3C) or iconv(3C) and is compiled,
the archive will not be a complete archive and will now contain
position-independent code and data, which are loaded at runtime. Two calls
in libdld.sl are used to load the position-independent code and data must be
loaded as shared. However, the rest of the libraries can be archived in the
executable.

The compile and load options for applications built with -Wl,-a,<archive>
are as follows. Be aware that the -Wl,-a,<archive> link option is a
positionally-dependent option and should be at the beginning of the cc line
to compile the program.

******************************************************************************
5.1.1 Example of sh using CCOPTS and LDOPTS

9.x compile:

export CCOPTS="${CCOPTS:-} your_options"
export LDOPTS="${LDOPTS:-} your_options"
cc -Wl,-a,archive -o executable source_file

10.x compile:

export CCOPTS="${CCOPTS:-} | your_options -Wl,-E -l:libdld.sl"
export LDOPTS="${LDOPTS:-} your_options -E -l:libdld.sl"
cc -Wl,-a,archive -o executable source_file

******************************************************************************
5.1.2 Example Using cc Line Only

9.x compile:

cc -Wl,-a,archive -o executable source_file

10.x compile:

cc -Wl,-a,archive -Wl,-E -l:libdld.sl -o executable source_file

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.2 Asian System Environment (ASE)

ASE is the system for these four Asian countries:

JSE

     Japanese System Environment

KSE

     Korean System Environment

SSE

     Simplified-Chinese System Environment

TSE

     Traditional-Chinese System Environment

******************************************************************************
5.2.1 Features

==============================================================================
5.2.1.1 ASE Common

   * Starbase fonts are included in both Server and Workstation systems.
     They were once deleted from Server systems at A.02.00, but are now
     again included in this release.

==============================================================================
5.2.1.2 JSE

   * Japanese TrueType outline font can be used when you buy and install the
     optional TrueType font sold by the Japanese font vendor Ricoh. The
     supported TrueType product of Ricoh is described in the JSE Release
     Notes or JSE User's Guide (available online or hardcopy).

   * FA/FM fonts are included in both Server and Workstation systems. They
     were once deleted from Server systems at A.02.00, but are now again
     included in this release. Note that FA/FM fonts are planned to be
     removed in the next release.

   * The following printers are added to LIPS printer support:

     -----------------------------------------------------------------------

       Printer        lp model   DPS model

       Canon LBP-830  LIPS4      LBP-830

       Canon LBP-450  LIPS4      LBP-450

     -----------------------------------------------------------------------

   * The following printer is added to PS printer support only for HP
     Distributed Print Service (HPDPS). They support notification of failure
     by bi-directional communication.

     -----------------------------------------------------------------------

       Printer           lp model   DPS model

       Fuji Xerox DP300  N/A        DP300

     -----------------------------------------------------------------------
   * JSE supports printing via X Print Server to LIPS, PostScript, and PCL
     printers.

==============================================================================
5.2.1.3 KSE

The XDevice User's Guide is combined with the Korean System Environment
User's Guide.

==============================================================================
5.2.1.4 SSE

sconv, one tool of Simplified Chinese Toolkit (STK), provides two new code
conversions: GBK to Big5 and Big5 to GBK.

******************************************************************************
5.2.2 Summary of Changes

==============================================================================
5.2.2.1 ASE Common

   * The path names of ASE online release notes and JSE Printer README file
     are changed as follows:

     -----------------------------------------------------------------------

       Old                                     New

       /usr/newconfig/RelNotes/ASX-JPN         /usr/share/doc/ASX-JPN

       /usr/newconfig/RelNotes/ASX-JPN-E       /usr/share/doc/ASX-JPN-E

       /usr/newconfig/RelNotes/ASX-JPN-S       /usr/share/doc/ASX-JPN-S

       /usr/newconfig/RelNotes/ASX-KOR         /usr/share/doc/ASX-KOR

       /usr/newconfig/RelNotes/ASX-SCH         /usr/share/doc/ASX-SCH

       /usr/newconfig/RelNotes/ASX-TCH         /usr/share/doc/ASX-TCH

       /usr/newconfig/RelNotes/PRINTER-JPN-E   /usr/share/doc/PRINTER-JPN-E

       /usr/newconfig/RelNotes/PRINTER-JPN-S   /usr/share/doc/PRINTER-JPN-S

     -----------------------------------------------------------------------
   * Because VUE is deleted from 10.30, VUE features of ASE are not
     supported.

==============================================================================
5.2.2.2 JSE

   * Because SharedPrint is deleted from 10.30, SharedPrint is no longer
     supported by JSE.

   * Japanese outline fonts FontWave, provided by ALPS, is deleted. The
     tools for FontWave are also deleted.

==============================================================================
5.2.2.3 KSE

   * The C1205A printer model file and the C1205A printer are no longer
     supported.

******************************************************************************
5.2.3 Impact

==============================================================================
5.2.3.1 JSE

   * If you use FontWave fonts, you are impacted. You can use the TrueType
     option of Ricoh instead of FontWave fonts.

   * Printing applications that use Font Server access Library (FSlib)
     provided by JSE should be modified to use the X Print Server.

   * If you print via SharedPrint, you are impacted. The lp spooler or HPDPS
     can be used instead.

==============================================================================
5.2.3.2 KSE

   * The C1205A printer is no longer supported.

******************************************************************************
5.2.4 Compatibility

==============================================================================
5.2.4.1 JSE

   * The font names (XLFDs) are different, but there are font aliases from
     FontWave font names to TrueType fonts, so applications can use existing
     FontWave XLFDs.

******************************************************************************
5.2.5 Alternatives

==============================================================================
5.2.5.1 JSE

   * Instead of the deleted FontWave, you can buy TrueType optional fonts
     from Ricoh to use Japanese online fonts.

   * Instead of SharedPrint, use lp spooler or HP DPS.

==============================================================================
5.2.5.2 KSE

   * The C1205A printer is not supported; instead, use newer and supported
     printers. Refer to the KSE User's Guide to see what printers are
     supported.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.3 Auditing

Changes for 10.30:

   * New system calls are being audited.

   * The exec system call is auditing additional arguments.

   * audisp(1M) and audusr(1M) are now more efficient.

----------------------------------------------------------------------------

  event: create

  syscall: creat        syscall: mknod         syscall: pipe

  syscall: symlink      syscall: mkdir         syscall: semget

  syscall: msgget       syscall: shmget        syscall: shmat

  event: delete

  syscall: rmdir        syscall: semctl        syscall: msgctl

  syscall: shm_unlink   syscall: mq_unlink     syscall: ksem_unlink

  event: moddac

  syscall: chmod        syscall: chown         syscall: lchmod

  syscall: umask        syscall: fchown        syscall: fchmod

  syscall: semop        syscall: setacl        syscall: fsetacl

  syscall: putpmsg      syscall: lchown        syscall: acl

  event: modaccess

  syscall: link         syscall: unlink        syscall: chdir

  syscall: setuid       syscall: setsid        syscall: setpgrp

  syscall: setpgrp3     syscall: setgid        syscall: chroot

  syscall: ulimit       syscall: setgroups     syscall: setpgid

  syscall: setpgrp2     syscall: setresuid     syscall: setresgid

  syscall: rename       syscall: lockf         syscall: shmdt

  syscall: fchdir       syscall: shmctl        syscall: lockf64

  syscall: ulimit64     syscall: setcontext    syscall: setregid

  event: open

  syscall: open         syscall: execv         syscall: ptrace

  syscall: execve       syscall: mmap          syscall: truncate

  syscall: ftruncate    syscall: ftruncate64   syscall: mmap64

  syscall: truncate64   syscall: shm_open      syscall: mq_open

  syscall: ksem_open    syscall: ptrace64      syscall: sendfile

  syscall: sendfile64

  event: close

  syscall: close        syscall: munmap        syscall: mq_close

  syscall: ksem_close

  event: process

  syscall: exit         syscall: fork          syscall: kill

  syscall: vfork        syscall: setpriority   syscall: rtprio

  syscall: nsp_init     syscall: mlock         syscall: munlock

  syscall: mlockall     syscall: munlockall    syscall: sigqueue

  event: removable

  syscall: mount        syscall: umount        syscall: vfsmount

  syscall: exportfs

  event: login

  event: admin

  syscall: stime        syscall: acct          syscall: reboot

  syscall: utssys       syscall: swapon        syscall: settimeofday

  syscall: sethostid    syscall: setrlimit     syscall: privgrp

  syscall: setprivgrp   syscall: plock         syscall: setdomainname

  syscall:              syscall: setaudid      syscall: setaudproc
  rfa_netunam

  syscall: setevent     syscall: audswitch     syscall: audctl

  syscall: mpctl        syscall: adjtime       syscall: kload

  syscall: serialize    syscall:               syscall: sched_setscheduler
                        sched_setparam

  syscall:              syscall: toolbox       syscall: setrlimit64
  clock_settime

  syscall: modload      syscall: moduload      syscall: modpath

  syscall: getksym      syscall: modadm        syscall: modstat

  syscall: spuctl

  event: ipccreat

  syscall: socket       syscall: socketpair    syscall: bind

  syscall: socket2      syscall: socketpair2

  event: ipcopen

  syscall: accept       syscall: connect       syscall: fattach

  event: ipcclose

  syscall: shutdown     syscall: fdetach

  event: uevent1

  event: uevent2

  event: uevent3

  event: ipcdgram

  event: readdac

  syscall: access       syscall: stat          syscall: lstat

  syscall: fstat        syscall: getaccess     syscall: fstat64

  syscall: lstat64      syscall: stat64

  event: logoff

  event: exec

  event: creds

  event: sock

  event: file

  event: link

  event: unlink

----------------------------------------------------------------------------

******************************************************************************
5.3.1 Impact

Vendors who parse binary audit data must account for the changed format of
the binary data generated by exec and the introduction of many new system
calls.

******************************************************************************
5.3.2 Performance

Selection of default audit events (specified with the -E option to
audevent(1M)) will select more system calls for auditing and may result in
some performance degradation. Use audevent(1M) with the -s option or SAM to
control what gets audited at the system call granularity.

******************************************************************************
5.3.3 Alternatives/Compatibility

Binary audit data from earlier versions of HP-UX 10.0 will continue to work
with the audit display program audisp(1M) in 10.30. However, a binary audit
trail generated on 10.30 will not display correctly on earlier versions of
HP-UX.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.4 HP Common Desktop Runtime Environment (CDE 1.0)

This section discusses CDE topics that are relevant for 10.30. As of 10.30,
CDE, the new industry standard UNIX desktop, replaces HP VUE. CDE provides
these standard desktop applications:

   * Help System

   * Front Panel

   * Mailer

   * Calendar

   * Style Manager

   * File Manager

   * Application Manager

   * Print Manager

   * Text Editor

The design of the CDE desktop incorporates and enhances many HP VUE
features. Although the CDE desktop has a similar appearance to HP VUE, there
are important differences. The differences include:

   * New and more customizable Front Panel

   * Graphical MIME-enabled mail application

   * Graphical Calendar

   * Graphical Print Queue Manager

   * New terminal emulator

   * Action and datatype syntax changes

   * ToolTalk messaging support

   * Desktop application registration

Development Environment

The CDE development environment provides an application programming
interface for many of the desktop components.

******************************************************************************
5.4.1 Printing and Building Help Volumes in Multibyte Locales

The user's LANG environment variable must match the locale specified for a
given help volume to print or build the volume correctly.

The locale associated with a help volume is set using the
LanguageElementDefaultLocale entity declaration, or using a combination of
the LanguageElementDefaultLocale and LanguageElementDefaultCharset entity
declarations.

If the locale is not specified for a help volume, the value of the LANG
environment variable is used.

For more information, refer to the CDE Help System Author's and Programmer's
Guide (part number B1171-90109).

******************************************************************************
5.4.2 CDE Migration Tool

The VUEtoCDE application provides a way to migrate personal and system-wide
HP VUE customizations to the CDE desktop. VUEtoCDE is included with the
HP-UX 10.10 operating system.

When upgrading your HP VUE environment to CDE, install CDE and the VUEtoCDE
product from the operating system media. The VUEtoCDE application is
installed in the /opt/Migration directory.

Refer to HP CDE Getting Started Guide (part number B1171-90104) for
instructions for migrating HP VUE customizations to CDE using VUEtoCDE.

******************************************************************************
5.4.3 Accessing Font Aliases for Remote CDE Sessions

Your CDE session must have access to CDE font aliases to run properly.
Typically, these aliases are installed with the fonts provided with your X
server.

However, when running CDE as a remote session using the command

X -query... fp+ tcp/hostname:7000

or running CDE from an X terminal, it is possible that the font aliases may
not be available to the X server.

This can happen when the fonts on the server are from a prior release of
HP-UX or from another vendor. In this situation, you may see fonts that do
not work correctly with the local language you have selected. Fortunately,
CDE provides "backup" CDE font aliases that your X server can use. These are
located in the directory

/usr/dt/config/xfonts/<<locale_name>>

This location must also contain a fonts.dir file. This file is required by
the X server to use the font aliases mechanism.

If you are running CDE remotely, your system administrator can cause the CDE
font aliases to be used by setting up a font server to run on the system
hosting CDE, making that font server use the CDE font aliases for the
language you choose.

For example, if you want to work in Japanese EUC (locale name ja_JP.eucJP),
a font server should be started on the CDE system using this command:

/usr/bin/X11/fs -port 7000 -daemon -quiet_if_addrinuse

In the font server's configuration file (the default configuration file is
/etc/X11/fs/config), make sure the CDE font alias directory is contained in
the catalog definition. For example, to support a user running CDE in
Japanese EUC, the font server's configuration file might contain the
following:

catalogue = ...,/usr/dt/config/xfonts/ja_JP.eucJP/

Alternatively, your system administrator can copy the fonts.alias files from
the CDE host system to your local system and incorporate them into your X
server's fonts.alias file.

******************************************************************************
5.4.4 Changing Languages Between Sessions in CDE

When you log into the CDE desktop, you can select the language (or locale)
that you want to use for your session. A list of languages is displayed when
you click the Option button in the login screen.

If you change the language you are using between CDE sessions, previously
saved local language customizations may conflict with your new language
session.

For example, suppose you log in with language ja_JP.eucJP and create
Japanese workspace names. You then save the session when you exit the
desktop. Suppose the next time you log in, instead of choosing ja_JP.eucJP,
you select German, de_DE.iso88591. The desktop will attempt to display the
Japanese workspace names using fonts appropriate for the German language.
The workspace names will be unreadable.

This conflict results only if you change between two languages that use
different coded character sets. You can change from either C or English
locale without difficulty. Likewise, you can switch between similar locales,
such as French and German, which are both Western European locales.

Any personal customizations that contain local language characters can cause
similar symptoms as that described above. Personal session customizations
are saved in your $HOME/.dt directory.

If you want to select a language that is different from your previously
saved session, you should first start CDE in a fail-safe session. From the
terminal window provided, remove the files that contain local language text.

Files that might contain local language characters include:

   * $HOME/.dt/session/current/dt.resources

   * $HOME/.dt/help

   * $HOME/.dt/types/*

If you are not sure what files contain local language characters, remove the
directory $HOME/.dt/session using this command:

rm -r $HOME/.dt/session

This causes a default session to be invoked when you log in with the new
language.

In addition, you should remove any help files accessed with the prior local
language by executing:

rm -r $HOME/.dt/help

Labels and comments in action definitions can also include localized data.
If so, the action labels need to be modified to be readable in the new
language selected for your CDE session. User-defined actions are located in
$HOME/.dt/types/*.

----------------------------------------------------------------------------
NOTE

If you delete your personal customization directory, $HOME/.dt/*, you can
avoid the problems that occur when changing languages. However, remember
that you will lose any actions or other customizations you might have
created. Removing the entire directory is therefore not recommended.

----------------------------------------------------------------------------

******************************************************************************
5.4.5 CDE Limitations

The CDE limitation is as follows:

   * CDE Application Builder is not included in this release. It is an
     optional component of the CDE X/Open standard.

==============================================================================
5.4.5.1 Addition to the "CDE Advanced User's and System Administrator's
Guide"

"Creating an Action that Runs as a Different User" in Chapter 10 has this
addition:

When invoking an action that runs as a different user, make sure that the
specified user has access to all resources required to complete the action.
This includes, but is not limited to, the following:

   * X display access (use xauth, xhost, ACLs or mode on .Xauthority, and so
     on).

   * File permissions (use chmod, ACLs, and so on).

   * NFS access (grant local root access to NFS-mounted file systems).

   * Environment variables (modify HOME, PATH, and so on, for the new user
     if necessary)

==============================================================================
5.4.5.2 Addition to the CDE "Advanced User's and System Administrator's
Guide"

In Chapter 5, the topic "Configuring the ToolTalk Database Server" includes
the following information:

The tooltalk database/naming service ttdbserver relies on a special
undocumented inetd state called swait, which is specified in the inetd.conf
file. This state is not subject to the usual HP security file checks. System
administrators should not place entries referring to the ttdbserver service
in the /var/adm/inetd.sec file because they will be ignored.

==============================================================================
5.4.5.3 Addition of the "HP CDE Getting Started Guide - Addendum for HP-UX
10.30"

This addendum clarifies CDE's support of NFS mounts, as described in "HP CDE
Getting Started Guide - Addendum for HP-UX 10.30" and related HP CDE
manuals.

CDE fully supports all persistent mounts created by mount(1M) as long as
they conform to the already documented "file-name consistency" guidelines.

CDE only supports temporary mounts created by automount(1M) when created
using the special map mode -hosts, again with the "file-name consistency"
guidelines applied. CDE will not reliably work with any of the other
automount(1M) map modes because the CDE file name mapping code cannot
reliably parse or cache the combination of temporary symbolic links and
temporary NFS mounts created by automount(1M).

When using the -hosts mode of automount(1M) for a mount point other than
/net, the DTMOUNTPOINT environment variable must be set.

==============================================================================
5.4.5.4 Correction to the "CDE Advanced User's and System Administrator's
Guide"

In Chapter 2, the topic "To Execute Additional Commands at Logout", contains
an incorrect pathname. The task should read:

   * Create the file HomeDirectory/.dt/sessions/sessionexit.

==============================================================================
5.4.5.5 Correction to the "CDE ToolTalk Programmer's Guide"

Chapter 4, "Maintaining Application Information" of the "CDE ToolTalk
Programmer's Guide" (part number B1171-90126) contains a table with an
incorrect path name. The system database location specified in Table 4-1
should read:

----------------------------------------------------------------------------

  Database  Uses XDR Table

  system    /etc/tt/types.xdr

----------------------------------------------------------------------------

******************************************************************************
5.4.6 Pluggable Authentication Modules (PAM)

PAM is the new industry standard integrated login framework.

The PAM framework is used by system entry components, such as dtlogin, to
authenticate users logging into the system.

In HP-UX 10.20, PAM was introduced to be used only by CDE authenticating
components. Currently, non-CDE authenticating components, such as login and
ftp, continue to use the HP proprietary integrated login framework. These
authenticating components will be gradually modified to use PAM in future
releases, thus obsoleting HP ILOGIN framework.

The PAM framework is used for easy integration of additional security
technologies into HP-UX system entry commands, such as dtlogin. The security
technologies being integrated for HP-UX 10.30 are generic HP-UX
(/etc/passwd), Commercial Security, and DCE.

For 10.30, CDE components (dtlogin, dtsession, and dtaction) will use PAM to
authenticate users, as well as to establish user credentials (for example,
for DCE).

For 10.30, CDE components are also capable of authenticating users using the
commercial security databases.

==============================================================================
5.4.6.1 Impact

The CDE users on systems belonging to DCE cells will be able to authenticate
themselves with the DCE registry and obtain DCE credentials at the login
time.

System administrators can require CDE users to conform to the security
policies enforced in the trusted system databases.

==============================================================================
5.4.6.2 Configuration

A new configuration file /etc/pam.conf is used to determine usage of
security mechanisms to authenticate users. The presence of PAM and its
configuration file will not be noticed on systems configured to use generic
HP-UX-based user authentication (/etc/passwd) or commercial-security based
user authentication. For those systems intending to use DCE integrated login
functionality within CDE, the auth.adm utility will create the desired
configuration file that is functionally equivalent to the corresponding
ILOGIN auth.conf file created for the HP-proprietary integrated login
framework.

Refer to the pam.conf(4) and pam(3) manpages for additional information.

==============================================================================
5.4.6.3 Known Problems

The HP-UX vacation program does not support the $SUBJECT macro. Vacation
mail functionality is described in Chapter 8 of the" CDE User's Guide" under
the topic "To Send an Automatic Message (Vacation Mail)".

The known problem in 10.10 of changing word wrap mode is not applicable to
10.30.

******************************************************************************
5.4.7 HP CDE and Single Logical Screen (SLS) Server

For 10.30, HP CDE has built-in support for the Single Logical Screen (SLS)
server. The implication of this change is that on an SLS-enabled server,
dialogs displayed by CDE clients that center themselves on the screen will
instead center themselves on a particular monitor.

The CDE clients have been changed to understand SLS configuration. How
clients respond to x,y resources also changed. By default, the clients will
put the windows on one physical screen. If this is not desired, the
resources are available to change this behavior. Changed CDE clients are:

   * dtgreet - login screen and sub-windows

   * dtwm - initial front panel placement, move feedback window, other
     dialogs

   * dthello - placement of copyright text

   * dtsession - logout confirmation dialog, screen lock

   * libDtSvc - action dialogs, errors, prompts

To determine whether a display is an SLS display, the same method used by
the server to determine whether a display was set up for SLS is used. That
is, examine the property for SLS on the root window to see if it is
configured. An API call is set up in DtSvc which passes back the number of
rows and columns supported in the SLS configuration. If these values return
0, the display is not an SLS display. The function definition is:

void
parseXnScreensFile(slsRows, slsColumns)
    int *slsRows;
    int *slsColumns;

Now that there is a function that determines whether a display is in SLS
mode, the correct clients are changed to use this function and perform the
appropriate action if running on an SLS display. The best way to determine
which monitor to center on was by way of resources. What was done for each
client that needed to 'center' dialogs was to define two new resources for
each client:

singleLogicalScreenX:
singleLogicalScreenY:

The clients that had these resources added to are:

dtgreet
dtwm
dtsession

The logic for these two resources follows the X standard mechanism for
assigning its coordinates (that is, x,y where 0,0 is the Upper Left hand
corner of the screen). For example, if an SLS display is configured with
four monitors such that it is laid out 2 by 2 and the user specifies

*singleLogicalScreenX: 2
*singleLogicalScreenY: 1

the clients would center its dialogs on the upper right-hand monitor. The
layout for the 2 by 2 setup would be:

1,1 2,1
1,2 2,2

To center the Front Panel, the logic used is to center on the
"*singleLogicalScreenX:" location at the bottom of all the monitors.

Because the Login Manager uses Xresources to define its resources, to set up
a CDE session for SLS, you must modify these two files:

/etc/dt/config/<LANG>/Xresources
/usr/dt/app-defaults/<LANG>/Dt

Now there is a mechanism to determine whether a display is an SLS display
(parseXnScreensFile()) and has resources to support placement of centering
of dialog, code changes were made in clients to force the dialogs to the
correct location. The clients modified are:

dtgreet
dthello
dtwm
dtsession

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.5 Command Header File Changes

This section contains the changes that were made to the header files in
10.30 for the following reasons:

   * Conformance to standards (POSIX.1C, XPG4.2)

   * Defect repairs

   * Removal of obsolete interfaces

******************************************************************************
5.5.1 Interface Names

This section describes the various headers that were changed in 10.30.

==============================================================================
5.5.1.1 curses.h

Numerous function prototypes for X/Open curses were modified to match the
actual implementation.

==============================================================================
5.5.1.2 disktab.h

The following change was made to match the actual implementation:

OLD: extern struct disktab *getdiskbyname(char *);

NEW: extern struct disktab *getdiskbyname(const char *);

==============================================================================
5.5.1.3 errno.h

Refer to the libc section in Chapter 8, "Commands and Libraries" for a
description of changes to errno in errno.h.

==============================================================================
5.5.1.4 hpsecurity.h

The following change was made:

OLD: typedef unsigned long mask_t;

NEW: typedef uint32_t mask_t;

In order to preserve backward compatibility when using different compilation
environments where the size of an int and a long may be different, mask_t
was changed to be a typedef of data type that is 32-bit in the different
compilation environments.

==============================================================================
5.5.1.5 iconv.h

The following change was made as a defect repair:

OLD: size_t iconv(iconv_t, char **, size_t *, char **, size_t *);

NEW: extern size_t iconv(iconv_t, const char **, size_t *, char **, size_t
*);

==============================================================================
5.5.1.6 limits.h

The following change was made because ssize_t was changed to be a typedef of
a long in 10.30:

OLD: #define SSIZE_MAX INT_MAX

NEW: #define SSIZE_MAX LONG_MAX

==============================================================================
5.5.1.7 ndir.h

ndir.h has been delivered on HP-UX 9.x and 10.x releases for source
compatibility with legacy HP-UX applications. This file will be delivered in
/usr/old/usr/include instead of /usr/include on 10.30. It will not be
delivered in a future HP-UX release.

The functionality exported by ndir.h is superseded by the functionality
provided by dirent.h. Applications that currently use ndir.h should be
changed to use dirent.h.

==============================================================================
5.5.1.8 prot.h

prot.h was changed to add prototypes for ANSI-C compilations.

==============================================================================
5.5.1.9 shadow.h

The following change was made:

OLD:

struct spwd {
    char * sp_namp;        /* user's name */
    char * sp_pwdp;        /* user's password */
    long sp_lstchg;        /* last date password was changed */
    long sp_min;            /* minimum # days between password changes */
    long sp_max;            /* maximum # days between password changes */
    long sp_warn;           /* # days to warn user to change password */
    long sp_inact;          /* max number of days between logins before account rendered unusable */
    long sp_expire;        /* day when account is unusable */
    unsigned long sp_flag; /* not used */
    };

NEW:

struct spwd {
     char * sp_namp;       /* user's name */
     char * sp_pwdp;       /* user's password */
     time_t sp_lstchg;     /* last date password was changed */
     time_t sp_min;         /* minimum # days between password changes */
     time_t sp_max;         /* maximum # days between password changes */
     time_t sp_warn;        /* # days to warn user to change password */
     time_t sp_inact;       /* max number of days between logins before account rendered unusable */
     time_t sp_expire;     /* day when account is unusable */
     uint32_t sp_flag;     /* not used */
};

In order to preserve backward compatibility when using different compilation
environments where the size of an int and a long may be different, long
structure entries were changed to be 32 bits for the different compilation
environments.

==============================================================================
5.5.1.10 stddef.h

The following change was made as a defect repair:

OLD: typedef int ptrdiff_t;

NEW: typedef long ptrdiff_t;

The fundamental type of ptrdiff_t was changed from a signed 32-bit integer
type to a signed 32-bit long.

==============================================================================
5.5.1.11 stdio.h

The following new interfaces were added: vsnprintfa and snprintf.

For conformance to Unix95 and beyond, the following function prototype will
be available:

extern int vsnprintf(char *, size_t, const char *, va_list);

Otherwise, this function prototype will be available:

extern int vsnprintf(char *, size_t, char *, __va_list);
extern int snprintf(char *, size_t, char *,...);

==============================================================================
5.5.1.12 stdlib.h

The following change was made as a defect repair:

OLD: extern char *setstate(char *);

NEW: extern char *setstate(const char *);

==============================================================================
5.5.1.13 strings.h

The following change was made as a defect repair:

OLD: extern void bzero(char *, int);

NEW: extern void bzero(void *, size_t);

==============================================================================
5.5.1.14 syslog.h

The following change was made as a defect repair:

For conformance to Unix95 and beyond, the following function prototype will
be available:

extern void syslog(int, const char *, ...);

Otherwise, this function prototype will be available:

extern int syslog(int, const char *, ...);

==============================================================================
5.5.1.15 term.h

This interface has been removed as a defect repair; it was never supported:

extern int vidattr(chtype);

==============================================================================
5.5.1.16 time.h

The following changes were made:

OLD:

typedef unsigned long clock_t;
typedef unsigned int size_t;

NEW:

typedef unsigned int clock_t;
typedef unsigned long size_t;

==============================================================================
5.5.1.17 utmp.h

The following was added as a defect repair:

extern int utmpname(const char *);

******************************************************************************
5.5.2 Obsoleted Headers

This section describes the header files that are obsoleted in the 10.30
release.

==============================================================================
5.5.2.1 nl_ctype.h

See the section, "Deprecation and Obsolescence of APIs", in Chapter 3,
"Compatibility" for details.

Some of the changes will impact existing applications, as described in the
next section.

==============================================================================
5.5.2.2 Impact

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5.5.2.2.1 Impact Due to Addition of or Changes in Function Prototypes

Existing applications that are not using a routine correctly (that is, not
assigning the return value to the correct data type or passing in arguments
of a type other than that expected by the routine) need to be corrected to
conform to the new function prototypes. Existing C++ applications that use
the old prototype will also be impacted.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5.5.2.2.2 Impact Due to Changes in typedefs

Existing C++ applications will need to be recompiled to use the new typedefs
if mixing of pre-10.30 with 10.30 objects is needed.

==============================================================================
5.5.2.3 Compatibility

An existing application will need to be recompiled if any of the following
is true:

   * It is not using an interface correctly.

   * Its usage of an interface does not conform to the new function
     prototype.

   * It is using an obsoleted interface.

   * It is a C++ application and typedefs or prototypes of interfaces it is
     using have changed.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.6 DCE

The HP DCE/9000 Version 1.6 client software bundled with HP-UX 10.30 has
been simplified to these three filesets:

DCE-CORE
IntegratedLogin
KRB-Support

Two filesets formerly in the HP DCE/9000 Version 1.5 client bundle have
moved out of the DCE Client bundle: DCE-CoreTools and DCE-CoreAdmin. For a
complete list of HP DCE 1.6 filesets, refer to Chapter 3 of the manual "HP
DCE/9000 Version 1.6 Planning and Configuring HP DCE 1.6".

The following DCE components, which were delivered at HP-UX 10.20, are not
delivered for HP-UX 10.30:

DFS
GDS (except support for GDA)

----------------------------------------------------------------------------
NOTE

Enhanced DFS is available as an Independent Release for HP-UX 10.20 and will
be available in 1997.

----------------------------------------------------------------------------

For information about the HP DCE 1.6 client software, see the "HP DCE/9000
Version 1.6 Client Software for HP-UX Release Note." This release note is
provided online as HPDCE1.6RelNoteClient.text and HPDCE1.6RelNoteClient.ps
in the directory /opt/dce/newconfig/RelNotes. Also see the section
"Distributed Computing Environment (DCE)" in Chapter 6, "Other Operating
System and Subsystem Changes", for more information.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.7 DNS

For 10.30, the named daemon and DNS tools nslookup, named-xfer, and
sig_named are based on the public domain DNS release 4.9.3:

DNS (named, nslookup, named-xfer, sig_named)

The following subsections describes the changes made for 10.30.

******************************************************************************
5.7.1 Support for Negative Caching

If an authoritative name server responds that the information being queried
does not exist for the specified domain name, the local name server caches
this negative response for a short period of time (approximately 600
seconds). This can reduce the number of successive DNS queries sent from the
local name server and improves response time.

******************************************************************************
5.7.2 Round-Robin

When the name server supplies address information for a multi-homed host, it
cycles the returned order of those addresses. This provides a mechanism for
load sharing network traffic to each host interface. If you do not need this
feature, Hewlett-Packard offers the capability of disabling this feature
through a boot file options parameter no-round-robin. Round robin is enabled
by default.

******************************************************************************
5.7.3 Additional "stub" Server Type Boot File Directive

This feature is similar to a secondary server and is designed to ensure that
a primary for a zone can always have the correct NS records for the children
of that zone. This feature specifies a child zone that your server should
periodically get delegation information for.

******************************************************************************
5.7.4 "Slave" Directive Deprecated

The directive option options forward-only now places a server in slave mode.

******************************************************************************
5.7.5 Nonrecursive Servers

The directive option options no-recursion can be used to prevent your name
server from performing recursive resolution of domain names.

******************************************************************************
5.7.6 Query Logging

The name server can log any query it receives to syslog by using the boot
file directive options query-log, or through the use of the SIGWINCH signal.
This is useful for system administration. Be aware when using this option,
syslog could become large if enabled for a significant period of time or if
used on a busy name server.

******************************************************************************
5.7.7 Inverse Query Pseudosupport

By default, BIND does not support inverse queries, which can cause problems
with older operating systems or NSLOOKUP tools. Using the boot file
directive options fake-iquery, you can force the server to return a fake
answer to any inverse query rather than getting an "operation not
implemented" error response.

******************************************************************************
5.7.8 Name Server Tuning

Because some name server operations can be resource intensive, it can
sometimes be beneficial to tune the server internal quotas. This can now be
done with the following boot file directives:

limit transfers-in

     The number of simultaneous named-xfer processes named is willing to
     start. (This can also be expressed by the deprecated directive
     max-fetch.)

limit transfers-per-ns

     The maximum number of named-xfer processes named is willing to initiate
     to any given name server simultaneously.

******************************************************************************
5.7.9 Security Type Changes

==============================================================================
5.7.9.1 Zone Transfer Restrictions

Using the boot file directive xfrnets, it is now possible to control which
neighbors can transfer zone information from your server. For example:

xfrnets 16.0.0.0                 all 16 network members
xfrnets 16.1.0.2&255.255.255.255  only 16.1.0.2

==============================================================================
5.7.9.2 Bogus Name Server Control

You can choose to refuse to listen to or ask questions of any name servers
known to give bad answers using the directive bogusns <address> in the boot
file.

******************************************************************************
5.7.10 Segmented Boot Files

The include directive in the named.boot file now makes it possible to split
the named.boot file into multiple parts.

******************************************************************************
5.7.11 "options no-round-robin"

For 10.30, there is an additional Hewlett-Packard implemented boot file
options directive options no-round-robin. This option allows the default
address cycling for multihomed systems to be disabled.

******************************************************************************
5.7.12 Resource Records

Some newly supported Resource Record types are:

ISDN

     An ISDN telephone number

AFSDB

     Distributed Service data for a host

RT

     Route Through, similar use to an MX RR

PX

     Mapping rules between X.400 O/S style addresses and RFC-822 domain
     style mail addresses

X25

     Carries PSDN address information

NSAP

     Carries NSAP address information

LOC

     Physical location information

RP

     Responsible Person e-mail address for a host

NULL

     A null Resource Record (no format or data)

******************************************************************************
5.7.13 Signals

named recognizes the SIGWINCH signal. SIGWINCH toggles tracing of all
incoming queries.

----------------------------------------------------------------------------
NOTE

sig_named has been modified to add control for this feature. sig_named trace
can be used to toggle tracing from the command line. Be aware that by using
this option, syslog could become large if tracing is enabled for a
significant period of time or if used on a busy name server.

----------------------------------------------------------------------------

******************************************************************************
5.7.14 Command Line Options

#VALUE!

     Trace all incoming queries. This option is deprecated in favor of the
     boot file directive options query-log.

-r

     Turns off recursion in the server. This option is deprecated in favor
     of the boot file directive options no-recursion.

******************************************************************************
5.7.15 Compatibility

DNS for 10.30 is able to handle the existing database and compatibility with
the existing configuration files. However, round-robin address cycling
(described above) is enabled by default. If you do not want this new
feature, you can disable it by adding the following entry to the named boot
file (the default boot file is /etc/named.boot):

options no-round-robin

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.8 elm 2.4

For 10.30, the new version of elm is elm 2.4. elm 2.4 on HP-UX continues to
support all the features of elm prior to 10.30. In addition, there is added
functionality, briefly described in this section.

******************************************************************************
5.8.1 MIME support (RFC 1521)

RFC 1521 describes a mechanism for denoting textual body parts that are
coded in various character sets, as well as methods for encoding such body
parts as sequences of printable ASCII characters.

elm 2.4 allows you to send and view MIME-encoded messages. This enables you
to send messages other than 7-bit ASCII texts. elm 2.4 supports a variety of
nontext messages like audio, video, image, PostScript, and so on.

If a mailer does not support a particular Content-Type or Character-Set, elm
2.4 calls the metamail program, which selects the appropriate interpreter to
display the contents of the message. The metamail program is extensive in
terms of the variety of Content-Types and Subtypes it can display via the
mailcap file mechanism.

elm 2.4 also supports MIME encoding for the mail headers (RFC 1522). This
allows character sets other than ASCII in RFC 822 message headers.

******************************************************************************
5.8.2 Attachment Support

Elm 2.4 provides a new "Attachments" menu in which you can include an
attachment to a current mail message. This feature also allows you to edit,
save, or print individual portions of a received multipart message.

******************************************************************************
5.8.3 JIS Support for Japanese email Messages

This facility supports the industry standard JIS encoding scheme for sending
and receiving Japanese mail. Regardless of the internal code of the sender
(Japanese EUC or Shift JIS), elm 2.4 correctly displays the mail using the
locale of the receiver.

Backward compatibility is provided for interacting with the non-JIS mailers.
You have the option of suppressing the JIS encoding for outgoing mail, and,
if desired, using the elmrc variable jisconversion. Using the elmrc variable
savecharset, you can specify the code set to be used (EUC, SJIS, or JIS) to
save mail into a folder.

JIS support is also provided for the stand-alone utilities, such as answer,
readmail, newmail, mailfrom, and fastmail.

******************************************************************************
5.8.4 New Stand-Alone Utilities

elm 2.4 continues to support all the stand-alone utilities provided by
previous versions of elm. In addition, there are these new utilities:

answer

     This is part of the elm mail system and is designed for those who want
     to answer phones and/or listen to phone message machines and quickly
     and easily transcribe the messages into electronic mail.

mailfrom

     This lists "from" and "subject" fields of selected messages from the
     mailbox or folder.

fastmail

     This is a low-level interface to the mail system that allows batch
     processing of mail. It is intended for mailing to very large groups of
     people in a staggered fashion.

******************************************************************************
5.8.5 Changes to Command Line Options

For 10.30, elm 2.4 supports the following command line options:

Option

     Action

-c

     Check the given aliases only (checkalias)

-d<n>

     Set debug level to n (debug)

#VALUE!

     Do not use termcap/terminfo ti/te entries (TiTe)

#VALUE!

     Enable sendmail voyeur mode

******************************************************************************
5.8.6 Changes in alias Options

elm 2.4 provides enhanced alias options including on-line editing of alias
entries.

******************************************************************************
5.8.7 Changes to the User Interface

There are some changes to messages and menus. Some typical examples are
shown below.

==============================================================================
5.8.7.1 Example

When you press q to quit elm, the previous version of elm asked:

Keep mail in incoming mailbox? (y/n)

Whereas, elm 2.4 asks the question

Move read message to "received" folder? (y/n)

A response of n to this question will move all the messages in the incoming
mailbox (/var/mail/$USER) into the received folder (~/mbox).

A response of y will move all the messages that are read to the received
folder. Then, elm asks:

Keep unread messages in incoming mailbox? (y/n)

A response of n will move all the messages to the received folder.

==============================================================================
5.8.7.2 Example

There are slight changes to error messages. Entering / when the mailbox is
empty gives the following error messages:

No messages to scan! in elm 2.4

No messages to read! in previous versions of elm

Trying to set the current message number when the mailbox is empty gives the
following error messages:

Not that many messages in elm 2.4

No messages to read! in previous versions of elm

==============================================================================
5.8.7.3 Example

For elm 2.4, there is a change in sequence of operations. When you enter c
to change to a particular folder in elm 2.4, the following messages appear:

Command: Change mailbox Delete message(s)?(y/n)
Name of new mailbox:

But, after entering c for change of folder, elm 2.4 first asks the following
question:

Command: Change folder (Use '?' for help)
Change to which folder:

After giving the folder name, elm 2.4 asks:

Delete message? (y/n)
Move read messages to "received folder?" (y/n)

In addition to the sequence change of operations, there is a change in the
messages. In the previous versions of elm when you enter c, the messages are

Command: Change mailbox (Use '?' to list folder)
Name of new mailbox:

Whereas in elm 2.4, the messages are

Command: Change folder (Use '?' for help)
Change to which folder:

elm 2.4 also supports regular expressions for searching a particular folder
name. At the prompt

Change to which folder:

you can type =* or any pattern and elm 2.4 will search for that pattern and
display all folders matching that pattern.

******************************************************************************
5.8.8 New C Option

elm 2.4 provides a new C option that allows you to save a copy of a message
without deleting that message. This differs from the save option where the
message that gets copied is tagged for deletion.

******************************************************************************
5.8.9 Compatibility

elm 2.4 is compatible with previous versions of elm, but, in some instances,
elm 2.4 might issue warning messages.

******************************************************************************
5.8.10 Unsupported Variables

Functionality that the previous versions of elm supported by using the elmrc
configuration continues to be supported in elm 2.4. However, the original
variables, described below, are not supported:

askbcc

     This variable was used by previous versions of elm to decide whether
     you need to be prompted for blind carbon copies. elm 2.4 cannot be
     configured to prompt you for the blind carbon copies. If you need to
     send a blind carbon copy, enter the "edit header" menu after composing
     the message and edit the bcc header.

skipdeleted

     This boolean variable was supported in previous versions of elm. If
     turned on, this variable allowed you to skip the deleted messages in
     your folder whenever you use the arrow keys or j and k keys to scroll
     through your folder. However, this variable is not supported in elm
     2.4. If you want to skip deleted messages, use the j or k keys for
     scrolling the folder.

******************************************************************************
5.8.11 Configuration File Variables

This section describes new, renamed, and obsoleted variables in the elmrc
configuration file.

==============================================================================
5.8.11.1 New Variables

There are elmrc variables newly introduced by public domain elm 2.4. These
variables, supported in elm 2.4, are:

----------------------------------------------------------------------------

  aliassortby     confirmfiles     precedences

  alteditor       confirmfolders   promptafter

  alwayskeep      displaycharset   readmsginc

  alwaysstore     easyeditor       remotesignature

  attribution     hdrencoding      savecharset

  bounceback      jisconversion    sigdashes

  builtinlines    keepempty        sleepinterval

  charset         localsignature   sleepmsg

  compatcharsets  metoo            textencoding

  configoptions   mimeforward      tmpdir

  confirmappend   noencoding       usetite

  confirmcreate   pagemultipart    visualeditor

----------------------------------------------------------------------------

==============================================================================
5.8.11.2 Renamed Variables

The following elmrc variables in previous versions of elm are renamed in elm
2.4:

----------------------------------------------------------------------------

  Previous Variable Name  Renamed Variable (elm 2.4)

  savemail                sentmail

  mailbox                 receivedmail

  alwaysleave             alwayskeep

----------------------------------------------------------------------------

==============================================================================
5.8.11.3 Obsoleted Variables

The following elmrc variables are no longer supported by elm 2.4:

expand

warnings

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.9 FTP, RCP, and RDIST

The services FTP, RCP, and RDIST have been enhanced to support large file
transfers (that is, transfer of files greater than 2 gigabytes).

******************************************************************************
5.9.1 Compatibility for RCP

   * A 10.20 patch (PHNE_7918) has been released to support large file
     transfers.

   * A 10.X patch (PHNE_7917) has been released to handle interoperability
     issues with large file aware RCP.

   * A 9.X patch (PHNE_7916) has been released to handle interoperability
     issues with large file aware RCP.

   * The existing implementations of RCP on different releases of HP-UX do
     not check for size overflow. As a result, large file transfers from an
     RCP that supports large files will not cause graceful termination (it
     could hang or the file could be truncated).

     The 10.X and 9.X patches check for size overflow and cause graceful
     termination if it is the target of a large file transfer.

******************************************************************************
5.9.2 Compatibility for RDIST

   * A 10.20 patch (PHNE_7920) has been released to support large file
     transfers.

   * A 10.10 patch (PHNE_7919) has been released to handle interoperability
     issues with large file aware RDIST.

   * A 10.0X patch (PHNE_8107) has been released to handle interoperability
     issues with large file aware RDIST.

   * The existing implementations of RDIST on different releases of HP-UX do
     not check for size overflow. As a result, large file transfers from an
     RDIST that supports large files will not cause graceful termination
     (could hang or file could be truncated).

     The 10.X and 10.0X patches will check for size overflow and cause
     graceful termination if it is the target of a large file transfer.
     RDIST is not available on 9.X.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.10 GeoCustoms

For 10.30, HP-UX will support ignition of multiple languages on a new
system. /usr/sbin/geocustoms provides a multilingual user interface to
enable any European language user to manage the language configuration of a
10.30 system. set_parms calls GeoCustoms when the default system language
has not been predetermined. If you order the European option, HP-UX must
find out from you whether to use English, French, German, Italian, Spanish,
or Swedish. GeoCustoms determines the language through a localized interface
that takes the international customer quickly into the remaining system
configuration screens. Networking configuration questions are presented by
set_parms (when applicable) in the chosen language for navigating
GeoCustoms.

Therefore, for 10.30, set_parms and login will come up in the correct
language.

******************************************************************************
5.10.1 Compatibility

auto_parms and set_parms are delivered with GeoCustoms. Syntax rules for
edits of /etc/rc.config.d/LANG and /etc/dt/config/Xconfig have been
followed.

******************************************************************************
5.10.2 Performance

GeoCustoms only appears automatically at first boot on systems where the
language choice is ambiguous; therefore, there is no performance loss for
single language users.

GeoCustoms quickly walks you through a process that otherwise might be
overwhelming. This is a performance improvement.

If you select "English (Universal)", also known as "C", the performance of
some applications may be slower than if the language "English
(SET_NULL_LOCALE)" is used.

******************************************************************************
5.10.3 Alternatives

To prevent GeoCustoms from running, make sure that a valid locale is
assigned to _hp_locale in /tmp/install.vars (if the file exists).

******************************************************************************
5.10.4 Obsolescence

Instant Ignition no longer includes the 9.x tools known as datebook, xcal,
xdialog, and xhpcalc.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.11 HP Distributed Print Service (HPDPS)

   * HPDPS on HP-UX 10.30 supports new functionality, increase in
     performance, and reliability improvements without an increase in the
     size of binaries.

   * Remote printer configuration is supported in SAM.

   * HPDPS supports NT spooler interoperability.

   * HPDPS supports new HP Printers, such as the Lj5si Mopier and HP5000
     D640.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.12 iFOR/LS

HP-UX 10.30 uses Version 4 of iFOR/LS from Gradient Technologies,
Incorporated. Previous HP-UX releases have included Version 3.X of
Gradient's iFOR/LS product.

******************************************************************************
5.12.1 Summary of Change

Defects fixed for this release include changes available in patch PHSS_8508:

i4target returning "ff000000" for systems which have multiple LAN cards or
FDDI Interface.

The directory structure of the iFOR/LS product is simplified to reduce the
number of symlinks and the number of directory levels where the files are
delivered. Two unnecessary directory levels are removed for this release.
Files formerly delivered to /opt/ifor/ls/os/hpux are now delivered to
/opt/ifor/ls. For example, commands are found under /opt/ifor/ls/bin, the
one remaining shared library is under /opt/ifor/ls/dll, and configuration
files are under /opt/ifor/ls/conf.

The symbolic links from /opt/ifor/bin and from /opt/ifor/ls/bin to
/opt/ifor/ls/os/hpux/bin are removed.

The symbolic links from /opt/ifor/dll and from /opt/ifor/ls/dll to
/opt/ifor/ls/os/hpux/dll are removed.

The removal of these links and of the obsolete files is accomplished by a
LSSERV product level preinstall script.

The user interface to the i4config script is modified. This script permits
you to configure a license client system using direct binding to a server
rather than through the NCS name server capability.

******************************************************************************
5.12.2 Impact

Using direct binding is easy and quick, and avoids NCS problems.

******************************************************************************
5.12.3 Compatibility

The license database file built with earlier versions of iFOR/LS is not
compatible with this 10.30 version. Translating an existing license database
is accomplished by executing the command /opt/ifor/ls/bin/v3tov4. This
command, if necessary, is executed when the new version of the LSSERV
product is installed. Data files created with this version are not portable
to a system running an older version of iFOR/LS.

The binaries are compatible with HP-UX 10.10 and newer systems.

Interoperability is not affected. A license client system running any
version of iFOR/LS can be served by a system running any version of iFOR/LS.
Conversely, a license server system running any version of iFOR/LS software
can serve licenses to any other HP-UX system running any version of iFOR/LS.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.13 Ignite-UX

Ignite-UX is the replacement tool for both Cold Install and Instant
Ignition. Cold Install is the tool that allows the end-user to install the
HP-UX operating system. Instant Ignition is the manufacturing and reseller's
equivalent of Cold Install.

The Ignite-UX cold installation tool is a client-server application that
provides the ability to configure and install HP-UX systems.

For 10.30, Ignite-UX replaces Cold Install, including the functionality
provided by instl_adm(1M) to maintain network install configuration and
default parameters.

In addition to replacing Cold Install, Ignite-UX provides a true
client-server framework enabling an install session for multiple targets to
be controlled from a single server. This will help you manage large HP-UX
installations.

Key features of Ignite-UX:

   * True client-server framework enabling an install session for multiple
     targets to be controlled from a single server.

   * Support of client stand-alone installation by enabling an installation
     to be controlled from a terminal user interface running on the target
     machine.

   * Support of noninteractive installations.

   * Support for multiple sources within a single install session. This
     allows end customers to install multiple applications at the same time
     they install the base OS.

   * Support for SD and non-SD sources by providing the ability to load SD
     software, as well as software from non-SD sources (tar, cpio, or pax).

   * Support for user-defined configurations by allowing a system
     administrator to construct a description (configuration) for a target
     system including disk and networking layout, software to install,
     kernel modifications, and post-installation customizations. Once this
     configuration has been defined, it can then be applied to one or more
     target machines.

   * Support for user-defined customization both by defining what a target
     system should look like and by allowing execution of user-supplied
     scripts at pre-defined points in the installation process.

   * Support for saved configurations by enabling a user to modify an
     existing configuration, save these changes, and then quickly apply the
     new configuration to a target system.

   * Support for system manifest creation by providing a simple method to
     capture a snapshot of the currently loaded software along with a
     complete hardware inventory.

   * Support for multiple releases. The Ignite-UX server runs on any HP-UX
     10.01 platform or higher and supports the installation of all 10.01
     releases or higher.

******************************************************************************
5.13.1 Impact

Ignite-UX has a number of new commands. Two commands that are pertinent to
setting up Ignite-UX depots and managing configuration files are
make_config(1M) and manage_index(1M).

make_config makes software bundles in SD depots available for selection in
the Ignite-UX user interface. It constructs Ignite-UX configuration files
that correspond to SD depots.

manage_index manipulates Ignite-UX INDEX files. INDEX files allow the use of
multiple configuration files.

******************************************************************************
5.13.2 Performance

The performance time for an operating system install is equivalent to that
of Cold Install.

******************************************************************************
5.13.3 Configuration

See the ignite(5) manpage for details on setting up an Ignite-UX server.

******************************************************************************
5.13.4 Size Requirement

The requirement is sufficient disk space to load Ignite-UX and any software
depots and/or archives to be used during the install.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.14 Integrated Login

For 10.30, login authentication, account checking, and password modification
incorporate the PAM interface.

Error checking is also added to support PAM.

If PAM_UNIX is not defined, login functions as it did in prior releases.
Console login for root is available if reconfiguration is necessary.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.15 I/O Forwarding

The I/O Forwarding feature introduced in HP-UX 10.10 is now enhanced to also
support the WSIO disk drivers in addition to the SIO disk drivers.

As in HP-UX 10.10, I/O requests for disk drivers on MP systems are forwarded
to the processor assigned to handle the associated device interrupt so as to
eliminate cache-to-cache synchronization and therefore to improve
performance.

******************************************************************************
5.15.1 Summary of Change

In HP-UX 10.10, the I/O Forwarding implementation is SIO CDIO specific and
therefore it only supports SIO drivers. In HP-UX 10.30, the previous I/O
Forwarding implementation is replaced with the PA CDIO specific
implementation. This new implementation is common to both SIO and WSIO
drivers. The enhanced feature supports disk devices on SIO adapter drivers
(scsi1, scsi3, hpfl1), as well as storage devices (disk, tape, floppy) on
WSIO adapter drivers (scsi_c720).

******************************************************************************
5.15.2 Impact/Performance

The new I/O Forwarding implementation retains the same performance gain on
SIO drivers (scsi1, scsi3, hpfl1) as that achieved with the previous I/O
Forwarding implementation. In addition, it provides performance improvement
for devices on WSIO drivers (scsi_c720).

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.16 JFS as the Default File System

For 10.30, JFS is the default file system for Instantly Ignited (II) and
Cold Installed Series 800 systems. JFS was a selectable file system in
10.20, but was not the default. JFS is a key component for mission critical
high availability if you require round the clock uptime because JFS is the
most highly-functional, highly-available file system running on HP-UX.

******************************************************************************
5.16.1 Impact

Except for Access Control Lists (ACLs), JFS contains a superset of the
functionality available in HFS. In addition, the OnLineJFS product provides
functionality not available with HFS, such as on-line backups, on-line
resizing, on-line defragmentation, extent attributes, and caching
advisories.

******************************************************************************
5.16.2 Performance

There is no difference in performance between JFS as the default and
selecting JFS as the default root file system during cold installation.

******************************************************************************
5.16.3 Compatibility

Unlike HFS, JFS does not support Access Control Lists (ACLs). ACLs are
required for C2 Trusted System compliance.

******************************************************************************
5.16.4 Alternatives

For cold installs on Series 800 systems, HFS can be selected during
installation as the default file system. To select HFS as the default file
system on instantly ignited Series 800 systems, re-install 10.30 and select
HFS as the default file system.

Or, another way to change a file system type is to back up the file system,
re-create the file system with another type, and then restore the backup.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.17 Kernel Threads (1x1)

For 10.30:

HP-UX 10.30 supports POSIX 1003.1B, the Kernel Threads application
programming interface. A "1x1" model is used, meaning each individual user
thread is bound to a single kernel thread. The POSIX kernel threads library,
libpthread, has to be linked in to use these new interfaces. The library is
provided in the default directory where other libraries are stored. The
header file for libpthread is pthread.h, which has to be included by all
multithreaded applications.

******************************************************************************
5.17.1 Summary of Change

Prior to 10.30, HP-UX supported "user threads", also known as DCE or CMA
threads.

POSIX 1003.1C (also called POSIX.1C) is a large new set of APIs. For
details, refer to the book "Thread Time: The MultiThreaded Programming
Guide", by Scott J. Norton and Mark D. DiPasquale, ISBN 0-13-190067-6, and
orderable by calling 1-800-947-7700 (US) or (US area 515) 284-6751
(international). This book, in addition to being a guidebook for writing
multi-threaded applications, includes as an appendix, the full set of
POSIX.1C manpages.

******************************************************************************
5.17.2 Impact

There is no impact forced upon you. Nonmultithreaded applications compiled
on or before 10.30 will continue to run as they did on releases of HP-UX
prior to 10.30.

Vendors who offer libraries that might be linked by an end-user to a
multithreaded application will need to make changes to these libraries to
ensure that they support being called by multithreaded applications.

******************************************************************************
5.17.3 Performance

No significant performance degradation occurs for nonmultithreaded
applications running on 10.30. A substantial gain in performance is
achievable using multi-threaded programming techniques. However, this gain
will vary depending on the particular application, as well as your ability
to make the most effective use of the POSIX APIs.

******************************************************************************
5.17.4 Compatibility

See the libc section in Chapter 8, "Commands and Libraries" for a discussion
on compatibility between DCE and Kernel threads.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.18 Login Requirement

HP-UX authentication (login) is dependent upon the file /etc/pam.conf. This
file must be owned by root with the following file permissions:

-r--r--r-- 1 root sys 1050 Nov 8 10:16 /etc/pam.conf

If this file is corrupt or missing from the system, root is allowed to log
into the console in single-user mode to fix the problem. See the manual
"Managing Systems and Workgroups" for information on single-user mode.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.19 LVM

For 10.30, the following are the new LVM features:

   * LVM Automatic Hot Sparing of Physical Volumes (PVs)

   * LVM support of Logical Volume (LV) I/O Timeouts

******************************************************************************
5.19.1 Automatic Hot Sparing of PVs

This feature is supported on single-node (nonclustered) volume groups (VG)
whose LVs are created with strict mirroring (via the Mirrored Disk/UX
product). In such a case, one or more additional PVs may be added to a
volume group (via pvchange or vgextend) as a spare PV.

A spare PV's disk space is not available for regular extent allocation (via
lvextend, lvcreate, pvmove, and so on). The spare PV's sole purpose is to be
available as a "hot standby" in the event of another PV failure. At the time
of a failure, all data that was on the "failed" PV will be copied to the
spare (from an available other mirror copy). Once the spare PV has been
configured in the VG, the actual sparing action (upon device failure) will
be automatic. At a later point in time (after repair or replacement of the
failed PV), a manual "unsparing" operation (via pvmove) can be performed.

Example setup:

  1. Perform a regular pvcreate on the disks that are to be designated as
     spares for the VG. Note that spare PVs are not allowed to contain boot
     information, so do not use the -B option.

  2. Make sure the desired volume group is activated.

  3. Perform a vgextend -z y with the PVs that are to be spares for the
     volume group.

Events to trigger sparing:

   * A PV that remains in a "power failed" condition for more than 5 minutes

   * The first nonrecoverable other I/O error encountered (that is, bad
     media)

At this point, a spare PV must be available that is at least as large as the
failed PV. If available, all user data will be "spared" to the new PV. For
10.30, the vgdisplay and pvdisplay commands are enhanced to show if a
"failed" PV has had its data spared and to name the spare PV now holding its
data. Similarly, if the spare is "active" (that is, holding data for a
failed PV), it will also name the PV where its data came from.

The unsparing operation is a manual operation. This operation should be done
once the failed PV has been repaired or replaced. The steps to follow are:

   * Find the failed PV and its active spare PV via vgdisplay -v.

   * Replace the failed disk (following the appropriate steps for that disk
     type). It might also be possible to repair the disk without replacing
     it.

   * If the disk was replaced, the new disk must be reinitialized (via
     vgcfgrestore). This will restore the LVM configuration and headers onto
     the replaced disk from the backup LVM configuration.

   * Make sure the repaired disk is attached to the VG (via vgdisplay -v).
     If the PV is not attached to the VG, error messages will be displayed
     during the vgdisplay saying that the PV is not attached to the VG. If
     the PV is not attached to the VG, then perform the vgchange -a y
     command to reattach the PV to the VG.

   * Now the repaired/replaced PV is ready to regain its data from its spare
     PV. First, make sure that the PV will allow extent allocation (via
     pvchange -x y). (Once a failed PV has its data spared, it will be
     marked to disallow extent allocation. This is done to ensure that the
     PV remains unused until it has been repaired.) Now, move all of the
     data from the active spare to the repaired PV (via pvmove). At this
     point, the VG is back to the state before the disk failed and was
     spared. The spare PV will again be available as a spare (in standby
     mode).

******************************************************************************
5.19.2 LV Timeouts

Without LV timeouts, the system continues to retry an I/O to a nonresponding
disk, possibly forever. If the disk finally responds, the I/O successfully
completes. However, in a case when the disk never responds, the I/O will
never complete and then never return to the caller. Thus, the caller will be
"hung" forever waiting for an I/O that will not complete. If an LV timeout
is specified (via the lvchange command with the -t command option), I/O to a
nonresponsive disk will also be retried, but only for a length of time that
does not exceed the specified timeout value. If the disk fails to respond
within that time, the system will return an I/O error to the caller; thus
the caller will not "hang" longer than the specified timeout value.

The error returned to the user is . This is a generic error signifying that
the I/O was not able to complete. There is no way to know precisely why the
I/O was unable to complete; it could be due to some other I/O error in
addition to exceeding the specified timeout.

******************************************************************************
5.19.3 Summary of Change

The following new command line options are added to the LVM commands to
support Automatic Hot Sparing and LV Timeouts:

----------------------------------------------------------------------------

  lvchange -t  To specify a timeout associated with an LV

  pvchange -z  To change a PV to/from a spare to a normal PV

  vgextend -z  To add a spare PV to a volume group

----------------------------------------------------------------------------

The following display commands have additional lines of output:

----------------------------------------------------------------------------

  lvdisplay  Display an LV's timeout value

  pvdisplay  Display sparing related info about a PV

  vgdisplay  Display sparing related info about PVs in the VG

----------------------------------------------------------------------------

To accommodate the LVM command enhancements and to pass information between
the LVM driver and LVM commands, several of the structures used in the LVM
driver to LVM commands system calls are changed to add new fields (no fields
are removed).

If a volume group has spare PVs and any spare is smaller than the largest
nonspare PV, there are times when a new warning message will be displayed.
This warning message will remind you that sparing (if necessary) might not
be successful. For sparing to succeed, the spare PV must be physically of
equal size or larger than the failed PV. Some examples of commands where
this warning may occur are:

   * vgextend: either when a "small" spare is added to a VG or a regular PV
     that is larger than the smallest spare is added to the VG

   * pvchange: to change a spare into a normal PV or visa-versa (for the
     same reasons as above)

   * vgchange: upon VG activation

In all of the above cases, the command itself will succeed.

******************************************************************************
5.19.4 Impact

Any product or tool that parses the output of any of the LVM display
commands (lvdisplay, pvdisplay, vgdisplay) may need to be aware of the new
lines of output.

Several kernel internal data structures are modified. Therefore, any product
or tool that "snoops" into kernel memory should not expect the layout of the
internal LVM data structures to match any prior release. Any tool or product
that programatically calls the LVM driver may not be compatible with the
10.30 release of the LVM driver.

******************************************************************************
5.19.5 Compatibility

For the Automatic Hot Sparing enhancement, there is no change to the
behavior of the system unless spare PVs are configured on the system and PV
failures occur.

For the LV Timeout (lvchange command), there is no change to the behavior of
LVs that continue to not make use of the -t command option (that is, the
default action for not specifying a timeout will be to behave as it did in
prior releases). For LVs that are now configured with a timeout and the
underlying PV (disks) are power failed for a time exceeding the specified
timeout, any pending user I/O will be "failed"; an is returned to the user.
Note that the user will not be able to determine if the I/O failed due to a
timeout or due to some other I/O error.

******************************************************************************
5.19.6 Configuration

These enhancements are only applicable to configurations using LVM. The
Automatic Hot Sparing functionality is only applicable to a single-node LVM
system (that is, not an OPS Clustered environment) that has the Mirrored
Disk/UX product installed (must have software mirroring for sparing to
work). If you do not have the Mirrored Disk product, sparing of data will
not be able to occur, even if spare PVs are configured in the volume group.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.20 NIO Fiber Link

For 10.30, the NIO/Fiber Link is supported. Support for SIO & WSIO I/O
forwarding is now available.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.21 PAM_AUTHTOK

If you are using PAM framework to conduct user authentication (calling
pam_authenticate() and pam_setcred() APIs), you should be aware that PAM
back-ends currently rely on testing whether the PAM_AUTHTOK field is NULL to
determine the position of the PAM back-end on the pam.conf stack. In
particular, a PAM back-end determines if it is the first module in the PAM
stack for finding out if the conversation function needs to be invoked to
obtain the user's password. This method of determining the position in the
PAM stack is important to applications that conduct multiple successful
authentications in one process life time, such as the dtsession of the
Common Desktop Environment. Such a program must clear the PAM_AUTHTOK item
after an authentication dialog. Otherwise, the program might authenticate
users with incorrect passwords.

The steps such a program should perform after an authentication dialog are:

   * Overwrite the characters of the existing PAM_AUTHTOK string. For
     security reasons, valid passwords should be held in memory for the
     minimum possible time.

   * free() the PAM_AUTHTOK storage. Step 3 will destroy the only pointer to
     this memory.

   * Call pam_set_item(pamh, PAM_AUTHTOK, (char *)NULL), where pamh is the
     PAM handle.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.22 Pluggable Authentication Modules (PAM)

******************************************************************************
5.22.1 Features

   * In HP-UX 10.30, PAM is put in the OS-Core fileset, which used to be in
     the CDE-PAM fileset in HP-UX 10.20.

   * PAM interfaces for applications (that is, PAM APIs) are supported.

   * The commands login, passwd, and su are modified to use PAM to
     authenticate users and change users' passwords. These commands depend
     on PAM to function properly.

   * PAM now supports commands on a per-user basis.

   * SAM has been enhanced to administrate PAM configuration (except the
     portion of DCE and per-user configurations).

******************************************************************************
5.22.2 Impact

PAM libraries (libpam and libpam_unix) and configuration file
(/etc/pam.conf) must be in the system for users to be able to log in or
change passwords.

******************************************************************************
5.22.3 Configuration

In addition to /etc/pam.conf, another new PAM configuration file,
/etc/pam_user.conf, is created. This file is used to configure PAM on a
per-user basis. The use of /etc/pam_user.conf is optional.
/etc/pam_user.conf is needed only if PAM applications need to behave
differently for various users.

Refer to the pam.conf(4) and pam_user.conf(4) manpages for more information.

******************************************************************************
5.22.4 Size Requirement

Approximately 120K additional disk space is required from HP-UX 10.20.

******************************************************************************
5.22.5 passwd

The incorporation of the PAM interface for password change/update is
transparent to users of passwd. However, you must configure pam.conf.

/sbin/passwd supports authentication only and will not provide the full
functionality of /bin/passwd.

The following subroutines are added to support PAM:

   * PAM_chauthtok() - changes passwd using PAM

   * passwd_exit() - ends PAM and exits

   * passwd_conv() - used to send/get information

Error checking is also added to support PAM.

For 10.30, the commands nispasswd, yppasswd and passwd are integrated into
the one command /usr/bin/passwd. For backwards compatibility, the commands
nispasswd and yppasswd can still be used, but they will be hard links to
/usr/bin/passwd.

If PAM_UNIX is not defined, passwd functions as it did in prior releases.

******************************************************************************
5.22.6 su.c

The incorporation of the PAM interface for su authentication and account
checking is transparent to users of su. However, you must configure
pam.conf.

The following subroutines are added to support PAM:

   * PAM_auth() - authenticates user and validates account

   * su_exit() - ends PAM and exits

   * su_conv() - used to send/get information

Error checking is also added to support PAM.

If PAM_UNIX is not defined, su functions as it did in prior releases.

******************************************************************************
5.22.7 login.c

login.c incorporates the PAM interface for login authentication and account
checking.

You must configure pam.conf.

******************************************************************************
5.22.8 map_ids.c

For 10.30, code is added to bypass the nsswitch engine to force calls to
local protected password database. The intent is to bypass NIS+.

If NISPLUS_COMSEC is not defined, map_ids.c functions as before.

******************************************************************************
5.22.9 Realtime (queued) signals - part of POSIX 1003.1b realtime extensions

For 11.0, realtime (queued) signals, from the POSIX 1003.1B standard, will
be added to the HP-UX kernel.

   * 8 (RTSIG_MAX) new signals, SIGRTMIN, SIGRTMIN+1 .. SIGRTMAX are now
     made available for application use, in addition to the existing 2
     signals SIGUSR1 and SIGUSR2. These new signals are referred to as real
     time signals.

   * A new signal posting posting interface, sigqueue(), is now made
     available, in addition to the existing kill() interface. It provides
     the facility of queueing signals to a process, and for the
     specification of a user defined value to accompany the signal.

   * The existing SA_SIGINFO flag parameter to sigaction() now also
     signifies the willingness of that process to receive queued instances
     of that signal.

   * The new sigwait() family of interfaces - sigwait(), sigwaitinfo() and
     sigtimedwait() are now made available. These allow a process to receive
     a signal synchronously, as opposed to handling it asynchronously via a
     signal handler. sigwaitinfo() allows the acceptance of information that
     accompanied the signal, such as the user defined value and the process
     id of the sender. sigtimedwait() is a timeout based version of
     sigwaitinfo().

   * sysconf() now also announces the availability of real time signals on
     the system, the number of such signals available, and the maximum
     number of instances of a signal that may be sent by a process and
     remain pending at receivers.

   * Two new tunables, ksi_alloc_max and ksi_send_max. ksi_alloc_max is the
     maximum number of signal information structures that can be allocated
     (system-wide). ksi_send_max is the maximum number of signal information
     structures that can be sent by a process and remain pending at
     receivers.

==============================================================================
5.22.9.1 Impact

   * sigqueue() extends the facilities provided by kill() by supporting

       1. Reliable signal delivery: subsequent occurrences of a pending real
          time signal are now guaranteed to be delivered, provided the
          target process of that signal has enabled the receiving of queued
          signals via the SA_SIGINFO flag parameter to sigaction().

       2. Prioritized delivery: when multiple instances of real time signals
          are pending at a process, they are delivered in the order SIGRTMIN
          (first) to SIGRTMAX (last). Multiple instances of a given real
          time signal are delivered in FIFO order.

       3. Differentiation of instances: an application-defined value can now
          be sent with each real time signal, thus allowing applications to
          differentiate between multiple instances of a signal.

     These features combine to offer queued signals as a simple, reliable,
     low-bandwidth interprocess communication facility.

   * Other POSIX 1003.1B features such as real time timers, message queues
     and asynchronous I/O can generate events, such as an expired timer,
     empty message queue or completion of an asynchronous I/O request, which
     can be notified reliably using these signals.

   * The sigwait() family of interfaces allows for synchronous signal
     acceptance. This allows applications using signals to be designed
     around a model of polled event notification. This model complements the
     software interrupt model that is offered by the existing signals
     mechanism.

==============================================================================
5.22.9.2 Performance

The new functionality should not have any significant impact upon the usage
of the system. The signal queueing mechanism is designed to be efficient as
well as conservative in its resource usage.

==============================================================================
5.22.9.3 Compatibility

The queueing mechanism for signals is an extension, and not a change, to the
existing signals implementation. Thus, applications written based on the
existing mechanism should not be affected in any way. For example, the
behavior of kill() remains the same, as does the disposition to subsequent
signals when an instance of that signal is already pending at a target
process.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.23 POSIX Real-time Semaphores

The POSIX semaphores are counting semaphores which conform to the POSIX
1003.1B Realtime Extension specification. These semaphores are needed
because the current implementations of the System V IPC semaphores and HP-UX
semaphores did not meet the POSIX requirements for a real time system. Two
kinds of semaphores are supported: named and unnamed. Named semaphores are
identified by a character string name while unnamed semaphores are
identified by a shared object initialized to be a semaphore structure.

The semaphore operations provided by both types of semaphores are:

   * sem_wait (blocking lock)

   * sem_trywait (nonblocking lock)

   * sem_post (unlock)

   * sem_getvalue (read the value)

The management routines for named semaphores are:

   * sem_open (create/enable access)

   * sem_close (remove access for current process)

   * sem_unlink (remove from name space)

The management routines for unnamed semaphores are:

   * sem_init (initialize/enable access)

   * sem_destroy (remove the semaphore)

Real-time threads will be woken up in order of priority.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.24 Software Distributor (SD-UX)

******************************************************************************
5.24.1 Features

   * Source depot auditing is now provided on the machine that contains the
     source depot.

   * Multi-Stream support is added, which enables SD-UX to store products
     and file sets of more than one type in a single SD-UX depot, manage
     these software collections, and install them on systems.

   * The -i option is added to swlist, which invokes the Interactive User
     Interface.

   * The SD-UX log files can now be viewed interactively.

   * Interactive swinstall and swcopy automounts the CD-ROM device.

   * Any previously successfully selected depot is offered as a choice
     during an interactive command.

   * SD-UX enforces UNIX95 "classic" behavior for HP-UX 10.30.

******************************************************************************
5.24.2 Auditing

If both the source and target machines are updated to 10.30, the system
administrator at the source depot machine can turn the audit functionality
on or off. This functionality tracks who pulls what software and when using
the source depot information.

If the system administrator at the source depot machine sets

swagent.source_depot_audit=true

in the /var/adm/sw/defaults file, an swaudit.log file is created on the
source depot (for writable directory depots) or in /var/tmp (for tar image,
CD-ROM, or other nonwritable depots). This works like the swagent.log for
the source depot.

You can also use the swlist Interactive User Interface (swlist -i -d) to
view the audit information on a remote/local depot based on your language
preference, as long as the system has the corresponding SD-UX message
catalog files on it. For example, you can view the source audit information
in Japanese one time and view the same information in English the next time.
You can also print the audit information or save the information to a file.

******************************************************************************
5.24.3 Compatibility Attributes

The existing SD-UX uname compatibility attributes have been added to a new
compatibility_filter object that can be included in alternate roots and
depots. The attributes are: os_name, os_release, os_version, and
machine_type. These attributes are used to filter software installed on
alternate roots for compatibility. For example, a particular NFSD shared
root might be compatible with all 9000/7xx software. A particular depot may
be compatible with all software. Optionally, the new compatibility_filter
object may be repeated to declare multiple compatibility groups.

The syntax and semantics of the attributes remains unchanged from SD-UX
10.10.

==============================================================================
5.24.3.1 Packager PSF Changes

Certain SD-UX attributes can now be specified at the file set or product
level. If specified at the product level, file sets that do not specify the
attributes will use the values from their parent product (which will provide
the existing 10.10 behavior). File sets that do provide the attributes will
use their own values, not the values of their parent product. This allows a
single product to contain, for example, a file set compatible with both s700
and s800, another file set specific to s700, and another specific to s800.
The attributes affected are os_name, os_release, os_version, machine_type,
architecture, and revision.

==============================================================================
5.24.3.2 swinstall Command Line Interface (CLUI) Changes

There is a new way to specify the revision and architecture attributes that
can now also be used for specification at the file set level. This is
accomplished through the fa= and fr= software specification fields, which
act similar to a= and r= at the product level, but apply at the file set
level.

==============================================================================
5.24.3.3 swlist Command Line Interface (CLUI) Changes

The formerly product level attributes os_name, os_release, os_version,
machine_type, and architecture are available for both products and file sets
(they are software level attributes). They can be listed with one of the
following:

swlist -l fileset

swlist -l product

The attributes os_name, os_release, os_version, machine_type and
architecture can be accessed for depots, using

swlist -l depot

swlist -l root

swlist -l shroot

swlist -l prroot

Here are some swlist examples for a product packaged with multiple filesets
per product:

# swlist -a software_spec -l fileset -d TEST1.* @ /tmp/mydepot
# Initializing...
# Contacting target "renewd"...
#
# Target: renewd:/tmp/mydepot
#

TEST1.TEST-F1 TEST1.TEST-F1,r=1.0,a=S700,v=HP
TEST1.TEST-F2 TEST1.TEST-F2,r=1.0,a=S700,v=HP,fa=blorg
TEST1.TEST-F2 TEST1.TEST-F2,r=1.0,a=S700,v=HP,fa=blat

Note that TEST-F2 is present two times: once with an architecture of blorg
and once with blat. You can specify all the file sets under TEST1 by
specifying the architecture directly:

# swlist -a software_spec -l fileset -d TEST1.*,fa=blorg @ /tmp/mydepot
# Initializing...
# Contacting target "renewd"...
#
# Target: renewd:/tmp/mydepot
#

TEST1.TEST-F2
TEST1.TEST-F2,r=1.0,a=S700,v=HP,fa=blorg

The results are similar for fr=fileset_revision.

==============================================================================
5.24.3.4 swmodify Command Line Interface (CLUI) Changes

The swmodify command can modify the os_name, os_release, os_version,
machine_type, and architecture attributes for either products or file sets
(instead of only products as in previous releases). These variables have the
same syntax and semantics as the previous product level attributes.

swmodify can also modify the os_name, os_release, os_version, machine_type,
and architecture attributes of depots or roots, except in the case of the /
(root). These attributes are in a compatibility_filter object and now filter
software installed to alternate roots the same way that the uname values
filter software installed on a host's local root.

Previously, swinstall did not perform any compatibility filtering when
installing software on a depot or alternate root. This was because depots
and alternate roots did not have any compatibility attributes against which
filtering could be performed. SD-UX now performs compatibility filtering
against depots and alternate roots using the compatibility attributes, as
described above. This filtering may be turned off through the swinstall
command line option -x allow_incompatible=true.

When installing from a medium containing multiple revisions of products to a
root, the source must be resolved to a single revision per selected file
set. For example, if the source depot contains the following:

Product1.CORE (9000/8??)

Product1.CORE (9000/7??)

only one file set can be installed on a given root, but both can be copied
with swcopy to a depot. If the compatibility filtering does not result in
one revision for each file set for installing on a root, an error is
produced and the install fails.

==============================================================================
5.24.3.5 swcopy Command Line Interface (CLUI) Changes

The change to swcopy, similar to that for swinstall, is that depots have
compatibility attributes similar to roots. However, there is one key
difference. For depots, there may be more than one revision of a particular
file set selected for installation. That is, the compatibility attributes
need not resolve multiple source revisions to a single software item. For
installing on / (root) or a target private root, it must be one revision for
each file set, as described above.

==============================================================================
5.24.3.6 Interactive User Interface Changes

Because compatibility is now maintained at the file set level, the
subproduct/fileset level of the Software Selection Window is updated to add
an architecture column and to filter for compatibility (as has always been
done at the bundle and product levels).

Because depot and alternate root targets have uname attributes (as primary
roots always have), compatibility filtering is now done for any target.
Also, in the Target Selection Screen, which is available when running on an
NFSD server, the hardware and OS columns are added. So, these attributes are
shown for private roots.

******************************************************************************
5.24.4 Interactive swlist

Interactive swlist is invoked by typing swlist -i for browsing roots and
swlist -i -d for browsing depots. This allows interactive browsing (no
operations) of roots, depots, and the software on them.

Interactive swlist for roots and depots allows viewing of the log file for
that depot or root. This log file includes multiple sessions that occurred
for that root or depot in the past. Interactive swlist for depots allows
viewing of the audit logfile. Again, this will include multiple past
sessions.

******************************************************************************
5.24.5 Additional Changes

   * Whenever you successfully access a depot source during an interactive
     command (such as swinstall -i), any further invocations of the same
     command will remember the host for that source and offer it in the
     choices list for the "Hostname" on the "Source Selection" dialog.

   * SD-UX uses a new script provided by SAM called
     /usr/sam/lbin/find_cdroms. If this script is present, SD-UX can
     determine the number and device files for local CD-ROM devices. If
     SD-UX determines that there is exactly one CD-ROM device, interactive
     swinstall and swcopy mount the CD-ROM in that device to the default
     CD-ROM directory. If SD-UX mounted the CD-ROM, it will unmount the
     CD-ROM on exit or when you change the source.

   * All processes invoked by SD-UX have an environment that forces
     "classic" command behavior in the following manner:

Shell environment variable UNIX95 is cleared. If it was set in the
environment from which the SD-UX command was installed, that setting is
nullified for the duration of the SD command execution.

Shell environment variable PRE_U95 is set to 1.

******************************************************************************
5.24.6 Impact

There is a small increase in disk space usage on the system where the source
depot is located.

There are also several size impacts:

   * If every file set in the HP-UX English Runtime Bundle contains the new
     compatibility attributes (which is not necessary, but is a worst case
     scenario), the bundle will increase in size by 80 to 100 KB, if no
     other factors are considered (such as space savings from merged media).
     The impacts on other bundles is similar and is proportional to the
     number of filesets in the bundle using the attribute.

   * If multiple operating system versions are merged onto a single media,
     there will be little or no sharing of file sets. The merged media will
     be the sum of the sizes of the separate media.

   * If different hardware architectures are merged onto a single media for
     HP-UX, considerable sharing is possible because many file sets are the
     same for both the s700 and s800. The following data gives an estimate
     of the maximum extent to which the 700 and 800 HP-UX may be merged.
     This data was generated by comparing files between a 10.10 700 and 800
     depot. Note that this represents an upper bound and that the actual
     space saved by combining products is likely to be less. Note also that
     setting file set level compatibility attributes is optional, but is
     recommended.

        o Total system size: 313.87 MB

        o Common files between 800/700: 301.98 MB (96%)

Commands that are called from control scripts and from other SD agent child
processes are executed with their "classic" behavior. Control scripts and
other code that calls those commands can expect their classic behavior.

******************************************************************************
5.24.7 Compatibility

The Multi-Stream attributes are stored in SD-UX physical media (tapes,
CD-ROMs, and so on). The new uname attributes are added to the file set
level. These file set level compatibility attributes are not used by older
versions of SD-UX. This is not a problem for the update process because
swgettools is used to obtain a version of SD-UX which can use all the new
attributes. However, if a disk depot is created, file set level
compatibility filtering will not be available to systems running an older
SD-UX and installing from this depot. If the depot has multiple file set
revisions installed, they must be individually specified if they are to be
installed with an older SD-UX by using their software specification.

******************************************************************************
5.24.8 Performance

There may be a slight performance impact from adding compatibility filtering
to a fileset level.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.25 Support for Dates Beyond the Year 2000

As of 10.30, HP-UX core supports dates beyond the year 2000. Releases prior
to 10.30 do not fully support these dates. The main differences between the
releases are in the use, representation, and interpretation of the defined
date fields. Functionality prior to 10.30 depends on the assumptions of the
date fields being less than 2000 for their time/date operations. For
example, the structure field tm_year is defined to be the year since 1900,
but it is been wrongly interpreted as the year of the century. For 10.30,
modifications were made to correct all the above mentioned types of errors,
thus ensuring HP-UX core can declare itself ready for the Year 2000.

The following commands now support dates beyond year 2000:

   * at(1)

   * co(1)

   * date(1)

   * kermit(1)

   * rlog(1)

In addition, date(1) and at(1) have increased their maximum date support
from December 31, 2030 23:59:00 to December 31, 2037 23:59:00

Modifications have been made to the following APIs in the standard C
library:

   * getdate(3C)

   * strptime(3C)

Both getdate(3C) and strptime(3C) have changed to adopt the following
interpretation for two-digit year input (<YY>) when the century has not been
otherwise specified:

   * 70-99 is interpreted as 1970-1999

   * 00-69 is interpreted as 2000-2069

Formerly, when a two-digit date was used, getdate(3) assumed the same
century as the system clock and strptime(3C) assumed the 20th century.

Note that although changes were made to support dates beyond the year 2000,
these and other libc date routines have other limitations. Most routines,
including mktime(3C), strptime(3C), and other routines that return a time_t
data type or accept a time_t data type as a parameter, are effective and
accurate only for dates within the range representable by the time_t data
type. The routines for which the time_t limitation apply are:

----------------------------------------------------------------------------

  asctime (3C)   ctime (3C)    getdate (3C)   localtime (3C)

  gmtime (3C)    mktime (3C)   nl_ctime (3C)  nl_cxtime (3C)

  strptime (3C)

----------------------------------------------------------------------------

The strptime(3C) routine now returns a NULL pointer for dates not
representable by a time_t data type. For details of the changes, refer to
the manpages for the individual command or library API.

Applications using getdate(3C) or strptime(3C) to interpret dates specified
with two digits when the century has not been otherwise specified will
experience the behavior changes as described above. This will affect both
source code compatibility and binary compatibility for applications using
these routines. If applications are using two-digit years as in persistent
storage (such as config files or database records), sending two-digit years
over a network could result in problems due to different interpretations of
this data.

******************************************************************************
5.25.1 Patches for Earlier Systems

Patches are available for 10.20, 10.10, and 10.01 systems to provide similar
solutions for Year 2000 issues.

==============================================================================
5.25.1.1 Patches for 10.20

----------------------------------------------------------------------------

  PHCO_10123  PHCO_10124                 PHCO_10125   PHCO_8979  PHNE_9381

  PHNE_9381   PHNE_9860                  PHNE_9785    PHNE_9081  PHCO_9014

  PHCO_9014   PHCO_8820                  PHCO_8626    PHCO_8133  PHCO_9508

  PHKL_9921   (Series 700 only; no
              Series 800 patch is
              required)

  PHNE_9786   PHCO_10175

----------------------------------------------------------------------------


==============================================================================
5.25.1.2 Patches for 10.10

----------------------------------------------------------------------------

  PHCO_10120  PHCO_10121                 PHCO_10122   PHCO_8981  PHNE_9379

  PHNE_9859   PHNE_9181                  PHNE_9425    PHCO_9013  PHCO_8819

  PHCO_8625   PHCO_7934                  PHCO_8130    PHCO_9648  PHCO_9507

  PHKL_10142  (Series 700 only; no
              Series 800 patch is
              required)

  PHCO_10175

----------------------------------------------------------------------------

==============================================================================
5.25.1.3 Patches for 10.01

----------------------------------------------------------------------------

  PHCO_10112  PHCO_10111      PHCO_10110  PHCO_9419   PHNE_9379  PHNE_9859

  PHNE_9181   PHNE_9424       PHCO_9012   PHCO_8819   PHCO_8624  PHCO_7933

  PHCO_8131   PHCO_9648       PHCO_9497

  PHKL_10143  (Series 700
              only; no
              Series 800
              patch is
              required)

  PHCO_10175

----------------------------------------------------------------------------

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.26 System Compatibility

This section points you to tools and other sources of information you will
need to upgrade from HP-UX 10.x to 10.30.

If you are installing HP-UX 10.30 or updating from an HP-UX 10.x release to
10.30, refer to "Installing HP-UX 10.30 and Updating HP-UX 10.x to 10.30"
(part number B2355-90126), which details the steps you must take.

Also see Chapter 3, "Compatibility", and Chapter 5, "Major Changes for HP-UX
10.30" for more information.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.27 System Configuration

----------------------------------------------------------------------------
CAUTION

Release 10.30 does not support all workstation models. Refer to "Read Me
Before Installing/Updating HP-UX 10.30" (HP part number B3782-90141) for
details.

NFS Diskless functionality is not supported in HP-UX Release 10.30. Do not
update your server to HP-UX Release 10.30 if you intend for that server to
operate as an NFS Diskless server.

----------------------------------------------------------------------------

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.28 Technical Print Service

The Technical Print Service (TechPrintServ) is a network-transparent
printing system that allows X applications to render to nonscreen devices in
the same manner as they render to displays. The product is also referred to
as the X Print Service.

Technical Print Service provides extensions to the HP X Server that makes it
capable of generating Page Description Language (PDL) output. Applications
integrated with the Technical Print Service can send printed output to a
variety of printers regardless of the associated page description language.
Print drivers provided by the Technical Print Service include PostScript,
PCL5+, and raster image.

There is also a Developers Kit that provides an API and example code.

For more information, see the tps(5) manpage.

******************************************************************************
5.28.1 Impact

The imageprint application, which is released with MPower//Web, uses the
Technical Print Service. The combination of imageprint and TechPrintServ
functionally replaces the image printing capability of SharedPrint.

******************************************************************************
5.28.2 Performance

As used by imageprint, performance is expected to be similar to SharedPrint.

******************************************************************************
5.28.3 Size Requirement

The size requirement is 12348 KB.

******************************************************************************
5.28.4 Machines Affected

There is no restriction on machine types for the MinimumRuntime subproduct.
The Runtime subproduct requires an Xserver.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.29 Trusted Table Synchronization Daemon (ttsyncd)

ttsyncd is a new daemon for 10.30 that maintains the NIS+ password table in
sync with the NIS+ trusted table. ttsyncd is automatically started at boot
time if NIS+ is configured on the system. The system must an NIS+ server.

You can control the startup of this daemon via the system startup script
comsec.

Without ttsyncd, the trusted table will not be created and trusted mode
cannot be centrally administered.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
5.30 Upgrade Tool

10.30 is the last release in which the Upgrade.UPG-ANALYSIS Upgrade Tool
will be supported.

##############################################################################
Chapter 6: Other Operating System and Subsystem Changes

This chapter covers the following topics:

   * Netscape Fasttrack 11.0

   * Curses - - changes at 10.30

   * Distributed Computing Environment (DCE) - - changes at 10.30

   * Distributed Debugging Environment (DDE) - - changes at 10.30

   * Diagnostics - - changes at 10.30

   * FORTRAN 77 and Fortran 90 - - changes at 10.30

   * fpclassify - - changes at 10.30

   * HP Performance Analysis Toolkit - - changes at 10.30

   * Kernel Header Files - - changes at 10.30

   * Kernel Instrumentation (KI) Traces - - changes at 10.30

   * Linker for 10.30 - - changes at 10.30

   * Math Library - - changes at 10.30

   * Multimedia for 10.30 - - changes at 10.30

   * SAM (System Administration Manager) for 10.30 - - changes at 10.30

   * SharedPrint/UX - - changes at 10.30

   * SwitchOver/UX- - changes at 10.30

   * VUE (HP VUE 3.0) - - changes at 10.30

   * X Windows - - changes at 10.30

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6.1 Netscape Fasttrack 2.01 and Navigator Gold 3.01

For 11.0:

Starting with 11.0 Netscape's Navigator Gold (World Wide Web client) and
Fasttrack (HTTP server) are part the CORE HP-UX software. Users of this
software should note the following :

   * the directory /usr/lib must be linked to /lib (as with "ln -s /usr/lib
     /lib") for the server to work correctly. This link exists on most
     systems, but must be created if it does not.

   * optional plug-ins for Fasttrack and Navigator must be compiled and
     linked on a 9.X system.

For more information about these products, consult the on-line manuals in
/opt/ns-fasttrack/doc and /opt/ns-navgold/doc.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6.2 Curses

For 10:30:

******************************************************************************
6.2.1 Features of X/Open Curses

The shared library libcurses.sl, linked to libxcurses.1, complies to the
X/Open CAE specification for the curses library, X/Open Curses, Issue 4,
Version 2 (XPG4v2).

******************************************************************************
6.2.2 Features of HP Curses

The legacy HP Curses library (libHcurses.sl or libHcurses.a) is not X/Open
compliant.

******************************************************************************
6.2.3 Summary of Change to X/Open Curses

A number of API declarations are added and changed in the <curses.h> and
<term.h> header files to comply to XPG4v2. As a result, no binary
incompatibilities were introduced.

Changes:

The following changes introduce source incompatibilities for ANSI C and C++
users:

   * The prototype for the tparm API (declared in <term.h>) changed from

     extern char *tparm (char *, ...);

     to

     extern char *tparm (char *, long, long, long, long, long \
     long, long, long, long);

     To use the new prototypes, ANSI C users might have to change their
     parameter specifications and recompile. Alternatively, the old
     prototypes can still be used by defining __10_10_COMPAT_CODE to the
     preprocessor.

   * The APIs color_set and wcolor_set each added one parameter.

The following changes introduce source incompatibilities that might result
in compiler errors for C++ users and warnings for ANSI C users:

   * a parameter formerly of type int was changed to type bool for the
     following APIs: clearok, intrflush, isendwin, keypad, leaveok, meta,
     nodelay, notimeout, scrollok, syncok, and use_env.

   * a parameter of type wint_t (*) (wint_t) was changed to type int(*)
     (int) in the API vid_puts.

   * X/Open Enhanced Curses features in the <curses.h> and <term.h> header
     files are available to applications only if _XOPEN_SOURCE_ EXTENDED is
     defined to the preprocessor. X/Open applications that use data types,
     constants, or variables defined as Enhanced Curses features might
     encounter compilation errors if _XOPEN_SOURCE_ EXTENDED is not defined.
     See the XPG4v2 specification or the white paper "Migrating HP Curses
     Applications to Xcurses" for detailed information.

   * Some APIs not specified by XPG4v2, but available in previous releases
     of HP-UX, have been retained as unsupported APIs. Using these features
     is not recommended because they are not supported by X/Open and they
     are not portable across other UNIX95 branded systems. X/Open
     applications that need these features must define __HP_CURSES_COMPAT to
     the preprocessor. See the white paper "Migrating HP Curses Applications
     to Xcurses" for detailed information.

   * It is no longer necessary to define _XOPEN_SOURCE_EXTENDED to include
     the basic X/Open Curses sections of <curses.h> and <term.h>. If no
     Enhanced Curses features are needed, you should instead define
     _XOPEN_SOURCE. _XOPEN_SOURCE_EXTENDED should be defined to make use of
     X/Open Enhanced Curses features.

   * Applications can force inclusion of functions rather than macros for
     many APIs by defining NOMACROS to the preprocessor (this switch existed
     in previous releases, but was undocumented).

   * C++ compilers that implement bool as an internal keyword are not
     compatible with this implementation of X/Open curses.

******************************************************************************
6.2.4 Summary of Change for HP Curses

Header files for the HP Curses library (libHcurses.sl or libHcurses.a) have
been moved to:

/usr/old/usr/include/curses.h

/usr/old/usr/include/term.h

HP Curses applications can make use of these header files by

   * including them directly (the recommended approach):

     #include "/usr/old/usr/include/curses.h"

   * defining __HP_CURSES to the preprocessor:

     cc -D__HP_CURSES foo.c -lHcurses

******************************************************************************
6.2.5 Impact on X/Open Curses: Compliance to X/Open Curses, Issue 4, Version
2

==============================================================================
6.2.5.1 API prototype declarations

X/Open applications that use the old prototypes for tparm, color_set, or
wcolor_set will encounter a compilation error in ANSI-C mode if
__10_10_COMPAT_CODE is not defined to the preprocessor.

==============================================================================
6.2.5.2 X/Open Enhanced Curses features

X/Open applications that use constants and variables defined as X/Open
Enhanced Curses features and those that refer to the address of API defined
as X/Open Enhanced Curses features will encounter a compilation error if
_XOPEN_SOURCE_EXTENDED is not defined to the preprocessor.

******************************************************************************
6.2.6 Curses-Color

Curses-Color is a COSE-compliant color-management package. A later release
will provide the next step in COSE compliance, support for multibyte
Application Programmer Interfaces (APIs).

In addition to color, Curses-Color provides some 260 APIs, rather than the
135 offered by HP-UX Curses.

Curses-Color affects curses routines that:

   * Add character strings to a curses window.

   * Manipulate the curses window background.

   * Create curses borders.

   * Provide access to various low-level curses functions.

   * Provide interfaces to the terminfo database.

   * Create curses windows.

   * Control refresh.

   * Read or write a curses screen from or to a file.

   * Handle soft labels.

The product consists of two filesets, CURSES-MIN and CURSES-PRG.

   * CURSES-MIN:

     Contains the shared library and related commands and a minimal set of
     terminfo files.

     You must load CURSES-MIN in order to use Curses-Color.

   * CURSES-PRG:

     Contains the archived library and the header files curses.h and term.h.

     You need to load CURSES-PRG only if you are going to compile and link
     programs using Curses-Color.

   * Compile instructions:

     Your makefile must supply the include path and library path as follows:

     -I /usr/include/curses_colr

     -l cur_colr

   * Commands:

     The Curses-Color commands are: tic_colr, infocmp_colr, captoinfo_colr,
     and tput_colr.

   * terminfo path:

     The terminfo database is /usr/share/lib/terminfo_colr.

     If Curses-Color does not find terminfo file there, it looks in
     /usr/share/lib/terminfo.

==============================================================================
6.2.6.1 Effect on Applications

Existing applications are not affected. They will continue to run as they
did until you decide to incorporate Curses-Color. Do not move or remove the
HP-UX curses library, /usr/lib/libcurses.sl.

If you modify an application to use the Curses-Color library, you may need
to change some calls to curses APIs.

******************************************************************************
6.2.7 Curses Documentation

In addition to the manpages for the HP V.4 Curses Library, the following
documentation is available. Prentice Hall Publisher's toll-free phone number
is 1-800-947-7700.

UNIX Curses Explained ($44.00)

Author: Berny Goodheart

Publisher: Prentice Hall

ISBN# 0-13-931957-3

The above manual is highly recommended for application developers who are
new to Curses programming.

UNIX System V Release 4 Programmer's Reference Manual ($45.00)

Author: AT&T UNIX System Laboratories

Publisher: Prentice Hall

ISBN# 0-13-947029-8

UNIX System V Release 4 System Administrator's Reference Manual

-49

Author: AT&T UNIX System Laboratories

Publisher: Prentice Hall

ISBN# 0-13-947011-5

UNIX System V Release 4 System Files and Devices Reference Manual

-41

Author: AT&T UNIX System Laboratories

Publisher: Prentice Hall

ISBN# 0-13-951302-7

Terminal Control: User's Guide

HP 9000 Computers

HP Part No. B1862-90013

This is the HP Curses 9.0 Manual which is provided with the 9.0
documentation set for basic information on Curses.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6.3 Distributed Computing Environment (DCE)

For 10.30:

HP DCE/9000 V1.6 Client is bundled and delivered with the HP-UX 10.30 CORE
software. The DCE 1.6 Client is basically the same as the DCE 1.5 client
(which is bundled with HP-UX 10.20), with the following exceptions:

   * The DFS client software is no longer bundled or available as part of
     the HP DCE client software. Enhanced DFS client and server for HP-UX
     10.20 is available and can be ordered:

     -----------------------------------------------------------------------

       B5516AA   DCE/9000 Enhanced DFS Client CD-ROM Kit (for Series 700
                 or 800, includes docs and license to use)

       B5517AA   DCE/9000 Enhanced DFS Server CD-ROM Kit

       B3786BA   DCE/9000 Enhanced DFS Server License (for S800) DFS is
                 not yet available on HP-UX 10.30.

     -----------------------------------------------------------------------

   * GDS has been decommissioned at HP-UX 10.30. However, support is
     maintained for the XDS/XOM libraries.

   * Several header files, manpages, binaries, libraries, and message
     catalogs have been moved out of the DCE client bundle and can be found
     in a new DCE product available on the HP-UX 10.30 Application Release
     Media (part number B6192AA). The filesets that have moved from the DCE
     client for this product are:

     DCE-CoreAdmin

     DCE-CoreTools

   * In addition, a new fileset, DCE-SGUARD, is available as part of the
     DCE-CoreAdmin product and contains a set of templates and scripts you
     might find useful when attempting to integrate DCE environments with
     the HP High Availability product.

   * HP-UX 11.0 supports applications built with either kernel threads or
     CMA threads (user-space threads). However, a threaded application can
     use either user-space threads or kernel threads. Using both CMA and
     kernel threads in the same application is not supported.

   * The library libd4r[.sl.a] is made available for customers requiring
     support for threaded applications that continue to use the older POSIX
     "-r" (reentrant) routines, formerly available in libc-r (obsolete at
     10.01) and in libc.l (10.10). For more information, refer to the online
     release note entitled "HP DCE/9000 Version 1.6 Client Software for
     HP-UX 10.30 Release Note", which you can find in
     /opt/dec/newconfig/Relnotes/HPDCE1.6RelNotes.text.

   * DCE client is UNIX 95 clean.

   * DCE client supports dates beyond the year 2000.

   * The following additional DCE components are obsoleted:

     DCE Cell Monitor

     DCE Val

     HPCamera

******************************************************************************
6.3.1 Functionality

For 10.30:

No new functionality has been introduced into the HP DCE/9000 Version 1.6
client at 10.30.

******************************************************************************
6.3.2 Impact

For 10.30:

There is no impact to the general (non-DCE) user if they do not recompile.
Those who want to recompile and who previously relied on headers/libs that
have moved to the HP-UX 10.30 Application Release Media (part number
B6192AA), will need to install B6192AA.

******************************************************************************
6.3.3 Compatibility

For 10.30:

HP DCE 1.6 supports binary compatibility with HP DCE Version 1.4/1.4.1 and
HP DCE Version 1.5.

******************************************************************************
6.3.4 Optional-Bundled Software

For 10.30:

This software is optionally installable. That is, it is included on the
HP-UX 10.30 media and is available for installation, but is not included in
any of the default HP-UX bundles.

The optional-bundled software includes:

   * Manpages and online help for bundled software

Consult your HP Sales Representative (SR) or Service Engineer (SE) for
details.

On a 10.30 system:

/opt/dce/newconfig/RelNotes/HPDCE1.6RelNotes.ps

/opt/dec/newconfig/Relnotes/HPDCE1.6RelNotes.text

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6.4 Distributed Debugging Environment (DDE)

For 10.30:

The DDE Symbolic Debugger version 4.1 is part of the Programmer's Toolset
with these product numbers:

B3472AA

B3476AA

B3477AA

B3479AA

B3550AA

******************************************************************************
6.4.1 Summary of Change

DDE 4.1 operates on applications that use kernel threads. The same commands
used to debug user-threaded (CMA) applications in prior versions of DDE are
used to debug kernel threads in version 4.1.

DDE 4.1 supports an option for data watchpoints which, under certain
circumstances, significantly speeds the target program running under DDE
when such watchpoints are in effect.

DDE 4.1 contains numerous bug fixes.

All these items are described in detail in the HP-UX Programming Tools
Release Notes (part number 5965-4409).

******************************************************************************
6.4.2 Changes to the Menu Bar

The HP DDE menu bar now contains a "Tools" pull-down menu with one
selection, "Performance Analyzer". This menu selection starts the Puma
performance analysis tool (one of the tools included in the HP Programmer's
Analysis Kit), allowing you to run Puma while debugging a program. In
addition, the "File:Quit" menu selection has changed to "File:Exit".

******************************************************************************
6.4.3 Impact

The primary impact of DDE 4.1 is its ability to debug programs that use
kernel threads, with all the threading features formerly available for
user-threaded applications.

The impact of fast watchpoints is that you are able to set watchpoints on
global data and expect the program being debugged to run at normal speed
under most circumstances.

******************************************************************************
6.4.4 Compatibility

All previous DDE functionality and scripts (for versions 4.01 and 4.0) will
continue to operate as before.

DDE version 4.1 will not operate under versions of HP-UX prior to 10.30.
Prior versions of DDE(4.01 and under, as well as XDB) will operate under
10.30, but will not enable debugging of kernel threads.

******************************************************************************
6.4.5 Performance

There is no change in performance in DDE4.1 except that data watchpoints
will, under appropriate circumstances, allow the program being debugged to
run at normal speed rather than slowed significantly as is with prior
versions of DDE.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6.5 Diagnostics

For 10.30:

The online diagnostic system (sysdiag) is being replaced by a new online
diagnostic system called Support Tool Manager (STM). STM provides hard- ware
information, tools, verifiers, and exercisers. Diagnostics and expert tools
will still require passwords.

******************************************************************************
6.5.1 Summary of Change

The STM diagnostic system began shipping with the HP-UX 10.10 release and
has been evolving through the HP-UX 10.20 release, with the final version
being completed for the HP-UX 10.30 release.

The STM diagnostic system can be accessed through any of the interfaces
noted below. You can access the system by entering the mnemonic for the
appropriate interface (xstm, mxtm, or cstm). The STM interfaces are:

   * Graphical (xstm) - highly intuitive graphical interface.

   * Menu (mstm) - highly intuitive menu-based interface.

   * Command line (cstm) - low level interface suitable for being driven by
     scripts.

The software will be distributed on the HP-UX Support Media and will also be
instantly ignited on all systems requesting this option.

The STM diagnostic system consists of a group of modules instead of a single
diagnostic with many functions. The user interface allows you to run a
module on several devices at the same time. You can start tests running on
more than one system from within theSTM user interface.

The set of tools that are provided with the new STM diagnostic system
include the following:

INFORMATION MODULE

These modules provide detailed information about hardware. This includes
product ID, path, firmware revision, and onboard log information, if
available.

DIAGNOSTICS

These modules perform a complete test of the hardware. They isolate failures
to an FRU or a component, if possible.

EXERCISERS

These modules help reproduce intermittent problems by stressing the hardware
in such a way as to equal or exceed the maximum stress expected in a user
environment.

VERIFIERS

These modules quickly verify that the hardware is functional.

EXPERT TOOLS

These sophisticated trouble-shooting tools are for expert users. They are
interactive tools with the same look and feel as the STM user interface.

FIRMWARE UPDATE TOOLS

These tools provide you the capability to update firmware on hardware
devices.

To start the STM diagnostic system, type xstm, mstm, or cstm at the HP-UX
prompt. To obtain more information on this new system, see the stm manpage.
The diagnostic system will create a map of the system when it has been
started. Operations can be performed on an individual device or class of
device. The help facility in the diagnostic system provides more information
on the system and individual tools.

******************************************************************************
6.5.2 Impact and Compatibility

If you have developed scripts to perform any diagnostic-related functions,
you will have to modify them to use the new cstm interface.

******************************************************************************
6.5.3 Performance

Performance is improved because by using the new diagnostic system, you can
obtain information on previous tests run on each system. You can also test
multiple systems from one host.

******************************************************************************
6.5.4 Size Requirement

The disk space utilized by the new diagnostic system is approximately the
same as the previous system.

******************************************************************************
6.5.5 Obsolescence

With the obsolescence of the sysdiag diagnostic system, the system log files
(lognnnn) will be converted automatically so they can be interpreted by the
new logtool utility.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6.6 FORTRAN 77 and Fortran 90

For 10.30:

For the FORTRAN 77 and Fortran 90 compiler, the following ISU products are
revised for 10.30:

B3906AA FORTRAN 77 for s700

B3908AA FORTRAN 77 for s800

B3906BB Fortran 90 for s700

B3908BB Fortran 90 for s800

Fortran 90 and FORTRAN 77 is revised to run on 10.30 and to take advantage
of the kernel threads feature introduced in 10.30. A detailed listing of
changes is described below.

******************************************************************************
6.6.1 Summary of Change

Following are changes for both FORTRAN 77 and Fortran 90:

   * The +Oparallel option is implemented in Fortran 90.

   * A set of parallel directives is implemented in Fortran 90.

   * The compiler runtime library that supports +Oparallel is made thread
     -safe and is reimplemented using kernel threads. This affects both
     Fortran 90 and FORTRAN 77.

   * Support for +DA1.0 is removed from both Fortran 90 and FORTRAN 77.

   * Support for +DA2.0 (PA8000) is increased by adding a tuned version of
     the BLAS library to both Fortran 90 and FORTRAN 77.

   * The following new statements are added to Fortran 90:

     TASK COMMON

     BUFFERIN/BUFFEROUT

     OPTIONS

   * Large file support is enabled from Fortran 90 and FORTRAN 77. Note that
     this is also available as a patch on 10.20 systems.

   * Several libraries in the FORTRAN 77 product is moved to "obsolete
     status".

   * Bug fixes are made to both products.

All of these items are described in detail in the HP FORTRAN 90 1.1 Release
Notes (part number 5965-4445).

******************************************************************************
6.6.2 Impact

The 10.30 release of Fortran 90 is largely an upward compatible release of
the Fortran products to introduce new features. Customers of Fortran 90 will
have the following new features available:

   * +Oparallel

   * PA8000 version of BLAS

   * Some parallel directives

   * TASK COMMON

   * BUFFERIN/BUFFEROUT

   * Large file support

For 10.30, FORTRAN 77 users have the following new feature: PA8000 version
of BLAS, large file support

The support for +Oparallel is reimplemented using kernel threads. This will
support the same user interfaces.

******************************************************************************
6.6.3 Compatibility

The following libraries are moved to obsolete status in FORTRAN 77. These
libraries are currently found in /opt/fortran/lib and are moved to the
following locations:

/opt/fortran/obsolete/lib/libvis.a

/opt/fortran/obsolete/lib/libvec.a

/opt/fortran/obsolete/lib/libfsys.a

The functionality provided by libvis and libvec is also available in
libblas.a. The functionality provided by libfsys.a is also provided by
libU77.a. (These libraries were never available as shared libraries.)

******************************************************************************
6.6.4 Performance

There are no changes expected in performance for Fortran 90 or FORTRAN 77.
The previous release at 10.20 already delivers peak performance for PA8000
systems.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6.7 fpclassify

For 10.30:

The new fpclassify macro hides a declaration of the old fpclassify function.
The declarations of the fpclassify and fpclassifyf functions are marked as
obsolete, but are retained because the macro definitions use them. The macro
and the function classify values according to different schemes. Code
written to the old fpclassify interface could still be recompiled by
undefining the fpclassify macro and including the old number classification
macros:

/* TO USE OLD fpclassify INTERFACE ... */
#include <math.h>
#undef fpclassify
#define FP_PLUS_NORM 0
#define FP_MINUS_NORM 1
#define FP_PLUS_ZERO 2
#define FP_MINUS_ZERO 3
#define FP_PLUS_INF 4
#define FP_MINUS_INF 5
#define FP_PLUS_DENORM 6
#define FP_MINUS_DENORM 7
#define FP_SNAN 8
#define FP_QNAN 9

******************************************************************************
6.7.1 Functions Converted To Macros

The inquiry macros isnan, isinf, isfinite, and isnormal have been added to
<math.h>.

In previous releases, isnan and isinf were functions. isnan still is a
function if XOPEN extensions are invoked and if HP extensions are not
invoked. The declarations of the isnanf, isinf, and isinff functions are
marked as "obsolete", but are retained because they are used in the
definitions of the macros.

******************************************************************************
6.7.2 New Macros

The C9X macros NAN and INFINITY have been added to <math.h>.

******************************************************************************
6.7.3 Value of Existing Macro Changed

The HUGE_VAL macro in <math.h> has been changed from the largest finite
double precision number to positive infinity.

******************************************************************************
6.7.4 Impact

If you use any of the listed obsoleted functions, you will have to change
your code if you want to compile or link on the 10.30 release.

matherr() is a common function of those being obsoleted. Although it was
eliminated in the 1989 revision of the System V Interface Definition, there
could still be some old programs that rely on it. Because the 10.30 math
library will never call matherr, some existing matherr routines can probably
be left in place, with the understanding they will remain unused. If you
need to know whether a math function had an argument error, you can either
examine the value returned by the function to see if it is INF or NaN or
check errno to see if it is non-zero.

******************************************************************************
6.7.5 Compatibility

Programs compiled and linked shared on previous releases of 10.X will
continue to run with the pre-10.30 interface using libm.1. The interface
changes take affect in libm.2. Shared executables newly-linked on 10.30 must
use libm.2.

The change in the value of HUGE_VAL is visible in the math.h header and
changes the binary interface (although not the API) of all the functions
that are specified to return it. This includes the C library functions
strtod and wcstod. You should not encounter any problems unless you both:

   * use the HUGE_VAL macro in their program text

   * you try to mix and match pre-10.30 object files with newly-compiled
     objects

******************************************************************************
6.7.6 Performance

The C math library changes in 10.30 are unlikely to change the performance
of your executable. The 10.20 and 10.30 libraries should perform similarly.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6.8 HP Performance Analysis Toolkit

For 10.30:

The HP Performance Analysis Toolkit is a part of the Programmers' Toolset,
which is bundled with the compiler products. The corresponding ISU product
part numbers are:

B3472AA PROG TOOLSET S800 Media

B3476AA PROG TOOLSET S800 Manuals

B3477AA PROG TOOLSET S700 Media

B3479AA PROG TOOLSET S700 Manuals

******************************************************************************
6.8.1 Features

The HP PAK version 7.1 to be released on 10.30 has following major new
functionalities:

   * Kernel thread support: ability to display performance metrics on a
     per-thread basis

   * Thread tracing: ability to display thread events across the entire run.
     (This would require a link option to turn on thread tracing in the
     pthread library).

   * Hierarchical call graphs: call graphs can now be displayed in both
     linear and structural form.

   * PUMA is localized in Japanese.

******************************************************************************
6.8.2 Summary of Change

In addition to the new features added, changes you might observe include the
following:

   * GUI changes in the "Pan-Zoom" and "Play-back" window to incorporate
     kernel thread specific data.

   * Data format changes to include new metrics for kernel threads.

   * Main menu button changes and GUI menu changes for the call graph
     display to include hierarchical call graphs functionality.

   * Thread trace visualizer can be invoked from HP PAK or run as a
     stand-alone tool.

   * Improvements to the correctness of attributing statistics on CMA
     threads.

   * System call bias eliminated as a result of new 10.30 kernel support.

   * Additional bug fixes and minor GUI enhancements.

   * Tutorial added to the on-line help.

******************************************************************************
6.8.3 Impact

HP PAK version 7.1 only runs on 10.30 systems because it depends on thread
support in the kernel. Because the data format has been changed to include
new metrics, HP PAK 7.1 version cannot read data files gene- rated by an
older version of HP PAK.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6.9 Kernel Header Files: ANSI Function Prototypes

For 10.30:

Kernel header files contain ANSI function prototypes. Code written in ANSI C
benefits from the compile time checking of argument types and return types
that are specified by function prototypes.

******************************************************************************
6.9.1 Summary of Change

Kernel header files are included by code written in K&R C (compatibility
mode), as well as code written in ANSI C. Compile time errors will result if
ANSI function prototypes are made visible to K&R C code; the compatibility
mode C compiler does not recognize ANSI function prototypes. To prevent such
errors, header files use the __() macro to declare function prototypes. The
macro is defined in the header file stdsyms.h as follows:

#if defined(_PROTOTYPES)
#define __(arg) arg
#else
#define __(arg) ()
#endif

To illustrate the usage of the __() macro, consider the function proto -type
of printf():

extern int printf __((const char *fmt, ...));

This is equivalent to declaring printf() as:

#ifdef _PROTOTYPES
extern int printf (const char *fmt, ...);
#else
extern int printf ();
#endif

Use of the __() macro can also be found in structure declarations that
contain function pointers. Consider the drv_ops structure in the header file
conf.h:

typedef struct drv_ops {
int (*d_open) __((dev_t dev, int oflags, intptr_t dummy, int mode));
.
.
.
} drv_ops_t;

Many, but not all, header files contain ANSI function prototypes; many of
these use the __() macro. ANSI function prototypes of many HP-UX kernel
interfaces have been incorporated in header files appropriate to the kernel
interface. For example, the following HP-UX kernel interfaces that specify
the buf structure are declared in the header file buf.h:

extern void biodone __((struct buf *));

extern int biowait __((struct buf *));

A new header file, kern_svcs.h, has been added to HP-UX 10.30. This header
file contains ANSI function prototypes of commonly used HP-UX kernel
interfaces for which an appropriate header file does not exist.

The kern_svcs.h header file defines some function prototypes, such as formal
descriptions for function types and arguments. This header file is included
by selected kernel header files so that other headers do not need to include
it. For example, wsio.h is a key header file for WSIO drivers and it
includes kern_svcs.h for the benefit of all WSIO drivers. Drivers that
include wsio.h are, therefore, not required to explicitly include
kern_svcs.h.

******************************************************************************
6.9.2 Impact

Code that is compiled with _KERNEL defined is impacted because function
prototypes in the kernel header files are made visible to the compiler via
#ifdef _KERNEL. Only code intended to be linked with the kernel should
define _KERNEL.

The C compiler displays warning messages where arguments passed to, or use
of values returned from, functions are not compatible with the specified
function prototypes. In some cases, compiler errors might be generated. You
are expected to correct code that results in compiler-generated warnings and
errors.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6.10 Kernel Instrumentation (KI) Traces

For 10.30:

There are new KI traces added for threads:

struct ki_thread_create and struct kd_thread_exit.

******************************************************************************
6.10.1 Impact

Any application including ki.h is affected.

******************************************************************************
6.10.2 Compatibility

Old binaries should still run, but will not get the new features.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6.11 Linker for 10.30

For 10.30:

The linker and object files tools are: ld, crt0.o, dld.sl, ar, chatr, nm,
size, and strip.

******************************************************************************
6.11.1 Features

   * Thread local storage support in ld, crt0.o, and dld.sl.

   * Thread safe support in dld.sl and libdld.sl.

   * ANSI C++ exception handling support in ld.

   * ld +k creates an executable only if no errors occurred during the link.

   * ld +pd size requests a particular virtual memory page size for data.

   * ld +pi size requests a particular virtual memory page size for
     instructions.

   * ld +Oselectivepercent n, +Oselectivesize n, and +OselectiveO3 options
     to allow fine tuning of interprocedural optimization:

        o +Oselectivepercent n instructs the interprocedural optimizer
          driver to pass the first n percent of the object files to the high
          level optimizer for interprocedural optimizations, such as
          inlining.

        o +Oselectivesize n instructs the interprocedural optimizer driver
          to pass the first k routines to the high level optimizer for
          interprocedural optimization where the size of k routines are
          approaching but less than n.

        o +OselectiveO3 instructs the interprocedural optimizer driver to
          compile the routines not included in the +O4 list to be compiled
          at +O3.

   * chatr +k enable/disable requests kernel-assisted branch prediction.

   * chatr +pd size requests a particular virtual memory page size for data.

   * chatr +pi size requests a particular virtual memory page size for
     instructions.

******************************************************************************
6.11.2 Summary of Change

   * TLS: Thread local storage support was added to ld, dld.sl, and crt0.o.
     You can use the _thread compiler directive to define symbols as TLS
     symbols. TLS symbols are local to each thread, which means each thread
     gets its own copy of the symbol. (Note that cma threads (DCE user space
     threads) do not support TLS.)

   * Thread Safe: Thread-safe support was added to dld.sl and libdld.sl.
     dld.sl and libdld.sl are thread-safe libraries whose interfaces are
     suitable for use by multiple threads in the same process.

   * ANSI C++ exception handling: add support to new fixup associated with
     the exception handling method.

   * The version of libdld.sl is now libdld.2 for 10.30. This was changed
     for threads (errno changed).

******************************************************************************
6.11.3 Defects Repaired

The following lists the serious and critical defects repaired:

----------------------------------------------------------------------------

  SR Number    Description

  4701342642   dts: CLLbs08192; ld memory fault when called with -I and
               +e symbol

  4701340315   dts: CLLbs08122; ld emits "absolute branch is out of
               range" for dyncall_external

  4701339465   dts: CLLbs07977; PBO of shlib does not work with +e option

  4701342071   dts: CLLbs08305; ADDIL's improperly eliminated with -N and
               +Ofastaccess

  4701337154   dts: CLLbs07492; linker asserts when -u main is used twice

  4701321687   dts: CLLbs05324; +Ofastaccess option causes linker
               "unexpected EOF" on milli.a

  5003322768   dts: CLLbs05863; linking with -s option sometimes produces
               unrunnable a.out

  NONE         dts: CLLbs05689; PBO instrumented executables take a long
               time to produce flow.data

  NONE         dts: CLLbs05667; Poor performance noted during -I (PBO)
               links

  4701331892R  dts: CLLbs05027; strip (1) core dumps (when multiple
               a.outs specified)

  5003306845   dts: CLLbs04620; Add option to retain a.out depending on
               whether errors occurred

----------------------------------------------------------------------------

******************************************************************************
6.11.4 Compatibility

You cannot use dld.sl and libdld.sl on a system earlier than 10.30 because
of system call changes. This was always a requirement, but now is strictly
enforced.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6.12 Math Library (libm.a and libm.sl)

For 10.30:

******************************************************************************
6.12.1 Features

   * There are new functions called in the proposed revision of the ANSI C
     standard (C9X). The functions replace the proprietary fpgetround
     interface supplied with previous versions of HP-UX.

   * Some functions and types (such as matherr) that interfere with the ANSI
     C++ namespace are obsoleted.

   * A new math header, fenv.h, has been added to support C9X.

   * The macro HUGE_VAL, a return value used by math functions to signify a
     certain kind of error, has its value changed to IEEE infinity to
     satisfy X/Open requirements.

   * The math library has been compiled with -D_REENTRANT using the 10.30
     <errno.h> to meet the requirements of thread safety. Threads running
     simultaneously that call math functions can read and set errno without
     interfering with one another.

   * With the Fortran product for 10.30, there is a pa2.0 version of the
     BLAS library (Basic Linear Algebra Subroutines). It is installed in

     /opt/fortran/lib/pa2.0/libblas.a

   * This code has been specially tuned to run well on the 2.0 version of
     the PA architecture, which is supported on PA8000 and later processors.
     It will be linked automatically on Fortran compiles with the +DA2.0
     switch if -lblas is specified on the compile line. The new library will
     not run on older versions of the architecture.

     If using a pa2.0 machine, you should avoid linking your code with the
     pa1.1 BLAS library (/opt/fortran/lib/pa1.1/libblas.a) because processor
     scheduling issues make the old BLAS code run slowly on new hardware.

     Single-precision matrix multiply can run as much as four times slower
     on a C160 than it would on PCX-T if you use the pa1.1 library.

     In summary, the combination you should not use is: pa1.1 BLAS library
     routines running on a pa2.0 machine.

******************************************************************************
6.12.2 Summary of Change

At 10.30, these functions are obsoleted from the library:

   * matherr() - - Last required by SVID2; no longer required by any current
     standard

   * cabs() - - an HP proprietary function

   * drem() - - an HP proprietary name; the same function is available as
     remainder()

For 10.30, the fpgetround suite (the FP mode control functions) is
obsoleted. Those functions are HP proprietary and are replaced with new
functions recommended by the proposed ANSI/ISO C9X standard (the next
version of ISO).

The obsoleted functions are:

fpgetround()
fpsetround()
fpgetmask()
fpsetmask()
fpgetsticky()
fpsetsticky()
fpsetdefaults()
fpgetfastmode()
fpsetfastmode()
fpgetcontrol()
fpsetcontrol()

Also, these FP operand classifiers are obsoleted:

fpclassify
fpclassifyf

These are also HP proprietary functions replaced with new functions
recommended by the current draft of C9X.

The old functions still exist in libm.1, which can be used by executables
linked on previous releases of HP-UX.

******************************************************************************
6.12.3 <math.h>

Changes:

   * The signatures of the obsoleted functions above are removed. C9X
     replacements are added.

   * The type struct exception is removed from <math.h>. This is the type of
     the parameter used by matherr. On previous 10.X releases, this name
     interfered with the class exception used by ANSI C++.

   * The matherr associated macros are removed: DOMAIN, SING, OVERFLOW,
     UNDERFLOW, TLOSS, and PLOSS.

   * errno, which used to be defined in <math.h> when you compiled with
     extended ANSI mode, is now only defined in <errno.h>.

   * HUGE_VAL changed to equal IEEE infinity in order to meet X/Open's
     requirements.

******************************************************************************
6.12.4 <fenv.h>

For 10.30, there is a new header called fenv.h. This header is recommended
by C9X and includes new functions to examine and modify the floating-point
environment.

******************************************************************************
6.12.5 Impact

The following changes must be made to your source to accommodate the new
10.30 features:

   * If you currently use matherr, you should remove it from your source.
     There is no replacement. You can write your own conditional code to
     check for valid return values.

   * Users should not expect <math.h> to supply a definition of errno. If
     you use errno in your program, you should include <errno.h>. This is
     the official source of errno according to ANSI C. Removal of errno from
     <math.h> was needed to support thread-safety.

   * If you currently use fpgetround() or fpclassify(), you should replace
     them with the new C9X-style functions.

   * If you currently use cabs(), use hypot() instead, which is XPG-
     conformant.

   * If you are depending on atof() being declared in <math.h>, you need to
     add an include of stdlib.h to your code. atof() used to be redundantly
     declared in <math.h>, but is now available in<stdlib.h>.

   * If you use HUGE_VAL in your source, you must recompile. HUGE_VAL is
     used to test values returned by system functions for error indications.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6.13 Multimedia for 10.30

For 10.30:

With the obsolescence of the Visual User Environment (VUE) desktop at HP-UX
10.30, the suite of multimedia clients integrated with the VUE desktop has
been obsoleted and is no longer part of the CORE HP-UX operating system
product. The VUE desktop has been superseded by the Common Desktop
Environment (CDE), which is included as part of the CORE HP-UX product.

The MPower/Web products include the full complement of multimedia clients
previously packaged with the CORE HP-UX product. In addition, they
incorporate the following new components:

   * SharedX, an HP-UX window sharing product

   * Netscape Navigator, the industry standard web browser

   * Model Viewer, a viewer for 3-D models in the VRML (Virtual Reality
     Modeling Language) or STL (stereolithography) file formats

   * Video_Play, a player for MPEG format videos

The MPower/Web product for the HP 9000/700 family of workstations is
installed on all Instant Ignition systems. The MPower/Web products are are
available on the DART product releases for HP 9000 Series 700 and HP 9000
Series 800 computer systems. The part numbers are listed below.

******************************************************************************
6.13.1 Multimedia Applications No Longer Part of HP-UX CORE

----------------------------------------------------------------------------

  audio_editor   Graphical audio editor

  AudioCP        Audio control panel

  capture        Screen capture utility

  imageview      Image viewing utility

  SharedPrint    Image and general printing subsystem

----------------------------------------------------------------------------

******************************************************************************
6.13.2 Multimedia Applications Supplied as Part of MPower/Web Product

----------------------------------------------------------------------------

  audio_editor         Graphical audio editor

  AudioCP              Audio control panel

  capture              Screen capture utility

  imageview            Image viewing utility

  image print          image printing subsystem

  Video_Play           MPEG video player

  Video_Convert        MJPEG to MPEG conversion utility

  Netscape Navigator   World class web browser

  SharedX              X Window sharing system

  whiteboard           Whiteboard utility that can be shared

  modelviewer          VRML 1.0 model viewer

----------------------------------------------------------------------------

******************************************************************************
6.13.3 MPower/Web Product Numbers

B5357AA_APZ MPower/Web for Series 700

B5359AA_APZ MPower/Web for Series 800

******************************************************************************
6.13.4 ImagingSubsystem swverify Messages

The 10.30 ImagingSubsystem no longer contains the following filesets:

ImagingSubsystem.IMG-ENG-A-MAN

ImagingSubsystem.IMAGE-RUN

ImagingSubsystem.IMAGE-HELP

The imageview command is no longer supported on HP-UX 10.30, even though the
10.20 version of the imageview(1) manpage is available. The imageview
command was last supported at HP-UX 10.20. However, the
ImagingSubsystem.IMAGE-SHLIBS fileset does exist on HP-UX 10.30.

When updating from HP-UX 10.20 to HP-UX 10.30, you might receive these
swverify errors for the above ImagingSubsystem filesets:

   * ImagingSubsystem.IMG-ENG-A-MAN because its co-requisite,
     TextFormatters.TEXT-FMT, is version 10.30.

   * ImagingSubsystem.IMAGE-RUN, because its co-requisite,
     ImagingSubsystem.IMAGE-SHLIBS, is version 10.30.

The errors can appear in swagent.log and possibly swverify.log. The swverify
error messages can be ignored.

Non-English systems will see the localized fileset names.

******************************************************************************
6.13.5 ScreenCapture swverify Messages

ScreenCapture is no longer part of the HP-UX CORE, but instead is delivered
with MPowerWeb.

When updating from HP-UX 10.20 to HP-UX 10.30, you might receive the
following swverify errors regarding these ScreenCapture filesets:

   * ScreenCapture.SCP-ENG-A-MAN because its co-requisite,
     TextFormatters.TEXT-FMT, is version 10.30.

   * ScreenCapture.SCNCAP because its co-requisite, X11.MOTIF12-SHLIB, is
     version 10.30.

These swverify errors can be ignored. The errors can appear in swagent.log
swagent.log and possibly swverify.log.

Non-English systems will see the localized fileset names.

******************************************************************************
6.13.6 matherr

See the section "fpclassify" in this chapter for more matherr() information
for 10.30.

******************************************************************************
6.13.7 HP C/ANSI C

   * A new keyword __thread is added to support Thread Local Storage (TLS).
     This new pseudo data type defines thread-specific data from other data
     items that are shared by all threads. (cma threads (DCE user space
     threads) do not support TLS.)

   * Default compilation mode is changed from K&R to ANSI Extend (-Ae).

   * lex and yacc libraries are thread safe.

For further information, see the HP C/HP-UX Release Notes, which is shipped
with the HP C product in printed form and is available online in the
directory /opt/ansic/newconfig/RelNotes.

==============================================================================
6.13.7.1 Impact

   * The roll of the default compilation mode from K&R (-Ac) to ANSI
     extended (-Ae) may cause customers who have previously not specified
     the mode (that is, used the default) and whose code used K&R features
     not supported in ANSI extended to experience possible compile-time
     errors and changes in run-time semantics. In such cases, their options
     are either to set the compiler's mode back to K&R (-Ac) or to migrate
     their source to ANSI.

   * New features and performance improvements are opportunistic for the end
     user. The user is not required to do anything different; therefore,
     there is no impact.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6.14 SAM (System Administration Manager)

For 10.30:

******************************************************************************
6.14.1 Users and Groups

   * NIS+ Support - Administration of users and groups in the NIS+ tables is
     supported. Operations that have previously been supported for locally
     defined users and groups (including adding, modifying, and removing)
     are now supported for users and groups defined in the NIS+ tables. This
     includes administration of user attributes when a system is in trusted
     mode. Administration of NIS+ users and groups can be done from any
     system whose default NIS+ domain is the domain to be administered.

   * Large Group Changes - Prior to 10.30, SAM allowed groups in the
     /etc/group file with up to 4000 members to be created. These large
     groups have never been and are still not fully supported by all of
     HP-UX. The largest group that is fully supported by HP-UX is a group
     that takes up LINE_MAX (2048) characters in the /etc/group file. SAM
     will still allow groups with up to 4000 members to be created, but will
     discourage their use by issuing a warning message before creating or
     extending a group that is over LINE_MAX characters in size. SAM will
     also minimize the creation of large groups by changing the way a user
     is added to the system. A user is no longer added to his/her primary
     group in the /etc/group file when the user is added to the system. The
     user's primary group ID will continue to be stored in the /etc/passwd
     file.

   * Smart Card Support - SmartCard support is added. With the SCAUTH
     product loaded, the system administrator can propagate user additions,
     modifications, and deletions to the SmartCard reader.

******************************************************************************
6.14.2 Auditing and Security

   * NIS+ trusted system capabilities are added to the Auditing and Security
     area of SAM. When NIS+ is configured on a system, the Audited NIS+
     Users subarea lists the users in the default NIS+ domain and allows
     them to be selected to have auditing turned on or off. The auditing (or
     non-auditing) takes effect when an NIS+ user logs into a trusted system
     in the NIS+ domain. Local users are displayed in the Audited Local
     Users subarea of a trusted system which allows them to be selected to
     have auditing turned on or off for that system.

   * The Authenticated Commands subarea (PAM) is a new area of Auditing and
     Security and is used to manage the PAM configuration file
     (/etc/pam.conf). For each type of PAM authentication - User
     Authentication (auth), Account Management (account), Session Management
     (session), and Password Management (password) - commands can be added,
     modified, or removed from the PAM configuration file.

******************************************************************************
6.14.3 Disks and File Systems

Features:

   * You can modify the primary paths to multi-path devices that are managed
     via Logical Volume Manager (LVM).

   * VxFS snapshots can be created.

   * SAM allows you to toggle the large-file option on file systems.

   * SAM will execute the "hot-plug" procedure for the Jamaica (A3311A and
     A3312A) enclosures when the user selects the "Replace Hot Pluggable
     Disk" action and an LVM disk is selected. For other LVM hot-pluggable
     devices such as NIKE ( CLARiiON) Disk Arrays (A3231A Model 10 and
     A3232A Model 20), hot-plug reconfiguration is handled by the device
     itself without interaction from SAM. AutoRAID is a device that will
     handle its own hot swap event.

   * On NIKEs, RAID level 0 is no longer supported by SAM.

   * SAM uses /etc/default/fs as the default FS to display or use by default
     when creating a new FS.

   * Additional information is added to the "View More Information" task
     dialog in the Volume Groups and Disk Devices subareas.

   * When creating and extending volume groups (both from the Volume Groups
     and Disk Devices subareas), selection of multiple disks at one time is
     now allowed.

   * The "Remove" action for Volume Groups can now remove a volume group
     containing multiple disks and/or logical volumes.

   * The "Remove" action for Logical Volumes now allows you to remove
     multiple logical volumes with one action.

   * New hot spare actions are added to Volume Groups subarea.

   * System configuration information for disks, logical volumes, and volume
     groups is now cached more efficiently, yielding better performance
     within the Disks and File Systems area.

   * SAM no longer supports or recognizes serial (RS-232) connections to
     NIKE ( CLARiiON) Disk Arrays (A3231A Model 10 and A3232A Model 20).
     Instead, NIKEs are now configured on both Series 700 ( HSC bus) and
     Series 800 ( HSC or NIO bus) systems by means of the SCSI pass-through
     drivers, of which only the HSC driver (sctl) is included in the kernel
     as delivered. The SCSI pass-through driver can be configured into the
     kernel by specifying the "spt0" driver for the NIO bus or the "sctl"
     driver for HSC bus in the Kernel Configuration area of SAM. The Model
     30 NIKE Disk Array is supported via a Fiber Channel interface on the
     HSC bus using the sctl driver.

******************************************************************************
6.14.4 Kernel Configuration

Range-checking is now performed after application of a tuned parameter set.

******************************************************************************
6.14.5 Printers and Plotters

In the "HP Distributed Print Service" subarea of the "Printers and Plotters"
area of SAM:

   * It is now possible to create a spooler or supervisor that will run on
     another system within the DCE cell and to create a physical printer
     that is managed by a supervisor running on another system within the
     cell. Both of these new capabilities are available only if the extended
     environment of HPDPS is being used.

   * When SAM is used to create or start a spooler or supervisor, your
     locale is used by the server (previously, SAM always had LANG and
     LC_ALL set to "C" when starting HPDPS servers).

In the "LP Spooler" subarea of the "Printers and Plotters" area of SAM:

   * The online help has been translated to Japanese in the ja_JP.SJIS and
     ja_JP.eucJP locales.

******************************************************************************
6.14.6 Print Server

SAM was modified to accommodate configuring a Technical Print Server. This
functionality was added to the "Printer and Plotters" area and the "X Server
Configuration" category. For more information on the Technical Printer
Server, see the subsection "Technical Print Service" in Chapter 2, "Major
Changes for HP-UX 10.30".

******************************************************************************
6.14.7 Networking and Communications

Networking and Communications has been enhanced in the Netgroups, Hosts,
NIS+, NS Switch, and Automounter areas:

   * Mounted Remote File Systems: support of NIS automounter map and NIS+
     automounter tables is added.

   * Hosts: support of NIS and NIS+ Host entries is added (create, modify,
     destroy, and set permissions). This area used to be called "Internet
     Addresses."

   * Netgroups: support of NIS netgroup maps and NIS+ netgroup tables is
     added.

   * NS Switch: support of NIS+ and other third-party sources is added.

   * NIS+ group and table management (create, modify, destroy, and set
     permissions) is added.

******************************************************************************
6.14.8 Peripheral Devices

A DLT Library is recognized as one device, rather than as a picker and its
component tape drives. The user can select one of these drives as a backup
device after making sure there are media in the drive. SAM will take the
usual step of suggesting which drivers should be added to the system if
ioscan is not recognizing the DLT Library and its drives.

******************************************************************************
6.14.9 Terminals and Modems

On a trusted system, NIS+ users are shown in the list of potential
authorized users.

******************************************************************************
6.14.10 Performance

The only effect on performance from the changes described above is an
improvement in the Disks and File Systems area due to caching of system
configuration information.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6.15 SharedPrint/UX

For 10.30:

As of 10.30, SharedPrint/UX is longer shipped on HP-UX systems. It is
replaced by MPower/Web for image printing and by other CDE services (such as
dtlp) for text printing.

Printers configured for SharedPrint will still work for 10.30 printing if
SharedPrint is still installed on the system. Use the command

/opt/sharedprint/bin/splistpr -llsp

to determine which printers are configured for SharedPrint, and are thus
candidates for re-configuration. Each of the printers should be removed and
reconfigured through SAM.

If printing to a SharedPrint printer does not work from ImagePrint (the
MPower/Web image printing action), you may need to re-configure the printer
as a straight lp or DPS printer.

If you remove SharedPrint from the system, you will need to re-configure all
the SharedPrint printers as lp or HPDPS printers.

----------------------------------------------------------------------------
NOTE

The splistpr command is not an official part of SharedPrint. The command
should be used carefully.

----------------------------------------------------------------------------

******************************************************************************
6.15.1 Additional Printer Support

SharedPrint/UX supports these additional printers:

   * DeskJet 1600C

   * DeskJet 1600CM

   * LaserJet 4V

   * LaserJet 4VM

   * Color LaserJet (PCL and PostScript)

******************************************************************************
6.15.2 Setting Up SharedPrint/UX

SharedPrint/UX is not activated by default. You need to run the program
/opt/sharedprint/bin/sp_enable to use SharedPrint/UX. Rerun this program
whenever a new version of SharedPrint/UX is installed.

Restart the window manager even if the sp_enable program does not ask you to
restart the VUE window manager.

To set up SharedPrint/UX, see the SharedPrint/UX User and Administrator's
Guide for HP-UX 10.0. As the SharedPrint/UX manual indicates, part of the
setup procedure involves choosing network support. You can either set up
NCS, using the SharedPrint/UX manual, or you can set up HP DCE/9000 using
these online release notes:

/opt/dce/newconfig/RelNotes/HPDCE1.3RelNotes.ps

/opt/dce/newconfig/RelNotes/HPDCE1.3RelNotes.txt

******************************************************************************
6.15.3 Configuring a Jet Direct Printer

When configuring a Jet Direct printer for use with SharedPrint, the System
Administration Manager (SAM) runs the jetadmin configuration program
directly.

After the jetadmin main screen is displayed, follow these steps to configure
SharedPrint for your printer.

  1. Choose the option to configure a new printer.

  2. Type the network address or network name of the printer.

  3. Change the printer model script to sharedprint. For SharedPrint
     printers, the model script should always be set to sharedprint.

     A printer name is assigned automatically. Record this name (the first
     item in the list) because you will need it later.

     -----------------------------------------------------------------------
     NOTE

     Because the automatically generated printer name might not be
     convenient to use, you can change the name. However, be sure that the
     name you choose is unique among all the printers on your network.

     -----------------------------------------------------------------------

  4. Choose the option to configure the printer.

  5. When done, exit the jetadmin facility.

  6. Exit SAM.

  7. Run /opt/sharedprint/lbin/setup_pr.sh.

  8. Type the printer name assigned in step 3 and click OK.

  9. Choose the printer driver for your printer by clicking the labelled
     button next to the Printer Model/Interface button.

     A list of supported printers is displayed. Choose the printer driver
     that corresponds to the type of printer you are configuring and click
     OK.

     The Configure HP VUE Printers Subpanel dialog box is automatically
     displayed.

 10. Add the printer to the Front Panel.

 11. Click QUIT in the SharedPrint Setup dialog box.

     You can now use SharedPrint to access this printer.

******************************************************************************
6.15.4 Using the SharedPrint/UX Dialog

To display the SharedPrint/UX dialog, select a file in File Manager and
choose Print from the Actions menu. You can also drop the file on the
Printer control in the HP VUE Front Panel.

******************************************************************************
6.15.5 Printing with Default Options

By dropping a file icon on an SP-labeled printer in the Printers subpanel,
you can print with default options. These are the options selected when you
last used the OK button on the Print window. When you print by using the
Print button, then the Close button, no options are saved.

To see the print requests in the queue, click the Printer control in the HP
VUE front panel.

In the Printers subpanel, the printer icons with an SP label are
SharedPrint/UX printers. For information on adding more SharedPrint/UX
printers to the Printers subpanel, refer to the SharedPrint/UX User and
Administrator's Guide for HP-UX 10.0.

******************************************************************************
6.15.6 Printing a Screen Image

  1. Choose Capture Screen in the SharedPrint/UX dialog to print a window, a
     screen region, or the entire screen. For details, use the Help button
     on the Capture Screen window that appears.

  2. From the Print window, print the screen image by choosing OK or Print.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6.16 SwitchOver/UX

For 10.30:

The SwitchOver/UX product is no longer available as of 10.30. The last
release for which SwitchOver/UX was supported was 10.20. After 10.20, use
the MC/ServiceGuard product.

If you currently have SwitchOver/UX installed and want to upgrade to 10.30,
you need to remove SwitchOver/UX from your 10.20 system prior to upgrading
to 10.30.

For detailed information about upgrading to 10.30, refer to the "Installing
HP-UX 10.30 and Updating HP-UX 10.x to 10.30" manual.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6.17 VUE (HP VUE 3.0)

For 10.30:

As of 10.30, HP VUE is no longer shipped on HP-UX systems. HP VUE is
replaced by the HP CDE desktop product. See Chapter 5, "Major Changes for
HP-UX 10.30", for information about HP CDE for 10.30.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
6.18 X Windows

For 10.30:

******************************************************************************
6.18.1 X11 Fonts

==============================================================================
6.18.1.1 Compatibility

Under the following conditions, X11 Font matching may cause excessive delays
in application execution:

   * The X Server being used is not the Hewlett-Packard X Server.

   * The client's default font is not available on the X Server.

These delays can be eliminated by changing the client's default font to a
font available on the X Server; that is, explicitly setting the environment
variable LANG to be "C.iso88591".

******************************************************************************
6.18.2 Motif, Xlib, and Intrinsics Libraries

The HP-UX run-time environment includes R4, R5, and R6 shared libraries.
Manpages are provided for R6. The default build environment is R6-based
only.

##############################################################################
Chapter 7: Networking

This chapter covers the following topics:

   * arp Command

   * BSD Sockets

        o BSD Sockets: 7.0 Binary Compatibility

        o BSD Sockets: Port Numbers

        o BSD Sockets: ECONNRESET

   * Data Link Provider Interface (DLPI)--changed at 10.30 and 11.0

        o Fast Ethernets and Lanlink

        o Replacement of LLA LAN Driver Interface with DLPI

        o Changes to DLPI

        o Patches

   * HSC Fibre Channel/9000

        o Known Problems and Workarounds

   * Inetd--changed at 10.30

        o inet_cots and inet_clts (t_open)

   * Internet Services (ARPA Services)--changed at 10.30 and 11.0

        o BIND Name Service

        o ftp

        o sendmail--changed at 10.30 and 11.0

        o gated--changed at 10.30 and 11.0

        o mrouted--changed at 10.30

        o telnet--changed at 10.30

        o Secure Internet Services--changed at 10.30 and 11.0

   * LAN Driver Products--changed at 10.30

        o Device Driver Changes for Streams

        o lanadmin

        o lanconfig

        o lanscan

        o linkloop

   * Lock Manager Formatting--changed at 10.30

        o Header File Changes

        o Changes to C Source Files

        o Makefile Changes

        o New NLM Version 4 Output Format

   * Loopback Drivers

   * mount_nfs Command--changed at 10.30

   * Name Service Switch--changed at 10.30

        o APIs

        o Lookups

        o Performance

        o Compatibility

   * NetTL--changed at 10.30

   * NFS Automounter--changed at 10.30

   * NFS Protocol Version 3--changed at 10.30

   * NFS PV3 & mountd (Version 3) Formatting

   * NFS Service APIs--changed at 10.30

   * NIS+--changed at 10.30

        o Compatibility with Previous Releases

        o Advantages of NIS+

        o Command and Function Names

        o Size Requirement

   * Path Maximum Transmission Unit (PMTU)

        o route Command

   * RPCBIND

        o rpcbind Command changed at 10.30

   * rpcgen--changed at 10.30

   * rpcinfo--changed at 10.30

   * rpc.lockd--changed at 10.30

   * rpc.mountd--changed at 10.30

   * Streams--changed at 10.30

        o XTI/TLI Use with Multi-threaded Applications

   * TCP/IP--changed at 10.30

        o Obsolete Features

        o Changes to /etc/rc.config.d/netconf

        o Logical Interfaces

        o Configuring Multiplexed IP Addresses

        o Configuring SNAP/IEEE802.3 Interfaces

        o lanconfig

        o ifalias

        o netstat Command

        o nettune and ndd

        o SLIP and PPP

        o netman and ni Drivers

        o Copy-on-Write (COW)

        o Loopback Interface (lo0)

        o IP Packets to Local Host Address

        o TCP Keepalive Packets

        o Networking Memory for Fragment Reassembly

        o Netisr Priority

        o TCP Hash Table Size

        o Interface information

        o TCP Timers

   * Transport-Independent RPC (TI-RPC)

   * X/Open Sockets: socklen_t

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.1 arp Command

Due to design changes in the 11.0 TCP/IP product, a permanent ARP entry
whose IP address is an interface on the local system is added by the system
when an interface is configured. Deleting such ARP entries is not
recommended.

However, a new arp command option, "-D", has been added to allow removal of
a permanent ARP entry whose IP address is an interface on the local system.

By comparison, the "-d" option of arp does not delete a permanent ARP entry
whose IP address is an interface on the local system.

See arp(1M).

----------------------------------------------------------------------------
NOTE

The "-D" option should be used with extreme caution. Its use is not likely
to be necessary or even desirable. The use of this feature is not
recommended.

----------------------------------------------------------------------------

******************************************************************************
7.1.1 Warning of Impact

The use of "-D" to remove a permanent ARP entry whose IP address is an
interface on the local system may result in loss or limitation of network
connectivity with remote machines. The local system will no longer respond
to ARP requests for this IP address. Consequently, communication with remote
systems is possible only when that communication is initiated by the local
system.

For this reason, the use of "-D" is not recommended.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.2 BSD Sockets

******************************************************************************
7.2.1 BSD Sockets: 7.0 Binary Compatibility

Starting in HP-UX 10.30, 7.0 binary compatibility is not supported for BSD
sockets applications.

Statically-linked programs compiled on HP-UX 7.0 would run on releases prior
to HP-UX 10.30 just as they did on HP-UX 7.0 due to special "compatibility
mode" syscall numbers.

Starting in HP-UX 10.30, BSD sockets calls in these programs will result in
the error ENOSYS because the special compatibility syscall numbers are no
longer supported due to internal design changes.

==============================================================================
7.2.1.1 Compatibility

The source code for such programs must be modified before recompiling on
10.30. This is because of differences in the BSD sockets interface that were
introduced in HP-UX 8.0. The following is a list of the differences:

   * The struct sockaddr_un is smaller. This affects the path name that can
     be used for Unix Domain sockets. The compatibility syscalls returned an
     error for path names that are too long for 8.0 and later. Without
     compatibility mode, no error is returned, and the program may or may
     not work correctly, depending on the path name.

   * The following getsockopt and setsockopt optnames now require an optval
     argument: SO_DEBUG, SO_KEEPALIVE, SO_DONTROUTE, SO_USELOOPBACK,
     SO_REUSEADDR, SO_BROADCAST, and SO_LINGER.

   * The following getsockopt and setsockopt optnames are no longer
     supported: SO_BURST_IN, SO_BURST_OUT, and SO_DONTLINGER.

     The SO_LINGER optval replaces SO_DONTLINGER. No replacements are needed
     for SO_BURST_IN and SO_BURST_OUT since they no longer have any effect.
     However, their optname number might be used for other optnames.

   * For the ioctls SIOCSPGRP and SIOCGPGRP, the sense of the sign of the
     "arg" parameter is reversed. Now, a positive represents a user id
     (uid), and a negative number represents a group id (gid). gid.

   * For the ioctls SIOCADDRT and SIOCDELRT, the struct rtentry fields are
     in a different order. However, this should be source compatible. In any
     case, these ioctls are not supported for external use. They are
     provided only for internal HP partners (e.g. gated), who have
     long-since recompiled for more recent releases.

Some very old applications will not run on HP-UX 10.30 without change and
recompilation.

******************************************************************************
7.2.2 BSD Sockets: Port Numbers

The number of automatically-assigned TCP and UDP port numbers is increased
from 3976 to 16383.

Prior to HP-UX 10.30, automatically-assigned port numbers were in the range
from 1024 to 5000.

Port numbers are assigned automatically when an application binds to port
number zero.

Starting in HP-UX 10.30, such so-called "anonymous" port numbers are
assigned in the range from 49152 to 65535, by default.

This range follows current IANA recommendations. IANA is the Internet
Assigned Numbers Authority, currently maintained by the Information Sciences
Institute (ISI) of the University of Southern California (USC).

==============================================================================
7.2.2.1 Impact

This increase allows many more "anonymous" ports to be opened on a single
system. "Anonymous" ports are typically used by client network applications
and commands, for example telnet and ftp.

Because the range of port numbers is different, applications that made
unusual assumptions could be affected adversely in unpredictable ways.

For example, an application might assume that numbers above 5000 will not be
automatically allocated by the system, perhaps based on an interpretation of
comments in <netinet/in.h>.

Such a dependency is questionable because there is nothing to prevent any
application from binding explicitly to any port number above 1023.

Note that IPPORT_USERRESERVED in <netinet/in.h> remains 5000 partly because
of uncertain implications that changing it might have on applications and
partly because no user-space macro value can track a tunable kernel
parameter.

==============================================================================
7.2.2.2 Alternatives

The maximum automatically assigned port number can be altered by setting the
variables tcp_largest_anon_port and udp_largest_anon_port using the ndd
command.

******************************************************************************
7.2.3 BSD Sockets: ECONNRESET

Prior to HP-UX 10.30, an application would not see an ECONNRESET error for a
socket read system call until after the application had read all data
received by TCP. ECONNRESET can result in undelivered data. Although
application design should not rely on this undocumented behavior, it is a
common behavior for a sockets API based on a BSD implementation.

Due to internal design changes starting in HP-UX 10.30, an application can
see the ECONNRESET error before all received data has been read. In that
case, any unread data will be lost.

==============================================================================
7.2.3.1 Compatibility

Application designs that relied on the undocumented behavior of a BSD
implementation may lose data.

==============================================================================
7.2.3.2 Impact

Normally, when an application closes a connection or terminates, TCP
performs a graceful connection termination, which results in transmitting a
FIN in the protocol.

This does not result in an ECONNRESET error, and all received data will be
delivered to the application before a read system call returns zero,
indicating EOF.

ECONNRESET usually indicates an abnormal termination of the connection by
TCP. This results in TCP transmitting an RST in the protocol.

However, some systems provide an API to permit applications to force that
system's TCP to abort the connection and transmit a RST.

For example, the HP 3000 shutdown(-1) intrinsic call causes TCP to transmit
an RST. This results in an ECONNRESET error when the peer HP-UX application
calls a read system call.

Before HP-UX 10.30, previously sent data would be received by the
application before it sees the ECONNRESET error.

Starting in HP-UX 10.30, some data can be lost if the TCP RST arrives before
the application reads all the previously-sent data.

==============================================================================
7.2.3.3 Alternatives

Applications should not be designed to expect ECONNRESET to be synchronized
with transmitted data.

If it is important that the peer application receive all transmitted data,
an application should do a graceful connection termination, or the
application protocol should include an exchange of messages to allow the
application to know that all data has been received.

Generally, an ungraceful connection abort should not be used unless the
application is willing to permit some data to be lost.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.3 Data Link Provider Interface (DLPI)

******************************************************************************
7.3.1 Fast Ethernets and Lanlink

For 10.30:

Several changes are made to the HP-UX DLPI driver to support the new
Streams-based networking stack. The majority of these changes have no impact
on DLPI applications or driver writers. However, there are a few changes
that concern DLPI applications and driver writers:

   * The PPA number for DLPI is no longer equivalent to the network
     management identifier (nmid). The PPA number has been changed to be the
     same as the card instance number.

   * Token Ring source routing is no longer enabled/disabled via lanconfig.
     The lanconfig command is not supported for 10.30. Token Ring source
     routing is now enabled/disabled via the lanadmin command with the
     rif/-rif options.

   * The following changes affect the kernel DLPI-to-driver interface (these
     changes are only visible to kernel driver writers):

        o Four new fields are added to the hw_ift_t structure:

          ------------------------------------------------------------------

            u_int reserved1   Reserved for Internal usage only

            u_char            ARP Helper Module name
            *arpmod_name

            u_int ppa         PPA number for Interface. If the driver does
                              not support the HP-supported common DLPI
                              provider, it should initialize this value
                              with the ppa number for this interface.
                              Otherwise, the value is set by the
                              hw_ift_attach function for drivers that
                              support the common DLPI provider.

            u_int             Watch dog timer for cable disconnect
            watch_timer       functionality and error monitoring.

          ------------------------------------------------------------------
        o The MAC type definitions are changed to be consistent with the
          values defined in dlpi.h and dlpi_ext.h.

        o Several new features are added. The following features are
          communicated to DLPI through the "features" field in the hw_ift_t
          structure:

          ------------------------------------------------------------------

            DRV_CKO           Indicates the driver supports checksum
                              offload.

            DRV_COW           Indicates the driver supports copy
                              avoidance.

            DRV_LFP           Indicates the driver supports RFC 1323 -
                              Long-fat pipe.

            DRV_NO_LOOPBACK   Indicates the driver does not support
                              loopback. Loopback is done by the hardware.

            DRV_LNP           Indicates the driver supports slow, narrow
                              pipe such as PPP.

            DRV_RETRY         Indicates the driver supports the improved
                              retry mechanism (write requests only).

            DRV_MBLK          Indicates that the driver supports MBLKS.

          ------------------------------------------------------------------
        o Two new control requests are added:

          ------------------------------------------------------------------

            DL_HP_GET_MIB_STATS   Get mib and mib II statistics

            DL_HP_SET_MIB_STATS   Set mib statistics

          ------------------------------------------------------------------

The structure for these control requests is defined below:

typedef struct {
 u_long req_type;          /* MIB Request code */
 u_char *dl_data;          /* MIB Data */
} dl_hp_mib_t;

==============================================================================
7.3.1.1 Impact

The PPA change will potentially cause the greatest impact. If your
applications use the NMID as the PPA number, alter them to use the card
instance number instead. The other changes affect only drivers that require
support through HP's DLPI implementation.

==============================================================================
7.3.1.2 Performance

The DRV_RETRY feature is the only change that affects performance. This
feature indicates that the driver supports the improved retry mechanism
added to DLPI for 10.30. This feature means that the driver will not free
any write buffers that are not processed because of resource errors. The
resource error could be any of the following:

   * Temporarily out of transmit descriptors

   * Unable to map one or more buffers

   * Unable to allocate memory, and so on

The resource error should be of a temporary nature and be recoverable.

The driver is required to return an ENOBUFS error when encountering any
resource type of error (for write requests only). In addition, the driver
must not free the buffer(s) associated with the write request before
returning the error. This allows DLPI to retry the same write request at a
predetermined time after the failure.

Implementing this feature can significantly reduce the CPU utilization when
the driver is being stressed with a steady stream of write requests.

See the manual "Installing and Administering Internet Services" (p/n
B2355-90147) for more information about using the script.

******************************************************************************
7.3.2 Replacement of LLA LAN Driver Interface with DLPI

As of HP-UX Release 10.30, the LLA LAN driver interface is no longer
supported. Users are encouraged to migrate their applications to DLPI. The
"LLA Programming and Migration Guide", part no. 98194-90053, discusses the
technical aspects of migrating applications from LLA to DLPI.

******************************************************************************
7.3.3 Changes to DLPI

For 10.30:

   * Three new sample C source files have been added to
     /usr/lib/demos/networking/dlpi:

        o connection.c

        o connectionless.c

        o raw.c

   * A new timer routine is added to DLPI.

   * Three new ioctl's have been added to control the enabling and disabling
     of source routing:

        o DLPI_NO_SRC_ROUTING: Enables or disables source routing on a per
          stream basis. The third argument to ioctl is 1 to disable source
          routing on the stream or 0 to enable.

        o DLPI_SET_SRC_ROUTE_FLAG: Enables or disables source routing on a
          per interface basis. The third argument is 1 to enable source
          routing for the interface and 0 to disable.

        o DLPI_GET_SRC_ROUTE_FLAG: Returns the current state of source
          routing for the interface. If it returns 1, if it is enabled; if
          0, it is disabled.

Note that source routing is enabled on a stream only if it is enabled for
that stream and the interface to which it is attached. Otherwise, it is
disabled.

These ioctl's are used by lanadmin to support the -B and -b flags.

******************************************************************************
7.3.4 Patches

For 10.30:

   * The changes made in the May 97 Application Release of J2157A_APZ for
     10.20 have been incorporated. For details, see the release notes for
     the product in the January and May 97 Application Releases.

   * HP-UX 10.01 patch PHNE_8528 for DLPI (INDaa24114) has been rolled into
     10.30.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.4 HSC Fibre Channel/9000

Beginning with HP-UX 11.0, the HSC Fibre Channel networking product
(HSCFC/9000, HSC Fibre Channel Adapter) is part of the core OS. This product
is for 32- and 64-bit 11.0 kernels.

******************************************************************************
7.4.1 Known Problems and Workarounds

An MP system panics in fcgsc_isr() when more than 11 (eleven) devices are in
the system. This is because the Fibre Channel driver does not check for
shared interrupts. To fix this problem, install patch PHNE_12811 for the
11.0 release.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.5 Inetd

For 10.30:

Inetd adds support for the XTI transport. A network service that is compiled
to use the XTI transport can be invoked from inetd by specifying the keyword
xti in the socket type field. The protocol field can specify tcp, udp, or a
full pathname to a device, such as /dev/tcp.

******************************************************************************
7.5.1 inet_cots and inet_clts (t_open)

The device files /dev/tcp and /dev/udp should be used instead of
/dev/inet_cots and /dev/inet_clts as transport providers for t_open and
other calls.

The files /dev/inet_cots and /dev/inet_clts are still present on HP-UX 10.30
systems and symbolically linked to /dev/tcp and /dev/udp. Programmers may
want to modify existing applications to use /dev/tcp and /dev/udp.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.6 Internet Services (ARPA Services)

The Internet Services product is essential for networking with the UNIX core
software. Its services include the following:

   * Secure Internet Services

   * ftp

   * sendmail

   * mrouted

   * gated

   * telnet

Internet Services was the new 10.0 name for what has been called ARPA
Services in pre-10.0 HP-UX releases. The Internet Services include not only
the ARPA Services, but also services from Berkeley (BSD) and other sources.

The following product components are included:

----------------------------------------------------------------------------

  RPA           Berkeley Services       Routing   Booting      Other
  Services

  Telnet, FTP   r-services, sendmail,   gated     bootp,       NTP, ddfa,
  SMTP          BIND (DNS), network,              tftp,        mailx, elm
                libraries, finger                 rbootd

----------------------------------------------------------------------------

The next sections summarize the major changes to this product.

******************************************************************************
7.6.1 BIND Name Service

For 10.30:

The support of BIND 4.9.3 is documented in the "Installing and Administering
Internet Services" manual (part number B2355-90147).

******************************************************************************
7.6.2 ftp

The ftp Internet Service now provides support for Pluggable Authentication
Module (PAM). PAM is an Open Group standard for user authentication,
password modification, and validation of accounts. See the online manual,
"Managing Systems and Workgroups," for more information about PAM.

******************************************************************************
7.6.3 sendmail

HP-UX 11.0 includes sendmail version 8.7.6. However, Hewlett-Packard
strongly recommends you install the 11.0 sendmail 8.8.6 patch, to upgrade
your sendmail to the newer version (8.8.6). The patch includes defect fixes
and new features over the current version of sendmail (8.7.6).

New features provided by sendmail 8.8.6 are the following:

   * New ESMTP ETRN command to flush the queue for a specific host. The
     command takes a host name; data for that host is immediately (and
     asynchronously) flushed.

   * Three new command line flags to pass in DSN parameters. Delivery Status
     Notification (DSN) is a function of Message Transport Agent (MTA). This
     is an extension to the SMTP service, which allows an SMTP client to
     specify the following:

        o That delivery status notifications (DSNs) should be generated
          through use of NOTIFY=SUCCESS|FAILURE|NEVER|DELAY in the RCPT TO
          command.

        o Whether such notifications should return the contents of the
          message (through the use of RET=HDR in the MAIL FROM command).

        o Additional information to be returned with a DSN. The information
          allows the sender to identify both the recipient(s) for which the
          DSN was issued, and the transaction in which the original message
          was sent (through the use of the ENVID=id in the MAIL FROM command
          and ORCPT in the RCPT TO command).

     The three command line flags are as follows:

     -V envid : equivalent to ENVID=envid on the MAIL command

     -R ret : equivalent to RET=ret on the MAIL command

     -Nnotify : equivalent to NOTIFY=notify on the RCPT command

     Note that the -N flag applies to all recipients; there is no way to
     specify per-address notifications on the command line, nor is there an
     equivalent for the ORCPT= per-address parameter.

   * Support for IPv6-style domain literals, which can have colons between
     square brackets.

   * New F=0 (zero) mailer flag to turn off MX lookups.

   * MustQuoteChars option. This is a list of characters that must be quoted
     if they are found in the phrase part of an address (that is, the full
     name part). The characters that are not quoted will be interpreted. The
     default list is @,;:\()[].'

   * AllowBogusHELO option. If set, sendmail will allow HELO commands that
     do not include a host name for back compatibility with some stupid SMTP
     clients.

   * MaxDaemonChildren option. If this is set, sendmail will start rejecting
     connections if it has more than this many outstanding children
     accepting mail.

   * ConnectionRateThrottle option. If set to a positive value, the number
     of incoming SMTP connections that will be permitted in a single second
     is limited to this number. Connections are not refused during this
     time, just deferred.

   * Timeout.hoststatus option. This interval (defaulting to 30m) specifies
     how long cached information about the state of a host will be kept
     before it is considered stale and the host is retried. If you are using
     persistent host status (i.e., the HostStatusDirectory option is set),
     this (the Timeout.hoststatus option) will apply between runs.
     Otherwise, it applies only within a single queue run, and so it is
     useful only for hosts that have large queues that take a very long time
     to run.

   * SingleLineFromHeader option. If set, From: headers are coerced into
     being a single line even if they had new lines in them when read.

   * New -U command line flag and the XUSR ESMTP extension. Both indicate
     that this is the initial MUA->MTA submission. The flag currently does
     nothing, but in future releases (when MUAs start using these flags), it
     will probably turn on things like DNS canonification.

   * Anti-spamming options and rulesets. The following new file macros are
     used to handle anti-spamming:

        o File containing full e-mail addresses of well-known spammers:

          F{Spammer} /etc/mail/Spammer

        o File containing domains of well-known spammers:

          F{SpamDomains} /etc/mail/SpamDomains

        o File containing IP addresses of machines that can use our relay:

          F{LocalIP} /etc/mail/LocalIP

        o File containing names of machines that can use our relay:

          F{LocalNames} /etc/mail/LocalNames

        o File containing names we relay to:

          F{RelayTo} /etc/mail/RelayTo

        o File containing IP addresses of hosts denied access to this mail
          server:

          F{DeniedIP} /etc/mail/DeniedIP

        o File containing names of hosts denied access to this mail server:

          F{DeniedNames} /etc/mail/DeniedNames

     The new rulesets check_mail, check_rcpt, check_relay, and check_compat
     use the information in the above file macros and do validity checking
     on SMTP arguments. If the rulesets resolve to the $#error mailer, the
     SMTP command is rejected.

   * Eliminate the "No ! in UUCP From address!" message". Instead, a virtual
     UUCP address is created, using either a domain address or the $k macro.

   * UnsafeGroupWrites option. If set, .forward and :include: files that are
     group writeable are considered "unsafe". That is, programs and files
     referenced from such files are not valid recipients.

   * 7-bit to 8-bit MIME conversions. This occurs only if the recipient
     mailer has the F=9 flag set, and works on only text/plain body types.

   * Command line option, "-bD", that acts like -bd in all respects except
     that it runs in the foreground. This is useful for using with a wrapper
     that "watches" system services.

   * New value "time" for QueueSortOrder option. This causes the queue to be
     sorted strictly by the time of submission.

   * Persistent host status. This keeps the information normally maintained
     within a single queue run in disk files that are shared between
     sendmail instances. The HostStatusDirectory is the directory in which
     the information is maintained. If not set, persistent host status is
     turned off. If not a full path name, it is relative to the queue
     directory. A common value is ".hoststat". There are also two new
     operation modes:

     "* -bh" prints the status of hosts that have had recent connections.

     "* -bH" purges the host statuses.

   * SingleThreadDelivery option (requires HostStatusDirectory). Avoids
     letting two sendmails on the local machine open connections to the same
     remote host at the same time. This reduces the load on the other
     machine, but can cause mail to be delayed. For example, if one sendmail
     is delivering a huge message, other sendmails will not be able to send
     even small messages. Also, it requires another file descriptor (for the
     lock file) per connection, so you might have to reduce
     ConnectionCacheSize to avoid running out of per-process file
     descriptors.

   * RunAsUser option. This causes sendmail to do a setuid to that user
     early in processing to avoid potential security problems. However, this
     means that all .forward and :include: files must be readable by that
     user. Also, on systems that do not support the saved uid bit properly,
     all files to be written must be writeable by that user and all programs
     will be executed by that user. It is also incompatible with the
     SafeFileEnvironment option.

     In other words, it might not actually add much to security. However, it
     should be useful on firewalls and other places where users do not have
     accounts and the aliases file is well constrained.

   * Timeout.iconnect option. This is like Timeout.connect, except it is
     used only on the first attempt to deliver to an address. It could be
     set to be lower than Timeout.connect, on the principle that the mail
     should go through quickly to responsive hosts; less responsive hosts
     will wait for the next queue run.

   * Increase the number of MX hosts for a single name to 100, to better
     handle the truly huge service providers.

==============================================================================
7.6.3.1 Changes

As was true for HP-UX 10.30, using the /etc/mail/service.switch file to
specify the lookup sequence for host names is not supported on HP-UX 11.0.
Instead, sendmail uses the lookup sequence in /etc/nsswitch.conf.

The sendmail configuration file syntax has new statements to support the
above new features. However, if you do not want to use any of the new
features, you can use the 8.7.6 sendmail configuration file with sendmail
8.8.6.

==============================================================================
7.6.3.2 Compatibility

sendmail 8.8.6 will operate with the 8.7.6 sendmail configuration file.

******************************************************************************
7.6.4 gated

Beginning with HP-UX 10.30, gated 3.5 replaced gated 3.0, which ran on all
of the previous HP-UX 10.x releases. However, at the time, if the gated
configuration file needed updating, you had to manually edit the file so
that it was in 3.5 format.

In HP-UX 11.0, a script to convert a gated 3.0 configuration file to the
gated 3.5 format is available. So, if you have not as yet converted your
gated 3.0 configuration file to the 3.5 format, you can now use the script
to do so.

See the manual "Installing and Administering Internet Services" (p/n
B2355-90147) for more information about using the script.

The following new features are provided by gated 3.5:

   * Support of the Router Discovery Protocol (RDP)

     RDP is a standard protocol that is used to inform hosts of the presence
     of routers they can send packets to. RDP is intended to be used instead
     of hosts wiretapping routing protocols (for example, RIP). It is used
     instead of, or in addition to, having statically configured default
     routes in hosts. RDP consists of two portions. The server portion runs
     on routers, and the client portion runs on hosts.

   * Enhanced Tracing

     The tracing syntax has been changed, some of the previous global
     tracing options have been eliminated, some new global options have been
     added, and options have been added for some of the protocols.

        o The two statements previously in the Trace class (tracefile and
          traceoptions) have been combined into one traceoptions statement.
          So, the tracefile statement has been eliminated.

        o The tracing flags can be set per task, allowing tracing on
          specific groups, neighbors (EGP), or interfaces (OSPF).

        o The eliminated global options are internal, external, nostamp,
          mark, parse, kernel, bgp, egp, update, rip, hello, icmp, snmp, and
          protocol.

        o The new global options are state, normal, and policy.

        o More-specific packet tracing options (detail, send, and recv) are
          provided for the protocols.

        o BGP version 4

          Version 4 of BGP is provided, but like versions 2 and 3, it is
          unsupported on HP-UX systems.

==============================================================================
7.6.4.1 Configuration File Changes

The gated configuration file syntax has new statements to support the above
new features. However, if you do not want to use any of the new features and
did not have tracing configured in your gated 3.0 configuration file, you
can use your gated 3.0 configuration file with gated 3.5. For a description
of the new configuration file syntax, type

man 4 gated.conf

at the HP-UX prompt. You also can see the "Configuring gated" chapter in the
"Installing and Administering Internet Services" manual (part number
B2355-90147).

To check your gated 3.0 configuration file for compatibility with the gated
3.5 syntax, issue the gated command with the -c option, as follows:

gated -c [-f config_file]

where config_file is the name of the gated configuration file you are
checking (if it is different from the default configuration file
(etc/gated.conf).

==============================================================================
7.6.4.2 Other Changes

Other than the configuration file syntax changes, gated 3.5 has optimized
the scheduling, kernel queuing, and routing table algorithms. These internal
enhancements have no external impact to gated usage.

==============================================================================
7.6.4.3 Compatibility

The gated 3.5 executable can interoperate with previous versions of gated,
as long as the routing protocols are properly configured.

******************************************************************************
7.6.5 mrouted (DVMRP)

For 10.30:

The mrouted daemon released on HP-UX 10.30 is based on the public domain
mrouted 3.8 from Bill Fenner. mrouted 3.8 is a replacement for mrouted
versions 3.5, 3.6, and 3.7 with bug fixes. It runs on top of an IPM 3.5
kernel that is implemented in HP-UX 10.30 stream TCP/IP.

==============================================================================
7.6.5.1 Configuration File Changes

The configuration file syntax for mrouted 3.8 has been changed as follows:

   * Named boundaries are now allowed.

   * Additional subnets can be configured by using the new altnet option of
     the phyint command.

   * The default value of the rate_limit parameter of the tunnel command has
     been changed to 500Kbps.

==============================================================================
7.6.5.2 Other Changes

   * The kernel and mrouted makes sure that each is the correct version to
     prevent problems with mismatched kernel/mrouted versions. An mrouted
     that is too old will die with the following error:

     can't enable DVMRP routing in kernel:
     Option not supported by protocol.

   * mrouted can accept and propogate a default route.

   * The kernel route cache keeps source-specific routes instead of subnet
     routes, eliminating hashing and longest-match problems. Also, mrouted
     now allows classless routing.

   * Cached kernel routes get deleted only if no traffic is flowing to
     facilitate multicast trace routing.

******************************************************************************
7.6.6 telnet

For 10.30:

Beginning with HP-UX 10.30, the pseudo-terminal in the telnet/telnetd
internet service uses two STREAMS-based pseudo-terminal drivers (telm and
tels). Because of this, you must tune NSTRTEL, a new kernel parameter for
telnet pseudo-terminals.

NSTRTEL specifies the number of telnet slave devices to be created. The
number of telnet sessions is limited by the value of NSTRTEL. The default
value of NSTRTEL is 60 and the maximum possible value is set by MAX_STRTELS.
Note that if you want to change the value of NSTRTEL, you can use SAM, but
you can only increase the value beyond the default of 60 (you cannot make
the value less than 60). If you do increase the value, the additional
devices will automatically be created. If a user tries to telnet to a system
that does not have any telnet pseudo-terminals available, an appropriate
error message is displayed.

The device files are placed in /dev/pts and are named "t0", "t1", and so on.

For more information on telnet, refer to the telnet(1) and telnetd(1M)
manpages.

******************************************************************************
7.6.7 Secure Internet Services

As of 10.30, Praesidium/Security Service (P/SS) is supported by the Secure
Internet Services.

Before HP-UX 11.0, the Secure Internet Services were a separate product
("InternetSvcSec") that was optionally installable. That product provided
alternative versions of the Internet Services "ftp," "rcp," "remsh,"
"rlogin," and "telnet," and incorporated Kerberos Version 5 Beta 4
authentication and authorization.

Beginning with HP-UX 11.0, the Secure Internet Services are an optionally
enabled mechanism that is part of the Internet Services product. The
mechanism incorporates Kerberos V5 Release 1.0 authentication and
authorization for the above Internet Services.

----------------------------------------------------------------------------
NOTE

The convert_krb_config_files migration tool described in the manual
"Installing and Administering Internet Services" (part number B2355-90147)
is not included in the 11.0 release of HP-UX. If you are using the hardcopy
version of the manual, the tool is described on page 361. If you are using
the Instant Information version, the tool is described in the "Migrating
Version 5 Beta 4 Files to Version 5 Release 1.0" section of the "Secure
Internet Services" chapter (Chapter 11).

The migration tool is planned for inclusion in a future patch to the 11.0
release. Until then, you can find information about the V5-1.0 configuration
file format in the document "Using HP DCE 9000 Security with Kerberos
Applications." You can find this document in PostScript and ASCII forms in
the directory /opt/dce/newconfig/RelNotes/, in the files krbWhitePaper.ps
and krbWhitePaper.text.

Also, until the tool is available, you can use the krb_config command to
help you with the new configuration file. See the krb_config(1M) man page
for information on using that command.

----------------------------------------------------------------------------

See the manual "Installing and Administering Internet Services" (p/n
B2355-90147) for more information about enabling the new mechanism, as well
as interoperability considerations.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.7 LAN Driver Products

This section describes changes for LAN drivers in 10.30; this section does
not include changes made to ISU products (100VG, Token Ring, and so on).

******************************************************************************
7.7.1 Device Driver Changes for Streams

For 10.30:

   * Most networking drivers remain non-STREAMS-based. The DLPI layer
     converts between the Streams-based TCP/IP stack and the non-STREAMS
     driver. At 10.20, the TCP/IP stack itself was BSD-based.

   * struct ifnet no longer exists. All drivers have been modified to remove
     all references to struct ifnet and its fields.

   * struct arpcom no longer exists. All drivers have been modified to
     remove all references to struct arpcom and its fields.

   * schednetisr no longer exists. All drivers have been modified to remove
     references to schednetisr.

   * Drivers were changed to incorporate the change made to mib_physaddr_t.

   * struct ifqueue was changed to struct drvqueue. All drivers have been
     modified for this change.

   * Statistics are no longer maintained in ifnet because struct ifnet no
     longer exists. Instead, the driver updates mib data.

   * mbufs are now maintained by Hewlett-Packard.

   * The timer routine is now provided by DLPI.

   * Drivers do not keep track of the interface state because there is no
     ifnet structure in Streams TCP/IP. The IFF_UP_previously_up flag has
     been removed.

   * nmget_sysUpTime no longer exists. There is no longer a way to keep the
     uptime structure up-to-date.

   * Each driver is responsible for setting up the DLPI major number in the
     major number field in the hwift structure. This is used by lanscan.
     Drivers that use the HP-supported common DLPI should set the field to
     HP_DLPI_MAJOR_NUMBER (defined in lan_dlpikrn.h).

   * The output of lanscan is changed. Third party networking device driver
     writers are affected and code changes will be required. See the section
     on lanscan, which appears shortly.

******************************************************************************
7.7.2 lanadmin

For 10.30:

Changes to lanadmin for 10.30:

   * The support of the year 2000 is now available.

   * lanadmin uses PPA# instead of NMID.

   * lanadmin supports a new option -B on|off to enable/disable source
     routing with Token Ring. -b displays the state of source routing.
     Similar functionality was provided by lanconfig until (and including)
     10.20.

Executables that rely on NMID have to be changed. Also, if you use lanconfig
to enable/disable Token Ring source routing, you must now use lanadmin. See
the lanadmin manpage for details. Also, driver startup scripts must be
changed if they rely on NMID to be used by lanadmin.

******************************************************************************
7.7.3 lanconfig

For 10.30:

As of 10.30, lanconfig no longer exists. Instead, lanadmin can be used to
enable/disable Token Ring source routing.

For more information about lanconfig obsolescence, see discussion under
TCP/IP.

******************************************************************************
7.7.4 lanscan

For 10.30:

Below is an example of lanscan output before 10.30 and at 10.30.
Explanations for the notes follow.

----------------------------------------------------------------------------

  $ lanscan       # Before 10.30:
  Hardware Station        Crd Hardware Net-Interface  NM MAC   HP DLPI Mjr
  Path     Address        In# State    NameUnit State ID Type  Support Num
  2/0/2    0x080009251B2E 0   UP       lan0     UP    6  ETHER Yes     52
  10/4/8   0x10009090C856 2   UP       lan2     UP    4  802.5 Yes     103
                                       (b, d)  (a)                     (c)
  $ lanscan       # At 10.30:
  Hardware Station        Crd Hardware Net-Interface NM MAC   HP-DLPI DLPI
  Path     Address        In# State    NamePPA       ID Type  Support Mjr#
  2/0/2    0x080009251B2E 0   UP       lan0 snap0    6  ETHER Yes     119
  10/4/8   0x10009090C856 2   UP       lan2          4  802.5 Yes     119

----------------------------------------------------------------------------

a. As of 10.30, LAN drivers do not maintain interface state. lanscan at
10.20 displayed the interface state of each networking device. This can no
longer be done in 10.30. Therefore, the Network Interface State field has
been removed. Instead, the netstat command can be used to determine the
state of the interface:

----------------------------------------------------------------------------

  $ netstat -i
  Name             Mtu Network         Address             Ipkts      Opkts
  lo0             4136 127.0.0.0       127.0.0.1           123        164
  lan0            1500 15.13.136.0     15.13.136.73        103838     20238
  lan1*           1500 none            none                0          0

----------------------------------------------------------------------------

The asterisk (*) after lan1 indicates that it is DOWN.

Another way of finding the interface state is by using ifconfig:

$ ifconfig lan0
lan0: flags=843<UP,BROADCAST,RUNNING,MULTICAST>
        inet 15.13.136.73 netmask fffff800 broadcast 15.13.143.255
$ ifconfig lan1
lan1: flags=842<BROADCAST,RUNNING,MULTICAST>
        inet 0.0.0.0 netmask 0

b. Until 10.20, lanscan displayed the interface unit number in the Network
Interface NameUnit field. For 10.30, lanscan displays the Physical Point of
Attachment number (PPA#). This is the same as the card instance number if
the HP-supported common DLPI is used.

c. The driver-specific major number is replaced by the DLPI major number in
both normal and extended display. This number is the same for HP drivers
that use the HP-supported common DLPI. For third party drivers and HP
drivers that provide their own DLPI, this need not be true. The field,
HP-DLPI Support, indicates whether the HP-supported common DLPI is used.
Each driver is responsible for setting up the major number field in the
hwift structure. lanscan displays the major number from the hwift structure.

d. The interface naming convention is changed to support Streams TCP/IP. The
default interface name for all HP supported networking devices using
HP-supported common DLPI is lan (ATM is an exception). If a networking
device supports Ethernet and 802.3, that is, its MAC type is ETHER, it will
get a secondary name of snap. Snap is used to configure the second IP
address to use 802.3. For drivers that do not use the HP-supported common
DLPI, the interface name is obtained from the hwift structure.

The -i option also shows two names for the ETHER interface. For example, the
output of the -i option corresponding to the output above will be:

lan0 snap0
lan2

Two new options have been added:

#VALUE!

-p is used to display the PPA#.

The -n option functions as it did in 10.20.

Driver-specific information will be displayed after the extended station
address and encapsulation. Included in the driver-specific information are
the driver name, which is stored in the hwift name field, and, for the HP-PB
and Built-in FDDI interfaces, the driver-specific major number.

The purpose of displaying the driver name is to distinguish a 100VG
interface from a non-VG interface.

Executables that parse lanscan output will have to be changed. See the
lanscan manpage for details.

The PPA# is no longer equal to the NMID as it was at 10.20. Programs that
get the NMID from lanscan and expect it to be the same as PPA# should be
changed to get the PPA# instead.

Network management tools and some driver startup scripts that use NMID must
be changed. Any tool that depends on PPA# to be the same as NMID needs to be
changed. See the -p option for details.

******************************************************************************
7.7.5 linkloop

For 10.30:

   * Linkloop uses PPA# instead of NMID.

   * Executables that rely on NMID have to be changed. See the linkloop
     manpage for details.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.8 Lock Manager Formatting

For 10.30:

This section describes the code changes made to NETFMT to support NLM
version 4 and the new KLM protocol.

******************************************************************************
7.8.1 Header File Changes

   * <rpcsvc/nlm_prot.h>

     Added new NLM version 4 protocol data structures and XDR routines for
     NLM version 4.

     NLM version 3 protocol data structs have not been changed.

   * <rpcsvc/klm_prot.h>

     Replaced KLM protocol data structs with new structs.

     These files are actually maintained by rpc.lockd owners and are shared
     by rpc.lockd code.

netfmt.h:

   * Located in the format directory

        o <rpcsvc/nlm_prot.h>, which contains protocol data structures for
          NLM version 3 and NLM version 4.

        o <rpcsvc/klm_prot.h>, which contains new KLM protocol data structs.

These header files are also shared by rpc.lockd:

   * Includes files locl_nlm.h, which contains union structs for use by NLM
     formatting routines:

        o locl_klm.h, which contains union structs for use by KLM formatting
          routines

   * All references to lock_prot.h are deleted

   * All references to prot_lock.h are deleted

New locl_nlm.h header file:

   * Located in the format directory

   * Includes union structures for use by formatting routines

   * Sourced in by netfmt.h

New locl_klm.h header file:

   * Located in the format directory

   * Includes union structures for use by formatting routines

   * Sourced in by netfmt.h

******************************************************************************
7.8.2 Changes to C Source Files

NLM , KLM, and STATUS MONITOR formatting functions are moved to lck_fmt.c
and all nlm, klm, and sm global declarations are moved to lck_fmt.c module.

NLM, KLM, and SM formatting routines in netnice.c are moved to lck_fmt.c and
do not exist in netnice.c.

NLM, KLM, and SM global structs in netnice.c and nettrfmt.c are moved to the
lck_fmt.c module. nlm, klm, and sm initialization are moved to lck_fmt.c.

xdr_nlm.c and xdr_klm.c files now contain new XDR decode routines, such as
xdr_nlm4_xxx(), xdr_klm_xxx(), and so on, which are invoked from
fmt_nlm_nice()/fmt_klm_nice in lck_fmt.c to decode XDR data.

New formatting macros for NLM version 4 are added to lck_fmt.c. Formatting
macros for KLM are changed to support new KLM data structures. NLM version 2
formatting macros are unaltered.

Terse formatting routines for NLM, KLM, NLM4, and so on are unaltered.

******************************************************************************
7.8.3 Makefile Changes

makefile changed to compile lck_fmt.c with required compile time options.

******************************************************************************
7.8.4 New NLM Version 4 Output Format

NLM version 4 protocol data structures that contain 64-bit numeric data,
such as lock length and offset, are displayed as 22-byte wide padded decimal
digits. Also for NLM version 3, there is an increased field width from 7 to
11 to contain a maximum possible 32-bit numeric number.

KLM protocol data containing 64-bit numeric data, such as lock length and
offset, is displayed as 22-byte wide padded decimal digits.

All other fields are unchanged with respect to formatting. Field width for
some 32-bit numeric fields are increased to 11.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.9 Loopback Drivers

The address length for loopback drivers /dev/tlcots, /dev/tlcotsod,
/dev/tlclts has changed in 11.0.

The address length for the loopback drivers, which is normally retrieved in
t_info.addr by a call to t_open(3) or t_getinfo(3), has changed from -1 to a
positive value. An address length value of -1 indicates that the address
length is unlimited. A positive value indicates the actual size.

There is no impact on TLI/XTI applications that do not assume a specific
address length. If an application uses a very long address, it is still
unlikely that it will need more than the buffer provided in 11.0. If the
application uses an address that exceeds the buffer size, a call to t_bind
will return the TBADADDR error.

NOTE that TLI/XTI applications should not rely on specific values for
protocol providers, and should always check the t_info structure for
provider characteristics.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.10 mount_nfs Command

For 10.30:

There is now a subcommand of mount/umount for each file system type. The NFS
mount_nfs/umount_nfs subcommands will mount and unmount file systems of type
nfs or nfs3. All other file system types have their own mount/umount
subcommand.

Here are the new options to the mount_nfs command:

----------------------------------------------------------------------------

  vers=n    The version of the NFS protocol to use. By default, the local
            NFS client will attempt to mount the file system using NFS
            version 3. If the NFS server does not support version 3, the
            file system will be mounted using version 2.

            If you know that the NFS server does not support version 3,
            specify vers=2, and you will save time during the mount
            because the client will not attempt to use version 3 before
            using version 2.

  remount   If the file system is mounted read-only, this option remounts
            it read/write. This allows you to change the access
            permissions from read-only to read/write without forcing
            users to leave the mounted directory or killing all processes
            using it.

  grpid     Forces a newly created file in the mounted file system to
            inherit the group ID of the parent directory. By default, a
            newly created file inherits the effective group ID of the
            calling process unless the GID bit is set on the parent
            directory. If the GID bit is set, the new file inherits the
            group ID of the parent directory.

  -O        Overlay mount. Allows the file system to be mounted over an
            existing mount point, making the underlying file system
            inaccessible. If you attempt to mount a file system over an
            existing mount point without the -O option, the mount will
            fail with the error device busy.

----------------------------------------------------------------------------

Refer to the mount_nfs(1M) manpage for more information.

mount_nfs is compatible with older versions; new options are not required.
Using the old options should work the same as they did on previous releases.

******************************************************************************
7.10.1 Configuration

The netdir facility that mount uses to resolve addresses needs the file
/etc/netconfig to operate. This file contains information about the devices
/dev/udp and /dev/tcp.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.11 Name Service Switch

For 10.30:

The Dynamic Loading Name Service Switch is a complete replacement for
Hewlett-Packard's current implementation of the name service switch. The
APIs are not compatible. This implementation completely removes the old
switch. Default behavior is also not compatible. The reasons for this change
are to add new Name Service Technology without having to change the APIs in
libc and to decouple networking code from libc.2.

Note that the default "status=action" pairs (that is, the action associated
with the given status) of the new version have changed since the previous
version. See the "Installing and Administering NFS Services" manual (part
number B1031-90042) for details.

Also see the "Installing and Administering NFS Services" manual (part number
B1031-90042) for details about the new Name Service Switch.

******************************************************************************
7.11.1 APIs

The current switch implementation forces the owner of the API to be aware of
all possible name services. Adding new name services requires the owner of
the API to modify the code to support the new name services. The dynamic
loading Name Service Switch (NSS) removes the need for the API to know about
name services. The new NSS software now provides a mechanism for loading a
shared library, which will be responsible for communicating with a name
service. HP provides shared libraries that support the following Name
Services:

FILES

NIS

NISPLUS

DNS

COMPAT

The FILES shared library support reading the system databases located in the
/etc directory (such as /etc/passwd, /etc/group, /etc/rpc, and so on).

The NIS shared library supports the communication with the ypserv process or
the rpc.nisd process in compatibility mode to retrieve information.

The NISPLUS shared library supports the communication with the rpc.nisd
process to retrieve information.

The DNS shared library supports communication with the Domain Name Services.

The COMPAT shared library supports the old +/-/@ syntax that is currently
used in the passwd and group files to include/exclude NIS information files.

******************************************************************************
7.11.2 Lookups

The new Name Service Switch supports the following types of lookups, which
were not supported before HP-UX release 10.30:

----------------------------------------------------------------------------

  passwd      User login information stored in the /etc/passwd file, the
              NIS passwd.byname and passwd.byuid maps, or the NIS+ passwd
              table.

  group       HP-UX group information stored in the /etc/group file, the
              NIS group.bygid and group.byname maps, or the NIS+ group
              table.

  automount   NFS automounter maps stored in files like /etc/auto_master
              and /etc/auto_home, NIS maps like auto.master and
              auto.home, or NIS+ tables like auto_master and auto_home.

  aliases     sendmail aliases stored in the /etc/mail/aliases file, the
              NIS mail.aliases and mail.byaddr maps, or the NIS
              mail_aliases table.

----------------------------------------------------------------------------

For more information, type "man 4 nsswitch.conf" at the HP-UX prompt.

******************************************************************************
7.11.3 Performance

Performance through the Name Service Switch is dependent on the number of
back-ends that need to be searched to find the requested data.

In simple cases, the first lookup to any Name Service will always be slower
than the previous Switch technology due to the overhead of loading the
shared libraries.

Repeated lookups will have the following performance characteristics:

----------------------------------------------------------------------------

  FILES    Faster lookups as the size of the database grows.

  NIS      No noticeable difference.

  NIS+     Equal to NIS.

  DNS      No noticable difference.

  COMPAT   Slower than the current implementation. COMPAT exists as a
           temporary solution to migrate to either FILES NIS or FILES
           NISPLUS.

----------------------------------------------------------------------------

In the more complex cases (for example, using initgroups to find groups a
user belongs to), the switch should provide faster results in the following
cases:

   * FILES only lookup

   * NISPLUS lookups (will be faster than NIS due to the NIS+ database)

The Switch provides slower or comparable results in the following cases:

   * NIS (should be comparable, does a ypcat, and parses the contents
     locally)

   * COMPAT (should be slower; see above)

******************************************************************************
7.11.4 Compatibility

The new Name Service Switch is not compatible with the old switch. Some
compatibility is provided by providing a default configuration file,
/etc/nsswitch.hp_defaults, which initializes the switch to behave in a
compatible manner. To obtain the default, you must copy
/etc/nsswitch.hp_defaults to /etc/nsswitch.conf. This default configuration
uses COMPAT mode, which is the slowest performing name service
configuration. Therefore, use either FILES, NIS, or NISPLUS.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.12 NetTL

Prior to 10.30, the network tracing functionality for any subsystem was
limited because the tracing could be enabled only for an entire subsystem.
Filtering messages was possible only at the time of formatting the trace
messages.

For 10.30, the GUI component of NetTL, nettladm(1M), has been enhanced to
provide you the additional functionality of filtering the trace/log file at
the time of tracing itself instead of at the time of viewing/printing the
traced results.

   * To provide the functionality mentioned above, you are prompted to enter
     values for subsystem-specific parameters at the time of enabling the
     tracing for the subsystem.

     -----------------------------------------------------------------------
     NOTE

     Presently, the TCP/IP subsystems are the only streams-based subsystems
     that NetTL supports for tracing and logging. The NetTL GUI interface,
     nettladm(1M), provides the above functionality only for the
     streams-based subsystems.

     Non-streams-based subsystems will continue to function with the 10.30
     version of NetTL. However, those subsystems will function as they have
     with earlier releases of NetTL.

     -----------------------------------------------------------------------

     -----------------------------------------------------------------------
     NOTE

     Streams-based systems other than S/TCP (OTS/9000, for instance) that
     are using pre-10.30 NetTL mechanisms will continue to be supported
     using the previous mechanisms.

     -----------------------------------------------------------------------

   * An additional option -st[reams] is provided with the command
     nettlconf(1M). With this option, you can add an entry for a
     streams-based subsystem into the subsystem configuration file
     /etc/nettlgen.conf.

   * NetTL will function alike in both classic and UNIX95 HP-UX
     environments.

   * NetTL supports X11R6. NetTL also supports both NFS PV2 and NFS PV3
     formatting.

   * All public interfaces have been made thread-safe and are performance
     tuned. The library libntl.sl is also now thread-safe.

   * NetTL is now SPEC 1170 compliant. With this change, NetTL only calls
     the standard functions specified by the UNIX95 Standard.

   * The libntl shared library has been versioned. In the 10.30 release, the
     version of this library is libntl.2. All pre-10.30 releases will refer
     to libntl.1, whereas 10.30 and later releases will refer to libntl.2.

     libntl.1 has been provided on 10.30 only for runtime support for
     applications on 10.20, whereas all 10.30 applications will be linking
     to libntl.2.

     The difference between libntl.1 and libntl.2 on 10.30 is that all APIs
     in libntl.2 are thread-safe.

   * During the upgrade from pre-10.30 to 10.30, if an old trace/log file is
     detected, NetTL will save the trace/log file as <file>.OLD. New
     trace/log messages will then be appended to the newly created trace/log
     file.

******************************************************************************
7.12.1 Compatibility

The user space library libntl.sl is binary mobile between 10.20 and 10.30.
However, 10.30 applications need to be single threaded to link with the
10.20 library.

On 10.30, the version of libntl is libntl.2. For pre-10.30 releases, the
version of libntl is libntl.1.

******************************************************************************
7.12.2 Obsolescence

NetTL will no longer be supported on PA1.0 HP systems. It will be supported
on PA1.1 systems and onwards.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.13 NFS Automounter

For 10.30:

The NFS automounter now uses the Name Service Switch to locate its maps. Map
names in the automounter master map or included in other maps are assumed to
be local file names if they contain one or more slashes (/). Map names
containing no slashes are located by consulting the Name Service Switch.

The -m option to the automount command, which caused the automounter to
ignore an NIS automounter map if one existed, is no longer supported. At
startup, if you specify the -f filename option to the automount command, the
automounter uses the file you specify as the master map. It also uses your
Name Service Switch configuration to determine whether to look for an NIS or
NIS+ auto_master map.

If the automount mapname is specified with explicit absolute or relative
pathnames, it is treated as a local map. Otherwise, it is resolved by the
Name Service Switch according to the entry for automounter in
/etc/nsswitch.conf such as

automount: files nis or

automount: files nisplus

Refer to the automount(1M) manpage for more information.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.14 NFS Protocol Version 3

For 10.30:

NFS protocol version 3 is supported on HP-UX 10.30. It allows you to access
larger files than with NFS protocol version 2.

By default, the rpc.mountd command will attempt to use NFS protocol version
3 to mount a file system. If the NFS server does not support protocol
version 3, rpc.mountd will use protocol version 2. The new vers=n option to
rpc.mountd allows you to specify protocol version 2, which saves time during
mounting if you know that the server does not support protocol version 3.

The NFS automounter does not support NFS protocol version 3.

For more information, type "man 1M mountd" at the HP-UX prompt.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.15 NFS PV3 & mountd (Version 3) Formatting

For 10.30:

nfs_fmt.c contains formatting routines for NFS PV2 and PV3. mntd_fmt.c
contains formatting routines for mountd version 1; mntd_fmt3.c contains
formatting routines for mountd version 3.

Changes:

   * The functions fmt_nfs_terse(), fmt_mntd_terse() from netterse.c,
     fmt_nfs_nice(), and fmt_mntd_nice() from netnice.c are removed and
     placed in new files nfs_fmt.c and mntd_fmt.c resp.

   * The fh_align() function is moved to nfs_fmt.c because it is referenced
     only by nfs and mountd.

   * All the global variables corresponding to nfs and mountd are also moved
     from nettrfmt.c to nfs_fmt.c and mntd_fmt.c resp.

   * New header files nfs3.h and nfs_fmt.h are added and the existing header
     files defs.h, netfmt.h, nettr.h, and pxp.h are changed to compile in
     ANSI.

   * makefile has been changed to incorporate the new files for NFS
     (nfs_fmt.c and nfs3_xdr.c), for mountd (mntd_fmt3.c and mount_xdr.c),
     and compiles in ANSI.

   * All nfs formatting is now done in nfs_fmt.c, mount version1 formatting
     is done in mntd_fmt.c, and mount version3 formatting is done in
     mntd_fmt3.c. The reason to have mount formatting in two different files
     is some data structs and functions have the same name but different
     definitions.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.16 NFS Services APIs

For 10.30:

The libnsl.sl/a library is new with HP-UX release 10.30. It contains the NFS
Services APIs for netdir, netselect, NIS, NIS+, RPC, and XDR.

The old NIS, RPC, and XDR APIs have been removed from libc.2/a, but are
still supported in libc.1. This means that you do not have to recompile your
existing NFS, NIS, and RPC applications. If you want to recompile your
existing applications with the old APIs, you must specify the -lnsl option.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.17 NIS+

For 10.30:

NIS+, the next generation of the Network Information Service (NIS), is
supported at HP-UX 10.30. NIS+ is not an enhancement to NIS; it is an
entirely new service. Like NIS, it is a distributed database system that
allows you to maintain commonly used configuration information on a master
server and propagate the information to all the hosts in your network.

See nis+(1) for more information.

******************************************************************************
7.17.1 Compatibility with Previous Releases

NIS will continue to be supported. You do not have to change your NIS
configuration.

******************************************************************************
7.17.2 Advantages of NIS+

NIS+ has the following advantages over NIS:

   * NIS+ is more scalable than NIS. It supports a hierarchical domain
     structure called a namespace, like the domain structure of DNS, which
     can grow with your organization.

   * NIS+ is not limited by subnet boundaries. Clients do not broadcast
     requests, so you do not need a server on every subnet.

   * NIS+ is secure. It uses a private key/public key authentication scheme
     with DES encryption. Every user and host in the namespace has its own
     unique credentials.

   * You can modify the information in an NIS+ table from any host in the
     namespace. Modifications are made directly to the NIS+ table, so you do
     not have to rebuild the table from a file.

   * Replica servers in NIS+ domains receive each table update as it is
     made. You do not have to push whole tables to the replica servers.

   * An NIS+ table may contain many columns, and you can search for entries
     based on the information in any column.

For more information, type "man 1 nis" at the HP-UX prompt, or see the
manual "Installing and Administering NFS Services", part number B1031-90042.

******************************************************************************
7.17.3 Command and Function Names

All commands and functions that use NIS version 2 are prefixed by the
letters yp, such as ypmatch(1), ypcat(1), yp_match(3N), and yp_first(3N).
Commands and functions that use the new replacement software NIS+ are
prefixed by the letters nis, such as nismatch(1), nischown(1), nis_list(3N),
and nis_add_entry(3N).

******************************************************************************
7.17.4 Size Requirement

The calculations below are based on 1K of disk space per client plus 60-70
percent increase for NIS+ transaction log files:

   * 17 Mbytes of disk space for /var/nis

   * 64-128 Mbytes of memory

   * Swap space equal to triple the memory (in addition to normal swap
     space)

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.18 Path Maximum Transmission Unit (PMTU) Discovery

As of 10.30, the streams-based TCP/IP provides a different mechanism for
enabling or disabling the Path Maximum Transmission Unit (PMTU) Discovery
algorithm. The ndd tunable parameter ip_pmtu_strategy controls the
selection. For more information, use the command:

ndd -h ip_pmtu_strategy

Because of the PMTU changes, the -p 0 option in the route command and the
PmtuTime field in netstat -r output are not supported.

PMTU can be applied to network routes as well as host routes. Previously it
applied only to host routes.

******************************************************************************
7.18.1 route Command

The "-p pmtu" option in the route command specifies a path maximum
transmission unit (PMTU) value for a static route. Previously this option
applied only to host routes. This option can now be applied to network
routes as well as host routes.

Normally, the appropriate PMTU is determined automatically. The "-p pmtu"
option is useful only if you know the network topology well enough to choose
an appropriate PMTU for a host or network route. IP will fragment a datagram
to the PMTU specified for the route on the local host before sending the
datagram to the remote. If the PMTU specified in the route command is
correct, it will avoid fragmentation by routers along the path.

Using the "-p pmtu" option can simplify the maintenance of route when the
same PMTU can be applied to all hosts on a network.

However, this feature can result in poor network performance or connectivity
problems if a network consists of multiple media with different PMTUs.

Therefore, using "-p pmtu" for a network route should be used with some
caution.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.19 RPCBIND (Versions 3 and 4) Formatting

Changes:

   * pmap_fmt.c contains formatting routines for portmap and rpcbind.

   * The global variables and functions are removed from nettrfmt.c,
     netnice.c, and netterse.c for portmap and placed in pmap_fmt.c.

   * Formatting routines for all new procedures in rpcbind are added. All
     rpcb* data structures are defined in /usr/include/rpc/rpcb_prot.h and

     the corresponding XDR routines are in libnsl.

Changes Affecting Routines:

The following routines will be moved to a new library in a future release
and may be obsoleted in a future HP-UX release.

endhostent_r       endnetent_r          endnetgrent_r
endprotoent_r      endrpcent_r          endservent_r
gethostbyaddr_r    gethosbyname_r       gethostent_r
getnetbyaddr_r     getnetbyname_r       getnetent_r
getnetgrent_r      getprotobyname_r     getprotobyport_r
getprotoent_r      getrpcbyname_r       getrpcbynumber_r
getprcent_r        getservbyname_r      getservbyport_r
getservent_r       sethostent_r         setnetent_r
setnetgrent_r      setprotoent_r        setrpcent_r
setservent_r

******************************************************************************
7.19.1 rpcbind Command

For 10.30:

The portmap(1M) process has been replaced by the new rpcbind(1M) process.
This change is completely transparent to NFS Services users and
applications; you do not have to change your configuration.

Refer to the rpcbind(1M) manpage for more information.

rpcbind has a warmstart option:

----------------------------------------------------------------------------

  -w   Do a warm start. If rpcbind aborts or terminates on SIGINT or
       SIGTERM, it will write the current list of registered services to
       /tmp/portmap.file and /tmp/rpcbind.file. Starting rpcbind with the
       -w option instructs it to look for these files and start operation
       with the registrations found in them. This allows rpcbind to resume
       operation without requiring all RPC services to be restarted.

----------------------------------------------------------------------------

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.20 rpcgen

For 10.30:

rpcgen is a tool that generates C code to implement an RPC protocol. The
input to rpcgen is a language similar to C known as RPC Language (Remote
Procedure Call Language).

rpcgen has a number of new options to generate older, transport-specific RPC
APIs that are still supported over TI-RPC.

Existing RPC applications are unaffected by this change. If you wish to
recompile existing RPC applications, you must specify the -lnsl option to
link them to the correct libraries.

For details, refer to the rpcgen(1M) manpage.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.21 rpcinfo

For 10.30:

rpcinfo makes an RPC call to an RPC server and reports what it finds.
rpcinfo by default lists all the registered RPC services with rpcbind on the
local host. Below is a list of the new rpcinfo options:

----------------------------------------------------------------------------

  -T <transport>    Specify the transport on which the service is
                    required. If this option is not specified, rpcinfo
                    uses the transport specified in the NETPATH
                    environment variable, or if that is unset or null,
                    the transport in the netconfig(4) database is used.
                    This is a generic option and can be used in
                    conjunction with other options.

  -a                Use serv_address as the (universal) address for the
  <serv_address >   service on transport to ping procedure 0 of the
                    specified prognum and report whether a response was
                    received. The -T option is required with the -a
                    option.

                    If versnum is not specified, rpcinfo tries to ping
                    all available version numbers for that program
                    number. This option avoids calls to remote rpcbind to
                    find the address of the service. The serv_address is
                    specified in universal address format of the given
                    transport.

  -b                Make an RPC broadcast to procedure 0 of the specified
                    prognum and versnum and report all hosts that
                    respond. If transport is specified, it broadcasts its
                    request only on the specified transport. If
                    broadcasting is not supported by any transport, an
                    error message is printed. Use of broadcasting should
                    be limited because of the potential for adverse
                    effect on other systems.

  -d                Delete registration for the RPC service of the
                    specified prognum and versnum. If transport is
                    specified, unregister the service on only that
                    transport; otherwise, unregister the service on all
                    the transports on which it was registered. Only the
                    owner of a service and the super-user (who can
                    deleted any service) can delete a registration.

  -l                Display a list of entries with a given prognum and
                    versnum on the specified host. Entries are returned
                    for all transports in the same protocol family as
                    that used to contact the remote rpcbind.

  -m                Display a table of statistics of rpcbind operations
                    on the given host. The table shows statistics for
                    each version of rpcbind (versions 2, 3, and 4),
                    giving the number of times each procedure was
                    requested and successfully serviced, the number and
                    type of remote call requests that were made, and
                    information about RPC address lookups that were
                    handled. This is useful for monitoring RPC activities
                    on the host.

  -n <portnum>      Use portnum as the port number for the -t and - u
                    options instead of the port number given by rpcbindl.
                    Using this option avoids a call to the remote rpcbind
                    to identify the address of the service. This option
                    is obsoleted by the -a option.

  -p                Probe rpcbind on the host using version 2 of the
                    rpcbind protocol and display a list of all registered
                    RPC programs. If the host is not specified, it
                    defaults to the local host. Note that version 2 of
                    the rpcbind protocol was previously known as the
                    portmapper protocol.

  -s                Display a concise list of all registered RPC programs
                    on host. If a host is not specified, it defaults to
                    the local host.

  -t                Make an RPC call to procedure 0 of prognum on the
                    specified host using TCP and report whether a
                    response was received. This option is made obsolete
                    by the -T option.

  -u                Make an RPC call to procedure 0 of prognum on the
                    specified host using UDP and report whether a
                    response was received. This option is obsoleted by
                    the -T option.

----------------------------------------------------------------------------

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.22 rpc.lockd

For 10.30:

The rpc.lockd process now uses reserved TCP/UDP port 4045 for its
interactions with the kernel.

If any other process is using port number 4045 when rpc.lockd is started, it
will log an error message and die.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.23 rpc.mountd

For 10.30:

rpc.mountd is an RPC server that answers file system mount requests. It
reads the file /etc/xtab (described in exports(4)) to determine what
directories are available to which machines. It also provides information on
what file systems are mounted by which clients.

rpc.mountd now supports NFS PV3, but no longer supports the -e or -n
options, which are defined below.

----------------------------------------------------------------------------

  -e   Exit after serving each RPC request. When this option is used, the
       inetd security file /usr/adm/inetd.sec can control access to RPC
       services.

  -n   Exit only if:

          * portmap dies (see portmap(1M))

          * another rpc.mountd registers with portmap

          * rpc.mountd becomes unregistered with portmap

       This option is more efficient because a new process is not
       launched for each RPC request. This option is the default.

----------------------------------------------------------------------------

The header file /usr/include/rpcsvc/mount.h has been recoded to support NFS
PV3. These changes are not compatible with the old
/usr/include/rpcsvc/mount.h.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.24 Streams

******************************************************************************
7.24.1 XTI/TLI Use with Multi-threaded Applications

For 10.30:

The XTI and TLI interface function calls are thread-safe for the 10.30
threads model (POSIX threads, also named kernel threads). The individual
manpages explain the details.

XTI/TLI multithreaded applications compiled on systems running previous
releases that use DCE threads (also known as CMA threads) continue to be
binary compatible.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.25 TCP/IP

For 10.30:

The TCP/IP stack is streams-based in 10.30. Some of the pre-10.30 BSD kernel
data structures may no longer exist.

The following lists the new features for 10.30. These features are described
in detail in this section.

   * /etc/rc.config.d/netconf changes.

   * Logical interfaces allow multiple IP addresses per card.

   * IP/IEEE802.3 requires SNAP encapsulation and a separate logical
     interface.

   * ndd utility for examining and modifying system-wide transport
     parameters.

   * New PPP software replaces PPL to provide both PPP and SLIP connections.

******************************************************************************
7.25.1 Obsolete Features

   * lanconfig (functionality included in ifconfig/lanadmin).

   * ifalias (functionality included in ifconfig).

   * nettune (functionality included in ndd).

   * ppl (replaced by pppd).

******************************************************************************
7.25.2 Changes to /etc/rc.config.d/netconf

The 10.30 installation script will modify any existing
/etc/rc.config.d/netconf file to match the new file syntax. In most
configurations, no further changes are necessary. However, systems that use
IP over IEEE802.3 must change their IP configuration. Refer to the sections
"Logical Interfaces: IP/Ethernet vs. IP/IEEE802.3" and "Configuring
SNAP/IEEE802.3 Interfaces" for more information.

==============================================================================
7.25.2.1 LANCONFIG_ARGS

Statements for LANCONFIG_ARGS are no longer supported.

Any LANCONFIG_ARGS statements are ignored.

==============================================================================
7.25.2.2 INTERFACE_NAME

The interface name syntax for INTERFACE_NAME statements has been expanded to
allow "logical interface" names. Logical interfaces and interface names are
explained in the sections below.

==============================================================================
7.25.2.3 New Statements: INTERFACE_STATE, DHCP_ENABLE

There are two new statements: INTERFACE_STATE and DHCP_ENABLE.

INTERFACE_STATE determines the logical interface state ("up", "down", or
blank) at system boot time. If nothing is specified, the state defaults to
"up".

DHCP_ENABLE determines if the system is a Dynamic Host Configuration
Protocol (DHCP) client and if the IP parameters (IP address, subnet mask,
and so on) will be set using DHCP. The default is 0 (the system is not a
DHCP client). The DHCP_ENABLE statement was added at 10.20.

******************************************************************************
7.25.3 Logical Interfaces: IP Multiplexing

Logical interfaces let you multiplex IP addresses over a physical interface
(IP multiplexing). With IP multiplexing, you configure multiple IP addresses
for a single physical interface.

IP multiplexing allows a single system to be seen as multiple systems with
multiple IP addresses and host names, even if the system has only one
physical interface card. This functionality allows multiple instances of
applications to appear as if they reside on separate machines. For example,
an Internet Services Provider (ISP) may provide websites for the Acme, Bob,
and Cody companies. Using IP multiplexing, a single system with one physical
interface can appear to have three IP addresses, each home to a different
website. From the outside world, it would appear as if the Acme, Bob, and
Cody companies have websites on different machines.

        +-----------------------------------------------+
        | www.acme.com     www.bob.com     www.cody.com |
        |       \              |              /         |
        |   +-----------+-------------+-----------+     |
        |   |           |             |           |     |
        |   | 16.1.1.1  |  16.2.2.2   | 17.1.1.1  |     |
        |   |           |             |           |     |
        +---+-----------+-------------+-----------+-----+
                               |
                               |
  Z----------------------------+-------------------------------Z

Note that the IP addresses assigned to a card may be on the same subnet or
on different subnets. In this example, two of the IP addresses for the card
are part of the same network (16.1.1.1 and 16.2.2.2) and the third address
is from a different network (17.1.1.1).

There are no performance advantages or disadvantages. All transport
resources (buffers) are pooled and used by all logical interfaces with no
partitioning for the individual interfaces.

To use IP multiplexing with routers, the router devices must be able to map
multiple IP addresses to the same MAC address. Some vendors call this
functionality "multinetting" or "secondary subnets" and may limit the
maximum number of IP addresses mapped to the same MAC address. For example,
the HP 650 router supports a maximum of 16 IP addresses mapped to the same
MAC address.

******************************************************************************
7.25.4 Logical Interfaces: IP/Ethernet vs. IP/IEEE802.3

Logical interfaces are also used when an interface card is used for both
IP/Ethernet and IP/IEEE802.3 packets. At HP-UX 10.30, sending IP packets
using ethernet and sending IP packets using IEEE802.3 requires two separate
logical interfaces of the transport. To send IP packets using ethernet and
IEEE 802.3, you must configure two logical interfaces with two different IP
addresses. In addition, the IP addresses must be in two different subnets.
(In prior releases, IP packets could be sent over ethernet or IEEE 802.3
simultaneously using the same IP address.) Refer to the section "Interface
Names" and "Configuring SNAP/IEEE802.3 Interfaces" for more information on
configuring logical interfaces for IP/IEEE802.3.

In addition, at 10.30, all IP packets sent over IEEE802.3 must use
Sub-Network Access Protocol (SNAP) encapsulation. In SNAP, the IEEE802.3
DSAP and SSAP fields are both hexadecimal AA. The 802.3 control field is 3
(unnumbered information or data). Following this is the SNAP header: an
organization code and type field. The organization code is 24-bits and
assigned by IEEE, and is typically 0x000000. The 16-bit type field is used
to carry an ethernet type value. For example, the type value for IP is
0x0800, as shown below.

----------------------------------------------------------------------------

  +-----------------------------------------------------------------
  |dest MAC| src MAC | DSAP | SSAP | ctl | organize | type  | data ...
  |        |         | AA   | AA   | 03  | 00 00 00 | 08 00 | IP hdr
  +-----------------------------------------------------------------

----------------------------------------------------------------------------

==============================================================================
7.25.4.1 IEEE802.3 and DTCs, JetDirect, MPE-XL

DTCs and JetDirect cards communicate with IEEE802.3 link-level (DLPI)
applications on HP-UX hosts. These applications run directly over the
IEEE802.3 protocol (IP is not used) and do not require a SNAP/IEEE802.3
logical interface. SNAP/IEEE802.3 logical interfaces are only required for
IP packets sent over IEEE802.3.

All supported MPE-XL systems (version 4.0 and later) support ethernet.

******************************************************************************
7.25.5 Interface Names

Interface names used for ifconfig commands and /etc/rc.config.d/netconf
statements can have a logical instance number appended to the card name (for
example, lan0:1). The new syntax is:

nameX[:logical_instance]

Where:

name is the class of interface, such as lan (Ethernet LAN, token ring, FDDI,
or Fibre Channel links), snap (IEEE802.3 with SNAP encapsulation), atm
(ATM), du (Dial-up), ixe (X.25), and mfe (Frame Relay).

X is the Physical Point of Attachment (PPA). This is a numerical index for
the physical card in its class. For LAN devices, the lanscan command will
display the name and PPA number concatenated (such as lan0) in the
Net-Interface NamePPA column.

logical_instance is an index corresponding to the logical interface for the
specified card. The default is 0. The interface name lan0 is equivalent to
lan0:0.

The first logical instance (logical instance 0) for a card type and card
instance (lan0:0, lan1:0, snap0:0) is known as the initial interface. The
initial interface for a card/encapsulation type must be configured before
subsequent logical interfaces. For example, you must configure lan2:0 (or
lan2) before configuring lan2:1. Once you have configured the initial
interface, you can configure the subsequent logical interfaces in any order.

******************************************************************************
7.25.6 Configuring Multiplexed IP Addresses

In this example, the system has two physical interfaces and three logical
interfaces.

  +---------------------------------------------+
  |  44.1                       48.1            |
  |   +----------+----------+    +----------+   |
  |   |          |          |    |          |   |
  |   | 16.1.1.1 | 16.2.2.2 |    | 18.1.1.1 |   |
  |   | lan0:0   | lan0:1   |    | lan1:0   |   |
  +---+----------+----------+----+----------+---+
                       |              |
                       |              |
                       |   Z----------+---------Z
           Z-----------+-----------Z

lanscan Output:

----------------------------------------------------------------------------

  Hardware Station      Crd Hdw   Net-Interface NM MAC    HP-DLPI DLPI
  Path     Address      In# State NamePPA       ID Type   Support Mjr#
  44.1   0x080009267C14 0   UP    lan0 snap0     1 ETHER  Yes     119
  48.1   0x080009260C85 1   UP    lan1 snap1     2 ETHER  Yes     119

----------------------------------------------------------------------------

Config Statements:

ifconfig lan0:0 inet 16.1.1.1
ifconfig lan0:1 inet 16.2.2.2
ifconfig lan1:0 inet 18.1.1.1

/etc/rc.config.d/netconf Statements:

INTERFACE_NAME[0]=lan0
IP_ADDRESS[0]=16.1.1.1
SUBNET_MASK[0]=255.0.0.0
BROADCAST_ADDRESS[0]=""
INTERFACE_STATE[0]=up
DHCP_ENABLE[0]=0

INTERFACE_NAME[1]=lan0:1
IP_ADDRESS[1]=16.2.2.2
SUBNET_MASK[1]=255.0.0.0
BROADCAST_ADDRESS[1]=""
INTERFACE_STATE[1]=up
DHCP_ENABLE[1]=0

INTERFACE_NAME[2]=lan1
IP_ADDRESS[2]=18.1.1.1
SUBNET_MASK[2]=255.0.0.0
BROADCAST_ADDRESS[2]=""
INTERFACE_STATE[2]=up
DHCP_ENABLE[2]=0

******************************************************************************
7.25.7 Configuring SNAP/IEEE802.3 Interfaces

In this example, the system has one physical interfaces and two logical
interfaces. One logical interface is used for SNAP/IEEE802.3.

    +-----------------------------------+
    |    +-----------+------------+     |
    |    |           |            |     |
    |    | 16.1.1.1  |  17.1.1.1  |     |
    |    | lan0:0    |  snap0:0   |     |
    +----+-----------+------------+-----+
          (ethernet) | (SNAP/IEEE802.3)
                     |
 Z-------------------+-------------------------Z

ifconfig Statements:

ifconfig lan0:0 inet 16.1.1.1
ifconfig snap0:0 inet 17.1.1.1

/etc/rc.config.d/netconf Statements:

INTERFACE_NAME[0]=lan0:0
IP_ADDRESS[0]=16.1.1.1
SUBNET_MASK[0]=255.0.0.0
BROADCAST_ADDRESS[0]=""
INTERFACE_STATE[0]=up
DHCP_ENABLE[0]=0


INTERFACE_NAME[1]=snap0:0
IP_ADDRESS[1]=17.1.1.1
SUBNET_MASK[1]=255.0.0.0
BROADCAST_ADDRESS[1]=""
INTERFACE_STATE[1]=up
DHCP_ENABLE[1]=0

Note that the IP address for snap0:0 cannot be in the same subnet as the IP
address for lan0:0. Also note that the logical instance number for the snap
logical interface (snap0:0) is 0, not 1. Logical instance numbers are
sequenced from 0 for each interface name.

******************************************************************************
7.25.8 lanconfig

The lanconfig command and its ieee flag have been obsoleted.

   * The ether and snap802.3 options of the lanconfig command have been
     integrated into the ifconfig command.

   * The LANCONFIG_ARGS variable in /etc/rc.config.d/netconf is ignored.

   * The Token Ring rif option (source routing) is now part of the lanadmin
     command. To disable source routing:

     /usr/sbin/lanadmin -B off <PPA_number>

     To enable:

     /usr/sbin/lanadmin -B on <PPA_number>

     To display the current setting:

     /usr/sbin/lanadmin -b <PPA_number>

     By default, source routing is enabled on HP Token Ring devices. Use the
     lanscan command to determine the PPA numbers for LAN devices.

******************************************************************************
7.25.9 ifalias

The ifalias command that used to be in /usr/contrib/bin/ is obsolete. Its
functionality has been integrated into the ifconfig command (IP
multiplexing/logical interfaces).

******************************************************************************
7.25.10 netstat Command

The netstat "-r" option "Use" column no longer reflects the number of
packets transmitted using a particular route. Generally, packet counts are
not recorded for each route. However, if a local application sends packets
to a local IP address, that number of packets will be reflected in the local
host route.

Users can use the lanadmin command to determine the number of packets
transmitted from a specific network interface. However, this will not
distinguish one route from another.

----------------------------------------------------------------------------
NOTE

This behavior may be changed in a future patch or release without notice.

----------------------------------------------------------------------------

******************************************************************************
7.25.11 netstat

The following netstat options are no longer supported:

#VALUE!

#VALUE!

#VALUE!

#VALUE!

#VALUE!

#VALUE!

With the support of multiple logical interfaces, the netstat -i command
displays all IP interfaces (logical interfaces) configured through ifconfig
or the /etc/rc.config.d/netconf file. There are four changes in the netstat
-i output:

   * The "Name" field of netstat -i may include interface names
     corresponding to logical interfaces with the format lan0, lan0:1,
     lan0:2, and so on.

   * The Ierrs, Oerrs, Collision counts have been removed in 10.30. The
     Errors/Collision information for each physical interface is available
     through the lanadmin command instead.

   * The Ipkts and Opkts counts for each interface are for TCP/UDP/IP
     traffic only (such as IP packets).

   * Physical interfaces that have not been configured using ifconfig will
     not be displayed by netstat. Use lanscan to display all physical
     interfaces on the system.

An example is shown below:

# netstat -i

Name       Mtu Network      Address           Ipkts     Opkts
lo0       4136 127.0.0.0    localhost           206       206
lan0      1500 15.1.4.0     hpaa0           2986637    219346
lan1      1500 192.1.0.0    hpaa1                 0         0
lan1:1    1500 202.1.0.0    hpaa2                 0         0

==============================================================================
7.25.11.1 Changes to netstat -r

  1. The PmtuTime field in the netstat -r output is no longer supported.

  2. The output will show a host route for each IP interface. These routes
     are automatically created when the interfaces are configured via the
     ifconfig command or through the /etc/rc.config.d/netconf file.

******************************************************************************
7.25.12 nettune and ndd

The supported utility /usr/bin/ndd lets administrators modify system-wide
transport parameters in the working kernel. The ndd utility replaces the
nettune command. Some of internal kernel variables from releases prior to
10.30 may no longer exist (such as tcp_sendspace, tcp_dont winscale, and so
on). Therefore, adb scripts developed for pre-10.30 releases may not work on
10.30 systems.

Administrators can use the file /etc/rc.config.d/nddconf to have ndd modify
network kernel parameters every time the system is booted.

******************************************************************************
7.25.13 SLIP and PPP

The ppl command for the SLIP protocol and its associated configuration files
is obsolete. Use the new pppd command to configure and administer SLIP and
PPP links. The configuration requirements for pppd are similar to those used
for ppl, but the configuration files have different names and formats.
Migrating existing SLIP links to PPP links is explained in the manual
"Installing and Administering PPP" (part number B2355-90137).

******************************************************************************
7.25.14 netman and ni Drivers

The netman and ni drivers are not supported in HP-UX 10.30. The device files
/dev/netman and /dev/ni are no longer available.

******************************************************************************
7.25.15 Copy-on-Write (COW)

Copy-on-write, one of the copy avoidance features, will no longer be
supported in HP-UX 10.30. Checksum-offload and page remapping are still
supported.

******************************************************************************
7.25.16 Loopback Interface (lo0)

Any attempt to change the address of primary loopback interface (lo0:0) will
fail. lo0:0 is automatically configured to 127.0.0.1. Any address configured
for the loopback logical interface (such as lo0:1) will be treated as a
loopback address.

******************************************************************************
7.25.17 IP Packets to Local Host Address

All IP packets destined for the local host address will be looped back
through the IP layer. These packets will not be sent to the drivers.

******************************************************************************
7.25.18 TCP Keepalive Packets

The algorithm of sending TCP keepalive packets has been changed. The
following kernel parameters affect TCP behavior for keepalive packets:

tcp_keepalive_interval tcp_ip_abort_interval tcp_ip_abort_cinterval

tcp_keepalive_detached_interval

The parameter tcp_keepalive_interval determines the amount of time that TCP
waits for an idle connection with no unacknowledged data before sending
keepalive packets. The default is 2 hours.

If the remote does not acknowledge the keepalive packet, TCP will use one of
the following retransmission timers and terminate the connection when it
elapses as follows:

----------------------------------------------------------------------------

  State                 Timer                              Default

  Established           tcp_ip_abort_interval              600000 ms (10
  connection                                               minutes)

  Connection            tcp_ip_abort_cinterval             240000 ms (4
  establishment                                            minutes)

  Connection            tcp_keepalive_detached_interval    240000 ms (4
  terminating                                              minutes)

----------------------------------------------------------------------------

The default values may change in future releases. For more information, use
the command:

ndd -h <timer_name>

Refer to the tcp(7p) and getsockopt(2) manpages for more information.

******************************************************************************
7.25.19 Networking Memory for Fragment Reassembly

The configurable kernel parameter netmemmax is no longer supported. There is
an ndd tunable, ip_reass_mem_limit, that can be used to limit the fragment
reassembly memory at run time.

For more information, use the command:

ndd -h ip_reass_mem_limit

******************************************************************************
7.25.20 Netisr Priority

The streams-based TCP/IP does not support the network interface daemon,
netisr. The kernel parameter netisr_priority does not exist in 10.30.

******************************************************************************
7.25.21 TCP Hash Table Size

The size of the hash table for TCP connections is determined by the kernel
parameter tcphashsz. This kernel parameter should only be modified under the
direction of Hewlett-Packard.

******************************************************************************
7.25.22 Interface information: ioctl SIOCGIFCONF/SIOCGIFNUM

The SIOCGIFCONF ioctl call will return all IP interfaces configured in the
system. The ifr_name field of the SIOCGIFCONF ioctl may contain logical
interface names. SIOCGIFCONF does not return information for physical
interfaces that have not been configured using ifconfig or
/etc/rc.config.d/netconf.

The new SIOCGIFNUM ioctl call will return the total number of IP interfaces
(initial and any subsequent interfaces) configured in the system. This is
useful for determining the size of the output buffer needed by SIOCGIFCONF.

******************************************************************************
7.25.23 TCP Timers: setsockopt TCP_ABORT_THRESHOLD and
TCP_CONN_ABORT_THRESHOLD

The TCP timers tcp_ip_abort_interval and tcp_ip_abort_cinterval can be set
for individual sockets using the setsockopt options TCP_ABORT_THRESHOLD and
TCP_CONN_ABORT_THRESHOLD.

Refer to the section "TCP Keepalive Timers" in this document and the tcp(7p)
and getsockopt(2) manpages for more information.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.26 Transport-Independent RPC (TI-RPC)

For 10.30:

The transport-independent RPC (TI-RPC) system provides a single, consistent
programming interface across machines and network transport protocols.
TI-RPC makes RPC applications transport-independent by delaying the binding
of the application to a specific transport until the program is invoked.

TI-RPC replaces all the old RPC interface that resides in libc.2/a. All
TI-RPC APIs now reside in libnsl.

Previously, with transport-specific ONC RPC, this binding was done at
compile time, so the application could not take advantage of new transports
unless the program was rebuilt. With TI-RPC, new transports can be used by
the application if you update a network configuration file (/dev/netconfig)
and restart the program. /etc/netconfig is part of the Network Selection
library which facilitates run-time transport selection.

New RPC programming interfaces are added to the RPC library to support
transport-independence. These new interfaces are Network Selection(NS) and
Name to Address Translation(N2A). NS facilitates run-time transport
selection and N2A provides universal addresses that are independent of the
chosen transport. The TI-RPC library includes the older interfaces for
backwards compatibility.

TI-RPC provides the following:

   * Supports Multiple Networking Transports:

        o Enhances the heterogeneity of distributed applications

   * Handles Differences in Networking Protocols:

        o Application development does not require low-level networking
          knowledge. Developers only specify procedures to be distributed.

   * Allows Runtime Transport-Independence:

        o Users can run the same binary version of an application on any
          supported protocols.

        o Developers need not produce a different version of their
          application for each network protocol.

        o Eases application migration to new networking technologies.

The following figure illustrates the new TI-RPC software structure:

+-------------------------------------+
| Client or Server TI-RPC Application |
+-------------------------------------+
        ^       ^       ^
        |       |       |
        |       |       | Transport independent Interface
+-------|-------|-------|----------+
|TI-RPC v       |       v          |
|  +---------+  |  +------------+  |
|  | Network |  |  | Name to    |  |
|  |Selection|  |  | Address    |  |
|  +---------+  |  |Translation |  |
|       ^       |  +------------+  |   +------------------------+
|       |       |       ^          |<- | rpcbind binding service|
|       |       |       |          |   +------------------------+
|       v       v       v          |
|  +----------------------------+  |
|  | RPC Interface Library      |  |
|  +----------------------------+  |
|               ^                  |
+---------------|------------------+
                v        Transport Layer Interface
+----------------------------------+
|      XTI/STREAM Interface        |
+----------------------------------+
                ^
                |
                v        Transport Provider Interface
+----------------------------------+
|   Transport Pool (TCP,UDP,etc.)  |
+----------------------------------+

At the top is your application. The interface to the RPC library has changed
very little, except there are many new procedures. Typically, you will only
need to call the the topmost layer of the RPC Interface Library. Very rarely
will you need to use the Network Selection library and almost never will you
need to call the Name to Address Translation modules.

Network Selection facilitates run-time transport selection. It provides the
means to choose the transport on which an application should run. It is
based upon two inputs, the netconfig database (/etc/netconfig) and the
optional environment variable NETPATH. The netconfig lists the transports
available on the host, including information about the transport such as its
type, device name, and name-to-address translation module. Here are a few
sample entries in the file:

/etc/netconfig:
#netid  type        flags  family  protocol  device address  loadable module
udp     tpi_clts     v     inet    udp       /dev/udp                     -
tcp     tpi_cots_ord v     inet    tcp       /dev/tcp                     -

Name-to-address translation provides universal addresses that are
independent of the chosen transport.

TI-RPC was produced without affecting the existing ONC RPC protocol, which
was always transport-independent. Because of that, ONC RPC applications can
be run as is and even recompiled under TI-RPC. Applications that do not make
any explicit socket system calls are source compatible with the new
implementation. Applications that make socket system calls require minor
changes.

******************************************************************************
7.26.1 Impact

Any applications that explicitly make socket system calls must now use its
equivalent XTI calls.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
7.27 X/Open Sockets: socklen_t

The data type of some parameters and struct members is changed from size_t
to socket_t.

Ostensibly, this change affects only applications compiled with the option
#VALUE!

However, because socklen_t and size_t have the same underlying type, the
change has no immediate consequences.

The data type of the following parameters and struct members has been
changed from size_t to socket_t defined in <sys/socket.h>:

int accept(..., socklen_t *addrlen);
int bind(..., socklen_t addrlen);
int connect(..., socklen_t addrlen);
int getpeername(..., socklen_t *addrlen);
int getsockname(..., socklen_t *addrlen);
int getsockopt(..., socklen_t *optlen);
ssize_t recvfrom(..., socklen_t *fromlen);
ssize_t sendto(..., socklen_t tolen);
int setsockopt(..., socklen_t optlen);

struct cmsghdr {
   socklen_t cmsg_len;
   ....
   };

struct msghdr {
   ....
   socklen_t msg_namelen;
   ....
   socklen_t msg_controllen;
   ....
   };

The use of size_t is deprecated for these objects.

Currently, the socklen_t and size_t types are the same underlying type. This
is compatible with both the UNIX 95 and UNIX 98 profiles.

However, in a future release, socklen_t might be a different size. In that
case, passing a size_t pointer will evoke compile-time warnings, which must
be corrected in order for the application to behave correctly.

Applications that use socklen_t will avoid such migration problems. For
portability to the UNIX 95 profile, applications should follow the X/Open
specification (see xopen_networking(7)).

##############################################################################
Chapter 8: Commands and Libraries

This chapter provides summary information about commands and library
routines that are new or have changed.

This chapter covers the following topics:

   * Changed commands in Section 1

   * Changed commands in Section 1M

   * Application Programming Interfaces (APIs)

   * 10.0 commands no longer supported

   * Library routines (libc)

   * Math library routines (libm, libM)

   * Changes to other commands and files

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8.1 Changed User Commands in Section 1

This section summarizes changes to commands in Section 1 of the HP-UX
Reference manual (and the online manpages).

******************************************************************************
8.1.1 admin(1)

Users can now maintain binary files, such as executable files, in SCCS.

The following options have been added to admin(1):

----------------------------------------------------------------------------

  -b       Must be used if the argument <name> of the -i option represents
           a binary file requiring special encoding. Otherwise, a binary
           file will not be handled properly by SCCS commands.

  -f <x>   The new <x> flag to the existing -f option causes get(1) to
           create files with execute permissions.

----------------------------------------------------------------------------

******************************************************************************
8.1.2 at(1)

The following option has been added to at(1):

----------------------------------------------------------------------------

  -d <job-id>   Displays the contents of the specified job.

----------------------------------------------------------------------------

******************************************************************************
8.1.3 cmp(1)

A new <skip> feature causes cmp(1) to skip initial bytes in the files.

The new format is:

cmp  [-l] [-s]  <file1>
<file2> [<skip1>
[<skip2>]]

******************************************************************************
8.1.4 crontab(1)

The options -l, -r, and -e accept an optional parameter, <username>, to
specify a particular user. Only a user with appropriate privilege can
specify <username>.

******************************************************************************
8.1.5 csplit(1)

An additional argument {*} has been added to repeat the previous operand as
many times as necessary to finish input.

******************************************************************************
8.1.6 date(1)

The following changes have been made:

  1. date [-a[-]<sss>[.<fff>]]

     Slowly adjust the time by <sss>.<fff> seconds. The system's clock will
     be sped up or slowed down until it has drifted by the number of seconds
     specified.

  2. date [-u][<mmddhhmm>[[<cc>]<yy>]]

     Where <cc> is the century minus one (i.e., 19 or 20)

  3. %R : Same as %H:%M

     %Ec : Alternate appropriate date and time representation.

     %EY : Full alternate year representation.

  4. Formatting directives %E, %F, %o, and %z may be deleted in future.

******************************************************************************
8.1.7 dd(1)

Three new options have been added to the dd command: files, iseek, and
oseek. The iseek and oseek options have been added as aliases for the skip
and seek options, respectively.

==============================================================================
8.1.7.1 Summary of Change

----------------------------------------------------------------------------

  files=<n>   Copy and concatenate <n> input files; should only be used
              when the input file is a magnetic tape device.

  iseek=<n>   Skip n input blocks before copying.

  oseek=<n>   Seek n blocks from beginning of output file before copying.

----------------------------------------------------------------------------

******************************************************************************
8.1.8 diff3(1)

The new -E option produces a script for the editor ed(1) that will
incorporate into <file1> all changes between <file2> and <file3>, but treat
overlapping changes differently. The overlapping lines from both files will
be inserted by the edit script, bracketed by <<<<<< and >>>>>> lines.

The new -X option will produce a script that will incorporate only changes
flagged ====, and treat these changes in the manner of the -E option.

******************************************************************************
8.1.9 ex(1)

The new -C option is similar to -x, except that the input file is assumed to
have been encrypted.

******************************************************************************
8.1.10 file(1)

The new -h option instructs the file(1) command not to follow links in the
case of files with symbolic links.

******************************************************************************
8.1.11 find(1)

The following features are added:

The -local option matches files which physically reside on a local file
system. Its use can improve performance, because searching is restricted
only to files residing on the local file system, ignoring any remotely
mounted file systems.

\+ termination of the -exec <cmd> option (instead of \;) aggregates a set of
pathnames and executes <cmd> on the set. This can vastly improve processing
speed.

If the user wishes to change the \; to \+, then the find(1) command output
sequence might be different. This is because find \+ passes an aggregated
set of pathnames to the command being executed, and the output depends on
the way the command handles the aggregated set.

For example, consider the following sequence:

$ mkdir -p tmp/tmp/tmp
$ touch tmp/foo tmp/tmp/foo1 tmp/tmp/tmp/foo2
$ find tmp -name foo\* -exec ll {} \;
-rw-r--r--   1 arvind     users 0 Jan 24 12:01 tmp/tmp/tmp/foo2
-rw-r--r--   1 arvind     users 0 Jan 24 12:01 tmp/tmp/foo1
-rw-r--r--   1 arvind     users 0 Jan 24 12:01 tmp/foo

However, if we use \+, the output will be:

$ find tmp -name foo\* -exec ll {} \+
-rw-r--r-- 1 arvind    users     0 Jan 24 12:01 tmp/foo
-rw-r--r-- 1 arvind    users     0 Jan 24 12:01 tmp/tmp/foo1
-rw-r--r-- 1 arvind    users     0 Jan 24 12:01 tmp/tmp/tmp/foo2

Note the change in the sequence of filenames being printed by find(1). This
change in the output sequence of the filenames is because the ll command
behaves differently when invoked with multiple pathnames and single
pathnames.

******************************************************************************
8.1.12 finger(1)

The following information has been added to the default output format of
finger:

  1. Last time the user read the mail,

  2. Last time the user received the mail.

******************************************************************************
8.1.13 grep(1)

The new -h option suppresses printing of filenames when searching multiple
files.

******************************************************************************
8.1.14 ipcs(1)

The -C and -N options were updated to support multiple dump files within a
dump directory:

----------------------------------------------------------------------------

  -C< core>       <core> can now be a core file or a directory created by
                  savecrash or savecore

  -N <namelist>   Use file <namelist> or the <namelist> within <core> in
                  place of /stand/vmunix

----------------------------------------------------------------------------

******************************************************************************
8.1.15 last(1), lastb(1)

The -f <file> option uses <file> as the name of the accounting file instead
of /var/adm/wtmp or /var/adm/btmp.

This provides the user with the flexibility to specify a different
accounting file instead of the normal /var/adm/wtmp or /var/adm/btmp.

******************************************************************************
8.1.16 ls(1)

The new lc command version is basically the same as using ls -C in that its
output is columnar even when redirected.

******************************************************************************
8.1.17 make(1)

Here are the new options and suffixes:

----------------------------------------------------------------------------

  Parallel      If make is invoked with the -P option, it tries to build
  make          more than one target at a time, in parallel.

                The parallel make feature if used, will update multiple
                targets in parallel, resulting in an overall performance
                improvement. Parallel make can be disabled for specific
                targets using the .MUTEX directive. This is useful when
                two or more targets modify a common output file.

  .MUTEX        Serialize the updating of specified targets.

  -u option     Unconditionally make the target, ignoring all timestamps.

  -w option     Suppress warning messages. Fatal messages will not be
                affected.

  New           The built-in rules for .L, .L~, .Y, and .Y~ are similar to
  suffixes      .l, .l~, .y, and .y~ respectively, except that the C++
                compiler is invoked for the new suffixes to create the
                object file.

----------------------------------------------------------------------------

******************************************************************************
8.1.18 man(1)

There are new options -M and -T and new sections local, new, old, and
public.

----------------------------------------------------------------------------

  -M <path>            Changes the search path for manual pages. <path>
                       is colon-separated list of directories that
                       contains manual page directory subtrees.

  -T <macro-package>   Uses the <macro-package> specified to display the
                       manpage rather than the standard -man macros
                       defined in /usr/share/lib/tmac/tmac.an.

----------------------------------------------------------------------------

The user can specify any of the new section names, local, new, old, or
public, to get a manpage stored in the directories corresponding to the
section.

For example,

man public <cmd>

******************************************************************************
8.1.19 mesg(1)

There are new ways of invoking existing options:

  1. Using -n is the same as invoking the existing n option.

  2. Using -y is the same as invoking existing y option.

******************************************************************************
8.1.20 more(1)

Added sequences that can be entered when more pauses:

  1. A dot (.) repeats the previous command.

  2. <CTRL><\>^\) halts a partial display of text.

******************************************************************************
8.1.21 mt(1)

The new -f option is now the preferred way to specify the name of the tape
device. The mt command has also been changed to accept both rew and rewind
as the <command> argument for rewinding the tape.

----------------------------------------------------------------------------
NOTE

The -t option is still supported; however, the intent is that -t will become
obsolete in a future release. It is recommended that any scripts that use-t
be changed to use the -f option.

----------------------------------------------------------------------------

******************************************************************************
8.1.22 pg(1)

Here are the new features:

----------------------------------------------------------------------------

  -r option   Disallows escape to the shell at the pg prompt.

  <i>f        At the pg prompt, pages forward <i> screens.

  <i>z        At the pg prompt, sets the default number of lines per
              screenful to <i>.

----------------------------------------------------------------------------

******************************************************************************
8.1.23 ps(1)

The format of ps -l is different on 64-bit capable machines. The two fields
addr and wchan will have a larger field size to accommodate a 64- bit
number. Scripts that parse the output of ps -l may have to be modified to
account for these larger field sizes.

******************************************************************************
8.1.24 uname(1)

Beginning at 10.30, the uname(1) command may display an incorrect model on
future machines. uname(1) is restricted to eight characters for the model.
However some future machines will have more than eight characters for the
model. If the model string is longer than eight characters, uname(1) will
truncate the model string to eight characters. It is therefore recommended
that the model(1) or getconf(1) commands be used to obtain the model string.
Refer to Section 2.4 Unified Binary Implementation for HP-UX 11.0 in Chapter
2 for more details.

******************************************************************************
8.1.25 vi(1)

A new -C option is available, similar to-x except that the input file is
assumed to have been encrypted.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8.2 Changed System Management Commands in Section 1M

This section summarizes changes to commands in Section 1M of the HP-UX
Reference manual (and the online manpages).

******************************************************************************
8.2.1 cron(1M)

Beginning at 10.30, the number of jobs that can be accommodated in the
queues managed by cron has been increased from 40 to 100.

Also, the following defect was fixed: DSDe417734

******************************************************************************
8.2.2 localedef(1M)

Beginning at 10.30, locales created by localedef(1M) will not be linked with
libc. You will be impacted if both of the following are true:

   * You have archived internationalized applications, and

   * if you have not followed the instructions to build archived
     internationalized applications in Chapter 2 of the HP-UX Release Notes
     for 10.30.

******************************************************************************
8.2.3 mrouted(1M)

Beginning at 10.30, the mrouted daemon is based on the public domain mrouted
3.8. The mrouted 3.8 command contains bug fixes and replaces mrouted
versions 3.5, 3.6, and 3.7. The following is a list of changed features:

   * The kernel and mrouted verify that each is the correct version. This
     prevents problems with mismatched kernel/mrouted versions. An outdated
     mrouted will stop with the error:

     Can't enable DVMRP routing in kernel: Option not supported by protocol.

   * mrouted can accept and propogate a default route.

   * Kernel route cache keeps source-specific routes instead of subnet
     routes, eliminating hashing and longest-match problems. mrouted now
     allows classless routing.

   * Cached kernel routes only get deleted if no traffic is flowing to
     facilitate multicast trace routing.

   * Additional support for the configuration file:

        o Allows named boundaries

        o phyint can have additional subnets configured

        o Added netmask to phyint configuration

        o Default tunnels'< rate_limit> parameter has been changed to 500
          kbps

The configuration file for mrouted 3.3 will also work for mrouted 3.5.

For details, see the mrouted(1M) manpage.

******************************************************************************
8.2.4 strdb(1M)

The streams debugger is being obsoleted in favor of q4. strdb is only usable
on 32-bit live kernels (/dev/kmem), although it is recommended that q4 be
used. To debug 32-bit multi-file dumps or 64-bit live kernels (live or crash
dumps), q4 should be used with STREAMS perl scripts. For details, see the
ReadMe.streams file in the directory where the q4 scripts are installed
(usually /usr/contrib/lib/q4lib).

******************************************************************************
8.2.5 sysdef(1M)

You no longer have to specify the kernel file. Previously, you had to
specify the same kernel file upon which the system was booted. At 11.0, the
running kernel will automatically be queried. The kernel file may be
specified for compatibility with existing scripts, but will be ignored.

******************************************************************************
8.2.6 tic(1M)

The -c option is new. This option checks terminfo source file for errors. A
compiled binary file is not created.

In the -v<n> option, the optional integer <n> range is from 1 to 10. <n>
indicates the desired level of detail of information.

******************************************************************************
8.2.7 useradd(1M) and usermod(1M)

Beginning at 10.30, every entry in the /etc/group file is limited to
LINE_MAX characters. The commands useradd(1M) and usermod(1M) have been
modified to warn you when this limit is being approached.

The useradd(1M) and usermod(1M) commands will not write the username in the
primary group entry of the /etc/group file. Prior to 10.30, the username was
written to the /etc/group file both for the primary and secondary group
entries. This change impacts any script that searches the /etc/group file to
find the primary group of a user. The scripts will fail because the username
is no longer mentioned in its primary group entry of the /etc/group file.

When determining the primary group of a user, a lookup into the group ID
mentioned in the /etc/passwd file is done instead of searching the
/etc/group file.

******************************************************************************
8.2.8 volcopy(1M)

A new -y option has been added to volcopy(1M). It causes volcopy to assume a
"yes" response to all questions.

******************************************************************************
8.2.9 volcopy_hfs(1M)

A new -y option has been added to volcopy_hfs(1M). It causes volcopy_hfs to
assume a "yes" response to all questions.

******************************************************************************
8.2.10 volcopy_vxfs(1M)

A new -y optionhas been added to volcopy_vxfs(1M). It causes volcopy_vxfs to
assume a "yes" response to all questions.

******************************************************************************
8.2.11 whodo(1M)

There are two new options and a new operand as shown below.

Options:

----------------------------------------------------------------------------

  -h   Suppress the heading from being displayed.

  -l   Produce more detailed output on who is doing what.

----------------------------------------------------------------------------

If <user> is specified, information pertaining only to <user> is displayed.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8.3 Obsolete and Deprecated User and System Management Commands (1 and 1M)

******************************************************************************
8.3.1 backup(1M)

This HP-proprietary backup mechanism is not recommended for future use.

==============================================================================
8.3.1.1 Alternative

omniback, fbackup

******************************************************************************
8.3.2 cue(1)

This HP-proprietary command is nonstandard, is not widely used, and does not
provide significant added benefit.

Deprecated in 10.30.

******************************************************************************
8.3.3 sadp(1M)

This SOE command is nonstandard and is no longer recommended for
portability.

==============================================================================
8.3.3.1 Status

Deprecate in 10.30.

******************************************************************************
8.3.4 lvmmigrate

This is a 9.0 to 10.0 transition tool.

==============================================================================
8.3.4.1 Status

This will be obsoleted when HP-UX 9.0 is obsoleted.

******************************************************************************
8.3.5 setp(1M)

This SOE command is nonstandard and is no longer recommended for
portability.

==============================================================================
8.3.5.1 Status

Deprecate in 10.30.

******************************************************************************
8.3.6 tcio(1)

In 11.0:

Obsoleted with the CS/80 device.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8.4 X/Open Commands Withdrawn/To be Withdrawn

The following commands have been marked Withdrawn/To be Withdrawn in X/Open
Commands and Utilities Issue 4 Version 2. This means that these utilities
will not be required to be present on X/Open conformant systems in the
future. X/Open may choose to specify a similar replacement command that
addresses the problems in the existing command.

It is recommended that applications avoid using these commands, since this
will affect the portability of the applications across platforms and
releases:

******************************************************************************
8.4.1 pack(1)

In 11.0:

The compress utility should be used instead, because it has the following
advantages:

   * the algorithm used to create the output files is frequently more
     effective in reducing the size of files

   * the compress utility can compress data from its standard input, not
     just a named regular file. Thus, it is useful in pipelines.

==============================================================================
8.4.1.1 Status

X/Open Withdrawn/To be Withdrawn.

==============================================================================
8.4.1.2 Alternative

compress(1)

******************************************************************************
8.4.2 pcat(1)

In 11.0:

==============================================================================
8.4.2.1 Status

X/Open Withdrawn/To be Withdrawn.

==============================================================================
8.4.2.2 Alternative

zcat(1)

******************************************************************************
8.4.3 pg(1)

In 11.0:

==============================================================================
8.4.3.1 Status

X/Open Withdrawn/To be Withdrawn.

==============================================================================
8.4.3.2 Alternative

more(1)

******************************************************************************
8.4.4 spell(1)

In 11.0:

This cannot be well specified in an internationalized environment. There is
no known technology that can be used to recognize general language for
user-specified input without providing a complete dictionary along with the
input file.

==============================================================================
8.4.4.1 Status

X/Open Withdrawn/To be Withdrawn.

******************************************************************************
8.4.5 sum(1)

In 11.0:

Cannot be used portably.

==============================================================================
8.4.5.1 Status

X/Open Withdrawn/To be Withdrawn.

==============================================================================
8.4.5.2 Alternative

cksum(1)

******************************************************************************
8.4.6 tar(1)

In 11.0:

Cannot be used for portable communication of data with codesets outside the
ISO/IEC 646:1991 7-bit characters. "pax" should be used instead. This may be
implemented as a wrapper/link to "pax".

==============================================================================
8.4.6.1 Status

X/Open Withdrawn/To be Withdrawn.

==============================================================================
8.4.6.2 Alternative

pax(1)

******************************************************************************
8.4.7 unpack(1)

In 11.0:

==============================================================================
8.4.7.1 Status

X/Open Withdrawn/To be Withdrawn.

==============================================================================
8.4.7.2 Alternative

uncompress(1)

******************************************************************************
8.4.8 sdb(1)

In 11.0:

Symbolic debuggers are strongly system-dependent and may not be used
portably.

==============================================================================
8.4.8.1 Status

X/Open Withdrawn/To be Withdrawn.

******************************************************************************
8.4.9 wall(1M)

In 11.0:

Cannot be used portably by an application. It is usually usable only by an
application with appropriate privileges.

==============================================================================
8.4.9.1 Status

X/Open Withdrawn/To be Withdrawn.

==============================================================================
8.4.9.2 Alternative

none

******************************************************************************
8.4.10 SwitchOver Commands

The SwitchOver product including the commands will be obsoleted in favor of
the ServiceGuard product. There isn't a one-to-one mapping between
SwitchOver commands and ServiceGuard commands, so the mapping isn't listed
here:

checkroot                 incdate                  switchdiskl
convert_label         readpulse          switchheartb
disklock                setlan1            switchreadp
heartbeat                 switch_convert            switchsetlan

==============================================================================
8.4.10.1 Status

Deprecate in 10.30.

******************************************************************************
8.4.11 Miscellaneous NLS Interfaces and Commands

HP-proprietary, nonstandard interfaces, and utilities may be obsoleted over
time as standard utilities emerge. Usage of these utilities will not be
portable to other vendor's platforms.

dumpmsg(1)        findstr(1)         insertmsg(1)
eucset(1)         forder(1)          nljust(1)
findmsg(1)        getlocale(3C)

Deprecated in HP-UX 10.0.

******************************************************************************
8.4.12 SDF (Structured Directory Format) Commands

In 10.30:

SDF was used on the s500 as the disk format. These commands are
unsupportable because an s500 filesystem can't be created.

sdfchgrp(1)          sdffind(1)          sdfls(1)
sdfchmod(1)          sdffsck(1M)         sdfmkdir(1)
sdfchown(1)          sdffsdb(1M)         sdfmv(1)
sdfcp(1)             sdfll(1)            sdfrm(1)
sdfdf(1)             sdfln(1)

Obsolete in 10.30.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8.5 Functions and Interfaces

******************************************************************************
8.5.1 asctime(3C)

In 11.0:

asctime() will support dates beyond the year 2038, up to the year 9999 in
64-bit 11.0. The maximum year supported by asctime() in 32-bit 11.0 will
remain 2038.

The minimum date that will be supported by asctime() in both 32-bit and
64-bit 11.0 is 1900/1/1 00:00:00 UTC. The maximum date that will be
supported by asctime() in 32-bit and 64-bit 11.0 is 2038/12/31 23:59:59 UTC
and 9999/12/31 23:59:59 UTC, respectively.

If the value of tm_year in timeptr exceeds (MAX_YEAR-1900), asctime() will
return NULL and set errno to ERANGE. MAX_YEAR in 64-bit 11.0 is 9999.

There is no impact on backward compatibility. Existing 32-bit applications
will have to be ported to 64-bit to support dates beyond the year 2038 via
the libc interfaces.

==============================================================================
8.5.1.1 Alternatives

Use of strftime(3C) is recommended instead.

******************************************************************************
8.5.2 ctime(3C)

In 11.0:

ctime() will support dates beyond the year 2038 and up to 9999 in 64-bit
11.0 . The maximum year supported by ctime() in 32-bit 11.0 will remain as
2038

The minimum date supported by both 32-bit and 64-bit 11.0 is 1901/12/13
20:45:52 UTC. The maximum date supported by 32-bit and 64-bit 11.0 is
2038/01/19 03:14:07 UTC and 9999/03/02 06:00:00 UTC, respectively.

In 32-bit 11.0, if the value of timer exceeds INT_MAX, ctime() will return
NULL and set errno to ERANGE.

In 64-bit 11.0, if the value of timer exceeds (60*60*24*365.25*(9999-1970)),
ctime() will return NULL and set errno to ERANGE.

==============================================================================
8.5.2.1 Alternatives

Use of strftime(3C) is recommended instead.

==============================================================================
8.5.2.2 Obsolescence

ctime() is considered obsolete and may be removed in a future release.

******************************************************************************
8.5.3 getdate(3C)

In 11.0:

getdate() will support dates with a 4-digit year beyond 2038 up to 9999 in
64-bit 11.0. The maximum year that will be supported in 32-bit 11.0 will
remain as 2038.

The minimum date supported by both 32-bit and 64-bit 11.0 is 1901/12/13
20:45:52 UTC. The maximum date supported by 32-bit and 64-bit 11.0 is
2038/01/19 03:14:07 UTC and 9999/03/02 06:00:00 UTC, respectively. A 4-digit
year must be used with getdate() for dates beyond the 21st century.

If the year specified in the string is less than 1970 or greater than
MAX_YEAR or the resultant date is not within the supported range, getdate()
will return NULL and set getdate_err to 8. MAX_YEAR is 2038 in 32-bit 11.0
and is 9999 in 64-bit 11.0 .

******************************************************************************
8.5.4 gmtime(3C)

In 11.0:

gmtime() will support a value of time_t that translates to a date within the
supported range. The minimum date that will be supported by both 32-bit and
64-bit 11.0 is 1901/12/13 20:45:52 UTC. The maximum date that will be
supported by 32-bit and 64-bit 11.0 is 2038/01/19 03:14:07 UTC and
9999/03/02 06:00:00 UTC, respectively.

In 32-bit 11.0, if the value of timer exceeds INT_MAX, gmtime() will return
NULL and set errno to ERANGE.

In 64-bit 11.0, if the value of timer exceeds
(60*60*24*365*(MAX_YEAR-1970)), gmtime() will return NULL and set errno to
ERANGE.

******************************************************************************
8.5.5 localtime(3C)

In 11.0:

localtime() will support a value of time_t that translates to a date within
the supported range. The minimum date that will be supported by localtime()
in both 32-bit and 64-bit 11.0 is 1901/12/13 20:45:52 UTC. The maximum date
that will be supported by localtime() in 32-bit and 64-bit 11.0 is
2038/01/19 03:14:07 UTC and 9999/03/02 06:00:00 UTC, respectively.

In 32-bit 11.0, if the value of timer exceeds INT_MAX, localtime() will
return NULL and set errno to ERANGE.

In 64-bit 11.0, if the value of timer exceeds
(60*60*24*365*(MAX_YEAR-1970)), localtime() will return NULL and set errno
to ERANGE.

******************************************************************************
8.5.6 mktime(3C)

In 11.0:

The minimum date that will be supported by mktime() in both 32-bit and
64-bit 11.0 is 1901/12/13 20:45:52 UTC. The maximum date that will be
supported by mktime() in 32-bit and 64-bit 11.0 is 2038/01/19 03:14:07 UTC
and 9999/03/02 06:00:00 UTC, respectively. If the time to be represented is
not within the supported range, mktime() will return -1 and set errno to
ERANGE.

******************************************************************************
8.5.7 setmntent(3X)

For 10.30:

The setmntent(3X) routine was changed to fix a defect with respect to shared
access to /etc/mnttab (and /etc/fstab). The change fixes a problem where
readers of /etc/mnttab would potentially read from a partially or fully
truncated file, causing loss of data to the reader. An improved file locking
algorithm is used to fix this defect. The result is improved reliability of
the information read via the setmntent(3X) and getmntent(3X) calls.

The manpage for setmntent(3X) mentions that a NULL pointer is returned on
error, but neglects to state how to check for when the error is due to a
lock being held on the file. (The manpage has been updated for 11.0.) If the
caller wishes to determine if the setmntent(3X) error was due to a lock on
the file, the errno variable (described in errno(2)) can be checked. If
errno is equal to EACCES (Permission denied) or EAGAIN (No more processes),
then the file was locked by another process and the caller may wish to
retry.

Note that setmntent(3X) uses file locks that exclude access based on process
ID. Applications should not be calling setmntent(3X) from multiple threads
within the same process without applying some additional synchronization
code.

******************************************************************************
8.5.8 sleep(3C)

In 11.0:

The sleep(3C) now implemented nanosleep(2).

==============================================================================
8.5.8.1 Summary of Change

Except for applications that use DCE threads the sleep function no longer
uses timers or a signal handler.

==============================================================================
8.5.8.2 Performance

Performance should improve since three calls into the kernel are being
replaced with one call.

******************************************************************************
8.5.9 strptime(3X)

In 11.0:

strptime() will support a minimum date of 1901/12/13 20:45:52 UTC in both
32-bit and 64-bit 11.0. The maximum date that strptime() will support in
32-bit and 64-bit 11.0 is 2038/01/19 03:14:07 UTC and 9999/03/02 06:00:00
UTC, respectively.

******************************************************************************
8.5.10 Miscellaneous Clean-up of Unsupported Features

In 11.0:

The following features are not currently fully supported, may be
error-prone, and may not function as expected.

==============================================================================
8.5.10.1 Preprocessor Macros

In 11.0:

The following pre-processor macros are obsolete:

Obsolete Preprocessor Macros

----------------------------------------------------------------------------

  Macro                       Rationale

  _AES_SOURCE                 Superseded by _XOPEN_SOURCE_EXTENDED.

  _CLASSIC_TYPES              HP-UX 6.0 is no longer supported.

  _XPG2, _XPG3, _SVID2,       These denote functionality distinctions in
  _POSIX1_1988, _WSIO, _SIO   header files where the distinction is no
                              longer meaningful.

  _XPG4, _XPG4_EXTENDED       Prototypes for _XOPEN_SOURCE and
                              _XOPEN_SOURCE_EXTENDED.

  _INCLUDE__STDC__            It is no longer desirable to disable subsets
                              of ANSI C functionality.

----------------------------------------------------------------------------

==============================================================================
8.5.10.2 Header Files

----------------------------------------------------------------------------

  Header file    Contents

  a.exec.h       Object file format

  alarm.h        BSD termio

  audnetd.h      Security

  dumprestor.h   Conflicts with VXFS

  initptr.h      Object file format

  ndir.h         Use dirent.h instead

  stab.h         Object file format

  tp_defs.h      Tape defines

----------------------------------------------------------------------------

Existing man pages that point to header files directly for further
information will be changed to refer to more appropriate documentation.
Using header files in all other circumstances is not supported. Typedefs,
defines, macros, prototypes that are not documented or are in an
undocumented location are not supported and may be removed.

==============================================================================
8.5.10.3 Interface Replacement

In 11.0:

Unless documented otherwise in the manpage, replacing the core operating
system interfaces with interfaces (using the same names) provided by
application providers is not supported. Doing so may result in undesired and
unpredictable behavior.

==============================================================================
8.5.10.4 Standards

The following interfaces will be/have been affected by standards.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8.5.10.4.1 Threads POSIX interfaces

In 11.0, the following interfaces are mandated by POSIX 1003.1C, but the
current HP-UX implementation does not conform with the standard. Each of the
following interfaces will change in order to conform with the POSIX 1003.1C
standard :

asctime_r  ctime_r  getgrgid_r  getgrnam_r getpwnam_r getpwuid_r
getlogin_r gmtime_r localtime_r rand_r     readdir_r  strtok_r
ttyname_r

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8.5.10.4.2 Status

The current HP-UX implementation of these interfaces, based on draft 4 of
POSIX 1003.1C, is deprecated in 10.30 and will be available only under the
_PTHREADS_DRAFT4 define.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8.5.10.4.3 Alternatives

Use the APIs via the _PTHREADS_DRAFT4 definition.

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8.5.10.4.4 Deprecated by Standards

For information on functions, global variables, and header files that have
been marked for deletion by standards organizations in 11.0, see "Deprecated
by Standards" in Chapter 3.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8.6 Application Programming Interfaces (APIs)

******************************************************************************
8.6.1 libnsl.sl/a

For 11.0:

----------------------------------------------------------------------------
NOTE

Linking applications with shared libraries is encouraged. If you MUST link
archived under 11.0 with cc for 64-bit (i.e., +DA2.0W), you should include
C++ runtime libraries as shown below:

cc +DA2.0W -Wl,-a archive <<srcfile>> -o <<excfile>> -lnsl -lxti -lCsup \
 -lcl -l:libdld.sl

----------------------------------------------------------------------------

For 10.30:

This new 10.30 library contains the netdir, netselect, yp, nis+, and rpc/xdr
APIs. These APIs are commonly referred to as the ONC/ONC+ APIs.

The existing yp and rpc/xdr APIs in libc.2/a are removed and can only be
bound during compilation if you include -lnsl. For binary compatibility, the
old ONC APIs are supported in libc.1.

==============================================================================
8.6.1.1 Summary of Change

The following APIs are removed from libc.2/a:

authdes_create()               svcauth_unix()
authdes_getucred()             svcerr_auth()
authenticate()                 svcerr_decode()
authnone_create()              svcerr_noproc()
authunix_create()              svcerr_noprog()
authunix_create_default()      svcerr_progvers()
bindresvport()                 svcerr_systemerr()
callrpc()                      svcerr_weakauth()
clnt_broadcast()               svcfd_create()
clnt_create()                  svcraw_create()
clnt_create_vers()             svctcp_create()
clnt_pcreateerror()            svcudp_bufcreate()
clnt_perrno()                  svcudp_create()
clnt_perror()                  user2netname()
clnt_spcreateerror()           usingypmap()
clnt_sperrno()                 v1prot_dofirst()
clnt_sperror()                 v1prot_donext()
clntraw_create()               xdr_accepted_reply()
clnttcp_create()               xdr_array()
clntudp_bufcreate()            xdr_authdes_cred()
clntudp_create()               xdr_authdes_verf()
endrpcent()                    xdr_authunix_parms()
endrpcent_r()                  xdr_bool()
get_myaddress()                xdr_bytes()
getnetname()                   xdr_callhdr()
getrpcbyname()                 xdr_callmsg()
getrpcbyname_r()               xdr_char()
getrpcbynumber()               xdr_cryptkeyarg()
getrpcbynumber_r()             xdr_cryptkeyres()
getrpcent()                    xdr_datum()
getrpcent_r()                  xdr_des_block()
gettransient()                 xdr_double()
host2netname()                 xdr_enum()
key_decryptsession()           xdr_fhandle()
key_encryptsession()           xdr_fhstatus()
key_gendes()                   xdr_float()
key_setsecret()                xdr_free()
netname2host()                 xdr_getcredres()
netname2user()                 xdr_int()
nfs_nls_catopen()              xdr_keybuf()
openchild()                    xdr_keystatus()
pmap_getmaps()                 xdr_long()
pmap_getport()                 xdr_netnamestr()
pmap_rmtcall()                 xdr_netobj()
pmap_set()                     xdr_opaque()
pmap_unset()                   xdr_opaque_auth()
registerrpc()                  xdr_path()
rpc_dtablesize()               xdr_pmap()
rpc_free()                     xdr_pmaplist()
rpc_malloc()                   xdr_pointer()
rtime()                        xdr_reference()
seterr_reply()                 xdr_rejected_reply()
setrpcent()                    xdr_replymsg()
setrpcent_r()                  xdr_short()
svc_getreq()                   xdr_string()
svc_getreqset()                xdr_u_char()
svc_getreqset_ms()             xdr_u_int()
svc_register()                 xdr_u_long()
svc_run()                      xdr_u_short()
svc_run_ms()                   xdr_union()
svc_sendreply()                xdr_unixcred()
svc_unregister()               xdr_vector()
svc_versquiet()                xdr_void()
svcauth_des()                  xdr_wrapstring()
svcauth_null()                 xdr_yp_binding()
svcauth_short()                xdr_yp_buf()
xdr_yp_inaddr()                xdrrec_create()
xdr_ypall()                    xdrrec_endofrecord()
xdr_ypbind_oldsetdom()         xdrrec_eof()
xdr_ypbind_resp()              xdrrec_readbytes()
xdr_ypbind_setdom()            xdrrec_skiprecord()
xdr_ypdelete_args()            xdrstdio_create()
xdr_ypdomain_wrap_string()     xprt_register()
xdr_ypmap_parms()              xprt_unregister()
xdr_ypmap_wrap_string()        yp_all()
xdr_ypmaplist()                yp_bind()
xdr_ypmaplist_wrap_string()    yp_dobind()
xdr_ypowner_wrap_string()      yp_dobind_soft()
xdr_yppushresp_xfr()           yp_first()
xdr_ypreq_key()                yp_flock()
xdr_ypreq_nokey()              yp_get_default_domain()
xdr_ypreq_xfr()                yp_ismapthere()
xdr_yprequest()                yp_master()
xdr_ypresp_key_val()           yp_match()
xdr_ypresp_maplist()           yp_next()
xdr_ypresp_master()            yp_order()
xdr_ypresp_order()             yp_softbind()
xdr_ypresp_val()               yp_unbind()
xdr_ypresponse()               yp_update()
xdr_ypupdate_args()            yperr_string()
xdrmem_create()                ypprot_err()

The following APIs are in libnsl.sl/a:

add_to_xlate_list()            key_encryptsession()
auth_destroy()                 key_gendes()
authdes_create()               key_setsecret()
authdes_getucred()             nc_perror()
authdes_seccreate()            nc_sperror()
authnone_create()              netdir_free()
authsys_create()               netdir_getbyaddr()
authsys_create_default()       netdir_getbyname()
authunix_create()              netdir_options()
authunix_create_default()      netdir_perror()
callrpc()                      netdir_sperror()
clnt_broadcast()               netname2host()
clnt_call()                    netname2user()
clnt_control()                 nis_add()
clnt_create()                  nis_add_entry()
clnt_destroy()                 nis_addmember()
clnt_dg_create()               nis_checkpoint()
clnt_freeres()                 nis_clone_object()
clnt_geterr()                  nis_creategroup()
clnt_pcreateerror()            nis_db()
clnt_perrno()                  nis_destroy_object()
clnt_perror()                  nis_destroygroup()
clnt_raw_create()              nis_dir_cmp()
clnt_spcreateerror()           nis_domian_of()
clnt_sperrno()                 nis_error()
clnt_sperror()                 nis_first_entry()
clnt_tli_create()              nis_freenames()
clnt_tp_create()               nis_freeresult()
clnt_udpcreate()               nis_freeservlist()
clnt_vc_create()               nis_freetags()
clntraw_create()               nis_getnames()
clnttcp_create()               nis_getservlist()
clntudp_bufcreate()            nis_groups()
db_add_entry()                 nis_ismember()
db_checkpoint()                nis_leaf_of()
db_create_table()              nis_lerror()
db_destroy_table()             nis_list()
db_first_entry()               nis_local_directory()
db_free_result()               nis_local_group()
db_initialize()                nis_local_host()
db_list_entries()              nis_local_principal()
db_next_entry()                nis_lookup()
db_remove_entry()              nis_map_group()
db_reset_next_entry()          nis_mkdir()
db_standby()                   nis_modify()
db_table_exists()              nis_modify_entry()
db_unload_table()              nis_name_of()
des_setparity()                nis_names()
endnetconfig()                 nis_next_entry()
endnetpath()                   nis_objects()
endrpcent()                    nis_perror()
freenetconfigent()             nis_ping()
get_myaddress()                nis_print_group_entry()
getnetconfig()                 nis_print_object()
getnetconfigent()              nis_remove()
getnetname()                   nis_remove_entry()
getnetpath()                   nis_removemember()
getpublickey()                 nis_rmdir()
getrpcbyname()                 nis_server()
getrpcbynumber()               nis_servstate()
getrpcent()                    nis_sperrno()
getsecretkey()                 nis_sperror()
hent2ndaddr()                  nis_sperror_r()
host2netname()                 nis_stats()
hsents2ndhostservs()           nis_subr()
key_decryptsession()           nis_tables()
nis_verifygroup()              xdr_callhdr()
order_haddrlist()              xdr_callmsg()
passwd2des()                   xdr_char()
pmap_getmaps()                 xdr_control()
pmap_getport()                 xdr_destory()
pmap_rmtcall()                 xdr_double()
pmap_set()                     xdr_enum()
pmap_unset()                   xdr_float()
registerrpc()                  xdr_free()
rpc_broadcast()                xdr_getpos()
rpc_broadcast_exp()            xdr_hyper()
rpc_call()                     xdr_inline()
rpc_reg()                      xdr_int()
setnetconfig()                 xdr_long()
setnetpath()                   xdr_longlong_t()
setrpcent()                    xdr_opaque()
svc_create()                   xdr_opaque_auth()
svc_destroy()                  xdr_pointer()
svc_dg_create()                xdr_quadruple()
svc_dg_enablecache()           xdr_reference()
svc_fd_create()                xdr_rejected_reply()
svc_fds()                      xdr_replymsg()
svc_freeargs()                 xdr_setpos()
svc_getargs()                  xdr_short()
svc_getcaller()                xdr_sizeof()
svc_getreq()                   xdr_string()
svc_getreqset()                xdr_u_char()
svc_getrpccaller()             xdr_u_hyper()
svc_raw_create()               xdr_u_int()
svc_reg()                      xdr_u_long()
svc_register()                 xdr_u_longlong_t()
svc_run()                      xdr_u_short()
svc_sendreply()                xdr_union()
svc_tli_create()               xdr_vector()
svc_tp_create()                xdr_void()
svc_unreg()                    xdr_wrapstring()
svc_unregister()               xdrmem_create()
svc_vc_create()                xdrrec_create()
svcerr_auth()                  xdrrec_endofrecord()
svcerr_decode()                xdrrec_eof()
svcerr_noproc()                xdrrec_readbytes()
svcerr_noprog()                xdrrec_skiprecord()
svcerr_progvers()              xdrstdio_create()
svcerr_systemerr()             xprt_register()
svcerr_weakauth()              xprt_unregister()
svcfd_create()                 yp_all()
svcraw_create()                yp_bind()
svctcp_create()                yp_first()
svcudp_bufcreate()             yp_get_default_domain()
svcudp_create()                yp_master()
taddr2uaddr()                  yp_match()
uaddr2taddr()                  yp_next()
user2netname()                 yp_order()
xdr_accepted_reply()           yp_unbind()
xdr_array()                    yperr_string()
xdr_authsys_parms()            yppasswd()
xdr_authunix_parms()           yppasswd_xdr()
xdr_bool()                     ypprot_err()
xdr_bytes()

==============================================================================
8.6.1.2 Impact

Removing the rpc code from libc has no impact on other libc modules.
Removing the yp code affects the APIs listed below. Because these APIs are
recoded to use the new Dynamic Switch Technology described below, the impact
of removing yp APIs is minimal.

endgrent()          gethostbyaddr_r()        getpwuid_r()
endgrent_r()        gethostbyname()          getrpcbyname()
endhostent()        gethostbyname_r()        getrpcbyname_r()
endhostent_r()      gethostent()             getrpcbynumber()
endnetent()         gethostent_r()           getrpcbynumber_r()
endnetent_r()       getnetbyaddr()           getrpcent()
endnetgrent()       getnetbyaddr_r()         getrpcent_r()
endnetgrent_r()     getnetbyname()           initgroups()
endprotoent()       getnetbyname_r()         innetgr()
endprotoent_r()     getnetent()              innetgr_r()
endpwent()          getnetent_r()            setgrent()
endpwent_r()        getnetgrent()            setgrent_r()
endrpcent()         getnetgrent_r()          sethostent()
endrpcent_r()       getpprotobynumber()      sethostent_r()
fgetgrent()         getpprotobynumber_r()    setnetent()
fgetgrent_r()       getprotobyname()         setnetent_r()
fgetpwent()         getprotobyname_r()       setnetgrent()
fgetpwent_r()       getprotoent()            setnetgrent_r()
getgrent()          getprotoent_r()          setprotoent()
getgrent_r()        getpwent()               setprotoent_r()
getgrgid()          getpwent_r()             setpwent()
getgrgid_r()        getpwnam()               setpwent_r()
getgrnam()          getpwnam_r()             setrpcent()
getgrnam_r()        getpwuid()               setrpcent_r()
gethostbyaddr()

The yellowup routine is obsoleted by the INETSVCS team.

Applications that currently only link with libc to bind the rpc/xdr and yp
APIs must now link with -lnsl.

==============================================================================
8.6.1.3 Compatibility

Binary compatibility is provided by versioning libc. libc.1 still contain
the old RPC/XDR/YP APIs. libc.2 contains no RPC/XDR/YP APIs.

******************************************************************************
8.6.2 librpcsvc.sl

For 10.30:

The APIs yppasswd(), yppasswd_xdr(), getpublickey(), and getsecretkey() are
removed from librpcsvc.sl and librpcsvc.a and are moved to libnsl.sl and
libnsl.a, respectively.

Applications that linked with librpcsvc.a for the above APIs must now link
with either libnsl.a or linbsl.sl.

There are no compatibility concerns because librpcsvc.a is an archived
library.

******************************************************************************
8.6.3 libnisdb.sl/a

For 10.30:

A simple relational database with a simple set of APIs is used by the NIS+
server daemon to maintain NIS+ objects.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8.7 Library Routines (libc)

Starting with 10.30, the C runtime library has added support for the
following:

   * POSIX.1c threads. (The implementation of POSIX.1c threads is based on
     1x1 kernel threads technology that is described in a separate section
     of this document.)

   * NIS+/Dynamic Name Service Switch

Summary of changes:

   * System V versioning technology is used to deliver the new features.
     Thus, the features new to HP-UX 10.30 are supported only in libc.2 and
     libc.a. libc.1 will be delivered to provide binary compatibility for
     applications built on earlier versions of HP-UX.

   * A new networking services library (libnsl) is created. The rpc, yp, and
     xdr APIs are moved from libc to libnsl.

   * APIs that query the passwd, group, hosts, network, and services
     protocol databases are changed to use the Dynamic Name Service Switch
     technology. These APIs now support NIS+, in addition to NIS, files, and
     DNS.

   * In addition to safe operation in multi-threaded DCE applications that
     use user space threads technology, libc APIs will also be safe for
     usage in applications that use the 1x1 kernel threads (POSIX.1c
     threads) technology.

   * A new library (libd4r) is created for obsoleted HP-UX proprietary
     interfaces with suffix _r and _unlocked. This library is provided
     solely for compatibility with existing cma threaded applications (DCE
     user space threads).

   * The NLS methods, locale libraries, and the iconv method libraries are
     versioned.

   * There are new interfaces added to libc: vsprintf() and vsnprintf()

The changes to existing functionality affect both application developers and
library providers. The section "Impact of libc Changes on Applications"
summarizes the impact of the changes on application developers. The section
"Impact of libc Changes on Libraries" summarizes the impact on library
developers.

Usage Notes

  1. When compiling applications on HP-UX, you do not need to specify -lc on
     the C compiler command line. The C compiler driver automatically
     includes the C library during the link phase. When the application link
     phase is performed by explicitly invoking ld, -lc should be last
     argument on the command line. This is necessary to ensure a correct
     resolution of symbols and correct library initialization at program
     startup.

  2. There are two versions of the shared libc on 10.30: libc.1 and libc.2.
     libc.1 is supported only for binary compatibility. The compilation
     environment (such as header files, and so on) for libc.1 is not
     available on 10.30. Linking applications with libc.1 on 10.30 is not
     supported. Some interfaces have changed in an incompatible way between
     10.20 and 10.30 and applications that link with libc.1 on 10.30 may
     behave incorrectly.

******************************************************************************
8.7.1 POSIX.1C Threads

libc APIs can now be safely used in multi-threaded applications that use
either the 1x1 kernel threads (POSIX.1c threads) or CMA user space threads
technology. The following APIs have changed for supporting 1x1 kernel
threads.

errno, h_errno, and getdate_err: For multi-threaded applications, a
thread-specific errno is implemented. Multi-threaded applications must
import the errno definition from <errno.h> and compile all components of the
application with -D_REENTRANT. The practice of declaring errno as extern int
errno is obsoleted.

errno is no longer a legal name for a structure member in a file that
includes <errno.h> and is compiled with -D_REENTRANT. For example, the
following:

      #include <errno.h>

      struct foo {
             int errno ;
              };

will not compile with -D_REENTRANT. The solution is to change errno to
errnum.

The changes to h_errno and getdate_err are similar to the errno changes.

To conform with POSIX.1c, the following function prototypes have been
changed:

asctime_r():

   * Old: int asctime_r(const struct tm *, char *, int);

     New: char *asctime_r(const struct tm *, char *);

ctime_r():

   * Old: int ctime_r(const time_t *, char *, int);

     New: char *ctime_r(const time_t *, char *);

getgrgid_r():

   * Old: int getgrgid_r(gid_t, struct group *, char *, int);

     New: int getgrgid_r(gid_t, struct group *, char *, size_t, struct
     group**);

getgrnam_r():

   * Old: int getgrnam_r(const char *, struct group *, char *, int);

     New: int getgrnam_r(const char *, struct group *, char *, size_t,
     struct group**);

getlogin_r():

   * Old: int getlogin_r (char *, int);

     New: int getlogin_r (char *, size_t);

getpwuid_r():

   * Old: int getpwuid_r(uid_t, struct passwd *, char *, int);

     New: int getpwuid_r(uid_t, struct passwd *, char *, size_t, struct
     passwd **);

getpwnam_r():

   * Old: int getpwnam_r(const char *, struct passwd *, char *, int);

     New: int getpwnam_r(const char *, struct passwd *, char *, size_t,
     struct passwd **);

gmtime_r():

   * Old: int gmtime_r(const time_t *, struct tm *);

     New: struct tm *gmtime_r(const time_t *, struct tm *);

localtime_r():

   * Old: int localtime_r(const time_t *, struct tm *);

     New: struct tm *localtime_r(const time_t *, struct tm *);

readdir_r():

   * Old: int readdir_r(DIR *, struct dirent *);

     New: int readdir_r(DIR *, struct dirent *, struct dirent **);

ttyname_r():

   * Old: int ttyname_r (int, char *, int);

     New: int ttyname_r (int, char *, size_t);

rand_r():

   * Old: int rand_r(long *, int *);

     New: int rand_r(unsigned int *);

******************************************************************************
8.7.2 NIS+/Dynamic Name Service Switch

The following APIs in libc now support the NIS+ name service.

endgrent()         getgrnam_r()         getpwnam()
endhostent()       gethostbyaddr()      getpwnam_r()
endnetent()        gethostbyname()      getpwuid()
endnetgrent()      gethostent()         getpwuid_r()
endprotoent()      getnetbyaddr()       innetgr()
endpwent()         getnetbyname()       setgrent()
fgetgrent()        getnetent()          sethostent()
fgetpwent()        getnetgrent()        setnetent()
getgrent()         getprotobyname()     setnetgrent()
getgrgid()         getprotobynumber()   setprotoent()
getgrgid_r()       getprotoent()        setpwent()
getgrnam()         getpwent()

Note that if an application uses any of the above interfaces, either
directly, or indirectly, it cannot be built as a fully archived application.

Applications using the above interfaces that link with archive libc:

   * might dump core due to unresolved symbols.

   * might resolve symbols from the shared version of libc at run time.

   * might have duplicate symbol definitions.

For linking with archive libc, follow the instructions in the section
"Archive Internationalized Applications". Following these instructions will
alleviate the problem, but will not guarantee a robust solution. It is
recommended that applications using any of the above interfaces link with
the shared version of libc.

See Chapter 2 of the Programming on HP-UX manual (part number B2355-90652)
for a discussion of the problems of mixing shared and archived libraries.

******************************************************************************
8.7.3 Internationalization- and Localization-related Changes

multibyte.3c - mblen(), mbtowc(), mbstowcs(), wctomb(), wcstombs():

The multibyte routines have been corrected for several Asian locales.

The multibyte routines (mblen(), mbtowc(), mbstowcs(), wctomb(), and
wcstombs()) in past releases have incorrectly identified certain invalid
characters as valid for the ko_KR.eucKR, zh_CN.hp15CN, zh_TW.big5, and
zh_TW.ccdc locales.

The locale definitions and method libraries have been modified so that these
locales only recognize 7-bit ASCII single-byte values and the following
two-byte values as valid characters:

----------------------------------------------------------------------------

  Locale          First byte    Second byte

  ko_KR.eucKR     0xa1-0xfe     0xa1-0xfe

  zh_CN.hp15CN*   0xa1-0xfe     0xa1-0xfe

                  0xfb          0x3f-0x7e

                  0xfc-0xfe     0x21-0x7e

  zh_TW.ccdc      0xa1-0xfe     0x21-0x7e,0xa1-0xfe

  zh_TW.big5      0x81-0xfe     0x40-0x7e,0xa1-0xfe

----------------------------------------------------------------------------

----------------------------------------------------------------------------
NOTE

The Simplified Chinese locale is no longer supported by the HP15 method
library. A new method library, libhp15CN.sl, has been created to support the
zh_CN.hp15CN locale. To access this library, the -m option of localedef must
be used with a method file that specifies the libhp15CN.sl library. See
/usr/lib/nls/loc/src/zh_CN.hp15CN.m for an example.

----------------------------------------------------------------------------

The multibyte.3c routines will now exhibit the behavior that is documented
in the manpage. As the input methods for these languages do not support the
invalid characters, this should not impact customer applications. Customers
will now be able to use the multibyte routines to check for character
validity.

There should be limited impact on performance in most cases. The simplified
Chinese locale (zh_CN.hp15CN) user-defined character range ([0xfb,0x3f-0x7e]
and [0xfc-0xfe,0x21-0x7e]) requires additional checks that will cause the
routines to be slower for UDCs than the other character ranges.

No applications conforming to the documented behavior will be affected. HP
has made every attempt to verify that no applications depend on the prior
behavior.

The ability exists to create and use user-defined locales and method
libraries instead of the system-provided locales.

******************************************************************************
8.7.4 Miscellaneous libc changes

ttrace(), ttrace_wait(), sigwait(), pstat_getlwp(), ftrylockfile():

New interfaces for POSIX.1c support.

sendfile():

A new system call for transmitting the contents of a file across a socket
connection. It can be used only when the socket is in a connected state.

vsnprintf(), snprintf():

These are new interfaces that provide sprintf() type of functionality
without overflowing target buffers. The use of these interfaces is
recommended in situations where buffer overflows may lead to a security
breach.

basename(), dirname():

basename() and dirname() are now safe for usage in multi-threaded
applications. In a multi-threaded application, basename() or dirname() will
behave as described below:

   * If the pathname argument is a NULL string or an empty string,
     basename() and dirname() may return a pointer to a string literal.

   * For all other input strings, basename() and dirname() will modify the
     input string and return a pointer to the modified string.

There is no change in behavior for nonthreaded applications. See the manpage
for a detailed example on how to correctly use these interfaces.

HUGE_VAL, atof(), strtod(), wcstod(), printf(), scanf():

The value of the symbolic constant HUGE_VAL (defined in <math.h>) is
changing to IEEE infinity. The interfaces atof(), strtod(), and wcstod()
return HUGE_VAL under certain error conditions; these interfaces will return
the new HUGE_VAL value starting with HP-UX 10.30.

The printf(3C) family of C library routines will convert the special
floating point values for infinity and not a number (NaN) as follows:

   * The e, f, and g conversions will print "inf" for infinity and "nan" for
     both quiet and signaling NaNs.

   * The E and G conversions will print "INF" for infinity and "NAN" for
     both quiet and signaling NaNs.

   * There will be a new F conversion specifier that will be identical to
     the f conversion specifier except that it will print infinity and NaN
     as respectively INF and NAN.

The scanf(3C) family of C library routines will add support for converting
symbolic representations of infinity and NaN to their floating point
representations:

   * The e, E, f, g, and G conversions will convert any string beginning
     with "inf" (case insensitive) to the appropriate floating point
     infinity value (single, or double precision, as specified by the
     conversion precision modifier).

   * The e, E, f, g, and G conversions will convert any string beginning
     with "nan" (case insensitive) to the appropriate floating point NaNQ
     value (single or double precision, as specified by the conversion
     precision modifier).

The strtod(3C) and atof(3C) C library routines will add support for
converting symbolic representations of infinity and NaN to their floating
point representations as follows:

   * When the input parameter character string for strtod (atof) begins with
     "inf" (case insensitive), strtod (atof) will return HUGE_VAL.

   * When the input parameter character string for strtod (atof) begins with
     "nan" (case insensitive), strtod (atof) will return _DNANQ.

The wcstod(3C) C library routine will add support for converting symbolic
representations of infinity and NaN to their floating point representations
analogously to the description for strtod(3C) above, namely:

   * If wcstod encounters an input wide-char string equal to respectively
     inf or nan (both case insensitive), it will return respectively
     HUGE_VAL or _DNANQ.

Users who do not enable floating point exceptions (by default floating point
exceptions are not enabled) and use comparison with DBL_MAX will be broken
when floating point overflow occurs.

For example, prior to 10.30, the value 1.0e10000 would have been converted
by strtod() or scanf() to DBL_MAX (a finite representable double precision
number). It will now be converted to the IEEE representation for double
precision floating point infinity.

getcwd():

The getcwd(3C) interface has been changed to opportunistically pick up the
current path prefix from the /etc/mnttab file. In earlier releases, getcwd()
used to scan the complete path until / and do stat for almost all the
entries in the directories encountered. Now if the scan crosses a mount
point, it picks up the rest of the path from the /etc/mnttab file, possibly
saving a considerable amount of time.

If any file system is mounted using a symbolic path, getcwd(3C) will return
the current working directory including the symbolic mount point. Because
the command pwd (/usr/bin/pwd) calls getcwd(3C) to print the working
directory, it will also show a similar change in behavior.

If the current path does not cross any symbolic mount point, the getcwd(3C)
behavior will be identical to the behavior in HP-UX 10.20.

Depending upon variables, such as the number of NFS mounts, local mounts,
number of entries in a directory, and number of directories the current path
has, a substantial performance improvement may result.

If you want the getcwd(3C) to return the actual path (not the symbolic one),
make sure you issue the mount command with the actual path.

getdate(), strptime():

The strptime(3c) routine now returns a null pointer for dates not
representable by a time_t data type.

The strptime(3c) and getdate(3c) APIs are affected by the changes for the
year 2000 rollover.

strtold(3C):

Return values on error are now provided in stdlib.h as _LDBL_MAX,
_LDBL_NMAX, and _ZERO.

frexp(), ldexp(), modf():

frexp(), ldexp(), and modf() have been moved to the math library.
Applications and libraries that reference these interfaces will now have to
include -lm to link with these interfaces.

Support for _SC_LIBC_VERSION by sysconf(): This feature is to enable an
application to identify the version of libc in use. The format of the value
returned is as follows:

XXyyZZZZqN

where

----------------------------------------------------------------------------

  XX     is an HP-UX major release number (such as 10, 11, and so on).

  yy     is an HP-UX minor release number (such as 00, 01, 10, and so
         on). 99 is reserved for unknown release.

  ZZZZ   is a library-specific number.

  q      0=32PA; 1=64PA; 2=32EM; 3=64EM; 4-9=Reserved.

  N      0 = archive library; 1-9 = SYSV version of shared library.

----------------------------------------------------------------------------

perror(), strerror(), regex(), regerror(), getopt():

The perror(), strerror(), regex(), regerror(), and getopt() APIs are changed
to support XPG4 messaging. A language-dependent message catalog returns
error messages by these APIs. The environment variable NLSPATH searches this
message catalog. If NLSPATH does not exist in the environment or if the
message catalog cannot be found in any of the components specified by
NLSPATH, an implementation-dependent default path is used. This default is
affected by the setting of LC_MESSAGES.

setlocale(), iconv_open():

setlocale() in the 10.30 libc will load locales and methods from
/usr/lib/nls/loc/locales.2 and /usr/lib/nls/loc/methods.2, respectively.

iconv_open() in the 10.30 libc will load codeset conversion methods from
/usr/lib/nls/iconv/methods.2.

Developers of customized locales, methods and codeset conversion methods
will need to deliver these libraries in the new locations described above if
they are intended for use in applications built on 10.30.

Developers of customized locales, methods and codeset conversion methods
will also need to deliver these libraries in the old locations (methods.1
and locales.1 directories) if they are intended for use in applications
built on on prior releases.

Note that the use of setlocale() in applications linked with the archive
version of libc is not recommended because it does not guarantee binary
compatibility.

Internationalized applications using setlocale(), that link with the archive
version of libc, will not work correctly unless they are built with the
compiler option -Wl,-E. Refer to the section on localedef(1M) for details on
building such applications.

******************************************************************************
8.7.5 Impact of libc Changes on Applications

This section describes the new features that impact application developers.

Impact on Fully Archive Bound Applications with No Dynamically- Loaded
Components:

No impact.

Impact on fully shared bound applications:

Fully shared bound applications built on prior HP-UX releases will not be
impacted by the libc changes in HP-UX 10.30, provided none of the third
party libraries that are used by the application are rebuilt on 10.30.

If you are an application provider who relies on third-party libraries, see
the section "Impact of libc Changes on Libraries" that describes the impact.

******************************************************************************
8.7.6 Source Compatibility:

For applications that do a full rebuild, there is an impact on source
compatibility in the APIs affected by the libnsl and Dynamic Name Service
Switch related changes.

For details on the source compatibility impact, see the relevant section in
this document.

Applications using APIs that will move to libd4r and libnsl need to make
makefile changes to link with the new libraries.

Impact on Applications that Rely on Unsupported Linking Behavior:

Suppose your application:

   * mixes components from different releases

   * binds all (or some) system libraries archived, but dynamically loads
     some shared libraries

Such applications are not guaranteed to work correctly for 10.30. For
example, multi-threaded DCE applications that linked with archived libc and
shared libdce on an earlier release will not run on HP-UX 10.30.

Impact on Applications that Call strptime(3c) and getdate(3c):

Applications that use these calls might have to change their source code to
accommodate behavior changes.

******************************************************************************
8.7.7 Impact of libc Changes on Libraries

This section describes the new features that impact library providers.

Thread-specific errno, h_errno, and getdate_err:

----------------------------------------------------------------------------
NOTE

This feature impacts thread-safe library providers only.

----------------------------------------------------------------------------

In traditional nonthreaded applications on HP-UX, errno is a global integer.
This traditional errno behavior works correctly in user space (DCE)
multi-threaded applications because threads are managed in the user space
and errno is a part of the context of an individual thread.

In HP-UX 10.30, with the introduction of 1x1 kernel threads, thread
management is done within the kernel and therefore errno has to be managed
on a per-thread basis.

The per-thread errno is implemented by mapping the symbol errno to an
expression that is a modifiable lvalue managed on a per-thread basis when an
application compiles with -D_REENTRANT.

How the thread-specific errno works:

   * All nonthreaded applications continue to use global int errno.

   * All user space threads applications use the global int errno.

   * The main thread in a kernel threads application uses the global int
     errno; other threads in a kernel threads application use
     thread-specific storage.

This change has the following implications:

   * All thread-safe libraries must compile using -D_REENTRANT and obtain
     the errno definition from <errno.h>.

     If a library provider wants to provide restricted usability in a
     threaded application, this step enables the usage of an otherwise
     nonthread-safe library from a single thread in a multi-threaded
     application.

   * errno is no longer a legal name for a structure member in a file that
     includes <errno.h> and is compiled with -D_REENTRANT. For example,

           #include <errno.h>

           struct foo {
              int errno ;
              };

     will not compile with -D_REENTRANT. The solution is to change errno to
     errnum.

     The variable getdate_err and the variable h_errno become a per-thread
     variable in a similar way. The names getdate_err and h_errno also are
     unusable for structure element names for a source compiled with
     -D_REENTRANT that uses <time.h>.

   * If a shared library libother.sl is rebuilt on 10.30 to take advantage
     of the new per-thread-errno feature, it may break binary compatibility
     for applications linked against it on earlier releases. Specifically,
     applications that have linked with an archived libc and shared libother
     on a prior release will be broken. HP-UX does not support such linkage.
     Applications linked with shared libc will not be broken.

     The solution is that the per-thread-errno feature is relevant only to
     applications using 1x1 kernel threads. Compilation with -D_REENTRANT is
     not required for libraries that will not be used in such applications.

     Application breakage can be prevented by versioning libother.1.

API Changes:

To align with the POSIX.1c standard, the function prototypes of the
following twelve libc APIs changed in HP-UX 10.30. The HP-UX 10.20 versions
of these interfaces moved to libd4r.

asctime_r()         getlogin_r()         localtime_r()
ctime_r()           getpwnam_r()         rand_r()
getgrgid_r()        getpwuid_r()         readdir_r()
getgrnam_r()        gmtime_r()           ttyname_r()

Shared libraries that rely on these APIs and that have a need to continue
supporting applications built on older HP-UX releases may have to version.

New libraries libnsl and libd4r:

At 10.30, The RPC and YP APIs are moved to libnsl. The obsoleted HP-UX
proprietary _r and _unlocked are moved to libd4r. Refer to the relevant
areas in this section for specific details.

This change has the following implications for library providers: library
providers either have to establish explicit dependencies on these libraries,
or notify end users to also link one or both of these libraries for the
application to link successfully.

Shared libraries with explicit dependency on libc: A shared library can be
built by explicitly specifying the list of dependent libraries on the
command line.

If a shared library has been built with -lc on its ld command line in HP-UX
10.30, it has an explicit dependency on libc.2. If an attempt is made to use
this library in an application built on a prior release (which is linked
with libc.1), the application will be implicitly linking with both libc.1
and libc.2.

Thus, if a shared library is being built with -lc on its ld command line, it
can either be used exclusively with applications built on HP-UX 10.30 (if it
is rebuilt on HP-UX 10.30), or it can be used exclusively with applications
built on older releases (if it is not rebuilt on HP-UX 10.30).

The recommended actions for impacted libraries are:

  1. Remove -lc from the ld line in HP-UX 10.30.

  2. If removing this dependency is not possible, version the impacted
     libraries.

Shared libraries with explicit dependency on HUGE_VAL: The value of the
constant HUGE_VAL defined in <math.h> has changed to IEEE Infinity in 10.30.
atof(), wcstod(), and strtod() return the value of HUGE_VAL under certain
error conditions.

Libraries that rely on comparing the return values of atof(), wcstod(), and
strtod() with HUGE_VAL will need to version in 10.30.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8.8 Library Routines (libd4r)

For 10.30:

A number of obsoleted interfaces provided in libc for multi-threaded
application development in earlier HP-UX releases are moved from libc to a
new library named libd4r. The corresponding interfaces without the _r suffix
are now thread-safe.

DCE applications that recompile or relink on 10.30 might need to link in
libd4r for compatibility.

The following classes of interfaces are moved to libd4r:

   * HP-UX 10.20 versions of interfaces that have changed for POSIX.1C in
     HP-UX 10.30:

     asctime_r()          getlogin_r()          localtime_r()
     ctime_r()            getpwnam_r()          rand_r()
     getgrgid_r()         getpwuid_r()          readdir_r()
     getgrnam_r()         gmtime_r()            ttyname_r()

   * Obsoleted re-entrant interfaces:

     _ldecvt_r()          gethostent_r()        mrand48_r()
     _ldfcvt_r()          getlocale_r()         nrand48_r()
     acltostr_r()         getmntent_r()         ptsname_r()
     crypt_r()            getnetbyaddr_r()      pututline_r()
     drand48_r()          getnetbyname_r()      seed48_r()
     ecvt_r()             getnetent_r()         setgrent_r()
     encrypt_r()          getnetgrent_r()       sethostent_r()
     endgrent_r()         getprotobyname_r()    setkey_r()
     endhostent_r()       getprotobynumber_r()  setlocale_r()
     endnetent_r()        getprotoent_r()       setnetent_r()
     endnetgrent_r()      getpwent_r()          setnetgrent_r()
     endprotoent_r()      getservbyname_r()     setprotoent_r()
     endpwent_r()         getservbyport_r()     setpwent_r()
     endservent_r()       getservent_r()        setservent_r()
     endusershell_r()     getusershell_r()      setusershell_r()
     endutent_r()         getutent_r()          setutent_r()
     erand48_r()          getutid_r()           srand48_r()
     fcvt_r()             getutline_r()         strerror_r()
     fgetgrent_r()        inet_ntoa_r()         strtoacl_r()
     fgetpwent_r()        jrand48_r()           strtoaclpatt_r()
     getdate_r()          l64a_r()              ultoa_r()
     getdiskbyname_r()    lcong48_r()           ultostr_r()
     getgrent_r()         lrand48_r()           utmpname_r()
     gethostbyaddr_r()    ltoa_r()              wcstok_r()
     gethostbyname_r()    ltostr_r()

   * Obsoleted unlocked interfaces:

     clearerr_unlocked()  fputwc_unlocked()     puts_unlocked()
     fclose_unlocked()    fputws_unlocked()     putw_unlocked()
     feof_unlocked()      fread_unlocked()      putwc_unlocked()
     ferror_unlocked()    fseek_unlocked()      putwchar_unlocked()
     fflush_unlocked()    ftell_unlocked()      putws_unlocked()
     fgets_unlocked()     fwrite_unlocked()     rewind_unlocked()
     fgetwc_unlocked()    getw_unlocked()       setvbuf_unlocked()
     fgetws_unlocked()    getwc_unlocked()      ungetc_unlocked()
     fileno_unlocked()    getwchar_unlocked()   ungetwc_unlocked()
     fputs_unlocked()

The APIs that have been moved to libd4r are obsoleted. The use of libd4r for
new application development is not supported.

The following APIs were moved to libsec in release 10.0 and to libd4r in
10.30. libc provided stubs for these APIs prior to 10.30, but as of 10.30,
these stubs are removed. The corresponding APIs without the _r suffix can be
found in libsec.

endprpwent_r()       getspwaid_r()         getspwuid_r()
endspwent_r()        getspwent_r()         setprpwent_r()
fgetspwent_r()       getspwnam_r()         setspwent_r()

The following APIs were moved from libc to libd4r in 10.30. The
corresponding APIs without the _r suffix can be found in libnsl.

endrpcent_r()        getrpcbynumber_r()    setrpcent_r()
getrpcbyname_r()     getrpcent_r()

The function prototypes of the interfaces in libd4r are exported from header
files only when the feature test macro _PTHREADS_DRAFT4 is on.

These interfaces are obsoleted and are supported only for compatibility with
existing DCE threads applications. They should not be used for new
application development.

Also note that interfaces such as getpwnam_r() are defined in two different
libraries, libc and libd4r. For applications that use libd4r, libd4r must
always appear in the link line before libc.

There is a change in the multi-threaded semantics for the following
interfaces, which can be logically grouped into triads depending on the
resource database (group, passwd, and so on) accessed using these
interfaces:

endgrent_r()         getgrent_r()           setgrent_r()
endhostent_r()       gethostent_r()         sethostent_r()
endnetent_r()        getnetent_r()          setnetent_r()
endprotoent_r()      getprotoent_r()        setprotoent_r()
endpwent_r()         getpwent_r()           setpwent_r()
endservent_r()       getservent_r()         setservent_r()

In releases prior to HP-UX 10.30, multiple threads in a threaded application
could concurrently open a database, sequentially obtain entries, and
subsequently close the database without interfering with each other. This
was feasible because these APIs maintained state information on a per-thread
basis.

Starting with 10.30, these APIs will maintain state on a per-process basis
rather than on a per-thread basis. This change is being made to conform with
the common behavior of these interfaces across the UNIX industry. A
consequence of this, for example, is that concurrent independent browsing of
the passwd data base by multiple threads is no longer supported.

The presence of POSIX.1x interfaces (such as getpwnam_r) in two different
libraries will always result in the first definition being used when both
libd4r and libc are shared or when both the libraries are archived. Behavior
is unpredictable for applications that do not follow this link order.

Applications using libd4r should be either fully archived or fully shared.
Using archive version of libc and shared version of libd4r, or vice versa,
will result in incorrect application behavior and such a use of these
libraries is not supported.

******************************************************************************
8.8.1 Alternatives/Compatibility

For the APIs with suffix _r that have been moved to libd4r, the
corresponding APIs without the _r suffix can now be safely used in
multi-threaded applications.

For the APIs with suffix _unlocked that have been moved to libd4r, the
corresponding versions without the _unlocked suffix should be used.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8.9 Library Routines (libnsl)

For 10.30:

The following APIs are being removed from libc. Applications that need these
interfaces will have to link with libnsl (-lnsl) to get access to this
functionality.

authdes_create()                 svcauth_unix()
authdes_getucred()               svcerr_auth()
authenticate()                   svcerr_decode()
authnone_create()                svcerr_noproc()
authunix_create()                svcerr_noprog()
authunix_create_default()        svcerr_progvers()
bindresvport()                   svcerr_systemerr()
callrpc()                        svcerr_weakauth()
clnt_broadcast()                 svcfd_create()
clnt_create()                    svcraw_create()
clnt_create_vers()               svctcp_create()
clnt_pcreateerror()              svcudp_bufcreate()
clnt_perrno()                    svcudp_create()
clnt_perror()                    user2netname()
clnt_spcreateerror()             usingypmap()
clnt_sperrno()                   v1prot_dofirst()
clnt_sperror()                   v1prot_donext()
clntraw_create()                 xdr_accepted_reply()
clnttcp_create()                 xdr_array()
clntudp_bufcreate()              xdr_authdes_cred()
clntudp_create()                 xdr_authdes_verf()
endrpcent()                      xdr_authunix_parms()
endrpcent_r()                    xdr_bool()
get_myaddress()                  xdr_bytes()
getnetname()                     xdr_callhdr()
getrpcbyname()                   xdr_callmsg()
getrpcbyname_r()                 xdr_char()
getrpcbynumber()                 xdr_cryptkeyarg()
getrpcbynumber_r()               xdr_cryptkeyres()
getrpcent()                      xdr_datum()
getrpcent_r()                    xdr_des_block()
gettransient()                   xdr_double()
host2netname()                   xdr_enum()
key_decryptsession()             xdr_fhandle()
key_encryptsession()             xdr_fhstatus()
key_gendes()                     xdr_float()
key_setsecret()                  xdr_free()
netname2host()                   xdr_getcredres()
netname2user()                   xdr_int()
nfs_nls_catopen()                xdr_keybuf()
openchild()                      xdr_keystatus()
pmap_getmaps()                   xdr_long()
pmap_getport()                   xdr_netnamestr()
pmap_rmtcall()                   xdr_netobj()
pmap_set()                       xdr_opaque()
pmap_unset()                     xdr_opaque_auth()
registerrpc()                    xdr_path()
rpc_dtablesize()                 xdr_pmap()
rpc_free()                       xdr_pmaplist()
rpc_malloc()                     xdr_pointer()
rtime()                          xdr_reference()
seterr_reply()                   xdr_rejected_reply()
setrpcent()                      xdr_replymsg()
setrpcent_r()                    xdr_short()
svc_getreq()                     xdr_string()
svc_getreqset()                  xdr_u_char()
svc_getreqset_ms()               xdr_u_int()
svc_register()                   xdr_u_long()
svc_run()                        xdr_u_short()
svc_run_ms()                     xdr_union()
svc_sendreply()                  xdr_unixcred()
svc_unregister()                 xdr_vector()
svc_versquiet()                  xdr_void()
svcauth_des()                    xdr_wrapstring()
svcauth_null()                   xdr_yp_binding()
svcauth_short()                  xdr_yp_buf()
xdr_yp_inaddr()                  xdrmem_create()
xdr_ypall()                      xdrrec_create()
xdr_ypbind_oldsetdom()           xdrrec_endofrecord()
xdr_ypbind_resp()                xdrrec_eof()
xdr_ypbind_setdom()              xdrrec_readbytes()
xdr_ypdelete_args()              xdrrec_skiprecord()
xdr_ypdomain_wrap_string()       xdrstdio_create()
xdr_ypmap_parms()                xprt_register()
xdr_ypmap_wrap_string()          xprt_unregister()
xdr_ypmaplist()                  yp_all()
xdr_ypmaplist_wrap_string()      yp_bind()
xdr_ypowner_wrap_string()        yp_dobind()
xdr_yppushresp_xfr()             yp_dobind_soft()
xdr_ypreq_key()                  yp_first()
xdr_ypreq_nokey()                yp_flock()
xdr_ypreq_xfr()                  yp_get_default_domain()
xdr_yprequest()                  yp_ismapthere()
xdr_ypresp_key_val()             yp_master()
xdr_ypresp_maplist()             yp_match()
xdr_ypresp_master()              yp_next()
xdr_ypresp_order()               yp_order()
xdr_ypresp_val()                 yp_softbind()
xdr_ypresponse()                 yp_unbind()
xdr_ypupdate_args()

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8.10 Security Library (libsec)

For 10.30:

The libsec _r interfaces are obsoleted. Also, libsec versioned in this
release.

******************************************************************************
8.10.1 NIS+ and the Name Service Switch

All of the public getprpw* and putprpw* APIs are aware of the Name Service
Switch and can be used in a distributed environment using NIS+. You can
centrally administer a subset of security attributes from any NIS+ server or
any authenticated client. You can configure C2/NIS+ operations via the
/etc/nsswitch.conf file. This configuration file can be configured to obtain
protected password information from local files or NIS+ tables.

libsec uses the NIS+ password table and HP's proprietary trusted table. The
password table contains a subset of trusted mode security attributes in the
shadow column to handle password aging. The trusted table contains a
different subset of security attributes that can be administered centrally
in an NIS+ namespace.

If NIS+ is configured, libsec's public APIs can obtain protected password
information from three different areas: local system, password tables, and
trusted tables (depending on the configuration of the /etc/nsswitch.conf
file).

libsec does not contain any reference to NIS+ library calls and it is
entirely dependent on the Name Service Switch for multi-user mode. The
switch directs libsec to the correct repository where protected password
information resides.

In single-user-mode, trusted mode and NIS+ are not supported. Also, the
archive version of libsec (libsec.a) does not support NIS+.

******************************************************************************
8.10.2 Binary Compatibility Considerations

If you have written or obtained an application that uses libsec, if the
application has not been recompiled since the 10.20 release, and if the
application uses the functions getprpwent() and/or setprpwent(), you may
have problems. Trusted Mode Security applications compiled before 10.00 are
not affected.

Beginning with 10.20, user IDs use full 32-bit functionality. This expansion
has affected the <prot.h> header file, required for use with the
getprpwent(3) and setprpwent(3) function calls. Applications and/or
libraries that use this functionality must be recompiled with the 10.20 or
later prot.h file and libsec library to run with 10.20 or later HP-UX. If
they are not recompiled, unpredictable behavior will result due to
misalignment of the pr_passwd structures.

******************************************************************************
8.10.3 Summary of Change

The following interfaces are removed from libsec:

endprpwent_r()      getpswaid_r()     getspwnam_r()
endspwent_r()       getpswuid_r()     setprpwent_r()
fgetspwent_r()      getspwent_r()     setspwent_r()

The equivalent reentrant functionality of these interfaces has been added to
the non _r version of each function.

libsec versioned in this release. libsec.sl is now a link to libsec.2
instead of libsec.1.

******************************************************************************
8.10.4 NIS+ and the Name Service Switch

For 10.30, support is removed for the admin number.

The following private functions that call the Name Service Switch engine are
added:

nss_endprpwent()            nss_getprpwnam()            nss_putprpwnam()
nss_endprpwent_r()        nss_getprpwnam_r()      nss_putprpwnam_r()
nss_getprpwent()        nss_getprpwuid()            nss_setprpwent()
nss_getprpwent_r()        nss_getprpwuid_r()      nss_setprpwent_r()

The non _r calls can be called with a specific repository to bypass the
configuration of the /etc/nsswitch.conf file, as for example, by using the
_NISPLUS, _FILES, or _CONF_FILE calls.

For 10.30, the following private functions are added to the files and
nisplus Name Service backends to support libsec:

libnss_files backends:

   * getprpwnam.c

   * shl_loads libsec calls

libnss_nisplus backends:

   * getprpwnam.c and ngetprpwent.c calls libsec and NIS+ directly.

==============================================================================
8.10.4.1 Impact

Building a program that references any of the above obsoleted interfaces
results in link errors.

libsec versioning has no impact.

libsec only supports NIS+, not NIS(YP). An above average of understanding of
NIS+ is required to administer trusted mode in a distributed environment. If
you use libsec, you must understand the relationship of NIS+ and the Name
Service Switch and configuration of NIS+. Some protected password
information might not be returned by the public APIs if the switch is used
and NIS+ is not configured.

==============================================================================
8.10.4.2 Performance

Generally, if the NIS+ server is overloaded, libsec can suffer a performance
hit (such as if there are too many users in the password table). But, a
skilled NIS+ system administrator can help in this situation.

==============================================================================
8.10.4.3 Alternatives/Compatibility

Link errors resulting from the removal of the _r interfaces from libsec can
be resolved by either modifying the code to call the non _r versions of the
routines or by linking with the libd4r library. libd4f contains backward
compatible _r interfaces.

Because of the removal of the _r interfaces, libsec versioned in this
release. libsec.sl is now a link to libsec.2 instead of libsec.1. Existing
shared library programs will continue to use libsec.1.

Configuration

libsec with NIS+ and the Name Service Switch requires that the nsswitch
shared libraries be present in /usr/lib.

Obsoleted Functions

These functions are obsoleted:

endprpwent_r()          getpswaid_r()           getspwnam_r()
endspwent_r()        getpswuid_r()           setprpwent_r()
fgetspwent_r()      getspwent_r()            setspwent_r()

The corresponding non _r versions of these functions are now reentrant.
There is no longer separate reentrant and nonreentrant interfaces.

******************************************************************************
8.10.5 Function: sendfile(2)

For 10.30:

sendfile_max is a kernel parameter that was added to the new sendfile()
system call. sendfile is a system call that was added for web servers to
avoid the copy overhead (from user to kernel) from the send system call.
sendfile avoids the overhead by allowing the networking code to directly use
the buffer cache while the data is in transit over the wire. While this is
usually a short time period, if there are retransmissions due to errors or
it is a slow link, the transit period can be longer than normal. To
safeguard the rest of the system against sendfile holding onto all of the
buffer cache, the kernel parameter sendfile_max can limit the amount of
buffer cache memory that sendfile can tie up.

sendfile_max is the upper bound on the number of pages in the buffer cache
that can be in transit via sendfile at any one time. The minimum value is 0
and the maximum is 0x40000. Setting sendfile_max to 0 means there is no
limit on the number of buffers. The default value for sendfile_max is 0.

Setting sendfile_max to 1 effectively means that you cannot use any buffers.
Because every buffer is at least one page, limiting the number of buffers
puts you at (or over) the upperbound and sendfile falls back to mallocing
memory and copying (which is what the send system call does).

Setting sendfile_max to any value up to 0x40000 allows the administrator to
protect the system against the possibility of sendfile holding onto too many
buffers.

******************************************************************************
8.10.6 New C Math Library Functions

For 11.0:

The C math library contains the following new functions, which are required
by the COSE Common API (Spec 1170) standard:

----------------------------------------------------------------------------

  Function          Result

  expm1(x)          Returns exp(x) - 1

  ilogb(x)          Returns the integer form of the binary exponent of
                    the floating-point value x

  log1p(x)          Returns log(1 + x)

  nextafter(x, y)   Returns the next representable neighbor of x in the
                    direction of y

  random()          (with srandom(), initstate(), setstate())

                    Generates a pseudo-random number

  remainder(x, y)   Returns exact floating-point remainder as defined by
                    IEEE standard; identical to drem()

----------------------------------------------------------------------------

The following C math library functions, also required by the COSE Common API
(Spec 1170) standard, were previously provided only in the PA1.1 libraries.
They are now provided in the PA1.0 libraries as well:

----------------------------------------------------------------------------

  Function      Result

  acosh(x)      Returns inverse hyperbolic cosine of x

  asinh(x)      Returns inverse hyperbolic sine of x

  atanh(x)      Returns inverse hyperbolic tangent of x

  cbrt(x)       Returns cube root of x

  logb(x)       Returns the exponent of x as an integer-valued
                double-precision number

  rint(x)       Rounds x to integer-valued double-precision number, in
                the direction of the current rounding mode

  scalb(x, n)   Returns x*(2**n), computed efficiently

----------------------------------------------------------------------------

Most other functions previously provided only in the PA1.1 libraries are now
provided in the PA1.0 libraries as well. These functions include:

   * Float versions of many mathematical functions.

   * Degree-valued trigonometric functions.

   * A group of functions recommended by the IEEE standard, including
     fpclassify, copysign, and finite.

   * The log2 and drem functions (drem is identical to remainder)

   * The C library versions of the fpgetround functions, which enable you to
     manipulate the floating-point control register

Manpages are provided for all of these functions.

******************************************************************************
8.10.7 Millicode versions of math library functions

For 11.0:

Several of the most frequently used math functions are implemented in a
special millicode library as well as in the standard math library. The
millicode versions have a streamlined calling sequence and are usually
faster than their counterparts in the standard library.

There are millicode versions for the following Fortran and C functions:

acos         atan          exp          log10          sin
asin         cos           log          pow            tan

There are millicode versions for the following Pascal functions:

arctan       cos           exp          ln             sin

To get the millicode versions of any of these functions, compile your
program with the +Olibcalls or the +Oaggressive optimization option, and use
the +DA1.1 option (the default on PA1.1 systems). The +Olibcalls option is
invoked by default when you specify the optimization type +Oaggressive; use
#VALUE!
millicode routines. The millicode versions are implemented in the library
/usr/lib/milli.a.

The millicode versions of functions do not provide standards-compliant
error-handling. This has different implications for different languages.

   * C and Pascal standards specify error-handling for library functions.

     Use millicode versions in C and Pascal programs only if your program
     does not require standards-compliant error handling.

   * Fortran standards specify no error-handling for math intrinsic
     functions.

Using the millicode versions has no effect on standards compliance.

******************************************************************************
8.10.8 Interface: libm (math.h)

The following new functions are being added to libm (and math.h) for 11.0:

exp2(3)             llround(3)            nextafterf(3)
fdim(3)             lrint(3)              remquo(3)
fmax(3)             lrint(3)              round(3)
fmin(3)             lround(3)             round(3)
llrint(3)           nan(3)                scalbn(3)
llrint(3)           nearbyint(3)          trunc(3)

Also, the following comparison macros are being added:

isgreater(3)            isless(3)                    islessgreater(3)
isgreaterequal(3)          islessequal(3)               isunordered(3)

The following internal, undocumented functions, are being deleted:

_ABS

_POLY*

_REDUCE

_LONG_DOUBLE

==============================================================================
8.10.8.1 Summary of Changes

The 11.0 library continues the HP-UX math library migration towards full
compliance with the so-called C9X standard, the next major revision of the
IOS/ANSI C standard. The 11.0 contribution to this is the addition of
several new functions and macros.

Between PA32 and PA64 versions of the math library, there is 100%
compatibility in terms of functionality. There are of course separate
versions, and these reside in the /usr/lib and /usr/lib/pa20_64 directories
as one would expect.

There are a small number of math library functions that return type 'long'.
These functions are of course different between the two architectures, in
that they return different sized results.

Some additional functions are being added to the millicode suite of math
functions. When code is compiled +Olibcalls, then additional math library
calls will become candidates for being emitted as calls to milli.a. These
are documented as nonstandard, and are archive only, so they introduce no
compatibility issues.

==============================================================================
8.10.8.2 Impact

There is no impact to the user that does not use these new functions. They
are orthogonal additions to the math library and do not impact the behavior
of existing functionality in any way.

==============================================================================
8.10.8.3 Compatibility

There are no compatibility issues for users that do not use these new
functions. Code that does use these new functions and is linked to the
shared version of the math library will of course not run on pre-11.0
releases.

The PA32 and PA64 math libraries will exhibit nearly identical performance
profiles.

The addition of several new millicode math routines adds the potential for
applications that use them to exhibit performance superior to that of
previous releases. This applies to both PA32 and PA64.

******************************************************************************
8.10.9 Interface: libsec

64-bit versions of libsec.a and libsec.2 are provided.

/usr/lib/pa20_64/libsec.a is a 64-bit version of /usr/lib/libsec.a (which is
32-bit). When building a 64-bit archive program (using the +DA2.0W compiler
option), -lsec automatically links with the 64-bit libsec.a instead of the
32-bit libsec.a.

/usr/lib/pa20_64/libsec.2 is a 64-bit version of /usr/lib/libsec.2 (which is
32-bit). When building a 64-bit shared program (using the +DA2.0W compiler
option), -lsec automatically links with the 64-bit libsec.2 instead of the
32-bit libsec.2.

==============================================================================
8.10.9.1 Compatibility

The new libraries do not affect backward compatibility.

Take note if the following conditions apply:

If you have written or obtained an application which uses libsec and this
application has not been recompiled since the 10.20 release, the application
uses the functions getprpwent() and/or setprpwent(). Trusted Mode Security
applications compiled before 10.00 are not affected.

Beginning with 10.20, user IDs use full 32 bit functionality. This expansion
has affected the <prot.h> header file, required for use with the
getprpwent(3), and setprpwent(3) function calls. Applications and/or
libraries which use this functionality must be recompiled with the 10.20 or
later prot.h file and libsec library to run with 10.20 or later HP-UX, or
unpredictable behavior will result due to misalignment of the pr_passwd
structures.

==============================================================================
8.10.9.2 Performance

The 64-bit versions of libsec.a and libsec.2 have some performance loss as
compared to the corresponding 32-bit versions.

==============================================================================
8.10.9.3 Size Requirement

The 64-bit versions of libsec.a and libsec.2 are larger than the
corresponding 32-bit versions.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8.11 Obsolete and Deprecated Interfaces

******************************************************************************
8.11.1 Diskless Cluster Interfaces

In 10.30:

Diskless clusters were removed from HP-UX in release 10.0; therefore, these
routines are no longer needed. Through oversite, these interfaces were not
removed from libc on 10.0.

endccent(3C)       getccent(3C)        hidecdf(3C)
fgetccent(3C)      getccnam(3C)        setccent(3C)
getcccid(3C)       getcdf(3C)

==============================================================================
8.11.1.1 Status

Obsolete in 10.30.

******************************************************************************
8.11.2 Interface: libdvio.a

In 11.0:

The following interfaces are obsolete with the EISA HPIB.

_dev_handler               hpib_status_wait(3I)
gpio_get_status(3I)        hpib_wait_on_ppoll(3I)
gpio_set_ctl(3I)           io_burst(3I)
hpib_abort(3I)             io_eol_ctl(3I)
hpib_bus_status(3I)        io_get_term_reason(3I)
hpib_card_ppoll_resp(3I)   io_interrupt_ctl(3I)
hpib_io(3I)                io_lock(3I)
hpib_pass_ct(3I)           io_on_interrupt(3I)
hpib_ppoll(3I)             io_reset(3I)
hpib_ppoll_resp_ctl(3I)    io_speed_ctl(3I)
hpib_ren_ctl(3I)           io_timeout_ctl(3I)
hpib_rqst_srvce(3I)        io_unlock(3I)
hpib_send_cmnd(3I)         io_width_ctl(3I)
hpib_spoll(3I)

******************************************************************************
8.11.3 Miscellaneous Clean-up of Unsupported Features

In 11.0:

The following features are not currently fully supported, may be
error-prone, and may not function as expected.

==============================================================================
8.11.3.1 Preprocessor Macros

In 11.0:

The following preprocessor macros are obsolete:

Obsolete Preprocessor Macros

----------------------------------------------------------------------------

  Macro                       Rationale

  _AES_SOURCE                 Superseded by _XOPEN_SOURCE_EXTENDED.

  _CLASSIC_TYPES              HP-UX 6.0 is no longer supported.

  _XPG2, _XPG3, _SVID2,       These denote functionality distinctions in
  _POSIX1_1988, _WSIO, _SIO   header files where the distinction is no
                              longer meaningful.

  _XPG4, _XPG4_EXTENDED       Prototypes for _XOPEN_SOURCE and
                              _XOPEN_SOURCE_EXTENDED.

  _INCLUDE__STDC__            It is no longer desirable to disable subsets
                              of ANSI C functionality.

----------------------------------------------------------------------------

==============================================================================
8.11.3.2 Header Files

Header file Contents

a.exec.h         Object file format
alarm.h          BSD termio
audnetd.h        Security
dumprestor.h     Conflicts with VXFS
initptr.h        Object file format
ndir.h           Use dirent.h instead
stab.h           Object file format
tp_defs.h        Tape defines

Existing man pages that point to header files directly for further
information will be changed to refer to more appropriate documentation.
Using header files in all other circumstances is not supported. Typedefs,
defines, macros, prototypes that are not documented or are in an
undocumented location are not supported and may be removed.

==============================================================================
8.11.3.3 Interface Replacement

In 11.0:

Unless documented otherwise in the man page, replacing the core operating
system interfaces with interfaces (using the same names) provided by
application providers is not supported. Doing so may result in undesired and
unpredictable behavior.

==============================================================================
8.11.3.4 Standards

In 11.0:

NOTE: HP-UX has a very strong commitment towards investment protection and
open system standards and will monitor these new standards. In some cases,
standards may specify features that may be incompatible with previous
specifications. HP will make every effort to support source and binary
compatibility for applications and will provide a migration plan consistent
with our commitment to investment protection and open standards.

The following interfaces will/have been affected by these standards.

==============================================================================
8.11.3.5 Threads POSIX interfaces

In 11.0:

The following interfaces are mandated by POSIX 1003.1C, but the current
HP-UX implementation does not conform with the standard. Each of the
following interfaces will change in order to conform with the POSIX 1003.1C
standard:

asctime_r(3C)        getpwnam_r(3C)         rand_r(3C)
ctime_r(3C)          getpwuid_r(3C)         readdir_r(3C)
getgrgid_r(3C)       gmtime_r(3C)           strtok_r(3C)
getgrnam_r(3C)       localtime_r(3C)        ttyname_r(3C)
getlogin_r(3C)

==============================================================================
8.11.3.6 Status

The current HP-UX implementation of these interfaces, based on draft 4 of
POSIX 1003.1C, was deprecated in 10.30 and will be available only under the
_PTHREADS_DRAFT4 define.

==============================================================================
8.11.3.7 Alternatives

Use the APIs via the _PTHREADS_DRAFT4 definition.

==============================================================================
8.11.3.8 Deprecated by Standards

In 11.0:

The following functions, global variables and header files have been marked
for deletion by standards organizations, because they are either unreliable
or deficient in capabilities. Most of them already have reliable
replacements defined by the standards. These interfaces are currently
required for conformance to the standards and specifications. HP will be
tracking these standards and may deprecate the level of support for these as
indicated by the standards and customer requirements for standards.

Interfaces and Header Files

Deprecated       Recommended
ERROR            regcomp(3C)
GETC             regcomp(3C)
INIT             regcomp(3C)
PEEK             regcomp(3C)
RETURN           regcomp(3C)
UNGETC           regcomp(3C)
advance          regcomp(3C)
chroot           none. Not portable
compile          regcomp(3C)
cuserid          getpwuid(getuid()), getpwuid(geteuid()),
                 getlogin()
/etc/utmp        /etc/utmpx
/etc/wtmp        /etc/wtmpx
/etc/btmp        /etc/btmpx
extern char *locs       regcomp(3C)
extern char *__loc1     regcomp(3C)
extern char *loc1       regcomp(3C)
extern char *loc2       regcomp(3C)
gethostid        none. Useless.
getpass          none
libgen.h         regex.h
re_comp          regcomp(3C)
re_comp.h        regex.h
re_exec          regcomp(3C)
regcmp           regcomp(3C)
regec            regcomp(3C)
regex            regcomp(3C)
regexp.h         regcomp(3C)
signgam          lgamma(3M)
sigstack         sigaltstack()
step             regcomp(3C)
tgetent          terminfo
tgetflag         terminfo
tgetnum          terminfo
tgetstr          terminfo
tgoto            terminfo
ttyslot          none.Not portable. Use getpid() for unique
                 process ID.
valloc           malloc(3C)
varargs.h        stdarg.h

******************************************************************************
8.11.4 Pre-SPEC1170

In 11.0:

The following interfaces were provided in 10.0. These are temporary
interfaces to maintain binary compatibility until the application sources
are modified to use the standards conformant SPEC1170 interface. These
temporary interfaces will be obsoleted. The preferred interfaces should be
used instead of the temporary interfaces.

----------------------------------------------------------------------------

  Temporary Interface  Preferred Interface

  nftw2                nftw

  setpgrp3             setsid

  setpgrp2             setpgid

----------------------------------------------------------------------------

==============================================================================
8.11.4.1 Status

Deprecated in 10.30.

******************************************************************************
8.11.5 HP-UX Legacy Interfaces

This section outlines the deprecation/obsolescence of HP proprietary
interfaces and utilities. These interfaces/utilities are not specified by
standards and are not portable across vendors' platforms. The use of these
interfaces/utilities is strongly discouraged and may not be portable to
future implementations of HP-UX.

16-Bit Character Interfaces

The 16-bit character interfaces (nl_tools_16(3X)) are superseded by the wide
character interfaces. The header file containing the following macros was
placed in /usr/old/usr/include in HP-UX 10.0.

Macros

ADVANCE(3X)       C_COLWIDTH(3X)      SECof2(3X)
BYTE_STATUS(3X)   FIRSTof2(3X)        WCHAR(3X)
CHARADV(3X)       PCHAR(3X)           WCHARADV(3X)
CHARAT(3X)        PCHARADV(3X)

In libc

byte_status(3X)   firstof2(3X)        secof2(3X)
c_colwidth(3X)

==============================================================================
8.11.5.1 Status

Deprecated since 10.0. Removed from libc.2 in 10.30.

==============================================================================
8.11.5.2 Alternatives

Use the WPI wide character interfaces in libc.

******************************************************************************
8.11.6 Interface: Curses libHcurses.a, libHcurses.sl

Classic HP-UX curses.

==============================================================================
8.11.6.1 Status

Deprecated in 10.30. There is no 64-bit version of this library.

==============================================================================
8.11.6.2 Alternative

X/Open libcurses

******************************************************************************
8.11.7 Interface: Curses Libcur_colr.a, libcur_colr.sl

Superseded by X/Open curses, which is a superset of features.

==============================================================================
8.11.7.1 Status

Obsolete in 10.30. There is no 64-bit version of this library.

Linked to libxcurses.1, so change will not be noticed.

==============================================================================
8.11.7.2 Alternatives

X/Open libcurses.

******************************************************************************
8.11.8 Secure Password File Access Interfaces

The following interfaces are merely compatibility stubs in libc; the real
interfaces can be found in libsec. In following through with the
obsolescence plan defined for these interfaces and since libc is versioning
in 10.30, the stubs in libc will be removed.

endspwent(3X)      getspwaid_r(3X)      getspwuid(3X)
endspwent_r(3X)    getspwent(3X)        getspwuid_r(3X)
fgetspwent(3X)     getspwent_r(3X)      putspwent(3X)
fgetspwent_r(3X)   getspwnam(3X)        setspwent(3X)
getspwaid(3X)      getspwnam_r(3X)      setspwent_r(3X)

==============================================================================
8.11.8.1 Status

Removed from libc in 10.30; kept in versioned libc.

==============================================================================
8.11.8.2 Alternatives

These interfaces are available in libsec.

******************************************************************************
8.11.9 Interface: libPW.a

These interfaces are undocumented, unmaintained, and nonstandard. They may
perform slower than the related interface in libc.

abspath            patoi            trnslat
albrk              patol            trnslat
alloca             pop              unlockit
any                push             userdir
anystr             regcmp           userexit
cat                regex            username
clean_up           rename           verify
curdir             repeat           xalloc
dname              repl             xcreat
fatal              satoi            xfree
fdfopen            setsig           xfreeall
findir             setsig           xlink
giveup             setsig1          xmsg
imatch             setsig1          xopen
index              sname            xpipe
lockit             sname            xunlink
logname            strend           xwrite
move               strend           xwrite
mylock             substr           zero
onelock            substr           zeropad

==============================================================================
8.11.9.1 Status

Deprecated in 10.30. There is no 64-bit version of this library.

==============================================================================
8.11.9.2 Alternatives

Many interfaces are already in libc.

******************************************************************************
8.11.10 utmp File Access Interfaces

The interfaces in this list expose the format of the information in the utmp
and wtmp files.

_pututline        getutid           pututline_r
endutent          getutid_r         setutent
endutent_r        getutline         setutent_r
getutent          getutline_r       utmpname
getutent_r        pututline         utmpname_r

==============================================================================
8.11.10.1 Status

Deprecated in 10.30. Not included in 64-bit libc.

==============================================================================
8.11.10.2 Alternatives

The libc interfaces getutxent(), getutxid(), getutxline(), endutxent(),
pututxline(), and setutxent() are SPEC 1170 replacements and should be used
instead.

These interfaces will no longer be supported, but they will be placed in
libcompat.a for source compatibility.

******************************************************************************
8.11.11 Block Mode Terminal Interfaces

The HP-proprietary block mode support is not portable across platforms.

blclose           blmodeio.h           blread
blget             blopen               blset

==============================================================================
8.11.11.1 Status

Deprecated in 10.30. Not included in 64-bit libc.

******************************************************************************
8.11.12 PRIV_SETRUGID feature of setgid

It is recommended that the PRIV_SETRUGID capability be avoided, as it is
provided for backward compatibility. This feature may be modified or dropped
from future HP-UX releases. When changing the real user ID and real group
ID, use setresuid() and setresgid().

==============================================================================
8.11.12.1 Status

Deprecated in 10.30. Not included in 64-bit libc. d

******************************************************************************
8.11.13 Signal Mask

The Berkeley signal mask interfaces (not SPEC 1170) are being deprecated,
because they are specified to use a 32-bit mask (1 bit per signal) and there
are currently 34 signals, so they are unable to control the behavior of all
signals.

sigblock(2)  sigsetmask(2)  sigvector(2)  sigpause(2)

==============================================================================
8.11.13.1 Status

Deprecated in 10.30. Not included in 64-bit libc.

==============================================================================
8.11.13.2 Alternatives

Use the POSIX.1 sigaction() interface.

******************************************************************************
8.11.14 Function: getpw(3C)

This routine is only provided for compatibility with previous releases.

==============================================================================
8.11.14.1 Status

Deprecated in 10.30. Not included in 64-bit libc.

==============================================================================
8.11.14.2 Alternatives

Applications should use getpwent().

******************************************************************************
8.11.15 Threads

The HP-UX proprietary _r (re-entrant) and _unlocked interfaces should be
obsoleted from libc and other HP-UX system libraries.

HP-UX Proprietary _r Interfaces

_hostalias_r          gethostbyaddr_r      lrand48_r
_setlocale90_r        gethostbyname_r      ltoa_r
acltostr_r            gethostent_r         ltostr_r
clnt_spcreateerror_r  getlocale_r          mrand48_r
clnt_sperrno_r        getlogin_r           mywcstok_r
clnt_sperror_r        getmntent_r          nrand48_r
crypt_r               getnetbyaddr_r       p_rr
drand48_r             getnetbyname_r       ptsname_r
ecvt_r                getnetent_r          pututline_r
encrypt_r             getnetgrent_r        seed48_r
endgrent_r            getprotobyname_r     setgrent_r
endhostent_r          getprotobynumber_r   sethostent_r
endnetent_r           getprotoent_r        setkey_r
endnetgrent_r         getpwent_r           setlocale_r
endprotoent_r         getrpcbyname_r       setnetent_r
endpwent_r            getrpcbynumber_r     setnetgrent_r
endrpcent_r           getrpcent_r          setprotoent_r
endservent_r          getservbyname_r      setpwent_r
endspwent_r           getservbyport_r      setrpcent_r
endusershell_r        getservent_r         setservent_r
endutent_r            getusershell_r       setusershell_r
erand48_r             getutent_r           setutent_r
fcvt_r                getutid_r            srand48_r
fgetgrent_r           getutline_r          strerror_r
fgetpwent_r           inet_ntoa_r          strtoacl_r
fgetspwent_r          jrand48_r            strtoaclpatt_r
getdate_r             l64a_r               ultoa_r
getdiskbyname_r       lcong48_r            ultostr_r
getgrent_r            ldecvt_r             utmpname_r
getgrgid_r            ldfcvt_r             wcstok_r
getgrnam_r

HP-UX Proprietary _unlocked Interfaces

_fflush_unlocked      fputs_unlocked       puts_unlocked
clearerr_unlocked     fputwc_unlocked      putw_unlocked
fclose_unlocked       fputws_unlocked      putwc_unlocked
feof_unlocked         fread_unlocked       putwchar_unlocked
ferror_unlocked       fseek_unlocked       putws_unlocked
fflush_unlocked       ftell_unlocked       rewind_unlocked
fgets_unlocked        fwrite_unlocked      setvbuf_unlocked
fgetwc_unlocked       getw_unlocked        ungetc_unlocked
fgetws_unlocked       getwc_unlocked       ungetwc_unlocked
fileno_unlocked       getwchar_unlocked

==============================================================================
8.11.15.1 Status

Deprecated in 10.30. Deprecated interfaces moved to libd4r.

==============================================================================
8.11.15.2 Alternatives

Use the non _r and non _unlocked interface in libc.

******************************************************************************
8.11.16 Interfaces: libdbm.a, libdbm.sl, libndm.a, libndbm.sl, libdbm.1

_dbm_close          _fetch             dbm_nextkey
_dbm_delete         _firstkey          dbm_open
_dbm_fetch          _nextkey           dbm_store
_dbm_firstkey       _store             dbmclose
_dbm_forder         dbm_close          dbminit
_dbm_nextkey        dbm_delete         delete
_dbm_open           dbm_do_nextkey     fetch
_dbm_store          dbm_fetch          firstkey
_dbmclose           dbm_firstkey       nextkey
_dbminit            dbm_forder         store
_delete

==============================================================================
8.11.16.1 Status

Obsoleted in 10.30 with the exception of libndbm, which was only deprecated
in 10.30 and contains only the *dbm_* APIs as listed above.

There is no 64-bit version of this library.

Linked to libempty.a, so makefiles won't need to be modified.

==============================================================================
8.11.16.2 Alternatives

All interfaces are in libc per SPEC1170.

==============================================================================
8.11.16.3 Function: nl_tools_16(3C) interfaces

ADVANCE          PCHAR           _CHARADV
BYTE_STATUS      PCHARADV        _WCHARADV
CHARADV          SECof2          byte_status
CHARAT           WCHAR           c_colwidth
C_COLWIDTH       WCHARADV        firstof2
FIRSTof2         WC_COLWIDTH     secof2

==============================================================================
8.11.16.4 Status

Deprecated in HP-UX 10.0. Removed from libc.2 in 10.30; kept in versioned
libc.1.

==============================================================================
8.11.16.5 Alternatives

Use the standard wide character interfaces in libc.

==============================================================================
8.11.16.6 Function: strftime(3C)

In 10.30:

The following strftime directives were provided for backward compatibility
and are now obsoleted.

Deprecated          Recommended
Directive           Directive
----------          ¡-----------
   %                %E%EC%Ey
   %F               %B
   %N               %EC
   %o               %Ey
   %z               %Z

==============================================================================
8.11.16.7 Status

Deprecated in HP-UX 9.x.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8.12 Interimplementation Compatibility

The following features are provided for compatibility with other
implementations.

******************************************************************************
8.12.1 Device Control

These system calls (NOT the commands) are preserved for backward
compatibility with Bell Version 6. They provide as close an approximation as
possible to the old Version 6 functions.

stty(2)
gtty(2)

==============================================================================
8.12.1.1 Status

Deprecated in 10.30. Not included in 64-bit libc.

==============================================================================
8.12.1.2 Alternatives

All new applications should use TCSETA and TCGETA ioctl() calls described in
termio(7).

******************************************************************************
8.12.2 Interface: libBSD.a

4.2 BSD-compatible process control facilities are deprecated.

These calls simulate (and are provided for backward compatibility with)
functions of the same name in the Berkeley Software Distribution.

Comparable interfaces are already in libc.

libBSD Interface    Preferred libc Interface
----------------    ------------------------
getwd(2)           getcwd(2)
killpg(2)          kill(2)
sigvec(2)          sigaction(2)
signal(2)          sigaction(2), bsd_signal(2)
setpgrp(2)         setpgid(2)
getpgrp(2)         getpgid(2)

==============================================================================
8.12.2.1 Status

Deprecated in 10.30. There is no 64-bit version of this library.

==============================================================================
8.12.2.2 Alternatives

See preferred libc interface in table.

******************************************************************************
8.12.3 Interface: libV3.a

Compatibility with System V3. Interfaces are in libc per SPEC1170.

longjmp           sigignore              sigrelse
setjmp            sigpause               sigset
sighold

==============================================================================
8.12.3.1 Status

Obsolete in 10.30. There is no 64-bit version of this library.

Linked to libempty.a, so makefiles won't need modifications.

==============================================================================
8.12.3.2 Alternatives

Same interface in libc.

******************************************************************************
8.12.4 Interface: libdbm.a, libdbm.sl, libndbm.a, libndbm.sl, libdbm.1

Interfaces have moved to libc.

_dbm_close              _fetch             dbm_nextkey
_dbm_delete             _firstkey               dbm_open
_dbm_fetch               _nextkey                dbm_store
_dbm_firstkey           _store                  dbmclose
_dbm_forder             dbm_close               dbminit
_dbm_nextkey           dbm_delete               delete
_dbm_open                 dbm_do_nextkey        fetch
_dbm_store              dbm_fetch               firstkey
_dbmclose                 dbm_firstkey          nextkey
_dbminit                dbm_forder             store
_delete

==============================================================================
8.12.4.1 Status

Obsolete in 10.30. There is no 64-bit version of this library.

Linked to libempty.a, so makefiles won't need to be modified.

==============================================================================
8.12.4.2 Alternatives

All interfaces are in libc per SPEC1170.

******************************************************************************
8.12.5 Interface: File System Descriptor File Entry

The following interfaces can get file system descriptor file entry. These
routines are included only for compatibility with 4.2 BSD.

endfsent               getfsfile              getfstype
getfsent               getfsspec              setfsent

==============================================================================
8.12.5.1 Status

Deprecated in 10.30. Not included in 64-bit libc.

==============================================================================
8.12.5.2 Alternatives

For maximum portability and improved functionality, new applications should
use the getmntent(3X) library routines.

******************************************************************************
8.12.6 Function: getdirentries(2)

This routine is nonstandard and provided only for compatibility with Sun.

==============================================================================
8.12.6.1 Status

Deprecated in 10.30. Not included in 64-bit libc.

==============================================================================
8.12.6.2 Alternatives

Applications should use readdir(2), opendir(2), closedir(2), seekdir(2), and
telldir(2) instead.

******************************************************************************
8.12.7 Function: vfsmount(2)

This routine was only provided for compatibility with Sun.

==============================================================================
8.12.7.1 Status

Deprecated in 10.30. Not included in 64-bit libc.

==============================================================================
8.12.7.2 Alternatives

Applications should use mount(2).

******************************************************************************
8.12.8 Function: ftime(2)

==============================================================================
8.12.8.1 Status

Deprecated in 10.30. Not included in 64-bit libc.

==============================================================================
8.12.8.2 Alternatives

Either time() or gettimeofday() should be used in new programs.

******************************************************************************
8.12.9 OBSOLETE Bundle

In 11.0, the deprecated libraries, commands, and header files will be placed
in the following new filesets in the OBSOLETE bundle.

10.30 Fileset     11.0 Fileset      Description
-------------     ------------      -----------
CORE-SHLIBS       CORE-O-SHLIBS     run-time libraries
PROG-AUX          PROG-O-AUX        auxiliary archive libraries
PROG-MIN          PROG-O-MIN        core archive libraries
CMDS-AUX          CMDS-O-AUX        auxiliary commands
CMDS-MIN          CMDS-O-MIN        core commands
C-INC             C-O-INC           header files

The deprecated/obsolete header files will move into /usr/old/usr/include.

******************************************************************************
8.12.10 Interface: libdvio.a

In 11.0:

The following interfaces are obsolete with the EISA HPIB.

_dev_handler         gpio_get_status        gpio_set_ctl
hpib_abort           hpib_bus_status        hpib_card_ppoll_resp
hpib_eoi_ctl         hpib_io                hpib_pass_ct
hpib_ppoll           hpib_ppoll_resp_ctl    hpib_ren_ctl
hpib_rqst_srvce      hpib_send_cmnd         hpib_spoll
hpib_status_wait     hpib_wait_on_ppoll     io_burst
io_eol_ctl           io_get_term_reason     io_interrupt_ctl
io_lock              io_on_interrupt        io_reset
io_speed_ctl         io_timeout_ctl         io_unlock
io_width_ctl

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8.13 Computer Languages

******************************************************************************
8.13.1 Linker and object file tools: ld, crt0.o, dld.sl, nm, size, and
strip.

For PA32, no change in any tool.

==============================================================================
8.13.1.1 New linker options for PA64

----------------------------------------------------------------------------

  -dynamic           Creates a program that can use shared libraries.
                     This is the default behavior unless +compat is
                     specified.

  -noshared          Creates a fully archive bound program.

  -k <filename>      Filename specifies a mapfile that describes the
                     output file memory map.

  +[no]allowunsats   Does not flag errors if the resulting executable
                     file has unsatisfied symbols. This is the default
                     for relocatable links and dll builds. +noallowunsats
                     is the default for linking program files.

  +compat            Turns on compatibility mode linking in the linker.
                     Options turned on with this option are: +forceload,
                     +noenvvar, -Bdepthfirst. Options turned off:
                     -dynamic.

  +[no]forceload     Load all object files from archive libraries.
                     +noforceload is the default unless +compat is
                     specified.

  +hideallsymbols    Hide all symbols from being exported.

  +nodefaultmap      Do not use the default memory map. The user needs to
                     supply a memory map with the -k option.

  +noenvvar          Instructs the dynamic loader not to use any
                     environment variables at runtime.

  +std               Turns on standard mode. This is the default. Options
                     turned on wit this option are: -dynamic,
                     -Bbreadthfirst, +noforceload. Options turned off or
                     ignored are: +compat, +noenvvar, -noshared.

  +stripunwind       Do not output the unwind table.

  +vtype <type>      Produce verbose output from the link operation.

----------------------------------------------------------------------------

Options not supported in a PA64 ld:

----------------------------------------------------------------------------

  -A <name>          Do incremental loading

  -C<n>              Set the maximum parameter level checking to n

  -S                 Build IPL aux header

  -T                 Use tempfile instead of malloc'd space during
                     linking

  -X <num>           Set the size of the symbol table.

  +cg <pathname>     Specify the code generator for compiling ISOMs to
                     SOMs.

  +O[no]fastaccess   Enable/disable fast access to global data.

----------------------------------------------------------------------------

All internal undocumented options are not supported.

These options are not supported because they either are not standard
conforming, they are SOM-specific, or they are not needed in the new runtime
architecture conventions.

==============================================================================
8.13.1.2 New Environment Variable LD_LIBRARY_PATH

A new environment variable is now supported: LD_LIBRARY_PATH. This has
precedence over SHLIB_PATH.

==============================================================================
8.13.1.3 dld.sl changes for PA64

A new family of dynamic loading routines are available.

See the dl* man pages for more information.

libdld.sl is now a symbolic link to libdl.sl.

==============================================================================
8.13.1.4 Function: dlopen(3C)

Load a shared library. Does breadth-first searching for dependent shared
libraries.

Usage: cc [flag...] file... -ldl [library]...

#include <dlfcn.h>
void *dlopen(const char *file, int mode);

==============================================================================
8.13.1.5 Function: dlclose(3C)

Unload a dynamically loaded shared library

Usage: cc [flag...] file... -ldl [library]...

#include <dlfcn.h>
int dlclose(void *handle);

==============================================================================
8.13.1.6 Function: dlget(3C)

Retrieve information on a loaded module (program or shared library)

Usage: cc [flag...] file... -ldl [library]...

#include <dlfcn.h>
void *dlget(unsigned int index,
    struct load_module_desc *desc,
    size_t desc_size);

==============================================================================
8.13.1.7 Function: dlgetname(3C)

Retrieve the name of a shared library given a load module descriptor

Usage: cc [flag...] file... -ldl [library]...

#include <dlfcn.h>

char *dlgetname(struct load_module_desc *desc,
    size_t desc_size,
    void *(*read_tgt_mem)(void* buffer,
        unsigned long long ptr,
        size_t bufsiz,
        int ident),
    int ident_parm,
    unsigned long long load_map_parm);

==============================================================================
8.13.1.8 Function: dlmodinfo(3C)

Retrieve information on a loaded module

Usage: cc [flag...] file... -ldl [library]...

#include <dlfcn.h>
unsigned long dlmodinfo(unsigned long ip_value,
struct load_module_desc *desc,
size_t desc_size,
void *(*read_tgt_mem)(void* buffer,
    unsigned long ptr,
    size_t bufsiz,
    int ident),
int ident_parm,
uint64_t load_map_parm);

==============================================================================
8.13.1.9 Function: dlsym(3C)

Retrieve symbol information

Usage: cc [flag]... file... -ldl [library]...

#include <dlfcn.h>

void *dlsym(void *handle, const char *name);

==============================================================================
8.13.1.10 Function: crt0(3) changes for PA64:

These symbols are no longer defined in a PA64 crt0.o:

$RECOVER_END$
$RECOVER_START$
$START$
$UNWIND_END$
$UNWIND_START$
$global$
__argc_value
__argv_value
_start

These symbols are now defined by a PA64 crt0.o:

----------------------------------------------------------------------------

  __argc   Number of arguments

           Array of arguments
  __argv

           Array of character pointers to the environment in which the
  __envp   program will run.

----------------------------------------------------------------------------

==============================================================================
8.13.1.11 Command: nm(1) changes for PA64:

These options are not supported on PA64:

----------------------------------------------------------------------------

  -T   Truncate symbol names that will overflow its column

  -q   Silence some warning messages

----------------------------------------------------------------------------

These options are new for PA64:

----------------------------------------------------------------------------

  -C   Demangle C++ symbol names before printing them

  -U   Print the usage menu

  -l   Distinguish between weak and global symbols by appending * to the
       key letter of the weak symbols.

  -s   Print the section index instead of the section name.

----------------------------------------------------------------------------

==============================================================================
8.13.1.12 Command: strip(1) changes for PA64:

This option is not supported on PA64:

----------------------------------------------------------------------------

  -r   Reset the relocation indexes into the symbol table

----------------------------------------------------------------------------

This option is new for PA64:

----------------------------------------------------------------------------

  -U   Print the usage menu

----------------------------------------------------------------------------

==============================================================================
8.13.1.13 Command: size(1) changes for PA64:

These options are new for PA64:

----------------------------------------------------------------------------

  -F   Print the size and permission bits of each loadable segment.

  -U   Print the usage menu.

  -f   Print the size of each allocatable section.

  -n   Print the size of the non loadable segments or nonallocatable
       sections.

----------------------------------------------------------------------------

==============================================================================
8.13.1.14 Command: chatr64(1) changes for PA64

See below.

==============================================================================
8.13.1.15 Function: elf(3E) (new format)

See below.

==============================================================================
8.13.1.16 Function: nlist64(3C) (new tool)

See below.

******************************************************************************
8.13.2 ANSI/ISO C++

The 11.0 ANSI C++ compiler is a superset of the 10.30 compiler. In addition
to all the 10.30 features it will also support dual model compilation. This
is done by using a command line option specifing 32-bit or 64-bit
compilation regardless of the system on which the compilation is made. The
32-bit model is identical to the 10.30 compiler. The 64-bit model is new in
11.0. The 64-bit compile uses what is known as the LP64 data model. Under
this data model, "long" and pointer data are 64-bit integral quantities.
Under 10.30, all "int", "long" and pointers are 32-bits in size.

For more information on the effect the LP64 data model has on user
applications please consult the various documents available for the PA64 C
compiler.

==============================================================================
8.13.2.1 Summary of Change

There will be a new command line option +DA2.0W, that denotes a 64-bit
compilation. The default is still 32-bit compilation.

System headers will also be updated to reflect this model change. Some data
types defined in the headers will be affected.

==============================================================================
8.13.2.2 Impact

An application compiled using the +DA2.0W option and the LP64 data model
will only run on 64-bit platforms. Applications that were compiled under the
32-bit system but wish to utilize the large address space that a 64-bit
platform supports will need to recompile, with a possible source change. The
original 32-bit applications from 10.30 will continue to run without change
in both 32-bit and 64-bit platforms.

==============================================================================
8.13.2.3 Compatibility

The 32-bit code generation will not be affected and hence will be compatible
with 10.30. The 64-bit code will conform to PA64 ABI and also it will
support the LP64 data model as well as the ELF binary file format. It will
not be compatible with 32-bit binaries. However the set of C++ features
supported be the same for 32-bit as well as 64-bit compiles.

Sources can guard 64-bit specific code with the macro __LP64__. Makefiles
and scripts will need to be changed to use the +DA2.0W option as
appropriate. 64-bit binaries will be Elf as opposed to SOM for 32-bit. Note
that a PA2.0 11.0 system can run both 32-bit SOM as well as 64-bit ELF
binaries.

==============================================================================
8.13.2.4 Performance

Compile time performance for 64-bit binaries is not expected to be
significantly different. The run-time performance of 64-bit binaries will
essentially scale up based on the performance of the underlying 64-bit
platform.

==============================================================================
8.13.2.5 Alternatives

The new 64-bit compilation option allows users to access large memory space
and provides a 64-bit "long" integer type. Users who do not want to migrate
to the LP64 data model can still have access to a 64-bit integer type by
using the "long long" type in the existing 32-bit system. Tools such as Lint
or Flex-lint can help users migrate their code (or make it 64-bit clean) to
the 64-bit platform. Users can use the 64-bit C compiler (may be with a C++
to C translator), to get 64-bit binaries.

==============================================================================
8.13.2.6 Configuration

The 11.0 ANSI C++ compiler will provide both 32-bit and 64-bit runtime
libraries: libCsup, iostream, and libstd.

==============================================================================
8.13.2.7 Size Requirement

Size requirement is currently unavailable. It will depend on whether the
final product is one or 2 compilers.

==============================================================================
8.13.2.8 Machines affected

All 64-bit platforms (e.g., pcx_u) will be affected.

******************************************************************************
8.13.3 Command: chatr64(1)

This is a new tool that will process ELF files. This tool will live in
/usr/ccs/lbin/chatr64 and will be accessed using the dual path driver in
/usr/ccs/bin/chatr.

This tool provides similar functionality to the SOM version of chatr
(chatr32) and presents a backwardly compatible interface for those options
that are relevant for both ELF and SOM files.

In addition, the tool adds several new options and a new command-line syntax
for handling ELF-specific functionality.

==============================================================================
8.13.3.1 Summary of Change

The chatr64 tool only processes ELF files; it does not recognize any form of
SOM file. In addition to recognizing executables, dynamic libraries,
relocatable files, and archive libraries, chatr64 also adds the ability to
recognize ELF core files.

The output of chatr64 resembles that of chatr32, but is not exactly the
same. Chatr64 begins by identifying the type of file (executable,
relocatable, etc.) and then lists the shared library dynamic path search
information, the internal name, the shared library list, and the binding
mode. Unlike chatr32, which lists this information even if irrelevant,
chatr64 will only output information relevant to the file. For example, the
internal name field is only displayed for shared libraries.

The output of these fields is similar to chatr32, but differs where required
to identify ELF-specific attributes. The strings on the first line that
identify the file type are different than chatr32's in order to distiguish
ELF and SOM files. For instance, chatr64 will print out "64-bit ELF
executable" while chatr32 would display "shared executable" to indicate an
executable file.

The shared library dynamic path search contains an additional line for the
LD_LIBRARY_PATH environment variable that is only relevant when searching
for ELF shared libraries.

After all of the shared library attributes but before the file attributes,
chatr64 adds a new section that describes the attributes of each segment in
the ELF file. Each segment has a five column entry such as:

index type address          flags  size
4     text 4000000000001000 -v--c  4k
5     data 8000000000001000 z-rm-  4k

The first column lists the index number of the segment, used for identifying
changes. The next column indicates the type of segment and holds one of
three values: "text," a code segment, "data," a data segment, or "unk," a
segment whose type is not known. The third column contains the starting
address of the segment, which can also be used as identification when making
changes.

The fourth column contains the five flags that indicate the segment's
attributes. When a flag is cleared, the attribute is disabled; when the
appropriate letter is set, the corresponding attribute is enabled. The five
attributes and their abbreviations are:

----------------------------------------------------------------------------

  z   Lazy swap allocation (only valid for data segments)

  v   Physical page locking

  r   Static branch prediction

  m   Modifiable (segment is modifiable)

  c   Code (segment contains code)

----------------------------------------------------------------------------

The final column indicates the page size attribute for the segment. It
contains a value that is an even power of two. The following abbreviations
are allowed:

k or K: 2^10

m or M: 2^20

g or G: 2^30

t or T: 2^40

p or P: 2^50

e or E: 2^60

Following the segment attributes are the global attributes. Unlike chatr32,
which displays up to six global attributes, chatr64 displays only two. The
first is the "kernel assisted branch prediction" attribute. The other is the
"lazy swap allocation for dynamic segments" attribute. Both can be enabled
or disabled. The four "missing" attributes are handled on a per-segment
basis in ELF and are among the segment attributes described above.

==============================================================================
8.13.3.2 Options

The following options are not supported by chatr64:

----------------------------------------------------------------------------

  -l   Enable runtime path lookup for a library

  +l   Disable runtime path lookup for a library

  -n   Change file to shared

  -q   Change file to demand-loaded

  -M   Change file to SHMEM_MAGIC

  -N   Change file to EXEC_MAGIC

----------------------------------------------------------------------------

The underlying behavior that they imply is not supported by the ELF format.

The following options have been added to chatr64, and are only valid with
the new chatr64-specific syntactic mode described below:

----------------------------------------------------------------------------

  +dz     Enables the "lazy swap allocation for dynamic segments"
          attribute

  +p      Sets the page size for a specified segment

  +m      Sets the modifiable attribute for a specified segment

  +c      Sets the code attribute for a specified segment

  +v      Sets the locked attribute for a specified segment

  +si     Specifies a segment by its index

  +sa     Specifies a segment by its address

  +sall   Specifies all segments in the file

----------------------------------------------------------------------------

The following options have been added to chatr64, and are only valid with
the backward-compatible syntactic form described below:

----------------------------------------------------------------------------

  +md   Set the modifiable attribute for all data segments

  +mi   Set the modifiable attribute for all text segments

  +cd   Set the code attribute for all data segments

  +ci   Set the code attribute for all text segments

----------------------------------------------------------------------------

The following options are present in both chatr32 and chatr64, but their
semantics have changed in chatr64:

----------------------------------------------------------------------------

  +z    In the backward compatible form, +z changes the lazy swap
        attribute on all data segments. In its new form, it changes the
        lazy swap attribute only on the segments specified.

  +r    In the backward compatible form, +r changes the static branch
        prediction attribute for all segments. In the new form, it
        changes the attribute only on the segments specified.

  +pi   Changes the page size attribute of the text segment under the
        backward-compatible form, but allows a larger range (up to 8e =
        2^63) than with chatr32.

  +pd   Changes the page size attribute of the data segment under the
        backward-compatible form, but allows a larger range than chatr32.

  -B    Supports an additional binding mode, symbolic, that is only
        relevant for shared libraries.

----------------------------------------------------------------------------

==============================================================================
8.13.3.3 Command Line Syntax

Chatr64 supports two distinct command line syntaxes. The first is designed
to be backward compatible with the chatr32 interface, but adds a number of
new options:

      chatr [-s] [-B <mode>] [+s <flag>] [+b <flag>] [+k <flag>]
            [+ci <flag>] [+cd <flag>] [+mi <flag>] [+md <flag>] [+pi <size>]
            [+pd <size>] [+t <flag>] [+d <flag>] [+z <flag>] <files> ...

This form can accept multiple files on the command line and performs the
appropriate modifications on all segments of the appropriate type, on those
files. All command lines that were valid with chatr32 except for those
containing obsolete options should function with equivalent results with the
backward-compatible syntax of chatr64.

The second command line mode allows finer control of ELF specific
functionality, but is not compatible with chatr32 in any way:

     chatr [-s] [-B <mode>] [+s <flag>] [+b <flag>] [+dz <flag>] [+k <flag>]
           [[[+si <index>] [+sa <addr>] [+sall]]...
           [[+c <flag>] [+m <flag>] [+p <size>] [+v <flag>] [+z <flag>]]...
           ]... <file>

This command line form only allows a single file to be modified at one time.
This provides a finer degree of control over which segments get modified.

After all global attributes are specified, the user enters a series of
"segment specifiers" using the +si, +sa, and +sall options. The attribute
options follow the segment specifiers, and only those segments specified
will be modified as a result of the attribute options. Multiple groups of
segment specifiers and attribute options can be specified on a single
command line: a given attribute option only affects those segments that were
specified in the closest preceding group of segment specifier options. For
example, the following command line enables the code bit for segment number
5 and the modify bit for segments 6 and 7:

chatr +si 5 +c enable +si 6 +si 7 +m enable foo

Only certain options are valid in each form and some options perform
different functions depending on the syntactic form, as described above
under "Options."

==============================================================================
8.13.3.4 Impact

This is a new tool, so the impact should be minimal. The existing chatr32
tool will still be available (and will be the only option) for processing
SOM files.

Scripts that rely on the exact output of the chatr32 will probably need to
be modified to accommodate the slightly different output of chatr64. Those
that simply rely on the behavior of the nonobsolete chatr32 options should
work with minimal modification with chatr64.

==============================================================================
8.13.3.5 Compatibility

The old chatr32 tool will still be available for processing SOM files and
will be automatically invoked by the dual-path driver to handle SOM files.

The new chatr64 in backward-compatibility mode will accept nearly all of the
options as the old chatr32, except for those that are not relevant for ELF
files. The output may require changes to scripts, but should present few
surprises to the user.

******************************************************************************
8.13.4 HP DDE Debugger dde(1)

DDE 4.20

==============================================================================
8.13.4.1 Features

User visible: DDE 4.20 supports the LP64 data model. User invisible: ELF
object modules, and SOM-64 debug records.

==============================================================================
8.13.4.2 Impact

Customers will be able to use DDE 4.20 to debug wide-mode (64-bit) programs
running on HP-UX 11.0.

==============================================================================
8.13.4.3 Compatibility

DDE 4.20 will also debug narrow-mode (32-bit) programs running on HP-UX
10.30 and 11.0. DDE 4.20 will not operate on HP-UX 10.20 or prior versions.

In HP-UX 11.0, DDE 4.20 will detect the mode of the program being debugged
and operate correctly without any action from the user.

==============================================================================
8.13.4.4 Performance

There will be no significant change in performance of DDE 4.20 by comparison
with DDE 4.10, the prior version.

==============================================================================
8.13.4.5 Alternatives

The xdb debugger will operate under HP-UX 11.0, but will not debug wide-mode
programs, nor programs that employ kernel threads.

Machines affected

Series 700 - HP-UX 11.0 is not a "700" [workstation] release.

Series 800 - 11.0 is currently an "800 only" [server] release.

******************************************************************************
8.13.5 Function: elf(3E)

On PA64, the object file format has changed from SOM to ELF.

#include <elf.h>

The file name a.out is the default output file name from the link editor,
ld(1). The link editor will make an a.out executable if there were no errors
in linking. The output file of the assembler, as(1), also follows the format
of the a.out file although its default file name is different.

Programs that manipulate ELF files may use the library that elf(3E)
describes. An overview of the file format follows. For more complete
information, see the references given below:

Linking View             Execution View
_______________________ ________________________
ELF header                  ELF header
|_____________________| |______________________|
|Program header table | | Program header table |
|       optional      | |                      |
|_____________________| | _____________________|
|      Section 1      | |                      |
|_____________________| |                      |
|        . . .        | |       Segment 1      |
|                     | |                      |
|_____________________| | _____________________|
|      Section n      | |                      |
|_____________________| |                      |
|        . . .        | |       Segment 2      |
|                     | |                      |
|_____________________| | _____________________|
|        . . .        | |         . . .        |
|_____________________| | _____________________|
| Section header table| | Section header table |
|                     | |       optional       |
|_____________________| |______________________|

An ELF header resides at the beginning and holds a ``road map'' describing
the file's organization. Sections hold the bulk of object file information
for the linking view: instructions, data, symbol table, relocation
information, and so on. Segments hold the object file information for the
program execution view. As shown, a segment may contain one or more
sections.

A program header table, if present, tells the system how to create a process
image. Files used to build a process image (execute a program) must have a
program header table; relocatable files do not need one. A section header
table contains information describing the file's sections. Every section has
an entry in the table; each entry gives information such as the section
name, the section size, and so on. Files used during linking must have a
section header table; other object files may or may not have one.

Although the figure shows the program header table immediately after the ELF
header, and the section header table following the sections, actual files
may differ. Moreover, sections and segments have no specified order. Only
the ELF header has a fixed position in the file.

When an a.out file is loaded into memory for execution, three logical
segments are set up: the text segment, the data segment (initialized data
followed by uninitialized, the latter actually being initialized to all
0's), and a stack. The text segment is not writable by the program; if other
processes are executing the same a.out file, the processes will share a
single text segment.

The data segment starts at the next maximal page boundary past the last text
address. If the system supports more than one page size, the ``maximal
page'' is the largest supported size. When the process image is created, the
part of the file holding the end of text and the beginning of data may
appear twice. The duplicated chunk of text that appears at the beginning of
data is never executed; it is duplicated so that the operating system may
bring in pieces of the file in multiples of the actual page size without
having to realign the beginning of the data section to a page boundary.
Therefore, the first data address is the sum of the next maximal page
boundary past the end of text plus the remainder of the last text address
divided by the maximal page size. If the last text address is a multiple of
the maximal page size, no duplication is necessary. The stack is
automatically extended as required. The data segment is extended as
requested by the brk(2) system call.

See elf(3E) man page for more information.

==============================================================================
8.13.5.1 Impact

Some options are only available on PA32. Customers cannot use the new
toolset with these options.

==============================================================================
8.13.5.2 Compatibility

Some options that are supported in a PA32 tool are not supported in the PA64
versions.

To get PA32 linktime and runtime behavior, use the +compat mode to ld.

******************************************************************************
8.13.6 Fortran 90 and Fortran 77

HP Fortran 90 will be enhanced to provide 64-bit support, including the
creation of 64-bit object files. Please note that HP Fortran 77 will not be
enhanced and will continue to only be supported in 32-bit object files.

==============================================================================
8.13.6.1 Summary of Change

HP Fortran 90 will include a new compiler option (+DA2.0W) that enables
creation of 64-bit object files. This enables the compiler to generate
64-bit address references for Fortran objects, for example pass by reference
parameters or base addresses of arrays.

----------------------------------------------------------------------------
NOTE

64-bit support does not change the underlying data model. The size of an
INTEGER or REAL type is still 32-bits. The size of a DOUBLE PRECISION type
is still 64-bits. The implication here is it will be easier to move Fortran
programs to 64-bits than C programs because data model does not change, and
because pointers are implicitly handled by the compiler rather than
explicitly. The +autodbl option will also be supported in 64-bit mode.

----------------------------------------------------------------------------

==============================================================================
8.13.6.2 Impact

The impact of adding 64-bit support to Fortran 90 is small. The data model
described above will remain the same.

The largest impact is likely to be that existing Fortran 77 users will need
to use the Fortran 90 compiler to get support for 64-bit.

==============================================================================
8.13.6.3 Compatibility

Fortran 90 vs Fortran 77 compatibility is described in the Fortran 90
Release Notes and User's Guide.

----------------------------------------------------------------------------
NOTE

Fortran 77 is being deprecated. The Fortran 77 product is in the 11.0
release. However, large feature enhancements such as 64-bit support will
only be done in the Fortran 90 product.

----------------------------------------------------------------------------

******************************************************************************
8.13.7 HP C

HP C for 11.0 is a follow-on to the 10.30 version of the product. In
addition to supporting the 10.30 features, it also includes support for the
64-bit data model (compiler/lint, lex, yacc) and ELF-format object files,
and a new computed goto statement.

==============================================================================
8.13.7.1 Features

  1. The new option +DA2.0W changes the data model from ILP32 to LP64. This
     causes the compiler to emit PA2.0w instructions, and causes the
     compiler to emit ELF object files instead of SOM object files.

  2. The new option +M1 causes the compiler and lint to issue platform
     migration diagnostics for features that are not supported or behave
     differently on future releases. See "HP-UX 64-bit Porting and
     Transition Guide" for more information.

  3. The new option +M2 causes the compiler and lint to issue LP64 migration
     diagnostics for features that behave differently in the LP64 data
     model. See "HP-UX 64-bit Porting and Transition Guide" for more
     information.

  4. Lex and yacc are enhanced to be level-2 thread safe, and to operate in
     the LP64 data model.

  5. A new computed goto statement is supported. This is an extension to
     ANSI C.

  6. Minor enhancements to inline assembly support are being added for the
     V2200.

==============================================================================
8.13.7.2 Impact

Applications developed in 32-bit mode (the default) will continue to behave
the same as they did on 10.30, and will run on 11.0. If users wish to take
advantage of the larger 64-bit address space, they must migrate to 64-bit
mode. Applications developed in 64-bit mode will only run on 64-bit
platforms, and cannot migrate back to previous releases.

==============================================================================
8.13.7.3 Compatibility

  1. The 11.0 HP C toolset runs on 11.0, on the S800.

  2. Source code in ILP32 mode is upward compatible from 10.30.

  3. There are many potential areas of incompatibility when migrating from
     ILP32 to LP64, whether from 10.30 to 11.0 or 11.0 to 11.0 . See +M2
     above.

==============================================================================
8.13.7.4 Performance - Compile time

  1. Compile time at level 0 optimization will be no worse than in 10.30.

  2. There are several small improvements in compile-time memory
     requirements at level 0 optimization.

  3. The size of debug information may be somewhat smaller as compared with
     the 10.30 release.

******************************************************************************
8.13.8 Function: nlist64(3C)

New tool that will process SOM and Elf64 files. This tool will live in
libelf (both PA32 and PA64).

This tool works the same as nlist() except it can process the different file
types. Users will pass in the new nlist64 structure with the n_name field
filled in with symbol names. A null string in this field terminates the
list. nlist64() will fill in the other fields with the corresponding symbol
information from the input file.

This tool is thread-safe.

==============================================================================
8.13.8.1 Summary of Change

The new nlist64 structure will reside in nlist.h. nlist64() will process SOM
and Elf files. For SOM files, the n_value field is zero padded.

usage: nlist64(const char* file_name, struct nlist64* nl);

A NULL string should be passed in the n_name field in the nlist64 struct to
tell nlist64() to stop processing.

If a symbol isn't found, nlist64 will fill in the fields with zeroes.

nlist64 returns -1 if an error occurs; otherwise, it returns 0.

==============================================================================
8.13.8.2 Compatibility

The old nlist() routine is still available in a PA32 libc. There are no
compatibility issues.

******************************************************************************
8.13.9 HP Native Language Support (NLS)

==============================================================================
8.13.9.1 HP Proprietary Locale Names

In 10.30:

HP proprietary locale names may be obsoleted in favor of ISO standard locale
names.

TO BE OBSOLETED    Preferred Name  Language, Territory and Codeset
C                  C               Computer default - same as POSIX
POSIX              POSIX           Contains only POSIX portable
                                    characters
american           en_US.roman8    English, United States, roman8
american.iso88591  en_US.iso88591  English, United States, ISO 8859/1
arabic             ar_SA.arabic8   Arabic, Saudi Arabia, arabic8
arabic-w           ar_DZ.arabic8   Arabic, Algeria, arabic8
arabic.iso88596    ar_SA.iso88596  Arabic, Saudi Arabia, ISO 8859/6
bulgarian          bg_BG.iso88595  Bulgarian, Bulgaria, ISO 8859/5
c-french           fr_CA.roman8    French, Canada, roman8
c-french.iso88591  fr_CA.iso88591  French, Canadian, ISO 8859/1
chinese-s          zh_CN.hp15CN    Simplified Chinese, China,
                                    GB 2312-80
chinese-t          zh_TW.ccdc      Traditional Chinese, Taiwan, CCDC
chinese-t.big5     zh_TW.big5      Traditional Chinese, Taiwan, BIG5
-----------        zh_TW.eucTW     Traditional Chinese, Taiwan,
                                    CNS 11643-92
czech              cs_CZ.iso88592  Czech, Czech Republic, ISO 8859/2
danish             da_DK.roman8    Danish, Denmark, roman8
danish.iso88591    da_DK.iso88591  Danish, Denmark, ISO 8859/1
dutch              nl_NL.roman8    Dutch, Netherlands, roman8
dutch.iso88591     nl_NL.iso88591  Dutch, Netherlands, ISO 8859/1
english            en_GB.roman8    English, United Kingdom, roman8
english.iso88591   en_GB.iso88591  English, United Kingdom, ISO 8859/1
finnish            fi_FI.roman8    Finnish, Finland, roman8
finnish.iso88591   fi_FI.iso88591  Finnish, Finland, ISO 8859/1
french             fr_FR.roman8    French, France, roman8
french.iso88591    fr_FR.iso88591  French, France, ISO 8859/1
german             de_DE.roman8    German, Germany, roman8
german.iso88591    de_DE.iso88591  German, Germany, ISO 8859/1
greek              el_GR.iso88597  Greek, Greece, greek8 el_GR.greek8
greek.iso88597     el_GR.iso88597  Greek, Greece, ISO 8859/7
hebrew             iw_IL.iso88598  Hebrew, Israel, hebrew8
                                    iw_IL.hebrew8
hebrew.iso88598    iw_IL.iso88598  Hebrew, Israel, ISO 8859/8
hungarian          hu_HU.iso88592  Hungarian, Hungary, ISO 8859/2
icelandic          is_IS.roman8    Icelandic, Iceland, roman8
icelandic.iso88591 is_IS.iso88591  Icelandic, Iceland, ISO 8859/1
italian            it_IT.roman8    Italian, Italy, roman8
italian.iso88591   it_IT.iso88591  Italian, Italy, ISO 8859/1
japanese           ja_JP.SJIS      Japanese, Japan, SJIS
japanese.euc       ja_JP.eucJP     Japanese, Japan, AJEC
katakana           ja_JP.kana8     Japanese, Japan, kana8 - to be
                                    OBSOLETED in next major release
korean             ko_KR.eucKR     Korean, Korea, KS C5601
n-computer         C or POSIX
norwegian          no_NO.roman8    Norwegian, Norway, roman8
norwegian.iso88591 no_NO.iso88591  Norwegian, Norway, ISO 8859/1
polish             pl_PL.iso88592  Polish, Poland, ISO 8859/2
portuguese         pt_PT.roman8    Portuguese, Portugal, roman8
portuguese.iso885  pt_PT.iso88591  Portuguese, Portugal, ISO 8859/1 91
rumanian           ro_RO.iso88592  Rumanian, Romania, ISO 8859/2
russian            ru_RU.iso88595  Russian, Russian Federation,
                                    ISO 8859/5
serbocroatian      hr_HR.iso88592  Croatian, Croatia, ISO 8859/2
-----------        sk_SK.iso88592  Slovakian, Slovakia, ISO 8859/2
slovene            sl_SI.iso88592  Slovenian, Slovenia, ISO 8859/2
spanish            es_ES.roman8    Spanish, Spain, roman8
spanish.iso88591   es_ES.iso88591  Spanish, Spain, ISO 8859/1
swedish            sv_SE.roman8    Swedish, Sweden, roman8
swedish.iso88591   sv_SE.iso88591  Swedish, Sweden, ISO 8859/1
thai               th_TH.tis620    Thai, Thailand, tis620
turkish            tr_TR.iso88599  Turkish, Turkey, turkish8
                                    tr_TR.turkish8
turkish.iso88599   tr_TR.iso88599  Turkish, Turkey, ISO 8859/9

==============================================================================
8.13.9.2 Status

Deprecated in HP-UX 10.0.

==============================================================================
8.13.9.3 Miscellaneous Locales

The locales ja_JP.kana8 and katakana are nonstandard and may be obsoleted in
a future release. The locales el_GR.greek8, iw_IL.hebrew8, and
tr_TR.turkish8 are provided for backward compatibility and may be obsoleted
in the next major release in favor of el_GR.iso88597, iw_IL.iso88598, and
tr_TR.iso88599.

==============================================================================
8.13.9.4 Status

Deprecated in HP-UX 10.0.

==============================================================================
8.13.9.5 Right-to-Left Processing

The processing of right-to-left languages such as Arabic and Hebrew may
change or be obsoleted due to emerging standards. Some directly affected
components include:

forder(1)           nl_types.h          nljust(1)             strord(3C)

==============================================================================
8.13.9.6 LANGOPTS (environment variable).

Other utilities may also be affected less directly.

==============================================================================
8.13.9.7 Status

Deprecated in HP-UX 10.0.

==============================================================================
8.13.9.8 Codesets

In our efforts to comply with standards and customer requirements, the
default codeset for many Western European languages may be changed from
ROMAN8 to ISO 8859/1 in future releases.

==============================================================================
8.13.9.9 Status

ROMAN8 deprecated in HP-UX 10.0. The ISO codesets are the recommended
codesets to use.

==============================================================================
8.13.9.10 Interface: libportnls.a

Obsoleted in favor of X/Open Internationalization at HP-UX 11.0. This was
deprecated in HP-UX 10.0.

almanac            gettables              nlfmtclock
begin_end          init_lnode             nlfmtcustdate
calendar           isaltdig               nlfmtdate
check_decthou      islangsupp             nlfmtlongcal
clock              isnum_str              nlfmtnum
convalt            isvalidgregorian       nlgetlang
extract_nldt       isvalidjulian          nlidtolang
fillbuff           langsrch               nlinfo
for_currsymb       loadnumspec            nljudge
format_nldt        map                    nlkeycompare
format_outstr      nlappend               nllangtoid
get_C              nlcollate              nlnumspec
get_altdigits      nlcollatesys           nlrepchar
get_currsign       nlcompare              nlscanmove
get_direct         nlconvclock            nlsubstr
get_end            nlconvcustdate         nlswitchbuf
get_native         nlconvnum              nltranslate
get_numeric_defs   nlcrtm                 reversebuff
getcollate         nlcurrlangid           rjust
getjulian          nlfindstr              strip_instr
getl_info          nlfmt_cleanup          sub_in_outstr
getlangid          nlfmtcalendar          substitute_in_outstr
getlangs

==============================================================================
8.13.9.11 Status

Deprecated since HP-UX 10.0. Do not provide a 64-bit version of this
library.

Obsolete in 11.0.

==============================================================================
8.13.9.12 Alternatives

Use X/Open NLS interfaces in libc.

******************************************************************************
8.13.10 HP Performance Analysis Toolkit

The HP Performance Analysis Toolkit is a part of the Programmers' Toolset
which is bundled with the compiler products. The corresponding ISU product
part numbers are:

B3472AA PROG TOOLSET S800 Media

B3476AA PROG TOOLSET S800 Manuals

B3477AA PROG TOOLSET S700 Media

B3479AA PROG TOOLSET S700 Manuals

==============================================================================
8.13.10.1 Preliminary Features

The HP PAK version 7.2 to be released on 10.30 will support program driver:

   * 32-bit run-time environment: HP PAK will continue to monitor and
     analyze a 32-bit application running on 11.0. The use model will be the
     same as that of 10.30.

   * 64-bit run-time environment: HP PAK will be capable of monitoring and
     analyzing a 64-bit application developed on 11.0. If the debug
     information is available in the executable, HP PAK will be able to
     display source at each sample point.

==============================================================================
8.13.10.2 Summary of Change

In addition to 64-bit support, HP PAK 7.2 will continue to support
functionality in version 7.1. An example would be Kernel Threads. The user
should not observe any interface changes at all.

Since HP PAK 7.2 is built from 10.30 and 11.0 OS, it can not be run on
10.20-based system.

==============================================================================
8.13.10.3 Impact

The version 7.2 depends upon 64-bit support in the kernel. This version of
software can only run on 11.0 or newer operating system.

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
8.14 POSIX 1003.1B

New in 11.0.

******************************************************************************
8.14.1 POSIX 1003.1B Asynchronous Input/Output

Asynchronous Input/Output allows a process (thread) to start multiple
simultaneous read and/or write operations to multiple files, wait for or
obtain notification of completion of requested operations, and to retrieve
the status of completed operations. The purpose of the POSIX Asynchronous
I/O facility is to allow a process (thread) to overlap some elements of
computation and information processing with I/O processing. The POSIX
Asynchronous I/O facility includes the following interface functions:

----------------------------------------------------------------------------

  aio_cancel(2):    Request cancellation of a pending asynchronous I/O
                    operation

  aio_error(2):     Retrieve the error status of an asynchronous I/O
                    operation

  aio_fsync(2):     Initiate synchronization of the media image of a file
                    to which asynchronous operations have been addressed

  aio_read(2):      Start an asynchronous read operation

  aio_return(2):    Retrieve the return status of an asynchronous I/O
                    operation and free any associated system resources

  aio_suspend(2):   Wait for completion of one or more asynchronous I/O
                    operations

  aio_write(2):     Start an asynchronous write operation

  lio_listio(2):    Start a list of asynchronous I/O operations

----------------------------------------------------------------------------

==============================================================================
8.14.1.1 Asynchronous I/O Control Block (aiocb):

The Asynchronous I/O Control Block is used as a parameter to all of the
asynchronous I/O functions. The aiocb specifies parameters for an
asynchronous I/O operation in a call to aio_read() , aio_write() , or
lio_listio() and then may be used as a "handle" for the enqueued
asynchronous I/O operation in a subsequent call to aio_cancel(),
aio_suspend(), aio_fsync(), aio_error(), or aio_return() . The aiocb
structure is defined in sys/aio.h

==============================================================================
8.14.1.2 Summary of Change

This is a new functionality that is being introduced in 11.0.

The following is the list of manpages for the POSIX Asynchronous I/O
system-calls:

aio(5)              aio_fsync(2)                  aio_suspend(2)
aio_cancel(2)        aio_read(2)                   aio_write(2)
aio_error(2)          aio_return(2)              lio_listio(2)

******************************************************************************
8.14.2 POSIX 1003.1B Message Passing

This new interprocess communication mechanism provides a message passing
facility as defined by the POSIX 1003.1B Standard. Although it is not
intended to replace the existing System-V message passing sub-system, the
new mechanism is specifically designed to meet the requirements of real-time
processes. Its `send' and `receive' operations are optimized for high
performance. It also includes a notification mechanism based on real-time
signals.

Eight new system-calls have been introduced to support this interface. The
new calls are: mq_open, mq_close, mq_unlink, mq_notify, mq_send, mq_receive,
mq_setattr and mq_getattr.

==============================================================================
8.14.2.1 Summary of Change

This is a new functionality that is being introduced in 11.0.

The following is the list of manpages for the POSIX Message Passing
system-calls:

mq_close(2)    mq_notify(2)   mq_receive(2)  mq_setattr(2)
mq_getattr(2)  mq_open(2)     mq_send(2)     mq_unlink(2)

******************************************************************************
8.14.3 POSIX 1003.1B Shared Memory Objects

A "shared memory object" is a memory object (like a file), that can be
concurrently mapped into the address space of one or more processes. The
mmap() and munmap() functions allow a process to manipulate its address
space by mapping such memory objects into it and removing them from it. When
multiple processes map the same memory object, they can share access to the
underlying data.

Shared memory objects have been introduced in the POSIX 1003.1B Real Time
Extension Specification. This will allow systems (eg. embedded systems)
which don't implement a full file system, to still be able to use memory
objects which can be mapped into the address space of processes. In our
implementation, we use the underlying file system, to implement shared
memory objects. Two new system-calls have been added to supported shared
memory objects. They are:

The shm_open() system-call, establishes a connection between a shared memory
object and a file descriptor. This file descriptor is then used for other
operations on the shared memory objects (such as mmap(), close(), etc.). The
file descriptors returned by shm_open(), don't remain open across exec*()
calls.

The shm_unlink() system-call, removes the name of the specified shared
memory object. The object itself is not destroyed, until all open and mapped
references to it have been closed.

==============================================================================
8.14.3.1 Summary of Changes

This is a new functionality that is being introduced in 11.0.

The following is the list of man-pages for the POSIX Shared Memory Objects
system-calls:

shm_open(2)        shm_unlink(2)

******************************************************************************
8.14.4 POSIX 1003.1B Memory Locking

This new memory locking mechanism provides per-page memory locking and
unlocking facilities as defined by the POSIX 1003.1B Standard. POSIX defines
several new functions to enable users to lock/unlock pages in memory. A
privileged user wishing to lock a section of memory must invoke the mlock()
or mlockall() system call. The mlock() routine, given an address and length,
will ensure that all the user pages which encompass this address range are
made memory resident and locked. The mlockall() system call locks all of the
user's memory. Unlocking memory can be accomplished with an equivalent pair
of functions - munlock() and munlockall(). The munlock() routine, given an
address and length, unlocks all the user pages in the address range. The
munlockall() system call unlocks all of the user's memory. Although HP-UX
has long supported the plock() interface, which does a similar function,
there is a fundamental difference - plock() only supports locking at the
segment level. The POSIX memory locking routines, on the other hand, support
locking at the page level. A single page can be locked or unlocked.

==============================================================================
8.14.4.1 Summary of Change

This is a new functionality that is being introduced in 11.0.

The following is the list of manpages for the POSIX Memory Locking system
calls:

mlock(2)   mlockall(2)   munlock(2)   munlockall(2)

==============================================================================
8.14.4.2 Compatibility

The POSIX Memory locking functions provided here are in addition to the
existing plock() interface. A process should use either the POSIX memory
locking interface or the plock() interface but not attempt to mix them.

==============================================================================
8.14.4.3 Performance

No direct performance impact. By locking down pages in memory, these pages
will benefit from not needing to be paged in, but there will be less memory
for other processes to use, possibly requiring additional paging for them,
affecting overall system performance.

==============================================================================
8.14.4.4 Alternatives

If a program is currently using the plock() interface, and it is not
worthwhile to rewrite the program, the plock() interface can still be used
for memory locking, but it is not the POSIX compliant method of memory
locking, and it provides a locking resolution of the entire segment and not
a single page. (Similar performance issues exist with the plock() interface,
as well.)

##############################################################################
Footnotes

[1]

The HP-UX PV2 client returns an EFBIG error if the requested file is > 2
GB-1.

[2]

The HP-UX PV2 client returns an EFBIG error if the requested file is > 2
GB-1.

[3]

The HP-UX PV2 client returns an EFBIG error if the requested file is > 2
GB-1.

[4]

The HP-UX PV2 server returns an NFSERR_FBIG error if a large file is
encountered ( on getattr, setattr, lookup, read, write, and create calls).

[5]

The HP-UX PV3 server returns NFS3ERR_FBIG if the request (read, write, or
create) exceeds the maximum supported size of the underlying HFS/JFS
filesystem.

[6]

The HP-UX PV3 client returns an EFBIG error if the requested file is larger
than the remote filesystem's maximum file size.

[7]

The HP-UX PV2 server returns an NFSERR_FBIG error if a large file is
encountered ( on getattr, setattr, lookup, read, write, and create calls).

[8]

The HP-UX PV2 client maps NFSERR.FBIG to EOVERFLOW in cases where a remote
large file is encountered.

[9]

The HP-UX PV3 server returns NFS3ERR_FBIG if the request (read, write, or
create) exceeds the maximum supported size of the underlying HFS/JFS
filesystem.

[10]

The HP-UX PV3 client returns an EFBIG error if the requested file is larger
than the remote filesystem's maximum file size.

[11]

The HP-UX PV3 server returns NFS3ERR_FBIG if the request (read, write, or
create) exceeds the maximum supported size of the underlying HFS/JFS
filesystem.

[12]

The HP-UX PV3 server returns NFS3ERR_FBIG if the request (read, write, or
create) exceeds the maximum supported size of the underlying HFS/JFS
filesystem.

[13]

The HP-UX PV3 client returns an EFBIG error if the requested file is larger
than the remote filesystem's maximum file size.

[14]

The HP-UX PV2 client returns an EFBIG error if the requested file is > 2
GB-1.

[15]

The HP-UX PV3 server returns NFS3ERR_FBIG if the request (read, write, or
create) exceeds the maximum supported size of the underlying HFS/JFS
filesystem.

[16]

The HP-UX PV3 client returns an EFBIG error if the requested file is larger
than the remote filesystem's maximum file size.

[17]

The HP-UX PV3 server returns NFS3ERR_FBIG if the request (read, write, or
create) exceeds the maximum supported size of the underlying HFS/JFS
filesystem.

[18]

The HP-UX PV3 client returns an EFBIG error if the requested file is larger
than the remote filesystem's maximum file size.

[19]

The HP-UX PV2 client returns an EFBIG error if the requested file is > 2
GB-1.

[20]

The HP-UX PV3 client returns an EFBIG error if the requested file is larger
than the remote filesystem's maximum file size.

##############################################################################
Legal Notices

The information in this document is subject to change without notice.

Hewlett-Packard makes no warranty of any kind with regard to this manual,
including, but not limited to, the implied warranties of merchantability and
fitness for a particular purpose. Hewlett-Packard shall not be held liable
for errors contained herein or direct, indirect, special, incidental or
consequential damages in connection with the furnishing, performance, or use
of this material.

Warranty. A copy of the specific warranty terms applicable to your
Hewlett-Packard product and replacement parts can be obtained from your
local Sales and Service Office.

Restricted Rights Legend. 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 at DFARS
252.227-7013 for DOD agencies, and subparagraphs (c) (1) and (c) (2) of the
Commercial Computer Software Restricted Rights clause at FAR 52.227-19 for
other agencies.

HEWLETT-PACKARD COMPANY
3000 Hanover Street
Palo Alto, California 94304 U.S.A.

Use of this manual and flexible disk(s) or tape cartridge(s) supplied for
this pack is restricted to this product only. Additional copies of the
programs may be made for security and back-up purposes only. Resale of the
programs in their present form or with alterations, is expressly prohibited.

Copyright Notices. (c)Copyright 1983-1997 Hewlett-Packard Company, all
rights reserved.

Reproduction, adaptation, or translation of this document without prior
written permission is prohibited, except as allowed under the copyright
laws.

(c)Copyright 1979, 1980, 1983, 1985-93 Regents of the University of
California

This software is based in part on the Fourth Berkeley Software Distribution
under license from the Regents of the University of California.

(c)Copyright 1980, 1984, 1986 Novell, Inc.
(c)Copyright 1986-1992 Sun Microsystems, Inc.
(c)Copyright 1985, 1986, 1988 Massachusetts Institute of Technology.
(c)Copyright 1989-1993 The Open Software Foundation, Inc.
(c)Copyright 1986 Digital Equipment Corporation.
(c)Copyright 1990 Motorola, Inc.
(c)Copyright 1990-1995 Cornell University
(c)Copyright 1989-1991 The University of Maryland
(c)Copyright 1988 Carnegie Mellon University
(c)Copyright 1991-1997 Mentat, Inc.
(c)Copyright 1996 Morning Star Technologies, Inc.
(c)Copyright 1996 Progressive Systems, Inc.
(c)Copyright 1997 Isogon Corporation

Trademark Notices. UNIX is a registered trademark in the United States and
other countries, licensed exclusively through The Open Group.

X Window System is a trademark of the Massachusetts Institute of Technology.

MS-DOS and Microsoft are U.S. registered trademarks of Microsoft
Corporation.

OSF/Motif is a trademark of the Open Software Foundation, Inc. in the U.S.
and other countries.

##############################################################################
Printing History

The manual printing date and part number indicate its current edition. The
printing date will change when a new edition is printed. Minor changes may
be made at reprint without changing the printing date. The manual part
number will change when extensive changes are made. Manual updates may be
issued between editions to correct errors or document product changes. To
ensure that you receive the updated or new editions, you should subscribe to
the appropriate product support service. See your HP sales representative
for details.

First Edition: October 1997 (HP-UX Release 11.0)

Second Edition: May 1998 (HP-UX Release 11.0)

Third Edition: December 1998 (HP-UX Release 11.0)



Manage My AllianceOne Membership

 
 » Sign in
 » Join AllianceOne
 » Contact us