summaryrefslogtreecommitdiffstats
path: root/doc/develenv/direct.t
blob: de64781a05392a59e4f265d12006e9486ea83432 (plain) (blame)
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
@c
@c  COPYRIGHT (c) 1989-2007.
@c  On-Line Applications Research Corporation (OAR).
@c  All rights reserved.
@c
@c  $Id$
@c

@chapter Directory Structure

The RTEMS directory structure is designed to meet
the following requirements:

@itemize @bullet
@item encourage development of modular components.

@item isolate processor and target dependent code, while
allowing as much common source code as possible to be shared
across multiple processors and target boards.

@item allow multiple RTEMS users to perform simultaneous
compilation of RTEMS and its support facilities for different
processors and targets.
@end itemize

The resulting directory structure has processor and
board dependent source files isolated from generic files.  When
RTEMS is configured and built, object directories and
an install point will be automatically created based upon
the target CPU family and BSP selected.  

The placement of object files based upon the selected BSP name
ensures that object files are not mixed across CPUs or targets.
This in combination with the makefiles allows the specific
compilation options to be tailored for a particular target
board.  For example, the efficiency of the memory subsystem for
a particular target board may be sensitive to the alignment of
data structures, while on another target board with the same
processor memory may be very limited.  For the first target, the
options could specify very strict alignment requirements, while
on the second the data structures could be @i{packed} to conserve
memory.  It is impossible to achieve this degree of flexibility
without providing source code.

The RTEMS source tree is organized based on the following variables:

@itemize @bullet

@item functionality,
@item target processor family,
@item target processor model,
@item peripherals, and
@item target board.

@end itemize

Each of the following sections will describe the
contents of the directories in the RTEMS source
tree.  The top of the tree will be referenced
as @code{$@{RTEMS_ROOT@}} in this discussion.

@c
@c  Top Level Tree
@c

@c @ifset use-ascii
@example
@group
                      rtems-VERSION
                           |
   +--------+----+----+----+--+-----+---+-------+--------+
   |        |    |    |       |     |   |       |        |
aclocal automake c contrib  cpukit doc make testsuites tools
@end group
@end example
@c @end ifset

@ifset use-tex
@end ifset

@ifset use-html
@html
@end html
@end ifset

@table @code
@item $@{RTEMS_ROOT@}/aclocal/
This directory contains the custom M4 macros which are available to
the various GNU autoconf @code{configure.ac} scripts throughout 
the RTEMS source tree.  GNU autoconf interprets @code{configure.ac}
files to produce the @code{configure} files used to tailor 
RTEMS build for a particular host and target environment.  The
contents of this directory will not be discussed further in this
document.

@item $@{RTEMS_ROOT@}/automake/
This directory contains the custom GNU automake fragments 
which are used to support the various @code{Makefile.am}
files throughout the RTEMS source tree.  The
contents of this directory will not be discussed
further in this document.

@item $@{RTEMS_ROOT@}/c/
This directory is the root of the portions of the RTEMS source
tree which must be built tailored for a particular CPU model
or BSP.  The contents of this directory will be discussed
in the @ref{Directory Structure c/ Directory} section.

@item $@{RTEMS_ROOT@}/contrib/
This directory contains contributed support software.  Currently
this directory contains the RPM specifications for cross-compilers
hosted on GNU/Linux that target various operating systems
including MinGW, Cygwin, FreeBSD, and Solaris.  The 
cross-compilers produced using these specifications are then
used in a Canadian cross build procedure to produce the various
RTEMS toolsets on a GNU/Linux host.  

This directory also contains RPM specifications for the
prebuilt cross-compilation toolsets provided by the
RTEMS project.  There are separate subdirectories
for each of the components in the RTEMS Cross Compilation
Environment unde the  @code{contrib/crossrpms/} directory.
This directory is configured, built, and installed separately
from the RTEMS executive and tests.  This directory will not
be discussed further in this document.


