summaryrefslogtreecommitdiff
path: root/etc/ACE-porting.html
blob: 848011de67f537f6549e54b584cff384b26845ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<HTML>
<HEAD>
   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
   <META NAME="Generator" CONTENT="Microsoft Word 97">
   <META NAME="Template" CONTENT="C:\PROGRAM FILES\MICROSOFT OFFICE\OFFICE\html
.dot">
   <META NAME="GENERATOR" CONTENT="Mozilla/4.05 [en] (Win95; I) [Netscape]">
   <TITLE>Porting ACE to a New OS Platform</TITLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#FF0000">

<HR><P>
<H3>Porting ACE to a New OS Platform</H3><P>

The <A HREF="http://www.cs.wustl.edu/~schmidt/ACE.html">ACE</A>
framework has been ported to <A
HREF="http://www.cs.wustl.edu/~schmidt/ACE-versions-i.html">many OS
platforms</A>.  Porting ACE to new platforms is fairly
straightforward.  The following document describes the step-by-step
process to use when porting the various <A
HREF="http://www.cs.wustl.edu/~schmidt/ACE-overview.html">components
and layers</A> in ACE to a new OS platform. <P>

<H4>Make a config header file for the target platform</H4>

There exists a different <CODE>config-*.h</CODE> header file in <A
HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/ace/">$ACE_ROOT/ace</A>
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 <A
HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/ace/README">$ACE_ROOT/ace/README</A>
file. <P>

Currently, you must edit this file by hand to port it to new OS
platforms.  It's a good idea to use the config-files for platforms
with similar characteristics as examples.  Ultimately, we plan to <A
HREF="http://squall.tn.cornell.edu/aceconf">auto configure</A> these
files. <P>

<H4>Porting the ACE_OS Class</H4>

The <CODE>ACE_OS</CODE> 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 <EM>many</EM> examples of
how ACE has been ported to other operating systems in the
<CODE>ACE_OS</CODE> class in the
<CODE>$ACE_ROOT/ace/OS.{h,i,cpp}</CODE> files. <P>

<H4>Porting the C++ Wrapper Components</H4>

After porting the <CODE>ACE_OS</CODE> 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 <A
HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/ACE-categories">$ACE_ROOT/ACE-categories</a>
file.  It is easiest to concentrate on porting one category at the
time.  The ACE release contain a <A
HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/tests/README">one-button
test suite</A> in the <A
HREF="http://www.cs.wustl.edu/~schmidt/ACE_wrappers/tests/">$ACE_ROOT/tests/</A>
directory.  These tests can be used to validate the correctness of the
various ACE C++ wrappers as they are ported. <P>

<H4>Porting the higher level components of ACE</H4>

Having ported (and tested) all the components of the ACE OS
adapptation layer and C++ wrappers, you can proceed to port the higher
level components of ACE, such as the Reactor, Service Configurator,
Connector, Acceptor, and Streams frameworks.  At this point, it should
be relatively easy to port the rest of ACE because most of the
platform-dependent code is localized in the lower layers of ACE. <P>

</BODY>
</HTML>