dev Release Notes

1 Introduction

2 Installation Information

3 Changes and Additions

4 Bug Fixes

5 Known Problems and Workarounds

 



                                  - 1 -



       1.  Introduction

       These notes describe the Base Development (dev) of the 5.2
       IRIS Development Option from Silicon Graphicsr, Inc.  They
       include discussion of make(1), header files, libraries, the
       kernel, and device drivers.

       Note:  Packaged with the IRIS Development Option software is
              a separate sheet that contains the Software License
              Agreement.  This software is provided to you solely
              under the terms and conditions of the Software
              License Agreement.  Please take a few moments to
              review the Agreement.

       This document contains the following chapters:

         1.  Introduction

         2.  Installation Information

         3.  Changes and Additions

         4.  Bug Fixes

         5.  Known Problems and Workarounds


       1.1  Release_Identification_Information

       Following is the release identification information for the
       Base Development (dev) portion of the 5.2 IRIS Development
       Option:

       Software Product               IRIS Development
                                      Option

       Version                        5.2
       Product Code                   SC4-IDO-5.2

       System Software Requirements   IRIX 5.2 or later

       1.2  Online_Release_Notes

       After you install the online documentation for a product
       (the relnotes subsystem), you can view the release notes on
       your screen.

       If you have a graphics system, select ``Release Notes'' from
       the Tools submenu of the Toolchest. This displays the
       grelnotes(1) graphical browser for the online release notes.












                                  - 2 -



       Refer to the grelnotes(1) man page for information on
       options to this command.

       If you have a nongraphics system, you can use the relnotes
       command.  Refer to the relnotes(1) man page for accessing
       the online release notes.

       1.3  Product_Support

       Silicon Graphics, Inc., provides a comprehensive product
       support maintenance program for its products.

       If you are in the U.S. or Canada and would like support for
       your Silicon Graphics-supported products, contact the
       Technical Assistance Center at 1-800-800-4SGI.  If you are
       outside these areas, contact the Silicon Graphics subsidiary
       or authorized distributor in your country.










































 



                                  - 1 -



       2.  Installation_Information

       The IRIS Software Installation Guide fully documents the
       process for installing the Base Development software.

       2.1  5.2_Base_Development_Subsystems

       The 5.2 Base Development (dev) software includes these
       subsystems:

       dev.books.IRIX_NetPG       Network Programming Guide

       dev.books.IRIX_SysPG       IRIX System Programming Guide

       dev.books.IndigoMagic_IG   Indigo Magic Integration Guide

       dev.hdr.lib                Development environment headers

       dev.man.irix_lib           Development environment manual
                                  pages

       dev.man.relnotes           These release notes.

       dev.sw.abi                 MIPS ABI development libraries.

       dev.sw.irix_speclibs       NonShared Libraries for
                                  Benchmarks

       dev.sw.lib                 Development libraries

       dev.sw.make                Parallel make utilities

       2.1.1  Subsystem_Disk_Space_Requirements  This section lists
       the dev subsystems (and their sizes).

       If you are installing this software for the first time, the
       subsystems marked ``default'' are those selected for
       installation automatically.  They will be installed when you
       give the go command unless you explicitly request (with the
       keep command) that they not be installed.

       Those marked ``miniroot'' must be installed from the
       miniroot.

       Note:  The listed subsystem sizes are approximate.  Refer to
              the IRIS Software Installation Guide for information
              on finding exact sizes.















                                  - 2 -



       Subsystem Name                       Subsystem Size
                                            (512-byte blocks)
       dev.books.IRIX_NetPG (default)              2980
       dev.books.IRIX_SysPG (default)              4937
       dev.books.IndigoMagic_IG (default)          1513
       dev.hdr.lib (default)                       2170
       dev.man.irix_lib (default)                  3978
       dev.man.relnotes (default)                    10
       dev.sw.abi                                 22760
       dev.sw.irix_speclibs                        7220
       dev.sw.lib (default)                        4341
       dev.sw.make (default)                        328















































 



                                  - 1 -



       3.  Changes_and_Additions

       The features in this chapter are new or significantly
       changed in the 5.0, 5.0.1, 5.1, and 5.2 Base Development
       software.  Except as noted, changes apply to all versions.

       3.1  Library_and_System_Call_Functionality

       The following additions and changes were made to library and
       system call functionality between versions 4.1 and 5.2 of
       the IRIS Development Option.

          o IRIX now provides a complete implementation of the core
            interfaces described in the System V Interface
            Definition, Third Edition, Volume V (SVR4), published
            by UNIX System Laboratories.  Specifically, the Base OS
            Service Routines, BASE OS Library Routines, and
            Terminal Interface Library Routines are now fully
            implemented.  IRIX now complies with X/Open Portability
            Guide Issue 3 (XPG3), Volumes 1, 2, and 3.

            Among the significant features provided by these
            interfaces is the ability to write application software
            that can be localized for different languages and local
            customs.  Examples are setcat(3) and pfmt(3).

            Another major addition is the support for SVR4 network
            interfaces, particularly those functions included in
            libnsl and libsocket.  The kernel modules necessary to
            implement this at run time are available with a
            separately installable subsystem in the eoe image.  See
            intro(3N) for a introduction of the networking
            functions and how to invoke them.

            The mmap(2) system call now works on arbitrary page
            boundaries, although for performance reasons the system
            should choose the mapping address.  The munmap(2) call
            can now be done to an arbitrary portion of a region.
            The mprotect(2) system call has been added to change
            protections of a process' virtual address space at the
            page-level granularity.  See mprotect(2) for programs
            that use self-modifying code.

            You can now associate (and eventually dissociate) a
            STREAMS-based file descriptor to a filename.  See
            fattach(3C) and fdetach(3C) for details.

            The SVR4 /proc file system is now fully supported, with
            IRIX 5.0 and later implementing a superset of the
            associated ioctl ioctl requests that can be applied to
            a process.  The old /debug fcntl requests are no longer











                                  - 2 -



            supported.  See proc(4) for information on this virtual
            file system and its interfaces.

          o The SVR4 fd file system is supported.  Refer to fd(4)
            for information.

          o IRIX 5.0.1 and later releases comply with the POSIX
            1003.1-1990 specification.  Previous versions
            implemented POSIX 1003.1-1988.

          o IRIX 4.0 source programming interfaces to system calls
            and system libraries in IRIX 5.2 and later are
            compatible with those in IRIX 4.0.  Code that compiled
            under IRIX 4.0 and uses commonly recognized practices
            for writing portable code should compile without
            modification on IRIX 5.2 and later.

          o A new user-level DMA support interface is provided
            which allows user-level VME drivers to get considerable
            performance increases on their PIO accesses to VME
            space on the Challenge/Onyx series.  As DMA engines
            become available on other platforms and other busses,
            this interface will be expanded to support them. For
            information on using this facility, refer to the manual
            page for udmalib(3x).

          o A new direct I/O interface is provided that allows
            sophisticated applications, such as database servers,
            better control of their disk operations.  Direct I/O
            allows the application to transfer data directly
            between a disk file in an EFS file system and a buffer
            in user space.  For information on using this facility,
            refer to the manual entries for open(2) and fcntl(2).

          o The POSIX 1003.4a (Draft 12) interface for asynchronous
            I/O is supported.  Asynchronous I/O allows an
            application program to request an I/O operation without
            being suspended until the completion of the operation.
            The program is notified by the delivery of a signal
            when the requested operation has been completed.  If
            you want, the program can also poll the system for the
            completion status of asynchronous I/O operations.
            Refer to the manual entries for aio_read(3) and
            aio_write(3) for further information.

          o The POSIX 1003.4a (Draft 12) interface for queued
            signals is supported in IRIX 5.0.1 and later.
            Traditional UNIXr signals are not queued.  If more than
            one signal is sent to a process before it can process
            the first one, it is impossible for the process to
            distinguish that more than one signal has been sent.











                                  - 3 -



            Using this mechanism, multiple occurrences of the same
            signal can be queued for a process.  Refer to the
            manual entries sigaction(2), sigqueue(3), and signal(5)
            for more information.

          o Recursive versions of some libc functions have been
            provided.  These correspond to the POSIX 1003.4a
            specification for reentrant functions.  These functions
            are present in the default compilation mode-if you are
            compiling in POSIX-compliant mode (_POSIX_SOURCE
            defined), programs should be compiled with the feature
            test macro _SGI_REENTRANT_FUNCTIONS defined.

          o The POSIX 1003.4a specification for making stdio
            multi-thread safe has been implemented.  In the default
            compilation mode, all stdio functions are thread safe.
            In POSIX or ANSI compilation mode, the program must
            define the feature test macro _SGI_MP_SOURCE in order
            to get the thread safe versions of stdio functions and
            macros.

          o The handling of the global error value, errno, has
            changed from IRIX 4.0.  If the program includes
             and defines the feature test macro
            _SGI_MP_SOURCE, references to errno actually reference
            a per-thread errno; otherwise, the global variable
            errno is accessed.  All system calls update both the
            per-thread and global versions of errno.

          o Support for collection of audit data of system events
            is now available as a separately installable option in
            the eoe image.  See satctl(2), satread(2), and
            satwrite(2) for details.

          o The MIPS ABI mutual exclusion library libmutex.so is
            supported.  The actual implementation of the routines
            is in libc.so.1.  These routines, init_lock,
            acquire_lock, release_lock, and stat_lock, provide
            low-level portable access to a mutual exclusion
            primitive (see abilock(3x)).

          o Additional mutual exclusion primitives test_and_set and
            a set of derivative functions are also provided (see
            test_and_set(3P)).

          o A new option to usconfig(3P) permits setting whether an
            arena should be set up using autogrow mapped files or
            whether the file should be grown at initialization time
            to its specified size.  Setting this option reduces the
            ability to recover from errors if the file system runs
            out of space.











                                  - 4 -



          o A new environment variable, USERROR, when set, prints
            out any errors encountered when calling various (3P)
            functions.  It is considerably less verbose than
            USTRACE.

          o A new function, usdetach(3P), permits removing a
            previously attached arena.

          o All R4000 systems now use the load-linked instruction
            to provide fast user-level atomic operations.

          o The arena memory allocation function, amalloc, now
            returns NULL if it is working out of an autogrow mapped
            file and the file system runs out of space.
            Previously, the program received a SIGSEGV signal.  See
            amalloc(3P) and mmap(2) for details.

          o Both the main and arena memory allocation packages have
            a new associated function to easily and efficiently
            allocate arbitrarily aligned data.  See memalign(3C)
            and amemalign(3P).

          o The math library libm.a has been carefully checked to
            ensure its conformance with both the SVID 3rd Edition
            and ANSI X3.159-1989.  Specific information can be
            found in the man pages sinh, exp, bessel, floor, gamma,
            math, hypot, sinh, sqrt, and trig.

          o The interface to the function scalb(3m) has changed to
            conform to SVR4. In previous releases, the type of the
            second argument to scalb (the exponent) was int.  In
            this release, the type of the second argument is
            double.  In addition, the functions scalb and rint have
            been moved from the math library to the C library.

          o A new option, flush_to_zero, has been added to
            libfpe.a.  On an R4000-based system, using this option
            can improve execution performance if many floating
            point underflows occur.

          o The job control special character VSWTCH in the termio
            and termios structure field c_cc has been replaced by
            the POSIX control character VSUSP.  Recompiled binaries
            that modify the VSWTCH special character no longer
            affect job control behavior, but binaries from 4.0.x
            that previously used this value continue to work as
            expected.

          o IRIX 5.2 uses the libc resolver routines from the BIND
            4.9 release, (These routines send queries to the BIND
            name server, named(1M)).  Some changes were made to the











                                  - 5 -



            prototypes described in resolver(3N) and declared in
            /usr/include/resolv.h.  The struct state data structure
            was renamed to avoid potential conflicts with user
            code, also several fields were added.  If you have
            programs that access this data structure directly, you
            will need to modify them and recompile them under 5.1.

          o The dev.sw.speclibs subsystem includes the non-shared
            libraries used in generating the SPEC benchmark report.
            The default mode of compilation on SGI systems in this
            release is to use position independent code (PIC) and
            dynamic shared objects (DSOs). There is a very small
            performance penalty associated with DSOs.  For
            essentially all applications, the benefits of DSOs for
            application portability far outweigh the costs of this
            performance penalty.  Use of the non-shared libraries
            is not encouraged.  Please read the
            /usr/lib/nonshared/README file that is present in the
            dev.sw.speclibs subsystem for more details.


       3.2  Kernel_Interface_Changes

       3.2.1  SVR4 DDI/DKI (Device Driver Interface/Device Kernel
       Interface)  SGI now supports the routines and header files
       specified by the System V Release 4 DDI/DKI Reference
       Manual (blue book) for SVR4 and the UNIX System V Release 4
       DDI/DKI Reference Manual for Intel Processors (Includes
       Multiprocessing) (red book), published by UNIX System
       Laboratories.  Conformance to these interfaces should
       improve the ability to port device drivers to Silicon
       Graphics systems, as well as minimize the changes necessary
       to keep a driver working in future releases of IRIX.  Refer
       to the IRIX Device Drivers Programming Guide for details of
       Silicon Graphics extensions to DDI/DKI as well as other
       details needed to write kernel device drivers for IRIX.  The
       device driver objects must remain in COFF format; they do
       not change to ELF.  Driver binaries used with IRIX 4.0.x are
       not supported.  They must be recompiled, and some design
       changes are required for IRIX 5.0.1 and later.

       3.2.2  New_Procedures_for_Device_Driver_Configuration  The
       ``system file'' that specifies modules to load into the
       kernel is now a ``system directory''; that is, the
       configuration data is now the concatenation of all files in
       the directory.  This allows for release upgrades that do not
       clobber private modifications to the configuration.  In
       addition, the system files no longer rely upon CPU-specific
       virtual address mappings to probe for devices.  See
       lboot(1M) and system(4) for details.












                                  - 6 -



       3.2.3  Loadable_Device_Drivers  As of 5.0.1, IRIX supports
       dynamic loading and unloading of block, character, and
       STREAMS modules into a running kernel.  See mload(4) and
       lboot(4) for details.

       3.2.4  Vnode/VFS_Interface  The IRIX 5.0.1 kernel was
       converted to use the Vnode/VFS interfaces to support
       different types of filesystems.  In IRIX 4.0, the File
       System Switch (FSS) provided this functionality.  The
       conversion to vnodes makes it far easier to provide support
       for new file system types in IRIX.

       3.2.5  DLPI_(Data_Link_Provide_Interface)  As of release
       5.0.1, IRIX supports the connectionless mode of this
       interface to provide alternate protocol stacks over
       Ethernet.  See dlpi(7) for details.











































 



                                  - 1 -



       4.  Bug_Fixes

       This section lists the significant bugs fixed in the
       compilers and in IRIX since the IRIX 4.0.1 release.

       4.1  IRIX_Bug_Fixes

          o Numerous additional prototypes have been added to
            header files for use when compiling for ANSI/ISO C.

          o The usinit now allows multiple processes with a
            different uid to attach to the shared arena.















































 



                                  - 1 -



       5.  Known_Problems_and_Workarounds

       This section lists known problems with the IRIS Development
       Option version 5.2.

       5.1  IRIX

          o The clock(3c) function in this release is defined to
            return the amount of processor time used since the
            first call to clock by the process.  This is
            inconsistent with the Standard, which defines clock as
            simply returning the processor time used by the
            process.  The discrepancy is transparent, however, in
            the usual case where two invocations of clock are used
            to time an interval.

            As this inconsistency is widespread on UNIX systems,
            its status in future releases might not change.  As
            discussed previously, (and, as recommended in the
            Standard), make sure that any timing information is
            generated by subtracting the values returned by two
            invocations of clock, one at the beginning of your
            program and one at the end.