@item $@{RTEMS_ROOT@}/cpukit/
This directory is the root for all of the "multilib'able"
portions of RTEMS.  This is a GNU way of saying the
contents of this directory can be compiled like the 
C Library (@code{libc.a}) and the functionality is 
neither CPU model nor BSP specific.  The source code
for most RTEMS services reside under this directory.
The contents of this directory will be discussed
in the @ref{Directory Structure CPU Kit Directory} section.

@item $@{RTEMS_ROOT@}/doc/
This directory is the root for all RTEMS documentation.
The source for RTEMS is written in GNU TeXinfo and 
used to produce HTML, PDF, and "info" files.
The RTEMS documentation is configured, built,
and installed separately from the RTEMS executive and tests.
The contents of this directory will be discussed
in the @ref{Directory Structure Documentation Directory} section.

@item $@{RTEMS_ROOT@}/make/
This directory contains files which support the
RTEMS Makefile's.  From a user's perspective, the
most important parts are found in the @code{custom/}
subdirectory.  Each ".cfg" file in this directory
is associated with a specific BSP and describes
the CPU model, compiler flags, and procedure to
produce an executable for the target board.
These files are described in detail in the
@b{RTEMS BSP and Device Driver Development Guide}
and will not be discussed further in this document.

@item $@{RTEMS_ROOT@}/testsuites/
This directory contains the test suites for the 
various RTEMS APIs and support libraries.  The
contents of this directory are discussed in the
@ref{Directory Structure testsuites/ Test Suites} section.

@item $@{RTEMS_ROOT@}/tools/
This directory contains RTEMS specific support utilities which
execute on the development host.  These utilities are divided
into subdirectories based upon whether they are used in the process
of building RTEMS and applications, are CPU specific, or are
used to assist in updating the RTEMS source tree and applications. 
The support utilities used in the process of building RTEMS are
described in @ref{RTEMS Specific Utilities}.  These are the
only components of this subtree that will be discussed in this
document. 

@end table



@c
@c  c/ Directions
@c
@section c/ Directory

The @code{$@{RTEMS_ROOT@}/c/} directory was formerly
the root directory of all RTEMS source code.  At this time, it contains
the root directory for only those RTEMS components
which must be compiled or linked in a way that is specific to a
particular CPU model or board.  This directory contains the 
following subdirectories:

@table @code
@item $@{RTEMS_ROOT@}/c/src/
This directory is logically the root for the RTEMS components
which are CPU model or board dependent.  Thus this directory
is the root for the BSPs and the Ada Test Suites as well
as CPU model and BSP dependent libraries.  The contents of
this directory are discussed in the
@ref{Directory Structure c/src/ Directory} section.
@end table

@c
@c c/src/ Directory
@c 
@subsection c/src/ Directory

As mentioned previously, this directory is logically
the root for the RTEMS components
which are CPU model or board dependent.  The 
following is a list of the subdirectories in this
directory and a description of each.

@table @code
@item $@{RTEMS_ROOT@}/c/src/aclocal/
This directory contains the custom M4 macros which are available to
the various GNU autoconf @code{configure.ac} scripts throughout 
this portion of the RTEMS source tree.  GNU autoconf interprets
@code{configure.ac} files to produce the @code{configure} files used
to tailor RTEMS build for a particular host and target environment.  The
contents of this directory will not be discussed further in this
document.

@item $@{RTEMS_ROOT@}/c/src/ada/
This directory contains the Ada95 language bindings to the 
RTEMS Classic API.

@item $@{RTEMS_ROOT@}/c/src/ada-tests/
This directory contains the test suite for the Ada
language bindings to the Classic API.

@item $@{RTEMS_ROOT@}/c/src/automake/
This directory contains files which are "Makefile fragments."
They are included as required by the various @code{Makefile.am}
files throughout this portion of the RTEMS source tree.

@item $@{RTEMS_ROOT@}/c/src/lib/
This directory contains the directories @code{libbsp/}
and @code{libcpu/} which contain the source code for
the Board Support Packages (BSPs) and CPU Model 
specific source code for RTEMS.  

