Chapter 1
About This Release

This document supports Version 4.5.3 of the DYNIX/ptx® operating system. Be sure to review this document before you install or run this release of DYNIX/ptx.


Software Compatibility

DYNIX/ptx V4.5.3 is supported on IBM xSeries 430 systems, NUMA-Q® 2000 systems, and Symmetry® 5000 systems.


Supported System Software and Layered Products

Following are the minimum version requirements for system software and layered products. Earlier versions of these products are not supported on DYNIX/ptx V4.5.3.


Supported Layered Products That Are No Longer Provided

The following products are no longer available from IBM or have been removed from the distribution CD beginning with the "DYNIX/ptx V4.5.3 Operating System and Layered Products Software" CD, September 2001, Revision A. However, if you are upgrading from a previous version of DYNIX/ptx V4.4.x or V4.5.x and already have the versions indicated installed on your host, they are supported for use with DYNIX/ptx V4.5.3.


ATTENTION

Should you need to reinstall these products in the future, you must retain the original distribution CDs from which they were installed.



Unsupported Software

The following products are not supported on DYNIX/ptx V4.5.3:


Standards Compliance

The DYNIX/ptx operating system complies with the following standards:


Unsupported Platforms and Devices

The following platforms and devices are not supported in DYNIX/ptx V4.5:

5.25" Pbays and devices are supported as storage devices on Symmetry systems only. They are supported on xSeries 430 and NUMA-Q 2000 systems in the boot Pbay only.


COFF Compatibility Development Environment Has Been Removed

The COFF compatibility development environment has been removed. The COFF libraries present in earlier versions of DYNIX/ptx are no longer available.

COFF binaries will continue to work unless one or more of the following conditions exists:


Software Installation

For information about installing this release of DYNIX/ptx, refer to the DYNIX/ptx V4.5.3 and Layered Products Software Installation Release Notes.


Operational Restrictions

The following restrictions must be followed when running DYNIX/ptx V4.5. In these restrictions, local refers to devices connected directly to the PCI/SCSI interface on xSeries 430 and NUMA-Q 2000 systems, or to devices connected directly to the CSM on Symmetry 5000 systems.


Contents of the V4.5.3 Release


New Hardware Support

This release provides support for the following hardware:


Fibre Channel Changes

DYNIX/ptx V4.5.3 introduces new software versions for Fibre Channel Bridges, SAN Data Gateway Routers, FC Host Adapters, and IBM 2109/SilkWorm 2000-family FC Switches on IBM xSeries 430 and NUMA-Q 2000 systems. This updated FC software recipe enables disk subsystem sharing among NUMA hosts running different versions of DYNIX/ptx.

For details on the Fibre Channel changes, refer to DYNIX/ptx V4.5.x Fibre Channel Software Release Notes.


edb Debugger Changes

The release includes a new version of the edb debugger that provides the fixes described in Chapter 2.

The following additional changes have been made to the edb debugger:


System Recovery Changes

With DYNIX/ptx V4.5.3, you can boot directly from the custom miniroot CD during a system recovery to restore your critical filesystems. Previously, you had to copy the contents of the custom miniroot CD to the custom miniroot partition and boot from that partition.

For details on this new procedure, refer to Chapter 7, "Boot the Custom Miniroot," in the DYNIX/ptx V4.5 System Recovery and Troubleshooting Guide.


Public Software Changes

The Public Software distributed with DYNIX/ptx V4.5.3 no longer includes these utilities:

The Public Software still includes the cdrecord, mkisofs, and less utilities, which are licensed under the GNU General Public License. For details, refer to the source code of cdrecord.


Contents of the V4.5.2 Release

DYNIX/ptx V4.5.2 is a maintenance release and includes the fixes described in Chapter 2.

The release also includes a new version of the edb debugger that provides the following features:


Contents of the V4.5.1 Release

DYNIX/ptx V4.5.1 is primarily a maintenance release and includes the fixes described in Chapter 2. It also includes the following implementation changes.


Hardware Support

DYNIX/ptx V4.5.1 provides support for the following hardware:


Application Region Manager


Threads and Regions

Native threads and application regions can now be used on the same system. A light-weight process (LWP) will migrate across regions unless it is in one of the following situations:

If the migration fails or is deferred, the LWP will take memory from either the old region (if it is still active) or the system region.

When the migration fails for a particular LWP, an EES message will be logged. The message will contain information such as the ID of the LWP and the name of the process to which it belongs.


"Borrow" Memory Policy Is Not Supported

The application region subsystem includes a "borrow" memory policy that allows you to specify the minimum and maximum amounts of memory for a region. The minimum amount is guaranteed to be available to the region. Additional memory up to the maximum is borrowed from the free pool maintained by the system.

This policy is not supported in DYNIX/ptx V4.5.3. Instead, we recommend that you configure each region with an adequate minimum amount of memory.


Change to sed Utility

In the DYNIX/ptx V4.4 version of sed, you could search for the < character by specifying either < or the regular expression \< as the search pattern.

For POSIX compliance, this behavior has been changed in DYNIX/ptx V4.5. The regular expression \< now matches the beginning of the word. To search for the < character, use < as the search pattern.


New Features in the V4.5 Release


Support for POSIX Threads

DYNIX/ptx now provides support for POSIX threads. The traditional UNIX process model consisted of an address space and exactly one thread. POSIX threads extends this model to be an address space with one or more threads of control. Because of the shared nature of the address space among threads, multi-threaded applications must synchronize access to process global resources.

When compiling a threaded application, you must include the -Kthread option on the cc command line as described in the cc(1) man page.

DYNIX/ptx continues to support libpps, which provides a parallel thread-like programming model. In the libpps model, all memory resources to be shared between "microtasks" must be explicitly declared as such; whereas, in the threads model, they are shared implicitly.

For more information about the DYNIX/ptx implementation of threads, see the DYNIX/ptx Programming Tools Guide.


Application Region Manager

The Application Region ManagerTM has been enhanced to allow memory and process table resources to be assigned to an application region. Previously, only CPUs could be assigned to a region. When you create a region, you must assign at least one CPU to the region. Assigning memory and process table resources is optional.

Users can now be assigned to an application region. At login time, the user is placed in the specified region and all processes started by the user will execute there.

Application regions can be created and managed through ptx/ADMIN, CP Admin, or from the command line. See the DYNIX/ptx System Configuration and Performance Guide for more information about creating and managing regions. For information about assigning users to application regions, see the DYNIX/ptx System Administration Guide.


Compliance With ISO/IEC 9899 Amendment 1, C Integrity

DYNIX/ptx is now compliant with the ISO/IEC 9899 Amendment 1, C Integrity standard.

For applications to be compliant with this standard, the __STRICT_ISO_C_AMM1__ macro must be used.

The following changes were made for compliance with this standard:

The ISO C standard specifies that streams have an orientation. When a file is opened, the stream is considered unbound (or without any orientation). When byte I/O functions are applied on the stream, the stream is considered to be byte-oriented. Similarly, when wide character I/O functions are applied on a stream that is not oriented, the stream is considered to be wide-oriented. Wide character I/O functions are not allowed on byte-oriented streams and byte I/O functions are not allowed on wide-character streams (these functions fail with the error code EINVAL). A stream's orientation can be changed with either freopen(), which removes any orientation, or fwide(). Also, wide character streams include an mbstate_t object that maintains the current conversion state information of the stream. This mbstate_t object is used in locales that support shift-state-encoding.


Support for Perl

