Solaris 64-bit Developer's Guide
PrefaceThe capabilities of the Solaris operating environment
continue to expand to meet customer needs. The Solaris operating environment
was designed to fully support both the 32-bit and 64-bit architectures.
It provides an environment for building and running 64-bit applications that
can use large files and
large virtual address spaces. At the same time, it continues to provide maximum
source and binary compatibility and interoperability for 32-bit applications. In
fact, most of the system commands that run and have been built on the Solaris
64-bit implementation are 32-bit programs.
The major differences between the 32-bit and the 64-bit application
development environments are that 32-bit applications are based on the ILP32 data model, where ints, longs, and pointers are 32 bits, while 64-bit
applications are based on the LP64
model, where longs and pointers are 64 bits and the other
fundamental types are the same as in ILP32.
Most applications can remain as 32-bit programs with no changes required.
Conversion is necessary only if the application has one or more of the following
requirements:
Needs more than 4 gigabytes of virtual address space
Reads and interprets kernel memory using libkvm, /dev/mem, or /dev/kmem
Uses /proc to debug 64-bit processes
Uses a library that has only a 64-bit version
Needs full 64-bit registers to do efficient 64-bit arithmetic
Specific interoperability issues can also require code changes. For
example, if your application uses files larger than 2 gigabytes, you might
want to convert it to 64-bit.
In some cases, it is better to convert applications to 64-bit for performance
reasons. For example, you might need the 64-bit registers to do efficient
64-bit arithmetic or you might want to take advantage of other performance
improvements that a 64-bit instruction set provides.
Who Should Use This Book
This document is written for C and C++ developers and provides guidance
on how to determine whether an application is 32-bit or 64-bit. It lists the
similarities and differences between the 32-bit and 64-bit application environments,
explains how to write code that is portable between the two environments,
and describes the tools provided by the operating system for developing 64-bit
applications.
How This Book Is Organized
This book is organized into the following chapters.
Chapter 1, 64-bit Computing, "64-bit Computing,"
describes the motivation behind 64-bit computing and gives an overview
of the benefits of 64-bit applications.
Chapter 2, When to Use 64-bit, "When to Use 64-bit,"
explains the differences between the Solaris 32-bit and 64-bit build and runtime
environments. It is written to help the application developer determine if
and when it is appropriate to convert code to be 64-bit safe.
Chapter 3, Comparing 32-bit and 64-bit Interfaces, "Comparing 32-bit and
64-bit Interfaces," focuses on the similarities between 32-bit
and 64-bit applications and interfaces.
Chapter 4, Converting Applications, "Converting Applications,"
describes how to convert current 32-bit code to 64-bit safe code and
the tools available for making this process easier. The focus of this chapter
is on writing portable code. It applies to converting existing applications
or writing new applications capable of running in both 32-bit and 64-bit environments.
Chapter 5, The Development Environment, "The Development Environment,"
focuses on the build environment, including headers, compilers, and libraries,
as well as packaging guidelines and debugging tools.
Chapter 6, Advanced Topics, "Advanced Topics,"
is an overview of 64-bit systems programming, the ABI, and some performance
issues.
Appendix A, Changes in Derived Types, "Changes in Derived Types,"
highlights many of the derived types that have changed in the 64-bit application
development environment.
Appendix B, Frequently Asked Questions (FAQs), "Frequently Asked Questions,"
provides answers to the most commonly asked questions about the 64-bit implementation
and application development environment.
Related Books
For further reading, the following are recommended:
American National Standard for Information Systems Programming
Language - C, ANSI X3.159-1989
SPARC Architecture Manual, Version 9, SPARC International
SPARC Compliance Definition, Version 2.4, SPARC International
Large Files in Solaris: A White Paper,
Part No: 96115-001
Solaris 8 Reference Manual
Writing Device Drivers, Part No: 805-7378
Sun WorkShop C User's Guide, Version 5.0,
Part No: 805-4952
|