The @code{libbsp/} is organized based upon the CPU
family and boards BSPs.  The contents of @code{libbsp/}
are discussed briefly in 
@ref{Directory Structure c/src/lib/libbsp BSP Directory}
and presented in detail in the
@b{RTEMS BSP and Device Driver Development Guide}.

The @code{libcpu/} directory is also organized by
CPU family with further divisions based upon CPU
model and features that are shared across CPU models
such as caching and DMA.

@item $@{RTEMS_ROOT@}/c/src/libchip/
This directory contains device drivers for various
peripheral chips which are designed to be CPU and
board dependent.  This directory contains a variety
of drivers for serial devices, network interface
controllers, shared memory and real-time clocks.

@item $@{RTEMS_ROOT@}/c/src/librtems++/
This directory contains C++ classes which map to the RTEMS
Classic API.

@item $@{RTEMS_ROOT@}/c/src/make/
This directory is used to generate the bulk of the supporting
rules files which are installed as part of the Application Makefiles.
This file contains settings for various Makefile variables to 
tailor them to the particular CPU model and BSP configured.

@item $@{RTEMS_ROOT@}/c/src/nfsclient/
This directory contains a Network File System (NFS) client
for RTEMS.  With this file system, a user's application can
access files on a remote computer.

@item $@{RTEMS_ROOT@}/c/src/optman/
This directory contains stubs for the RTEMS Classic API
Managers which are considered optional and whose use 
may be explicitly forbidden by an application.  All of the
directive implementations in this Optional Managers 
return @code{E_NOTCONFIGURED}.

@item $@{RTEMS_ROOT@}/c/src/support/
This directory exists solely to generate the RTEMS
version string which includes the RTEMS version,
CPU architecture, CPU model, and BSP name.

@item $@{RTEMS_ROOT@}/c/src/wrapup/
This directory is responsible for taking the individual
libraries and objects built in each of the components
in the RTEMS source tree and bundling them together to form
the single RTEMS library @code{librtemsbsp.a}.  This
library contains all BSP and CPU model specific software.

@end table

@c
@c  c/src/lib/libbsp BSP Directory
@c

@subsubsection c/src/lib/libbsp BSP Directory

The "libbsp" directory contains a directory for each CPU family supported
by RTEMS.  Beneath each CPU directory is a directory for each BSP for that
processor family.

@c
@c  Tree 7 - C BSP Library
@c

The "libbsp" directory provides all the BSPs provided with this
release of the RTEMS executive.  The subdirectories are
divided,  as discussed previously, based on specific processor
family, then further broken down into specific target board
environments.  The "no_cpu" subdirectory provides a starting point
template BSP which can be used to develop a specific BSP for an
unsupported target board.  The files in this subdirectory may aid
in preliminary testing of the RTEMS development environment that has
been built for no particular target in mind.

Below each CPU dependent directory is a directory for each target BSP
supported in this release.

Each BSP provides the modules which comprise an RTEMS BSP.  The 
modules are separated into the subdirectories "clock", "console", 
"include", "shmsupp", "startup", and "timer" as shown in the following 
figure:

@c
@c  Tree 8 - Each BSP
@c

@c @ifset use-ascii
@example
@group
                           Each BSP
                               |
  +-----------+----------+-----+-----+----------+----------+
  |           |          |           |          |          |
clock      console    include     shmsupp    startup     timer
@end group
@end example
@c @end ifset

@c
@c  CPU Kit Directory
@c
@section CPU Kit Directory

@c The @code{cpukit/} directory structure is as follows:

@c
@c  CPU Kit Tree
@c

@c @ifset use-ascii
@c @example
@c @group
@c                        cpukit
@c                          |
@c   +-----------+----------+-----------+----------+
@c   |           |          |           |          |
@c posix       rtems       sapi       score     wrapup
@c @end group
@c @end example
@c @end ifset