DYNIX/ptx now includes Perl Version 5.005-03, the third maintenance release of V5.005. Perl is installed as /usr/bin/perl. The Perl Programmer's Reference Guide is provided in man-page format. See perl(1) for more information.


Implementation Changes in the V4.5 Release


System Boot


Improved System Boot Time

Changes have been made in the device autoconfiguration routines to greatly reduce the time required to boot the operating system. The improvement you will see is dependent on your hardware configuration. In general, machines with large Fibre Channel Bridge or Pbay configurations show the most improvement; devices on these machines will be configured several times faster than with DYNIX/ptx V4.4.


Change to Verbose Output During Boot

When the system is booted with the -v (verbose) option, the kernel messages are now displayed in a different order. The first messages, which begin with a plus sign, indicate the first devices to be configured. The second group of messages describe the available memory on the system. The third group of messages begin with processor numbers and indicate that the remaining devices are being configured.

+qlc0 pci port - (unit 0xb) found on +quad0 pci port 0 (unit -)
  +asy0 eisa port - (unit 0x0) found on +quad0 eisa port - (unit -)
  +asy1 eisa port - (unit 0x1) found on +quad0 eisa port - (unit -)
  +mdc0 eisa port - (unit 0x0) found on +quad0 eisa port - (unit -)
  real memory = 24544.00 megabytes.
  available memory = 23126.39 megabytes.
  using 131072 buffers containing 1024.00 megabytes of memory.
  00: Configuring devices, please wait.
  20: +scsibus0 mscsi port - (unit -) found on +qlc0 mscsi port 0 (unit 0x70)
  16: +scsibus1 mscsi port - (unit -) found on +qlc1 mscsi port 0 (unit 0x70)
  12: +scsibus2 mscsi port - (unit -) found on +qlc2 mscsi port 0 (unit 0x70)
  16: +sd0 scsi port - (unit 0x0) found on +scsibus1 scsi port - (unit -)
  09: +sd3 scsi port - (unit 0x30) found on +scsibus1 scsi port - (unit -)
  10: +sd1 scsi port - (unit 0x20) found on +scsibus1 scsi port - (unit -)
  11: +sd2 scsi port - (unit 0x10) found on +scsibus1 scsi port - (unit -)
  ...

Consoleless Reboot for xSeries 430 and NUMA-Q 2000 Systems

Under the following scenarios, the operating system can be rebooted although the system console is not running.

The following types of situations can cause a consoleless reboot to fail:

In these cases, a working console will be needed to diagnose and fix any problems, to boot the system, or to perform the necessary user interactions.


Changes Affecting Users


Change to Default PATH Variable

In previous releases, /bin/login set the default path for the PATH environment variable to .:/bin:/usr/bin, which caused the home directory to be searched first. To provide better security, the default path is now /bin:/usr/bin:., which causes the current working directory to be searched last.


Change to Korn Shell Syntax

In previous releases, ksh accepted the syntax "((...)...)", but did not always interpret it correctly. In the V4.5 release, this syntax has been replaced by "( (...)...)". (A space is now required between the left parentheses.) The shell now reports an error for the older syntax.

If your shell scripts rely on the older syntax, you will need to modify them to use the new "( (...)...)" syntax.


Filesystem Changes


Additional Cylinder Group Information

Each cylinder group now contains additional information that identifies the filesystem to which the cylinder group belongs. This information is used to help detect filesystem inconsistency. The cylinder groups in older filesystems are automatically upgraded with this information the first time that fsck is run on the filesystems.


Memory Filesystems

Previously, memory (mfs) filesystems were temporary; when the filesystem was unmounted, its contents were lost. These filesystems can now be stored in a regular file. A new -I image_file option has been added to the mount_mfs command to allow you to specify the file where the image is to be stored. If image_file already exists, the -I option will mount it. The filesystem utilities have been enhanced as necessary to work with the image_file.


Fibre Channel Changes


Changes to the Fibre Channel Subsystem

When an optical unit (GBIC or GLM) in a FC Host Adapter, Switch port, or Bridge begins to fail, it can intermittently, but repeatedly, corrupt data transfers to and from Fibre Channel components within the mass storage subsystem.

In previous DYNIX/ptx releases, when this situation occurred, the system could become bottlenecked and stall for long periods of time as it attempted to recover from I/O failures caused by the failing component. Although the system could sometimes eventually recover, critical applications may have timed-out and failed by then. These failures were characterized by a series of command sequence timeout messages logged by the Fibre Channel Host Adapter driver (ff).

In DYNIX/ptx V4.5, the affected SCSI bus initiator(s) and/or specific disk ports/routes will be disabled when the failure occurs. This enables the system to quickly route around the point of failure if possible and avoids system stalls. The SCSI bus driver and/or the disk driver will log error messages indicating that a SCSI bus initiator or a specific disk port/route has been disabled. The system will automatically attempt to reintegrate disabled SCSI bus initiators at five minute intervals. Disk ports will be quickly reenabled and reintegrated into the system if they pass a simple driver-provided diagnostic, but will be "permanently disabled" if they exhibit the behavior again within the next 10 minutes.

Once the source of the failure(s) has been determined and corrected, you can use OLR operations (with devctl(1M)) to restore disk access through the "permanently disabled" ports. Alternatively, you can use the revive option to the pbayid/diskid program to restore access. The revive option avoids the overhead of OLR, as you do not need to unmount filesystems, take disks out of SVM control, or destroy VTOCs.

To ensure that the system can route around disabled components, you can use the following configuration methods to provide alternate routes:


Fibre Channel Diagnostics

The NUMA-Q online diagnostics product includes a new utility, /usr/onldiag/fcdcu, that collects diagnostic data from the Fibre Channel devices on the system. The utility is started automatically when the system is booted to multiuser mode. By default, it runs as a daemon and polls the FC devices every 30 minutes. fcdcu stores the data it collects in a log file in the /usr/adm/fclog directory. A shell script, /usr/onldiag/purgefclogs, is also provided to find old log files and remove them from the system. For more information, see the DYNIX/ptx System Administration Guide.


New Switch Utility

The NUMA-Q online diagnostics product includes a new utility, /usr/onldiag/swutil, that extracts the SES pages from a Switch. This utility makes it unnecessary to telnet into the Switch to obtain similar data through the standard command line interface. For more information about this utility, see the swutil man page.


Kernel Changes


Change to I_UNLINK and I_PUNLINK ioctls

In previous releases, when a user connected two streams using the ioctl() operations I_LINK or I_PLINK, any other user could unlink them with I_UNLINK or I_PUNLINK . To improve security, the I_UNLINK and I_PUNLINK operations are now restricted to the owner of the link (the user who created the link) and to the root user.

This restriction is enabled by the new configurable parameter muxunlink_restricted. When the parameter is set to 1, which is the default value, the restriction is in effect.

We recommend that you modify your applications to use the new behavior of these ioctls. However, if your site requires the previous unrestricted behavior, you can set the muxunlink_restricted parameter to 0 and then recompile the kernel and reboot. The parameter is located in /etc/conf/uts/kernel/i386_space/param_space.c.


Change to Virtual Memory Parameters

The kernel now maintains files containing vmtune parameters for each user-defined application region defined on your system, allowing you to tune each region separately. The file for the system region contains global vmtune parameters.

The new vmtune -g region option can be used to view or change the parameters for a specific region.

To maintain parameter changes across system boots, you must create files, one per region, specifying the parameter values that are to be applied to each region. The files must be named vmtune.<region_name>, where region_name is either system (for the system region), or the name of a user-defined region. The files must be placed in the /etc/vmtune.d directory. When the system is booted, the parameters will be adjusted as specified for each activated region having a file in /etc/vmtune.d.

