What's New in the Solaris 9 9/04 Operating Environment

Development Tool Enhancements

The Solaris 9 9/04 release includes changes to the makecontext() function. Prior Solaris 9 releases included the following enhancements for development tools:

Changes to makecontext() Function

This feature is new in the Solaris 9 9/04 release.

The semantics of the uc_stack member of the ucontext_t structure have changes as they apply to inputs to the makecontext() libc library function. Binary compatibility is preserved between previous versions of Solaris and Solaris 10.

Applications that use this interface must be updated before they are recompiled. See the makecontext(3C) man page for further information.

SPARC: Locality Groups

This feature is new in the Solaris 9 12/03 release.

The Programming Interfaces Guide now includes a chapter that explains the interfaces that interact with locality groups (lgroups). These interfaces can be used to help an application efficiently allocate CPU and memory resources. This capability results in improved performance on some systems.

Linkers and Libraries Updates

This feature is new in the Solaris 9 12/02 release.

See Appendix D, New Linker and Libraries Features and Updates, in Linker and Libraries Guide for the most current updates. This manual describes new linker-editor features in the Solaris 9 system, such as string table compression, unreferenced section elimination, and unreferenced dependency detection.

Smart Card Interfaces

This feature is new in the Solaris 9 8/03 release.

Solaris smart card interfaces are a set of public interfaces for Smart Card Terminals. Card-terminal vendors can implement these interfaces in a user-level shared library to provide device-level support for their smart card terminals in Solaris. The set of Solaris smart card terminal interfaces is based on card terminal interfaces that are available as part of the Linux Smartcard framework. Card terminal support libraries from Linux can be ported to Solaris with minimum effort.

Stack Check APIs

This feature is new in the Solaris 9 4/03 release.

Stack Check APIs allow for advanced interaction with stack-checking compiler support. Stack-checking compiler support is available in ForteTM 7.0. These APIs should be used in applications that are compiled with stack checking enabled. These are applications that manage their own stacks or attempt to detect their own stack overflows.

Developers who maintain their own thread library need to use the setustack interface to enable consumers of their library to compile with stack checking enabled.

See the stack_getbounds(3C), stack_setbounds(3C), stack_inbounds(3C), and stack_violation(3C) man pages.

Memory Allocation With libumem

This feature is new in the Solaris 9 4/03 release.

libumem is a user-mode (nonkernel mode) memory allocator library. libumem has features that enable you to debug memory leaks and other aberrations that involve memory usage.

This feature is used in the same way that a standard application binary interface (ABI) allocator, such as malloc(), is used. A user-mode application requests an arbitrary number of bytes of memory. Then a pointer is returned that is loaded with the address of the allocated memory.

For further information, see the libumem(3LIB) man page.

A technical white paper about Solaris Memory Placement Optimization and Sun Fire Servers is available at the following Web site:


Sun ONE Application Server

This feature is new for the SPARC platform in the Solaris 9 12/02 release. In the Solaris 9 12/03 release, this feature is also available for the x86 platform. For further information, see Sun ONE Application Server Integration.

Sun ONE Message Queue

The Sun ONE Message Queue is a new feature for the SPARC platform in the Solaris 9 12/02 release. In the Solaris 9 8/03 release, the Sun ONE Message Queue is also available for x86 platforms.

The Solaris 9 12/02 release supports JMS messaging applications. These applications are based on Sun ONE Message Queue, a JMS provider. For further information, see Sun ONE Message Queue.

Enhanced crypt() Function

This feature is new in the Solaris 9 12/02 release.

This Solaris release includes new extensions to the crypt() function and introduces the crypt_gensalt()function. These enhancements allow administrators to change the algorithm that is used to obscure users' UNIX login passwords.

Modules are included for MD5 and Blowfish. The MD5 modules are at crypt_sunmd5 and crypt_bsdmd5. The Blowfish module is at crypt_bsdbf.

Developers can create new modules for alternate password-obscuring algorithms. Application developers must use the crypt_gensalt() function instead of manually generating the salt string for passing to the crypt() function.

Modules for alternate algorithms are specified in the crypt.conf(4) file. The module_path field specifies the path to the shared library object that implements the two required functions:

For further information, see the crypt(3C) and the policy.conf(4) man pages.

New Flags for madvise() Function

This feature is new in the Solaris 9 12/02 release.

The madvise() function enables the kernel to optimize access to a user-defined region of memory. This Solaris release includes three new flags for the madvise() function:

For further information on the madvise() function, see the madvise(3C) man page.

Smartcard Middleware APIs

This feature is new in the Solaris 9 9/02 release.

The Solaris Smartcard framework now provides low-level middleware APIs. These APIs can be used to exchange data with a smart card by using a smart card reader. The APIs can be used in platforms such as the Sun BladeTM and Sun RayTM systems. Applications that are written in the Java language, or in C, can use these interfaces.

For more information, see the libsmartcard(3LIB) man page and the JavaDocs in /usr/share/javadoc/smartcard.