The @code{cpukit/} directory contains a set of subdirectories which
contains the source files comprising the executive portion of
the RTEMS development environment as well as portable support
libraries such as support for the C Library and filesystems.
The API specific and "SuperCore" (e.g. @code{score/} directory)
source code files are separated into distinct directory trees.

The following is a description of each of the subdirectories 
under @code{cpukit/}:

@table @code

@item $@{RTEMS_ROOT@}/cpukit/aclocal/
This directory contains the custom M4 macros which are available to
the various GNU autoconf @code{configure.ac} scripts throughout 
the CPU Kit portion of the RTEMS source tree. 
GNU autoconf interprets @code{configure.ac}
files to produce the @code{configure} files used to tailor 
RTEMS build for a particular host and target environment.  The
contents of this directory will not be discussed further in this
document.

@item $@{RTEMS_ROOT@}/cpukit/automake/
This directory contains files which are "Makefile fragments."
They are included as required by the various @code{Makefile.am}
files throughout the CPU Kit portion of the RTEMS source tree.

@item $@{RTEMS_ROOT@}/cpukit/ftpd/
This directory contains the RTEMS ftpd server.

@item $@{RTEMS_ROOT@}/cpukit/httpd/
This directory contains the port of the GoAhead
web server to RTEMS.

@item $@{RTEMS_ROOT@}/cpukit/include/
This directory contains header files which are private to
RTEMS and not considered to be owned by any other component
in the CPU Kit.

@item $@{RTEMS_ROOT@}/cpukit/libblock/
This directory contains support code for using 
Block Devices such as hard drives, floppies, and
CD-ROMs.  It includes the generic IO primitives
for block device drivers, disk caching support,
and a RAM disk block device driver.

@item $@{RTEMS_ROOT@}/cpukit/libcsupport/
This directory contains the RTEMS specific support routines
for the Newlib C Library.  This includes what are referred
to as system calls and found in section 2 of the traditional
UNIX manual.   In addition, it contains a thread-safe
implementation of the Malloc family of routines as well
as BSD and POSIX services not found in Newlib.

@item $@{RTEMS_ROOT@}/cpukit/libfs/
This directory contains the various non-networked
filesystem implementations for RTEMS.  It includes
the In-Memory FileSystem (IMFS), the mini-IMFS,
and FAT filesystems.

@item $@{RTEMS_ROOT@}/cpukit/libi2c/
This directory contains the RTEMS I2C framework.

@item $@{RTEMS_ROOT@}/cpukit/libmd/
This directory contains a port of the standard MD5
checksum code.

@item $@{RTEMS_ROOT@}/c/src/libmisc/
This directory contains support facilities which 
are RTEMS specific but otherwise unclassified.  In
general, they do not adhere to a standard API.  
Among the support facilities in this directory are
a @code{/dev/null} device driver, the Stack
Overflow Checker, a mini-shell, the CPU and 
rate monotonic period usage monitoring libraries,
and a utility to "dump a buffer" in a nicely
formatted way similar to many ROM monitors.

@item $@{RTEMS_ROOT@}/cpukit/libnetworking/
This directory contains the port of the FreeBSD 
TCP/IP stack to RTEMS.

@item $@{RTEMS_ROOT@}/cpukit/librpc/
This directory contains the port of the FreeBSD
RPC/XDR source to RTEMS.

@item $@{RTEMS_ROOT@}/cpukit/posix/
This directory contains the RTEMS implementation
of the threading portions of the POSIX API.  

@item $@{RTEMS_ROOT@}/cpukit/pppd/
This directory contains a port of the free implementation
of the PPPD network protocol.

@item $@{RTEMS_ROOT@}/cpukit/rtems/
This directory contains the implementation of the
Classic API.

@item $@{RTEMS_ROOT@}/cpukit/sapi/
This directory contains the implementation of RTEMS
services which are required but beyond the realm
of any standardization efforts.  It includes 
initialization, shutdown, and IO services.