To create a file, redirect the output of the vmtune command. The following example creates a file for the region app1:

$ /etc/vmtune -g app1 > /etc/vmtune.d/vmtune.app1

Change to eXtended Kernel Virtual Address Space (XKVA)

Starting in the DYNIX/ptx V4.4.4 release, a mechanism called eXtended Kernel Virtual Address space (XKVA) was provided to extend the range of KVA addresses possible on xSeries 430 and NUMA-Q 2000 systems configured with wide 64-bit PTEs. This mechanism overlayed an additional 3 GB of kernel virtual space on top of the standard 3 GB of user virtual space. The kernel then mapped and remapped user virtual space and XKVA as needed.

By default, this mechanism was enabled for all xSeries 430 and NUMA-Q 2000 systems running with wide 64-bit PTEs, providing support for up to 64 GB of physical memory. However, on systems that did not need the extra kernel virtual space (physical memory was 16 GB or less and the system was not running out of kernel virtual space in primary KVA), this mechanism could reduce system performance, as it required extra faults and TLB flushing. Systems that did not need the XKVA feature could disable it by patching the kernel variable xkva_alloc_enabled.

In the V4.5 release, the XKVA implementation has been improved. The operating system now uses XKVA for dynamic kernel virtual space allocations only when all primary KVA is completely used up. The xkva_alloc_enabled parameter is obsolete; systems that do not need the XKVA feature no longer need to disable it. The V4.5 release also includes several improvements in direct I/O page-locking, which improves the performance of direct I/O operations when XKVA usage is forced by the system workload.


Dynamic Allocation of Kernel Structures

The following kernel structures are now allocated dynamically:

In previous releases, the allocation of most of these structures was controlled by tunable kernel parameters. The allocations can now be adjusted as necessary with the kmstune command. See the next section "Changes to kmstune" for information about the memory pools that are used to allocate these structures.


Changes to kmstune


New Memory Pools.

The following memory pools have been added in DYNIX/ptx V4.5:

base.cdfs.mount
The number of CDFS filesystem mounts allowed on the system. This value was previously controlled by the CDFS_MOUNT kernel parameter.
base.fifo
The maximum number of FIFOs/pipe ends in the system (need one per FIFO, two per pipe). This value was previously controlled by the NFIFO kernel parameter.
base.file
The maximum number of concurrently open files. This value was previously controlled by the NFILE kernel parameter.
base.flox
The maximum number of file and record locks available at a given time.
base.io.ptem
The maximum number of ptem structures (used for pty hardware emulation) on the system.
base.linkblk
The maximum number of multiplexor links on the system.
base.mfile
The maximum number of mapped file descriptors that the system can use at any one time.
base.ofile
The maximum number of open files per process.
base.procdirs
Process resource control blocks; maintains some process-wide information. This structure is used in the support of multiple-threaded processes. Do not modify this pool.
base.queue
The number of streams queues to be configured.
base.session
Resource levels for sessions.
base.snode
The number of specfs nodes that can be created on the system.
base.stream
The number of stream-head (stdata) structures to be configured.
base.ufs.inode
The maximum number of concurrently active inodes.
base.ufs.mount
The maximum number of mounted filesystems, including the root filesystem, that can exist at any one time. This value was previously controlled by the NMOUNT kernel parameter.
base.ufs.quota
The maximum number of disk-quota structures that can be active at any one time. This value was previously controlled by the NDQUOT kernel parameter.
base.allocb.buffer.lo4g.c[ 0-8 ]
These pools are the same as the corresponding base.alloc.buffer.c[0-8] pools except that they are guaranteed to be allocated in the lowest 4 GB of memory on a quad. These pools are needed only if there is a DMA-challenged PCI card that must DMA from a quad whose physical memory straddles a 4-GB boundary.
base.allocb.lo4g.c[0-8]
These pools are the same as the corresponding base.alloc..c[0-8] pools except that they are guaranteed to be allocated in the lowest 4 GB of memory on a quad. These pools are needed only if there is a DMA-challenged PCI card that must DMA from a quad whose physical memory straddles a 4-GB boundary.

Save Changes to Kernel Structure Pools.

Site modifications to kernel structure pools can now be easily saved and reinstated at boot time. A new directory, /etc/ktune.d, contains executable scripts that define the parameters to be modified in specific pools. When the system is booted, the startup script /etc/rc2.d/S04ktune runs each script.

You must create a separate script for each pool whose parameters are to be modified at boot time. The name of the script must match the name of the pool, as described in the /etc/ktune.d/README file.

The following sample script, /etc/ktune.d/base.queue, sets the reslow parameter for the base.queue pool to 100 and the yellow zone to 10000.

#! /bin/sh

	cat << EOF | /etc/kmstune -F -
	base.queue reslow 100
	base.queue yellow 10000
	EOF

For more information about kmstune, see the kmstune(1M) man page.


Obsolete Parameters

The following parameters are now obsolete:


Renamed Parameter

The FDIV_BUG parameter has been renamed FDIV_BUG_FLAG to remove a conflict with the -D FDIV_BUG compiler option. (The conflict could cause error messages when compiling the kernel.) If your site file includes the FDIV_BUG parameter, be sure to rename it to FDIV_BUG_FLAG before compiling your local V4.5 kernel.


Parameters With New Default Values

The default values have been changed for the following parameters. If your site file includes any of these parameters, you may want to reconfigure them.

SYMLINK_MAX
This parameter specifies the maximum number of symbolic links that can be processed when interpreting a pathname. Its default value has been increased to 64.
NSTREAM
This parameter specifies the number of stream-head (stdata) structures to be configured. The default value is now 10 + TTYMULT * MAXUSERS. The NSTREAM parameter provides the starting value for the kmstune memory pool base.stream.
STRBUF
This parameter is used to size most of the NBLKn parameters. Its default value is now the same as NSTREAM.
NQUEUE
This parameter specifies the number of streams queues to be configured. Its default value is now 8 * NSTREAM. The NQUEUE parameter provides the starting value for the kmstune memory pool base.queue.
NBLK*
The default values of these parameters have been reduced by about a factor of ten because STREAMS buffers are now dynamically allocated. The parameters are set to the beginning "reserved values" that the kernel is guaranteed to allocate. If a value is too low, the system will dynamically allocate additional buffers automatically. The default values are now as follows:

NBLK4096
10 + NSTREAM / 40
NBLK2048
10 + STRBUF / 10
NBLK1024
10 + STRBUF / 40
NBLK512
10 + STRBUF / 40
NBLK256
10 + STRBUF /40
NBLK128
10 + STRBUF / 40
NBLK64
10 + STRBUF / 10
NBLK16
10 + STRBUF * 2 / 5
NBLK4
10 + STRBUF * 8 / 5 + NPERM


New Tunable Parameters

The following parameters were added in the V4.5 release:

MAXULWP
The maximum number of lightweight processes per non-root user. The default value is 1024. The range of values is 2 to any number.
INODECACHE
The number of entries that will be maintained on the inode cache list (or free inode list). The default value is NINODE /10. The range of values is 0 to any number.
MAXAIO_HARD
The hard limit for the maximum number of pending asynchronous I/O requests per process. The default value is 50. The range of values is MAXAIO to any number.

The existing MAXAIO parameter now provides a soft limit for the maximum number of pending asynchronous I/O requests per process. Its default value is also 50.

