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 6.0
       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 6.0 IRIS Development
       Option:

       Software Product               IRIS Development
                                      Option

       Version                        6.0
       Product Code                   SC4-IDO-6.0

       System Software Requirements   IRIX 6.0

       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  6.0_Base_Development_Subsystems

       The 6.0 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)              2994
       dev.books.IRIX_SysPG (default)              4360
       dev.books.IndigoMagic_IG (default)          1896
       dev.hdr.lib (default)                       2310
       dev.man.irix_lib (default)                  5247
       dev.man.relnotes (default)                     6
       dev.sw.abi                                 18331
       dev.sw.irix_speclibs                       34070
       dev.sw.lib (default)                        9848
       dev.sw.make (default)                        303















































 



                                  - 1 -



       3.  Changes_and_Additions

       The features in this chapter are for IRIX 6.0.  Since IRIX
       6.0 is based on the IRIX 5.2 many of these changes have be
       noticed during the transition from IRIX 4.X to IRIX 5.2.

       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 6.0 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 like
            it was in IRIX 5.2, 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 6.0 release complies with the POSIX 1003.1-1990
            specification.

          o IRIX 4.0 source programming interfaces to system calls
            and system libraries in IRIX 6.0 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 6.0.

          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 6.0.  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.  Using this
            mechanism, multiple occurrences of the same signal can











                                  - 3 -



            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 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)).

            There are now additional test_and_set(3P) primitives
            between 64 and 32 bit programs.  (see test_and_set(3P)
            for more details).

          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 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 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 6.0 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
            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 6.0,
            or 5.1 and later.












                                  - 5 -



          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.

          o Default compilation on a 64 bit machine is for 64 bit
            "mips-4" binaries. To change this behavior use the
            environment variable SGI_ABI to "-32" which will
            product "mips-1" binaries.

          o 32 bit binaries that use the nlist call into the kernel
            will not work properly.  (see nlist(3X)).

          o 64 bit libs are broken down as follows :
            /usr/lib64
                    *.so
                    *.a
                    mips3/
                            *.so
                            *.a
                            nonshared/
                                    *.a
                    mips4/
                            *.so
                            *.a
                            nonshared/
                                    *.a
                    nonshared/
                            *.a
            The search algorithm: e.g. in the case that -mips4 is
            specified, ld will first look in /usr/lib64/mips4,
            following that, ld will look in /usr/lib64.  In the
            case of -mips3 is specified, ld will first look in
            /usr/lib64/mips3, then in /usr/lib64.


       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











                                  - 6 -



       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 maybe required for IRIX 6.0.

       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.

       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 6.0 kernel also uses
       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)  Not support for
       IRIX 6.0.






















 



                                  - 1 -



       4.  Bug_Fixes

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

       4.1  IRIX_Bug_Fixes

          o Currently bug compatible with IRIX 5.2.



















































 



                                  - 1 -



       5.  Known_Problems_and_Workarounds

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

       5.1  IRIX

          o A warning message will be produced from ld when linking
            with both libc and libm (64 bits) if using the function
            qlogb.  In the next release this symbol will reside in
            libm only.  Please make if you use the quad math
            functions please link with libm.