The ACE framework and the TAO ORB have been ported to many OS platforms. Porting ACE and TAO to new platforms is fairly easy. The following document describes the step-by-step process to use when porting the various components and layers in ACE to a new OS platform. Once ACE is ported, it is straightforward to port TAO, as well.
config.h
Header File for the Target OS Platformconfig-*.h
header file exists in $ACE_ROOT/ace
for each platform to which ACE has been ported. This file contains
the portability macros for each particular configuration of ACE. A
complete description of the existent macros can be found in the $ACE_ROOT/ace/README
file.
Currently, you must edit this file by hand to port it to new OS
platforms. It's a good idea to use the config-*.h
files
for platforms with similar characteristics as examples. Ultimately,
we plan to auto
configure these files.
ACE_OS
ClassACE_OS
class encapsulates most of variation between
the different OS implementations, e.g., UNIX, Win32, and
various real-time operating systems. It is the core class of the ACE
OS abstraction layer. Most work required to port ACE to a new OS
platform resides in this class. There are many examples of
how ACE has been ported to other operating systems in the
ACE_OS
class in the
$ACE_ROOT/ace/OS.{h,i,cpp}
files.
Optional features in pthreads are covered by ACE_HAS_*
and/or ACE_LACKS_*
macros, which are described in the $ACE_ROOT/ace/README
file. Particular platform features, such as DCE pthreads calls that
end in _np
, should be bracketed by platform defines
rather than by inventing more ACE_HAS_*
or
ACE_LACKS_*
definitions.
An important part of porting ACE to a new platform is to map the threading API correctly. Currently, ACE has support for the following thread APIs:
ACE_HAS_STHREADS
) - Solaris 2, UnixWare.
ACE_HAS_PTHREADS
) - drafts 4
[DCE], 6 [FSU], 7 [AIX], as well as the final standard (also
called draft 10) [MIT, Linux, and Solaris].
ACE_HAS_WTHREADS
) - Windows
NT, Windows '95/98, and Windows CE
VXWORKS
) - VxWorks
ACE_OS::thr_*
functions.
ACE_OS
class, the next step is to port
all of the ACE C++ wrapper components, such as sockets, threads,
synchronization mechanisms. A full list of the categories and classes
can be found in the $ACE_ROOT/ACE-categories
file. It is easiest to concentrate on porting one category at the
time. The ACE release contain a one-button
test suite in the $ACE_ROOT/tests/
directory. These tests can be used to validate the correctness of the
various ACE C++ wrappers as they are ported.
ACE_HAS_EXCEPTIONS
is defined.
ACE_HAS_ANSI_CASTS
is
enabled, then the various ACE_*_cast
macros will
utilize these casts. Otherwise, the macros will default to
"C-style" casts.
ACE_HAS_BROKEN_NAMESPACES
is not enabled.
If you are considering STL, you might consider STLport, which is a port of the SGI STL to numerous platforms that ACE and TAO also support.
Back to the ACE
documentation page.
Back to ACE Documentation Home.