maxunlink_restricted

Whether the I_UNLINK and I_PUNLINK operations are restricted to the owner of the link and the root user. By default, the parameter is set to 1, which provides the restricted behavior.


New Core File Format

The format used for core files has been changed. A core file now includes the following process information:

The size of the core file created by a process can be controlled by the user (see getrlimit(2)). Core files for multi-threaded processes are typically much larger than core files for single-threaded processes.

For more information about the new format, see core(4).


Changes to ptx/ADMIN


Region Management Menu

The Create a Region option now allows you to include memory and process table resources in an application region. The Modify a Region option allows you to modify those resources.

The Display Regions option now allows you to select the regions for which you want to display attributes.

A new option, Configure Region Options, allows you to specify the default login region.


User Management Menu

The Add a User Account and Change a User Account options now allow you to specify the application region into which a user should be placed at login.


Disk Drive Management Menu

In previous releases, the Create a Custom VTOC File option created partitions that could be either larger or smaller than the sizes you specified. The option now allows you to indicate whether partition sizes should be at least, approximately, or exactly the size you specify.

at least
Partitions will be aligned on cylinder boundaries. With the exception of the last partition, each partition will contain at least the number of megabytes you specify, and may contain additional megabytes because of the cylinder-boundary alignment. Depending on the space remaining on the disk, the last partition may be smaller than the specified size.
approximately
Partitions will be aligned on cylinder boundaries. Because of this alignment, the resulting partitions can be either larger or smaller than the size you specify. This is the original behavior of the Create a Custom VTOC File option.
exactly
The partitions will be sized exactly as you specify. Any remaining space will not be assigned to a partition. No attempt will be made to align partitions on cylinder boundaries.


Changes to ptx/C and Programming Tools


New cc Options

The following options can now be specified on the cc command line:

-K{thread | nothread}

Generates code for threaded or non-threaded applications. The default is -Knothread.

-W0,-xstring_merge_ro

Creates only one copy of identical read-only (const char *) literal strings.

-W0,-xstring_merge_rw

Creates only one copy of identical read/write (char *) literal strings.

-W0,-xstring_merge

Shorthand for specifying both -W0,-xstring_merge_ro and -W0,-xstring_merge_rw.

-W1,-no_red_zone

Suppresses the generation of stack probe code for multi-threaded applications.


New Macros

Two new predefined macros, __STDC_VERSION__ and __STRICT_ANSI__, are now available. Table 1-2 shows how these macros are defined in each cc compilation mode.

Table 1-2. Macro Definitions for cc Compilation Modes

Mode

__STDC_VERSION__

__STRICT_ANSI__

-Wc,-seq

undefined

undefined

-Xs

undefined

undefined

-Xt

199409L

undefined

-Xa

199409L

undefined

-Xc

199409L

1



Changes to Programming Utilities

as
New options: -Pmmx recognizes Intel i386TM, i486TM, Pentium®, Pentium Pro, and Pentium II XeonTM instructions. Without this option, the compilation system displays a warning message for any instructions that are specific to the Pentium II Xeon. -Pxmm recognizes Intel i386, i486, Pentium, Pentium Pro, Pentium II Xeon, and Pentium III Xeon instructions. Without this option, the compilation system displays a warning message for any instructions that are specific to the Pentium III Xeon. See as(1).
ld
New -R path option that lists directory pathnames to be used to specify library search directories to the run-time linker. See ld(1).
lint
New -Kthread and -Knothread options to turn on the appropriate preprocessor flags for threaded or non-threaded applications. The default is -Knothread. See lint(1).
ofl_dump
A man page is now available for ofl_dump, the "ordering for locality" (OFL) trace file dumper. See ofl_dump(1).

Support for ISO/IEC 9899:1990/Amendment 1

By default, ptx/C is compliant with most areas of the ISO/IEC 9899 Amendment 1, C Integrity standard. For complete compliance with the standard, specify -D __STRICT_ISO_C_AMM1__ on the cc command line. This macro causes different versions of the following functions to be used:


New Assembler Instructions

The assembler now supports the MMXTM and Streaming SIMD instruction set extensions. The MMX instructions are supported on both Pentium II Xeon and Pentium III Xeon processors; the SIMD instructions are supported only on Pentium III Xeon processors. If a system contains a mix of processor types, application writers can use a primitive to ensure that the MMX instructions are run only on processors that support those instructions. The SIMD instructions are restricted to systems containing only Pentium III Xeon processors. Another primitive is available to determine whether all processors on the system support SIMD instructions. For information about these primitives, see the engdata(3SEQ) man page. For descriptions of the instructions, see the DYNIX/ptx Assembly Language User's Manual.


Debugger Support

The edb debugger is now provided with DYNIX/ptx. (This debugger was previously provided with ptx/C++.) edb must be used to control and debug multi-threaded programs and to analyze core files from them. The older debug debugger is still available and can be used to debug non-threaded programs only.


Changes in edb V3.3.5

The following changes have been made since the previous release of edb.

New functionality:

New options:

autoupdatejob
Makes edb change job when an event occurs on another job
showlimit
Specifies the number of declarations to show before paging
printlimit
Specifies the number of identifiers to print before paging
returnrepeats
Entering a blank line should (not) repeat the previous command

Enhancements to the edb graphical user interface:

Three new commands have been added to the popup menu of the Source pane. Right click in the Source pane to see these items:

print
Prints the value of the selected expression
show
Shows the definition of the selected identifier
address of
Dereferences the selected identifier

An X resource toggle to display icons has been added:

Edb*iconsPaneToggle.set: true

The edb control buttons can now be personalized:

Edb*viewer_run_button.labelString:

Run

Edb*viewer_continue_button.labelString:

Continue

Edb*viewer_step_button.labelString:

Step

Edb*viewer_step_over_button.labelString:

Step over

Edb*viewer_return_button.labelString:

Return

Edb*viewer_halt_button.labelString:

Halt

Edb*viewer_detach_button.labelString:

Detach

Edb*viewer_kill_button.labelString:

Kill

Edb*viewer_make_button.labelString:

Make

Edb*viewer_edit_button.labelString:

Edit



Commands


New Commands

bfget
Displays boot parameters. See bfget(1M).
bfset
Modifies boot parameters and files. See bfset(1M).
listkernprods
Lists the names and version numbers of products that are currently installed and have kernel components.
rgnopt
Lists or sets options that affect the behavior of the application region subsystem. See rgnopt(1M).

Changes to Commands

aliasmgmt
Now preserves comments in the /etc/audit_aliases file when the command is used to delete or modify an entry in the file. (If the comment is no longer correct, it should be modified manually.) See aliasmgmt(1M).
crash
New commands: mpctr evaluates multiprocessor counters; lwp provides information about lightweight processes. The region command now provides more information.
devbuild
The devbuild(1M) man page has been updated to include the following options:
-l
Process only physically local devices in a ptx/CLUSTERS environment.
-s
Processes all physically shareable devices in a ptx/CLUSTERS environment.
devdestroy
The man page has been updated to include the -s option, which processes all physically shareable devices in a ptx/CLUSTERS environment. See devbuild(1M).
dumpconf
When the -m option is not used, the UNIT column displays Fibre Channel addresses in the same way as in DYNIX/ptx V4.4.2. The lower six hex digits of the unit are the Fibre Channel N-PORT address.
NAME         CFGTYPE  DEVNUM  UNIT        FLAGS  OnBUS    OnDEVICE
ff0          ff            0  0x00000006  SP     pci      quad0
fabric8      fabric        8  0x00000001  SM     fc       ff0

