ACE, TAO, and CIAO have been ported to many OS platforms. Porting ACE, TAO, and CIAO 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 and CIAO, as well.
Before starting a port that you plan to contribute back to the ACE+TAO+CIAO open-source community, we recommend that you do the following:
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, though on some platforms it's possible to use the ACE autoconf script. It's a good idea to use
the config-*.h
files for platforms with similar
characteristics as examples.
ACE_OS
NamespaceACE_OS
namespace encapsulates most of variation
between the different OS implementations, e.g., UNIX, Win32,
and various real-time operating systems. It is the core of the ACE OS
abstraction layer. Most work required to port ACE to a new OS
platform resides in this namespace. 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_NS_*.{h,inl,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
ACE_VXWORKS
) - VxWorks
ACE_OS::thr_*
functions.
ACE_OS
namespace, the next step is to
port all of the ACE C++ wrapper facade 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 regression test suite
in the $ACE_ROOT/tests/ directory. These
tests can be used to validate the correctness of the various ACE C++
wrapper facades as they are ported.
ACE_HAS_EXCEPTIONS
must be defined.
If you are considering STL, you might consider STLport, which is a port of the SGI STL to numerous platforms that ACE, TAO, and CIAO also support.
Back to the ACE
documentation page.
Back to ACE Documentation Home.