@item $@{RTEMS_ROOT@}/cpukit/score/
This directory contains the "SuperCore" of RTEMS.
All APIs are implemented in terms of SuperCore services.
For example, Classic API tasks and POSIX threads
are all implemented in terms of SuperCore threads.
This provides a common infrastructure and a high degree
of interoperability between the APIs.  For example, 
services from all APIs may be used by any task/thread
independent of the API used to create it.

Within the @code{score/} directory the CPU dependent modules are found.
The @code{score/cpu/} subdirectory contains a subdirectory for each
target CPU supported by this release of the RTEMS
executive.  Each processor directory contains the CPU dependent
code necessary to host RTEMS.  The @code{no_cpu} directory provides a
starting point for developing a new port to an unsupported
processor.  The files contained within the @code{no_cpu} directory
may also be used as a reference for the other ports to specific
processors.

@item $@{RTEMS_ROOT@}/cpukit/shttpd/
This directory contains the port of the Simple HTTPD
web server to RTEMS.

@item $@{RTEMS_ROOT@}/cpukit/telnetd/
This directory contains the RTEMS telnetd server.

@item $@{RTEMS_ROOT@}/cpukit/wrapup/
This directory is responsible for taking the individual
libraries and objects built in each of the components
in the RTEMS CPU Kit source tree and bundling them
together to form the single RTEMS library @code{librtemscpu.a}.  This
library contains all BSP and CPU model specific software.

@item $@{RTEMS_ROOT@}/cpukit/zlib/
This directory contains a port of the GNU Zlib compression
library to RTEMS.

@end table

@c
@c  testsuites/ Test Suites
@c
@section testsuites/ Test Suites

This directory provides all of the RTEMS Test Suite
except those for the Classic API Ada95 binding
This includes the single processor tests, multiprocessor tests,
timing tests, library tests, and sample tests.   Additionally,
subdirectories for support functions and test related header
files are provided.  The following table lists the test suites
currently included with the RTEMS and the directory in which
they may be located:

@table @code

@item $@{RTEMS_ROOT@}/testsuites/libtests/
This directory contains the test suite for the
various RTEMS support components.

@item $@{RTEMS_ROOT@}/testsuites/mptests/
This directory contains the test suite for the 
multiprocessor support in the Classic API.
The tests provided address two node configurations
and provide coverage for the multiprocessor code found
in RTEMS.

@item $@{RTEMS_ROOT@}/testsuites/psxtests/
This directory contains the test suite for the 
RTEMS POSIX API.

@item $@{RTEMS_ROOT@}/testsuites/samples/
This directory provides sample application tests
which aid in the testing a newly built RTEMS environment, a new
BSP, or as starting points for the development of an application
using the RTEMS executive.  They are discussed in
@ref{Sample Applications}.

@item $@{RTEMS_ROOT@}/testsuites/sptests/
This directory contains the test suite for the RTEMS
Classic API when executing on a single processor.
The tests were originally designed to provide
near complete test coverage for the entire
executive code.  With the addition of multiple APIs,
this is no longer the case as some SuperCore functionality
is not available through the Classic API.  Thus
some functionality in the SuperCore is only covered
by tests in the POSIX API Test Suites.

@item $@{RTEMS_ROOT@}/testsuites/support/
This directory contains support software and header files
for the various test suites.

@item $@{RTEMS_ROOT@}/testsuites/tmtests/
This directory contains the timing test suite for
the RTEMS Classic API.  This include tests that
benchmark each directive in the Classic API
as well as a set of critical SuperCore functions.
These tests are important for helping to verify
that RTEMS performs as expected on your target hardware.
It is not uncommon to discover mistakes in board 
initialization such as caching being disabled as
a side-effect of analyzing the results of these tests.

@item $@{RTEMS_ROOT@}/testsuites/tools/
This directory contains tools which execute on 
the development host and aid in executing and
evaluating the results of the test suite.  The
tools @code{difftest} compares the output of one
or more tests with the expected output.  If you
place the output of all the @code{tmtests/} in
a single file, then the utility @code{sorttimes} 
will be able to produce a report organizing the
execution times by manager.