If you need LUN information, you must use the -m option, which produces output in a machine-readable format. In this format, the units of Fibre Channel devices can contain very large numbers (22 hex-digits). The first six hex-digits are the N-PORT address; the remaining hex-digits are the LUN (NNNNNNLLLLLLLLLLLLLLLL). Programs should treat these unit values as strings because they are too large to fit in any machine-sized number, even the long long type in C.

egrep
This command is now obsolete. The grep -E command should be used instead.
fgrep
This command is now obsolete. The grep -F command should be used instead.
fsirand
newfs and mkfs now have a built-in version of fsirand to install a filesystem ID into each cylinder group when a filesystem is created. See fsirand(1M).
fsck
A new -X FSType option forces fsck to call the specified version of fsck. This option is useful when fsck cannot determine the filesystem type because the superblock is corrupted. See fsck(1M).
fsck_ufs
Now requires that cylinder groups contain correct filesystem IDs and corrects the IDs if necessary. The first time fsck is run on an older filesystem, the cylinder groups will be upgraded with the appropriate filesystem IDs.

A new -o modifyroot option has been added to allow fsck to modify the root filesystem at boot time and in certain disaster recovery situations. fsck will not modify the root filesystem if this option is not provided. See fsck_ufs(1M).

getconf
A new configurable system variable, C2_CONFIG, has been added. The variable has a non-zero value if the kernel is configured for C2-level security; otherwise, the value is zero. See getconf(1).
ipcs
New options: -r region_name lists shared memory segments created by the processes running in the specified region; -R prints the region in which each shared memory segment was created, as well as the names of regions whose processes have attachments to the segment. The -C and -N options have been removed. See ipcs(1).
kill
New -v option lists the symbolic signal names and their numeric values. See kill(1).
killall
New -r region_name option kills active processes in the specified region. See killall(1M).
ksh
New -v option to the built-in kill command lists the symbolic signal names and their numeric values. The syntax "((...)...)" has been replaced by "( (...)...)", as the shell did not always interpret the older syntax correctly. See ksh(1).
login
If login regions are used, now places users in the specified login region, or in the default login region. See login(1).
lpadmin
New -t retry_time option specifies the time period to wait before resending a print job. See lpadmin(1M).
localedef
The setuid bit has been disabled to prevent non-privileged users from creating public locales in /usr/lib/locale. If necessary, the administrator can re-enable the setuid bit to allow users to create public locales.
mailbug
This command is now obsolete. Contact your service representative to report problems with your system.
MAKEDEV
The MAKEDEV(1M) man page has been updated to describe the following options:
S nslice
Specify the number of partitions to be created for disk devices.
P npass
Specify the number of pass-through devices to be created for fabric or scsibus devices.
M mbits
Use mbits as the size of the minor device. This option is passed through to mknod.
mkfs
Now writes a filesystem ID into each cylinder group when a filesystem is created. See mkfs(1M).
mkvtoc
New -o option writes the VTOC binary data to a file instead of the device. See mkvtoc(1M).
monitor
The names of several fields have been changed to represent the lightweight process (LWP) as the schedulable kernel entity and a new field has been added to specify the number of lightweight processes in the system. Additional fields have also been added to display region metrics. See monitor(1M).
mount
Previously, if the filesystem type was not specified and the filesystem did not appear in /etc/vfstab, the filesystem type defaulted to UFS. In V4.5, mount uses heuristics to try to determine the filesystem type.
mount_mfs
New -I image_file option enables the memory filesystem image to be saved in a regular file. If the image_file already exists, it will be mounted. The filesystem utilities, such as fsck and exfs, can be used with the image_file. See mount_mfs(1M).
newfs
Now writes a filesystem ID into each cylinder group when a filesystem is created. See newfs(1M).
offline
New -r region_name option prints the number of processors that are currently offline in the specified region. When used with the -a option, all but one processor in the specified region are brought offline. See online(1M).
online
New -r region_name option prints the number of processors that are currently online in the specified region. When used with the -a option, all processors in the specified region are brought online. See online(1M).
ps
New options: -P produces output in a machine parsable format (a single hyphen is printed for each null field); -q rqidlist prints data only for those processes having the specified run queue IDs; -T prints one line of output for each lightweight process (LWP) in each selected process. New variables for the -o option: lwp specifies the decimal value of the LWP's ID; nwlp specifies the number of LWPs for a process. See ps(1).
passmgmt
New -R login_region option specifies the region into which the user will be placed at login. See passmgmt(1M).
rgnctl
Now allows memory and process table resources to be assigned to a region. New -g option causes the operation to fail if the specified minimum resource limits are not available at the time of the operation. See rgnctl(1M).
rgnstat
Now displays information for memory and process table resources. New options: -f displays information about the resources in the free pool; -l, which must be combined with -a, -s, or -f, lists additional attributes, statistics, or resources in the free pool. See rgnstat(1M).
sar
New -R region option that reports activity for a specific region. See sar(1).
shadcheck
The command now returns an exit status of 2 when the shadow and password files are inconsistent or in an incorrect format. It previously returned 0 in this situation. See shadcheck(1M).
sort
Previously the -ykmem option, which specifies the amount of memory to be allocated, could be used to improve the performance of the sort utility. Changing the amount of memory allocated at one time no longer has a significant effect on sort's performance.
strstat
New options: -u unix option specifies an alternate kernel file to be used instead of /unix; -b displays low 4-GB stream buffers. See strstat(1M).
tar
The -t option can now list information for specific files. See tar(1).
tistat
New -u unixname option specifies an alternate kernel. See tistat(1M).
top
By default, top displays one line per lightweight process. If the -p option is specified, top displays one line per process, aggregating the information from all its lightweight processes, and displaying the process's lightweight process count (LWP) in place of the weighted CPU percentage (WCPU). See top(1).
top2
New "nwlp" field displays the number of LWPs for the process. When multiple processors are concurrently executing LWPs belonging to the same process, the per-process "engno" field now displays the first processor number, followed by a + to indicate that multiple processors are involved. See top2(1).
truss
New -T option prepends each line of trace output with the ID of the responsible lightweight process. If -f is also specified, each line of trace output is prepended with both the process ID and the lightweight process ID. See truss(1).
umountall
New -o flag to specify filesystem-specific options. This option should be used with the -f option. See mountall(1M).
uname
New -R option prints the name of the caller's region. See uname(1).
useradd
New -R login_region option specifies the region into which the user will be placed at login. See useradd(1M).
usermod
New -R login_region option changes the region into which the user will be placed at login. See usermod(1M).
vi
Now supports \< and \> for beginning-of-word and end-of word pattern matching and substitution. See vi(1).
vmtune
New -g region_name option displays the virtual-memory parameters for the specified region. -g can also be used to set the parameters for a specific region. See vmtune(1M).
who
New -g region_name option lists the users belonging to the specified region. It can be combined with other options to display other information for the region. See who(1).
whodo
New -r region_name option lists the users in the specified region and the active processes belonging to those users. See whodo(1M).

System Calls and Library Routines


New System Calls and Library Routines

flockfile, ftrylockfile, funlockfile

Locks or unlocks a stream. See flockfile(3S).

fwide

Sets or obtains the orientation of the specified stream. See fwide(3C).

getprinfo

Returns process-related data, such as information that may be useful to the ps command. See getprinfo(2SEQ).

getrgnname

Returns the region name of the caller or the specified process. See getrgnname(2SEQ).

lwp_trace

