Analysis of the application is the most important piece of work that can be done prior to the actual porting step. If done with extreme care, it can uncover hidden gotchas that can help further refine the overall project plan. In some rare cases, the application may use platform-specific features that are not yet supported by Linux. In this case, the porting personnel have to look for a workaround or equivalent functionality in Linux. Fortunately, today's version of Linux supports the most commonly used API standards, such as POSIX threads, large pages, asynchronous I/O, message queues, 64-bit architecture, and many more. Finding equivalent functionality in lieu of the original functionality from the source platform has never been easier.
Here are some of the important highlights discussed in this chapter:
The document "Conflicts between ISO/IEC 9945 (POSIX) and the Linux Standard Base" elaborates on Linux standards support.
Linux provides support for three library versioning methodsinternal, external, and symbol versioning.
Through the native POSIX threads library, Linux now supports a more complete implementation of POSIX threads, which makes porting of multithreaded applications to Linux easier.
Linux provides large page support for applications that use large page support from UNIX platforms.
An environment aspect such as endianness affects those applications to be ported on a case-by-case basis. Endianness is a factor only if the application has specific routines that may be affected when coming from platforms that do not have the same bit ordering architecture as the Linux platform the application is being ported to.
32- to 64-bit application migration should be treated as a separate port altogether. If the application to be ported is a 32-bit application and the port requires the application to run on Linux as a 64-bit application, treat these as two separate porting projectsthe first being the port of the 32-bit application to Linux and the second being the migration from the ported 32-bit application to a 64-bit application on Linux.
Whereas this chapter gives a picture of what Linux 2.6 has to offer in general, the porting chapters for Solaris, AIX, and HP-UX elaborate more on these technical features by citing differences and similarities between Linux and each of these UNIX platforms. The porting chapters are next.