@end table


@c
@c  Documentation Directory
@c
@section Documentation Directory

This directory contains the source code for all RTEMS documentation
in @code{TexInfo} format as well as utilities used in the generation
of the RTEMS documentation set.  This source code is used to produce
the RTEMS documentation in various formats including PDF, HTML,
and PostScript.

@table @code

@item $@{RTEMS_ROOT@}/doc/ada_user/
This directory contains the source code for the @cite{RTEMS
Applications Ada User's Guide} which documents the Ada95 
binding to the Classic API.  This manual is produced from
from the same source base as the @cite{RTEMS Application
C User's Guide}.

@item $@{RTEMS_ROOT@}/doc/bsp_howto/
This directory contains the source code for the 
@cite{RTEMS BSP and Device Driver Development Guide}.

@item $@{RTEMS_ROOT@}/doc/common/
This directory contains the source code for the files which 
are shared across multiple manuals in the RTEMS Documentation Set.
This includes the copyright page as well as the timing 
tables which can be filled in on a per BSP basis in the 
CPU supplements.

@item $@{RTEMS_ROOT@}/doc/cpu_supplement/
This directory contains the source code for the 
RTEMS CPU Supplement.

@item $@{RTEMS_ROOT@}/doc/develenv/
This directory contains the source code for the 
@cite{RTEMS Development Environment Guide}.  This is
the document you are currently reading.

@item $@{RTEMS_ROOT@}/doc/filesystem/
This directory contains the source code for the 
@cite{RTEMS Filesystem Design Guide}.  This manual 
is a continuous work in process as it attempts to
capture the design of the interface between system
calls and filesystem implementations as well as the
information required by those implementing filesystems.

@item $@{RTEMS_ROOT@}/doc/images/
This directory contains the source code for the graphics
used in the HTML version of the RTEMS Documentation.

@item $@{RTEMS_ROOT@}/doc/networking/
This directory contains the source code for the 
@cite{RTEMS Network Supplement}.  

@item $@{RTEMS_ROOT@}/doc/new_chapters/
This directory contains the source code for the new documentation
components which have not yet been collected into a new manual or
merged into an existing document.  Currently, this primarily 
contains draft documentation for some portions of 
the facilities implemented in @code{$@{RTEMS_ROOT@}/c/src/libmisc/}.

@item $@{RTEMS_ROOT@}/doc/porting/
This directory contains the source code for the
@cite{RTEMS Porting Guide}.

@item $@{RTEMS_ROOT@}/doc/posix1003.1/
This directory contains the source code for the 
@cite{RTEMS POSIX 1003.1 Compliance Guide}. 

@item $@{RTEMS_ROOT@}/doc/posix_users/
This directory contains the source code for the 
@cite{RTEMS POSIX API User's Guide}.  It is important to
note that RTEMS' support for POSIX is a combination of 
functionality provided by RTEMS and the Newlib C Library
so some functionality is documented by Newlib.

@item $@{RTEMS_ROOT@}/doc/relnotes/
This directory contains the source code for a formally
release notes document.  This has not been used for 
recent RTEMS releases.

@item $@{RTEMS_ROOT@}/doc/started/
This directory contains the source code for the 
@cite{Getting Started with RTEMS for C/C++ Users} manual.

@item $@{RTEMS_ROOT@}/doc/started_ada/
This directory contains the source code for the 
@cite{Getting Started with RTEMS for Ada Users} manual.

@item $@{RTEMS_ROOT@}/doc/tools/
This directory contains the source code for the tools
used on the development host to assist in producing the
RTEMS Documentation.  The most important of these tools
is @code{bmenu} which generates the hierarchical node
linking commands based upon chapter, section, and
subsection organization.

@item $@{RTEMS_ROOT@}/doc/user/
This directory contains the source code for the @cite{RTEMS
Applications C User's Guide} which documents the Classic API.

@end table