Allows a process to observe and/or control other unrelated processes and light-weight processes within those processes. See lwp_trace(2SEQ).

mbsinit

Determines whether the conversion state described by ps represents an initial conversion state. See mbsinit(3C).

mbstrwocs

A restartable conversion function that converts a sequence of multibyte characters into the corresponding sequence of wide characters. See mbrstring(3C).

pread64

Reads from a file at a given offset without changing the file pointer. See pread64(2SEQ).

pthread_atfork

Registers fork handlers. See pthread_atfork(3C).

pthread_attr_init, pthread_attr_destroy

Initializes or destroys the threads attribute object. See pthread_attr_init(3C).

pthread_attr_setdetachstate, pthread_attr_getdetachstate

Sets or gets the detachstate attribute. See pthread_attr_getdetachstate(3C).

pthread_attr_setschedparam, pthread_attr_getschedparam

Sets or gets the schedparam attribute. See pthread_attr_getschedparam(3C).

pthread_attr_setstackaddr, pthread_attr_getstackaddr

Sets or gets the stackaddr attribute. See pthread_attr_getstackaddr(3C).

pthread_attr_setstacksize, pthread_attr_getstacksize

Sets or gets the stacksize attribute. See pthread_attr_getstacksize(3C).

pthread_cancel

Cancels the execution of a thread. See pthread_cancel(3C).

pthread_condattr_init, pthread_condattr_destroy

Initializes or destroys the condition variable attributes object. See pthread_condattr_init(3C).

pthread_cond_init, pthread_cond_destroy

Initializes or destroys condition variables. See pthread_cond_init(3C).

pthread_cond_signal, pthread_cond_broadcast

Signals or broadcasts a condition. See pthread_cond_signal(3C).

pthread_cond_wait, pthread_cond_timedwait

Waits on a condition. See pthread_cond_wait(3C).

pthread_cleanup_push, pthread_cleanup_pop

Establishes cancellation handlers. See pthread_cleanup_push(3C).

pthread_create

Creates a thread. See pthread_create(3C).

pthread_detach

Detaches a thread. See pthread_detach(3C).

pthread_equal

Compares thread IDs. See pthread_equal(3C).

pthread_exit

Terminates the calling thread. See pthread_exit(3C).

pthread_getspecific, pthread_setspecific

Thread-specific data management. See pthread_getspecific(3C).

pthread_join

Waits for a thread to terminate. See pthread_join(3C).

pthread_kill

Sends a signal to a thread. See pthread_kill(3C).

pthread_key_create

Creates a thread-specific data key. See pthread_key_create(3C).

pthread_key_delete

Deletes a thread-specific data key. See pthread_key_delete(3C).

pthread_mutexattr_init, pthread_mutexattr_destroy

Initializes or destroys the mutex attributes object. See pthread_mutexattr_init(3C).

pthread_mutex_init, pthread_mutex_destroy

Initializes or destroys a mutex. See pthread_mutex_init(3C).

pthread_mutex_lock, pthread_mutex_trylock, pthread_mutex_unlock

Locks or unlocks a mutex. See pthread_mutex_lock(3C).

pthread_once

Dynamic package initialization. See pthread_once(3C).

pthread_mutexattr_settype, pthread_mutexattr_gettype

Sets or gets a mutex type. See pthread_mutexattr_gettype(3C).

pthread_rwlockattr_init, pthread_rwlockattr_destroy

Initializes or destroys the read-write lock attributes object. See pthread_rwlockattr_init(3C).

pthread_rwlock_init, pthread_rwlock_destroy

Initializes or destroys a read-write lock object. See pthread_rwlock_init(3C).

pthread_rwlock_rdlock, pthread_rwlock_tryrdlock

Locks a read-write lock object for reading. See pthread_rwlock_rdlock(3C).

pthread_rwlock_unlock

Unlocks a read-write lock object. See pthread_rwlock_unlock(3C).

pthread_rwlock_wrlock, pthread_rwlock_trywrlock

Locks a read-write lock object for writing. See pthread_rwlock_wrlock(3C).

pthread_sched_get_priority_max_np, pthread_sched_get_priority_min_np

Gets the maximum or minimum valid thread priority values. See pthread_sched_get_priority_max_np(3C).

pthread_self

Gets the thread identifier of the calling thread. See pthread_self(3C).

pthread_setcancelstate, pthread_setcanceltype, pthread_testcancel

Sets the calling thread's cancelability state. See pthread_setcancelstate(3C).

pthread_sigmask

Examines and changes blocked signals for the current thread. See pthread_sigmask(3C).

pwrite64

Writes to a file at a given offset without changing the file pointer. See pwrite64(2SEQ).

rgnassign

Assigns a process or group of processes to an active region. See rgnassign(2SEQ).

rgn_cpus_online

Returns the number of processors currently configured and online in the caller's region. See rgn_cpus_online(2SEQ).

rgnctl

Activates, modifies, or deactivates a region. See rgnctl(2SEQ).

rgn_engfillset

Initializes the specified set of processors to include all processors that are currently online in the specified region. See engemptyset(2SEQ).

rgn_getkerndata

Provides kernel statistics for the specified region. See rgn_getkerndata(2SEQ).

rgninfo

Provides a snapshot of the attributes and statistics for active regions. See rgninfo(2SEQ).

rgn_quadfillset

Initializes the specified set of Quads to include all Quads that are currently configured in the specified region. See quademptyset(2SEQ).

sched_yield

Terminates a thread. See sched_yield(3C).

towctrans

Translates a given wide character according to the specified property. See wctrans(3C).

ups_ctl

Queries the system state of an uninterruptible power supply (UPS). See ups_ctl(2SEQ).

vfwprintf

Similar to fwprintf, but is called with an argument list instead of a variable number of arguments. See vwprintf(3S).

virtwin_synctlb, virtwinv_synctlb

Synchronizes virtually-windowed address translations to a mapped object. See virtwin_synctlb(2SEQ).

vm_rgnctl

Examines and changes virtual memory parameters for the caller's region. See vm_ctl(2SEQ).

vswprintf

Similar to swprintf, but is called with an argument list instead of a variable number of arguments. See vwprintf(3S).

vwprintf

Similar to wprintf, but is called with an argument list instead of a variable number of arguments. See vwprintf(3S).

wcscoll

Performs string comparisons using collating information. See wcscoll(3C).

wcsrtombs

A restartable conversion function that converts a sequence of wide characters into a sequence of corresponding multibyte characters. See mbrstring(3C).

wcsstr

Finds the first occurrence of a wide string. See wcsstr(3C).

wctrans

Performs extensible wide character mapping. See wctrans(3C).

wcxsfrm

Performs wide character string transformations. See wcxsfrm(3C).

wmemory

Functions that operate as efficiently as possible on arrays of wide characters stored in memory. See wmemory(3C).

wprintf, swprintf, fwprintf

Prints formatted output. See wprintf(3S).

wscanf, fwscanf, swscanf

Reads multibyte characters, interprets them according to a format, and stores the results. See wscanf(3S).


Changes to System Calls and Library Routines

cfg_info
Additional search keys are now available. See cfg_info(3SEQ).
cfg_sys
New CFG_DEVT_TO_NAME command that obtains the name of a device when given a valid dev_t. See cfg_sys(2SEQ).
clnt_geterr()
The names of following fields in the rpc_err structure have been changed in the header file rpc/clnt.h. This structure is used by applications calling clnt_geterr(). The contents and use of the fields have not changed.
Old Name
New Name
errno
RE_errno
t_errno
RE_t_errno

See rpc_clnt_calls(3N) for more information about clnt_geterr().

cpus_online
Now returns the number of processors currently online and configured in the caller's region only. See cpus_online(3PPS).
ctime
New asctime_r, ctime_t, gmtime_r, and localtime_r routines that are thread-safe versions of asctime, ctime, gmtime and localtime. See ctime(3C).
DIO_Apoll
Now returns the number of completed requests if the timeout expires, and accepts values other than 0 and -1 for the timeout. See DIO(2SEQ).
directory
New readdir_r function that is similar to readdir. See directory(3X).
engdata
New primitives all_processors_support_mmx() and all_processors_support_simdx() that return a non-zero value only if all processors on the system support the MMX and Streaming SIMD extension instructions, respectively. See engdata(3SEQ).
engfillset

Now initializes the specified processor set to include only those processors that are currently online in the caller's region. See engemptyset(2SEQ).

fpgetround
These functions now operate on the state of a thread, rather than the state of the process, as in earlier DYNIX/ptx releases. See fpgetround(3C).
getc
New getc_unlocked and getchar_unlocked macros are variants of getc and getchar that do not lock the stdio stream. See getc(3S).
getgrent
New getgrnam_r and getgrgid_r functions that return the requested group entry in the buffer provided by the caller. See getgrent(3C).
getlogin
New getlogin_r function that is a thread-safe version of the getlogin. See getlogin(3C).
getprpsinfo
New GETPS_BYRQID flag that gets information only for those processes having the specified run-queue ID. See getprpsinfo(2SEQ).
getpwent
New getpwnam_r and getpwuid_r interfaces for threads. See getpwent(3C).
getrlimit
A new extension, RLIMIT_AIO, specifies the maximum number of outstanding asynchronous I/O requests. See getrlimit(2).
grant_login_priv

Now assigns a user to the appropriate login region. If the region is inactive, the user's login fails. See grant_login_priv(3X).

mbchar
New btowc and wctob functions for converting multibyte characters. See mbchar(3C).
mmap, mmapq
The MAP_NORESERVE flag can now be specified for a private anonymous mmap (MAP_PRIVATE and MAP_ANONYMOUS are also used). This flag enables the mmap to use a dynamic swap allocation policy, even if the current system default is to preallocate all swap space.

When MAP_NORESERVE is specified for a private anonymous mmap, the system does not reserve the anonymous swap space backing this mmap at the time of the call. Instead, it is reserved only when and if the corresponding pages need to be swapped out. It is extremely important to note, though, that if the pages do need to be swapped out later and sufficient swap space cannot be allocated at that time, then the process will receive a SIGKILL.

The paging policy semantics have been changed to restrict the allocation of pages to the Quads whose memory is assigned to the caller's region. See mmap(2).

perror
Programs should obtain the definition of errno by including <errno.h>. The practice of explicitly defining errno in a program as extern int errno is obsolete. See perror(3C).
printf
New snprintf() routine has been added to the standard library. This version of sprintf checks for array bounds and ensures that the user-specified buffer does not overflow. See printf(3S).
putc
New putc_unlocked and putchar_unlocked macros that are variants of putc and putchar. These interfaces do not lock the stdio stream. See putc(3S).
quadfillset
Now initializes the specified Quad set to include only those Quads that are currently configured in the caller's region. See quademptyset(2SEQ).
rand
New rand_r function is a thread-safe version of rand. See rand(3C).
read
New pread system call that performs the same action as read(), with the exception that it reads from a given offset in the file without changing the file pointer. New pread64 system call that is similar to pread, but uses a 64-bit off64_t file offset type. See read(2).
regcomp
New REG_WORD flag compiles for beginning of word (BOW) matching/substitution and end of word (EOW) matching/substitution. See regcomp(3X).
shmget, shmgetq
The paging policy semantics have been changed to restrict the allocation of pages to the Quads whose memory is assigned to the caller's region. See shmget(2).
stat
For disk devices and ptx/SVM volumes, st_blocks now returns the total number of 512-byte physical blocks actually allocated on disk. See stat(2).
string
New strtok_r function is a thread-safe version of strtok. See string(3C).
sync_op
New SYNC_POST2VEC command that posts to a vector of processes. It is similar to SYNC_POSTVEC except for the return value. See sync_op(2SEQ).
sysconf
New configuration variables have been added for threads support. See sysconf(2).
tmp_ctl
New commands have been added to obtain information about the caller's region. See tmp_ctl(2SEQ).
ttyname
New ttyname_r function that is a thread-safe version of ttyname. See ttyname(3C).
virtwin
New virtwinv system call that is a vectored version of virtwin. It allows multiple virtual mappings to be processed at one time.

When virtwin() or virtwinv() is used and the application process is comprised of multiple lightweight processes (LWPs), the application may need to take additional steps before using the address translations instantiated by these system calls. See virtwin(2SEQ) for details.

vm_ctl
Now examines and changes virtual memory parameters only for the caller's region. See vm_ctl(2SEQ).
vprintf
New vsnprintf() routine has been added to the standard library. This version of vsprintf checks for array bounds and ensures that the user-specified buffer does not overflow. See vprintf(3S).
wcsftime
For compliance with the ICO C standard, the format parameter is now a wchar_t * instead of the char * specified by XPG4. See wcsftime(3C).
wcstok
The API has been changed from the XPG4 interface:

wchar_t *wcstok(wchar_t *, const wchar_t *);

to the ICO C interface:

wchar_t *wcstok (wchar_t *, const wchar_t *, wchar_t **);

See wcstring(3C).

write
New pwrite call that is similar to write(), but writes from a given offset in the file without changing the file pointer. New pwrite64 call that is similar to pwrite but uses a 64-bit off64_t file offset type. See write(2).

Implementation Changes in V4.4.x


Contents of the V4.4.6 Release

DYNIX/ptx V4.4.6 contains the following:


Contents of the V4.4.5 Release

DYNIX/ptx V4.4.5 provides support for NUMA-Q systems with a single bootbay. These systems operate in the same manner as other NUMA-Q systems; however, the bootbay contains a single local disk that is used for the root filesystem. This disk must be used for doing software upgrades and saving crash dumps.


Root VTOC for Systems with a Single Bootbay

NUMA-Q systems with a single bootbay use a special VTOC for the root disk. The VTOC configures the data partitions on the disk as follows:

Table 1-4. Data Partitions on Root Disk

Partition

Use

0

Root filesystem

1

Primary swap partition

2

Alternate root partition

3

Crash dump partition


Partitions 0, 1, 2, and 3 are reserved for the operating system, primary swap, and saving crash dumps. You can use other data partitions for any data you desire.

Partition 9 is a miniroot partition that can be used to build a custom miniroot.


Software Upgrades

By default, the operating system is installed on partition 0. If your system contains a single bootbay, you will need to upgrade the operating system on the alternate root partition 2. See the DYNIX/ptx V4.5.2 and Layered Products Software Installation Release Notes for more information.


Set Up Crash Dumps

NUMA-Q systems with a single bootbay can use either of the following methods to save crash dumps:

Copying the dump directly to a filesystem is faster. Refer to the DYNIX/ptx V4.5 System Recovery and Troubleshooting Guide for details about configuring the system to save crash dumps.


Contents of the V4.4.4 Release


Support for New Quads on NUMA-Q Systems

DYNIX/ptx now supports 0300-Series Quads. A NUMA-Q system using only 0300-Series Quads can include up to 16 Quads.

A NUMA-Q system can contain both 0300-Series Quads and the earlier Quads; however, in this configuration the system is limited to eight Quads.

Commands such as /etc/showcfg and /etc/showquads identify the processors in 0300-Series Quads as running at 360MHz.


Application Region Manager

The Application Region Manager provides the ability to partition system resources into multiple regions. Applications can then be assigned to run in a specific region, allowing you to balance your system workload.

The Processor Group Affinity scheduler can be used to further partition the workload within a region. You can create run queues containing certain CPUs from the region, assign processes to those run queues, and assign priorities that determine when each run queue's processes will be executed.

When you create an application region, you specify attributes for it, including its name, the resources to be associated with the region, whether the region should be activated now, and whether it should be activated automatically at system boot. Information about regions is stored in the region registry file, /etc/system/region_db.

An application region can be active or inactive. When it is active, the operating system will attach the specified resources to the region and processes can be executed there. When the region is inactive, no resources are associated with the region and processes cannot be executed. If desired, regions can be activated automatically at system boot. You can also activate or deactivate regions as needed.

For more information about the Application Region Manager, see the DYNIX/ptx System Configuration and Performance Guide.


Support for 18-GB Disks

Support for 18-GB disks has been added to DYNIX/ptx V4.4.4. This support was previously provided by the ptx/18GB_DISK layered product. The following VTOCs are available: ibms18w for the IBM® drive or seag118273 for the Seagate® drive.


autoBoot Flag on NUMA-Q Systems

When the system is booted, the standload program reads the boot strings, including the autoBoot flag, and takes the appropriate action, typically either booting the uptime unix kernel or executing the stand-alone dump program.

In previous releases, if dump was invoked but either failed or could not be started, standload took the system to single-user mode and displayed the SAK shell prompt. To provide more flexibility in the case of a dump failure, a new value has been added to the autoBoot flag to tell standload to continue to boot the unix kernel even if dump fails.

In the V4.4.4 release, the following values can be specified for the autoBoot flag:

0
Exit to the SAK shell.
1
Execute the dump program if necessary. If dump fails, provide a SAK shell. If dump succeeds or does not need to be executed, boot the unix kernel.
2
Execute the dump program if necessary. If dump fails, succeeds, or does not need to be executed, boot the unix kernel.


New Memory Dump Option for NUMA-Q Systems

NUMA-Q systems can now be configured to copy a memory dump directly to a filesystem. This method can reduce the time needed to recover from a system failure, as it bypasses the savecore program. Also, you do not need to maintain dump devices. The DYNIX/ptx V4.5 System Recovery and Troubleshooting Guide describes how to implement this option.


New upsmon Daemon

The new upsmon daemon can be used to monitor a UPS attached to a serial port. upsmon monitors the port for a simple ON-BATTERY signal. When this condition occurs, upsmon executes the /etc/powerfail powerfail script, which is provided with the operating system. upsmon then continues to monitor the serial port. When it sees the OFF-BATTERY condition, it executes /etc/powerfail powerok.

The upsmon program is generic in nature and will monitor any serial port; however, it was written specifically for NUMA-Q systems. For details about running this daemon, see upsmon(1M).


Support for European Union Monetary Unit

Locales have been added to support the new EURO currency. The names of the locales match the existing locale names with the extension _EU (for example, fr_EU and es_EU). If your site is located in a country participating in the European Union and you want to use the EURO currency, set your locale to <localename>_EU. To use the local currency, set your locale to <localename>.


Kernel Changes

The following changes have been made to the kernel:


Enhancements to the cc Compiler

The cc compiler has been modified as follows:


Enhancements to lint

The following options have been added:

-j
Enables warnings about explicit narrowing conversions from casts. An explicit cast to a narrower type normally suppresses a warning about a narrowing cast, but not when -j is used.
-J
Suppresses warnings about implicit narrowing conversions by assignments of values to operands of narrower types, unless the right-hand side of the assignment is a variable or a pointer dereference. Also suppresses warnings about expressions that are evaluated using a type narrower than the result.

The following directives have been added:

/*CASTOK*/
Suppresses complaints about casts, including those enabled by the -j option. This directive should be placed before the cast and applies only to the first cast after the directive. If the current statement does not include a cast, then the directive is ignored.
/*SYMUSED*/
Suppresses complaints about a global symbol being defined but never used, or being declared global when it could be static. This directive enables you to use lint on a subset of a program that includes global definitions that are not used within that subset.
/*UNIONOK*/
Suppresses complaints about unions that are issued only with the -t option. This directive should be placed between the union keyword and the final brace of the union definition. If there are nested unions, it applies to the union whose ending brace is seen first.


Changes to Commands

crash
A new sci_memmap argument has been added to the map command to print the memory map for NUMA-Q systems. See crash(1M).
devctl
The new -q option suppresses the logging of non-error messages in /usr/adm/ktlog. See devctl(1M).
dump
For NUMA-Q systems, the new -s flag causes the dump command to copy the memory image directly to a filesystem without invoking savecore. See dump(8).
fcdl
This utility has been simplified. The DYNIX/ptx V4.5.x Fibre Channel Software Release Notes describe how to download the FC Bridge firmware with this utility.
file
This command can now identify the type of archive files created by the pax command.
infodev
The new -n object option reports the Fibre Channel address of the specified object. See infodev(1M).
ld
The new -Oquick option orders functions using a linear algorithm instead of the NP-complete graph reduction algorithm. The performance of the program is similar to that of a program linked with -Oreduce, but the link time will be much shorter for larger programs.
monitor
The new -r region_name option displays metrics for the specified region. See monitor(1M).
nm
The descriptions of the -g and -e options have been modified as follows in the nm(1) man page:
-g
Print only external (GLOBAL) symbols.
-e
Print only WEAK and GLOBAL symbols.
ps
The run-queue information previously displayed by the -q option is now displayed by -Q. The -q option has been modified to display only those processes belonging to one or more specified run queues.

A new option, -r rgnname, lists processes belonging to the specified region. The new -R option includes information about all regions.

The -o option now accepts the format specifier rgn to list the region to which each process belongs. See ps(1) for details about these options.

rqstat
The new -R option prints the region to which each run queue belongs. See rqstat(1M).
showcfg
The new -c option prints the default showcfg information and the cache size of each CPU. See showcfg(1M).
top2
The new -R option lists the region to which each process belongs. You cannot sort or reorder processes based on this field.

You can configure top2 to display processes belonging to a specified region. To do this, enter one or more regions names in the region field of the process selection screen. See top2(1).


Changes to System Calls and Library Routines


DYNIX/ptx Documentation

The following documentation is available on the documentation CD or at http://webdocs.numaq.ibm.com/:

DYNIX/ptx System Administration Guide
DYNIX/ptx System Configuration and Performance Guide
DYNIX/ptx Printer Management Guide
ptx/INSTALL Software Installation Guide
DYNIX/ptx V4.5 System Recovery and Troubleshooting Guide
DYNIX/ptx User's Information
DYNIX/ptx Error Messages
ptx/C User's Information
edb User's Guide
debug User's Guide
DYNIX/ptx Programming Tools Guide
Assembly Language User's Manual
Link Editor (ld) Technical Reference
DYNIX/ptx Network Programming Guide
RPC Programming Manual
Extended Terminal Interface (ETI) Programming Guide
DYNIX/ptx Implementation Differences
POSIX Conformance Specification
X/Open Conformance Specification
ptx/ADMIN Development Guide
DYNIX/ptx FACE User's Guide
DYNIX/ptx FMLI Programming Guide