URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Subversion Repositories or1k
Compare Revisions
- This comparison shows the changes necessary to convert path
/or1k/trunk/rtems-20020807/doc/common
- from Rev 1028 to Rev 1765
- ↔ Reverse comparison
Rev 1028 → Rev 1765
/wksheets.t
0,0 → 1,409
@c ****** This comment is here to remind you not to edit the wksheets.t |
@c ****** in any directory but common. |
@c |
@c Figures ... |
@c RTEMS RAM Workspace Worksheet |
@c RTEMS Code Space Worksheet |
@c |
@c COPYRIGHT (c) 1988-2002. |
@c On-Line Applications Research Corporation (OAR). |
@c All rights reserved. |
@c |
@c wksheets.t,v 1.7 2002/01/17 21:47:44 joel Exp |
@c |
|
@chapter Memory Requirements |
|
@section Introduction |
|
Memory is typically a limited resource in real-time |
embedded systems, therefore, RTEMS can be configured to utilize |
the minimum amount of memory while meeting all of the |
applications requirements. Worksheets are provided which allow |
the RTEMS application developer to determine the amount of RTEMS |
code and RAM workspace which is required by the particular |
configuration. Also provided are the minimum code space, |
maximum code space, and the constant data space required by |
RTEMS. |
|
@section Data Space Requirements |
|
RTEMS requires a small amount of memory for its |
private variables. This data area must be in RAM and is |
separate from the RTEMS RAM Workspace. The following |
illustrates the data space required for all configurations of |
RTEMS: |
|
@itemize @bullet |
@item Data Space: RTEMS_DATA_SPACE |
@end itemize |
|
@section Minimum and Maximum Code Space Requirements |
|
A maximum configuration of RTEMS includes the core |
and all managers, including the multiprocessing manager. |
Conversely, a minimum configuration of RTEMS includes only the |
core and the following managers: initialization, task, interrupt |
and fatal error. The following illustrates the code space |
required by these configurations of RTEMS: |
|
@itemize @bullet |
@item Minimum Configuration: RTEMS_MINIMUM_CONFIGURATION |
@item Maximum Configuration: RTEMS_MAXIMUM_CONFIGURATION |
@end itemize |
|
@section RTEMS Code Space Worksheet |
|
The RTEMS Code Space Worksheet is a tool provided to |
aid the RTEMS application designer to accurately calculate the |
memory required by the RTEMS run-time environment. RTEMS allows |
the custom configuration of the executive by optionally |
excluding managers which are not required by a particular |
application. This worksheet provides the included and excluded |
size of each manager in tabular form allowing for the quick |
calculation of any custom configuration of RTEMS. The RTEMS |
Code Space Worksheet is below: |
|
@ifset use-ascii |
@page |
@end ifset |
@ifset use-tex |
@page |
@end ifset |
|
@page |
@center @b{RTEMS Code Space Worksheet} |
@sp 1 |
|
@ifset use-ascii |
|
The following is a list of the components of the RTEMS code space. The first |
number in parentheses is the size when the component is included, |
while the second number indicates its size when not included. If the second |
number is "NA", then the component must always be included. |
|
@itemize @bullet |
@item Core (RTEMS_CORE_CODE_SIZE, NA) |
@item Initialization (RTEMS_INITIALIZATION_CODE_SIZE, NA) |
@item Task (RTEMS_TASK_CODE_SIZE, NA) |
@item Interrupt (RTEMS_INTERRUPT_CODE_SIZE, NA) |
@item Clock (RTEMS_CLOCK_CODE_SIZE, NA) |
@item Timer (RTEMS_TIMER_CODE_SIZE, RTEMS_TIMER_CODE_OPTSIZE) |
@item Semaphore (RTEMS_SEMAPHORE_CODE_SIZE, RTEMS_SEMAPHORE_CODE_OPTSIZE) |
@item Message (RTEMS_MESSAGE_CODE_SIZE, RTEMS_MESSAGE_CODE_OPTSIZE) |
@item Event (RTEMS_EVENT_CODE_SIZE, RTEMS_EVENT_CODE_OPTSIZE) |
@item Signal (RTEMS_SIGNAL_CODE_SIZE, RTEMS_SIGNAL_CODE_OPTSIZE) |
@item Partition (RTEMS_PARTITION_CODE_SIZE, RTEMS_PARTITION_CODE_OPTSIZE) |
@item Region (RTEMS_REGION_CODE_SIZE, RTEMS_REGION_CODE_OPTSIZE) |
@item Dual Ported Memory (RTEMS_DPMEM_CODE_SIZE, RTEMS_DPMEM_CODE_OPTSIZE) |
@item I/O (RTEMS_IO_CODE_SIZE, RTEMS_IO_CODE_OPTSIZE) |
@item Fatal Error (RTEMS_FATAL_ERROR_CODE_SIZE, NA) |
@item Rate Monotonic (RTEMS_RATE_MONOTONIC_CODE_SIZE, RTEMS_RATE_MONOTONIC_CODE_OPTSIZE) |
@item Multiprocessing (RTEMS_MULTIPROCESSING_CODE_SIZE, RTEMS_MULTIPROCESSING_CODE_OPTSIZE) |
@end itemize |
@end ifset |
|
@ifset use-tex |
|
@tex |
\line{\hskip 0.50in\vbox{\offinterlineskip\halign{ |
\vrule\strut#& |
\hbox to 2.25in{\enskip\hfil#\hfil}& |
\vrule#& |
\hbox to 1.00in{\enskip\hfil#\hfil}& |
\vrule#& |
\hbox to 1.00in{\enskip\hfil#\hfil}& |
\vrule#& |
\hbox to 1.25in{\enskip\hfil#\hfil}& |
\vrule#\cr |
\noalign{\hrule} |
&\bf Component && \bf Included && \bf Not Included && \bf Size &\cr\noalign{\hrule} |
&Core && RTEMS_CORE_CODE_SIZE && NA && &\cr\noalign{\hrule} |
&Initialization && RTEMS_INITIALIZATION_CODE_SIZE && NA && &\cr\noalign{\hrule} |
&Task && RTEMS_TASK_CODE_SIZE && NA && &\cr\noalign{\hrule} |
&Interrupt && RTEMS_INTERRUPT_CODE_SIZE && NA && &\cr\noalign{\hrule} |
&Clock && RTEMS_CLOCK_CODE_SIZE && NA && &\cr\noalign{\hrule} |
&Timer && RTEMS_TIMER_CODE_SIZE && RTEMS_TIMER_CODE_OPTSIZE && &\cr\noalign{\hrule} |
&Semaphore && RTEMS_SEMAPHORE_CODE_SIZE && RTEMS_SEMAPHORE_CODE_OPTSIZE && &\cr\noalign{\hrule} |
&Message && RTEMS_MESSAGE_CODE_SIZE && RTEMS_MESSAGE_CODE_OPTSIZE && &\cr\noalign{\hrule} |
&Event && RTEMS_EVENT_CODE_SIZE && RTEMS_EVENT_CODE_OPTSIZE && &\cr\noalign{\hrule} |
&Signal && RTEMS_SIGNAL_CODE_SIZE && RTEMS_SIGNAL_CODE_OPTSIZE && &\cr\noalign{\hrule} |
&Partition && RTEMS_PARTITION_CODE_SIZE && RTEMS_PARTITION_CODE_OPTSIZE && &\cr\noalign{\hrule} |
&Region && RTEMS_REGION_CODE_SIZE && RTEMS_REGION_CODE_OPTSIZE && &\cr\noalign{\hrule} |
&Dual Ported Memory && RTEMS_DPMEM_CODE_SIZE && RTEMS_DPMEM_CODE_OPTSIZE && &\cr\noalign{\hrule} |
&I/O && RTEMS_IO_CODE_SIZE && RTEMS_IO_CODE_OPTSIZE && &\cr\noalign{\hrule} |
&Fatal Error && RTEMS_FATAL_ERROR_CODE_SIZE && NA && &\cr\noalign{\hrule} |
&Rate Monotonic && RTEMS_RATE_MONOTONIC_CODE_SIZE && RTEMS_RATE_MONOTONIC_CODE_OPTSIZE && &\cr\noalign{\hrule} |
&Multiprocessing && RTEMS_MULTIPROCESSING_CODE_SIZE && RTEMS_MULTIPROCESSING_CODE_OPTSIZE && &\cr\noalign{\hrule} |
&\multispan 5 \bf\hfil Total Code Space Requirements\qquad\hfil&&&\cr\noalign{\hrule} |
}}\hfil} |
@end tex |
@end ifset |
|
@ifset use-html |
@html |
<CENTER> |
<TABLE COLS=4 WIDTH="80%" BORDER=2> |
<TR><TD ALIGN=center><STRONG>Component</STRONG></TD> |
<TD ALIGN=center><STRONG>Included</STRONG></TD> |
<TD ALIGN=center><STRONG>Not Included</STRONG></TD> |
<TD ALIGN=center><STRONG>Size</STRONG></TD></TR> |
<TR><TD ALIGN=center>Core</TD> |
<TD ALIGN=center>RTEMS_CORE_CODE_SIZE</TD> |
<TD ALIGN=center>NA</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=center>Initialization</TD> |
<TD ALIGN=center>RTEMS_INITIALIZATION_CODE_SIZE</TD> |
<TD ALIGN=center>NA</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=center>Task</TD> |
<TD ALIGN=center>RTEMS_TASK_CODE_SIZE</TD> |
<TD ALIGN=center>NA</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=center>Interrupt</TD> |
<TD ALIGN=center>RTEMS_INTERRUPT_CODE_SIZE</TD> |
<TD ALIGN=center>NA</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=center>Clock</TD> |
<TD ALIGN=center>RTEMS_CLOCK_CODE_SIZE</TD> |
<TD ALIGN=center>NA</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=center>Timer</TD> |
<TD ALIGN=center>RTEMS_TIMER_CODE_SIZE</TD> |
<TD ALIGN=center>RTEMS_TIMER_CODE_OPTSIZE</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=center>Semaphore</TD> |
<TD ALIGN=center>RTEMS_SEMAPHORE_CODE_SIZE</TD> |
<TD ALIGN=center>RTEMS_SEMAPHORE_CODE_OPTSIZE</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=center>Message</TD> |
<TD ALIGN=center>RTEMS_MESSAGE_CODE_SIZE</TD> |
<TD ALIGN=center>RTEMS_MESSAGE_CODE_OPTSIZE</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=center>Event</TD> |
<TD ALIGN=center>RTEMS_EVENT_CODE_SIZE</TD> |
<TD ALIGN=center>RTEMS_EVENT_CODE_OPTSIZE</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=center>Signal</TD> |
<TD ALIGN=center>RTEMS_SIGNAL_CODE_SIZE</TD> |
<TD ALIGN=center>RTEMS_SIGNAL_CODE_OPTSIZE</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=center>Partition</TD> |
<TD ALIGN=center>RTEMS_PARTITION_CODE_SIZE</TD> |
<TD ALIGN=center>RTEMS_PARTITION_CODE_OPTSIZE</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=center>Region</TD> |
<TD ALIGN=center>RTEMS_REGION_CODE_SIZE</TD> |
<TD ALIGN=center>RTEMS_REGION_CODE_OPTSIZE</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=center>Dual Ported Memory</TD> |
<TD ALIGN=center>RTEMS_DPMEM_CODE_SIZE</TD> |
<TD ALIGN=center>RTEMS_DPMEM_CODE_OPTSIZE</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=center>I/O</TD> |
<TD ALIGN=center>RTEMS_IO_CODE_SIZE</TD> |
<TD ALIGN=center>RTEMS_IO_CODE_OPTSIZE</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=center>Fatal Error</TD> |
<TD ALIGN=center>RTEMS_FATAL_ERROR_CODE_SIZE</TD> |
<TD ALIGN=center>NA</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=center>Rate Monotonic</TD> |
<TD ALIGN=center>RTEMS_RATE_MONOTONIC_CODE_SIZE</TD> |
<TD ALIGN=center>RTEMS_RATE_MONOTONIC_CODE_OPTSIZE</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=center>Multiprocessing</TD> |
<TD ALIGN=center>RTEMS_MULTIPROCESSING_CODE_SIZE</TD> |
<TD ALIGN=center>RTEMS_MULTIPROCESSING_CODE_OPTSIZE</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=center COLSPAN=3> |
<STRONG>Total Code Space Requirements</STRONG></TD> |
<TD><BR></TD></TR> |
</TABLE> |
</CENTER> |
@end html |
@end ifset |
|
@page |
|
@c ****** Next node is set by a sed script in the document Makefile. |
@c ****** This comment is here to remind you not to edit the wksheets.t |
@c ****** in any directory but common. |
|
@section RTEMS RAM Workspace Worksheet |
|
The RTEMS RAM Workspace Worksheet is a tool provided |
to aid the RTEMS application designer to accurately calculate |
the minimum memory block to be reserved for RTEMS use. This |
worksheet provides equations for calculating the amount of |
memory required based upon the number of objects configured, |
whether for single or multiple processor versions of the |
executive. This information is presented in tabular form, along |
with the fixed system requirements, allowing for quick |
calculation of any application defined configuration of RTEMS. |
The RTEMS RAM Workspace Worksheet is provided below: |
|
@ifset use-ascii |
@page |
@end ifset |
@ifset use-tex |
@sp 2 |
@end ifset |
|
@center @b{RTEMS RAM Workspace Worksheet} |
@sp 2 |
|
@ifset use-ascii |
The total RTEMS RAM Workspace required is the sum of the following: |
|
@itemize @bullet |
@item maximum_tasks * RTEMS_BYTES_PER_TASK |
@item maximum_timers * RTEMS_BYTES_PER_TIMER |
@item maximum_semaphores * RTEMS_BYTES_PER_SEMAPHORE |
@item maximum_message_queues * RTEMS_BYTES_PER_MESSAGE_QUEUE |
@item maximum_regions * RTEMS_BYTES_PER_REGION |
@item maximum_partitions * RTEMS_BYTES_PER_PARTITION |
@item maximum_ports * RTEMS_BYTES_PER_PORT |
@item maximum_periods * RTEMS_BYTES_PER_PERIOD |
@item maximum_extensions * RTEMS_BYTES_PER_EXTENSION |
@item Floating Point Tasks * RTEMS_BYTES_PER_FP_TASK |
@item Task Stacks |
@item maximum_nodes * RTEMS_BYTES_PER_NODE |
@item maximum_global_objects * RTEMS_BYTES_PER_GLOBAL_OBJECT |
@item maximum_proxies * RTEMS_BYTES_PER_PROXY |
@item Fixed System Requirements of RTEMS_BYTES_OF_FIXED_SYSTEM_REQUIREMENTS |
@end itemize |
@end ifset |
|
@ifset use-tex |
@tex |
\line{\hskip 0.75in\vbox{\offinterlineskip\halign{ |
\vrule\strut#& |
\hbox to 3.0in{\enskip\hfil#\hfil}& |
\vrule#& |
\hbox to 0.75in{\enskip\hfil#\hfil}& |
\vrule#& |
\hbox to 1.25in{\enskip\hfil#\hfil}& |
\vrule#\cr |
\noalign{\hrule} |
& \bf Description && \bf Equation && \bf Bytes Required &\cr\noalign{\hrule} |
& maximum\_tasks && * RTEMS_BYTES_PER_TASK = &&&\cr\noalign{\hrule} |
& maximum\_timers && * RTEMS_BYTES_PER_TIMER = &&&\cr\noalign{\hrule} |
& maximum\_semaphores && * RTEMS_BYTES_PER_SEMAPHORE = &&&\cr\noalign{\hrule} |
& maximum\_message\_queues && * RTEMS_BYTES_PER_MESSAGE_QUEUE = &&&\cr\noalign{\hrule} |
& maximum\_regions && * RTEMS_BYTES_PER_REGION = &&&\cr\noalign{\hrule} |
& maximum\_partitions && * RTEMS_BYTES_PER_PARTITION = &&&\cr\noalign{\hrule} |
& maximum\_ports && * RTEMS_BYTES_PER_PORT = &&&\cr\noalign{\hrule} |
& maximum\_periods && * RTEMS_BYTES_PER_PERIOD = &&&\cr\noalign{\hrule} |
& maximum\_extensions && * RTEMS_BYTES_PER_EXTENSION = &&&\cr\noalign{\hrule} |
& Floating Point Tasks && * RTEMS_BYTES_PER_FP_TASK = &&&\cr\noalign{\hrule} |
& Task Stacks &&\hskip 2.3em=&&&\cr\noalign{\hrule} |
& Total Single Processor Requirements &&&&&\cr\noalign{\hrule} |
}}\hfil} |
|
\line{\hskip 0.75in\vbox{\offinterlineskip\halign{ |
\vrule\strut#& |
\hbox to 3.0in{\enskip\hfil#\hfil}& |
\vrule#& |
\hbox to 0.75in{\enskip\hfil#\hfil}& |
\vrule#& |
\hbox to 1.25in{\enskip\hfil#\hfil}& |
\vrule#\cr |
\noalign{\hrule} |
& \bf Description && \bf Equation && \bf Bytes Required &\cr\noalign{\hrule} |
& maximum\_nodes && * RTEMS_BYTES_PER_NODE = &&&\cr\noalign{\hrule} |
& maximum\_global\_objects && * RTEMS_BYTES_PER_GLOBAL_OBJECT = &&&\cr\noalign{\hrule} |
& maximum\_proxies && * RTEMS_BYTES_PER_PROXY = &&&\cr\noalign{\hrule} |
}}\hfil} |
|
\line{\hskip 0.75in\vbox{\offinterlineskip\halign{ |
\vrule\strut#& |
\hbox to 3.0in{\enskip\hfil#\hfil}& |
\vrule#& |
\hbox to 0.75in{\enskip\hfil#\hfil}& |
\vrule#& |
\hbox to 1.25in{\enskip\hfil#\hfil}& |
\vrule#\cr |
\noalign{\hrule} |
& Total Multiprocessing Requirements &&&&&\cr\noalign{\hrule} |
& Fixed System Requirements && RTEMS_BYTES_OF_FIXED_SYSTEM_REQUIREMENTS &&&\cr\noalign{\hrule} |
& Total Single Processor Requirements &&&&&\cr\noalign{\hrule} |
& Total Multiprocessing Requirements &&&&&\cr\noalign{\hrule} |
& Minimum Bytes for RTEMS Workspace &&&&&\cr\noalign{\hrule} |
}}\hfil} |
@end tex |
@end ifset |
|
@ifset use-html |
@html |
<CENTER> |
<TABLE COLS=3 WIDTH="80%" BORDER=2> |
<TR><TD ALIGN=center><STRONG>Description</STRONG></TD> |
<TD ALIGN=center><STRONG>Equation</STRONG></TD> |
<TD ALIGN=center><STRONG>Bytes Required</STRONG></TD></TR> |
<TR><TD ALIGN=left>maximum_tasks</TD> |
<TD ALIGN=right>* RTEMS_BYTES_PER_TASK =</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=left>maximum_timers</TD> |
<TD ALIGN=right>* RTEMS_BYTES_PER_TIMER =</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=left>maximum_semaphores</TD> |
<TD ALIGN=right>* RTEMS_BYTES_PER_SEMAPHORE =</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=left>maximum_message_queues</TD> |
<TD ALIGN=right>* RTEMS_BYTES_PER_MESSAGE_QUEUE =</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=left>maximum_regions</TD> |
<TD ALIGN=right>* RTEMS_BYTES_PER_REGION =</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=left>maximum_partitions</TD> |
<TD ALIGN=right>* RTEMS_BYTES_PER_PARTITION =</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=left>maximum_ports</TD> |
<TD ALIGN=right>* RTEMS_BYTES_PER_PORT =</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=left>maximum_periods</TD> |
<TD ALIGN=right>* RTEMS_BYTES_PER_PERIOD =</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=left>maximum_extensions</TD> |
<TD ALIGN=right>* RTEMS_BYTES_PER_EXTENSION =</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=left>Floating Point Tasks</TD> |
<TD ALIGN=right>* RTEMS_BYTES_PER_FP_TASK =</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=left COLSPAN=2>Task Stacks</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=left COLSPAN=2> |
<STRONG>Total Single Processor Requirements</STRONG></TD> |
<TD><BR></TD></TR> |
<TR></TR> |
<TR><TD ALIGN=center><STRONG>Description</STRONG></TD> |
<TD ALIGN=center><STRONG>Equation</STRONG></TD> |
<TD ALIGN=center><STRONG>Bytes Required</STRONG></TD></TR> |
<TR><TD ALIGN=left>maximum_nodes</TD> |
<TD ALIGN=right>* RTEMS_BYTES_PER_NODE =</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=left>maximum_global_objects</TD> |
<TD ALIGN=right>* RTEMS_BYTES_PER_GLOBAL_OBJECT =</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=left>maximum_proxies</TD> |
<TD ALIGN=right>* RTEMS_BYTES_PER_PROXY =</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=left COLSPAN=2> |
<STRONG>Total Multiprocessing Requirements</STRONG></TD> |
<TD><BR></TD></TR> |
<TR></TR> |
<TR><TD ALIGN=left COLSPAN=2>Fixed System Requirements</TD> |
<TD ALIGN=center>RTEMS_BYTES_OF_FIXED_SYSTEM_REQUIREMENTS</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2>Total Single Processor Requirements</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=left COLSPAN=2>Total Multiprocessing Requirements</TD> |
<TD><BR></TD></TR> |
<TR><TD ALIGN=left COLSPAN=2> |
<STRONG>Minimum Bytes for RTEMS Workspace</STRONG></TD> |
<TD><BR></TD></TR> |
</TABLE> |
</CENTER> |
@end html |
@end ifset |
|
/Makefile.in
0,0 → 1,216
# Makefile.in generated by automake 1.6.2 from Makefile.am. |
# @configure_input@ |
|
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 |
# Free Software Foundation, Inc. |
# This Makefile.in is free software; the Free Software Foundation |
# gives unlimited permission to copy and/or distribute it, |
# with or without modifications, as long as this notice is preserved. |
|
# This program is distributed in the hope that it will be useful, |
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without |
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A |
# PARTICULAR PURPOSE. |
|
@SET_MAKE@ |
SHELL = @SHELL@ |
|
srcdir = @srcdir@ |
top_srcdir = @top_srcdir@ |
VPATH = @srcdir@ |
prefix = @prefix@ |
exec_prefix = @exec_prefix@ |
|
bindir = @bindir@ |
sbindir = @sbindir@ |
libexecdir = @libexecdir@ |
datadir = @datadir@ |
sysconfdir = @sysconfdir@ |
sharedstatedir = @sharedstatedir@ |
localstatedir = @localstatedir@ |
libdir = @libdir@ |
infodir = @infodir@ |
mandir = @mandir@ |
includedir = @includedir@ |
oldincludedir = /usr/include |
pkgdatadir = $(datadir)/@PACKAGE@ |
pkglibdir = $(libdir)/@PACKAGE@ |
pkgincludedir = $(includedir)/@PACKAGE@ |
top_builddir = .. |
|
ACLOCAL = @ACLOCAL@ |
AUTOCONF = @AUTOCONF@ |
AUTOMAKE = @AUTOMAKE@ |
AUTOHEADER = @AUTOHEADER@ |
|
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd |
INSTALL = @INSTALL@ |
INSTALL_PROGRAM = @INSTALL_PROGRAM@ |
INSTALL_DATA = @INSTALL_DATA@ |
install_sh_DATA = $(install_sh) -c -m 644 |
install_sh_PROGRAM = $(install_sh) -c |
install_sh_SCRIPT = $(install_sh) -c |
INSTALL_SCRIPT = @INSTALL_SCRIPT@ |
INSTALL_HEADER = $(INSTALL_DATA) |
transform = @program_transform_name@ |
NORMAL_INSTALL = : |
PRE_INSTALL = : |
POST_INSTALL = : |
NORMAL_UNINSTALL = : |
PRE_UNINSTALL = : |
POST_UNINSTALL = : |
|
EXEEXT = @EXEEXT@ |
OBJEXT = @OBJEXT@ |
PATH_SEPARATOR = @PATH_SEPARATOR@ |
AMTAR = @AMTAR@ |
AWK = @AWK@ |
BMENU2 = @BMENU2@ |
DEPDIR = @DEPDIR@ |
DVIPS = @DVIPS@ |
ENDIF = @ENDIF@ |
EPSTOPDF = @EPSTOPDF@ |
GS = @GS@ |
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ |
LN_S = @LN_S@ |
MAINT = @MAINT@ |
MAKE = @MAKE@ |
PACKAGE = @PACKAGE@ |
PERL = @PERL@ |
PROJECT_ROOT = @PROJECT_ROOT@ |
PROJECT_TOPdir = @PROJECT_TOPdir@ |
RTEMS_TOPdir = @RTEMS_TOPdir@ |
STRIP = @STRIP@ |
TEXI2DVI = @TEXI2DVI@ |
TEXI2PDF = @TEXI2PDF@ |
TEXI2WWW = @TEXI2WWW@ |
VERSION = @VERSION@ |
am__include = @am__include@ |
am__quote = @am__quote@ |
htmldir = @htmldir@ |
install_sh = @install_sh@ |
pkgdocdir = @pkgdocdir@ |
|
EXTRA_DIST = cpright.texi setup.texi timemac.texi timetbl.t treedef.tex \ |
wksheets.t timing.t |
|
subdir = common |
mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs |
CONFIG_CLEAN_FILES = |
DIST_SOURCES = |
DIST_COMMON = ChangeLog Makefile.am Makefile.in |
all: all-am |
|
.SUFFIXES: |
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) |
cd $(top_srcdir) && \ |
$(AUTOMAKE) --foreign common/Makefile |
Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status |
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) |
uninstall-info-am: |
tags: TAGS |
TAGS: |
|
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) |
|
top_distdir = .. |
distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) |
|
distdir: $(DISTFILES) |
@list='$(DISTFILES)'; for file in $$list; do \ |
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ |
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ |
if test "$$dir" != "$$file" && test "$$dir" != "."; then \ |
dir="/$$dir"; \ |
$(mkinstalldirs) "$(distdir)$$dir"; \ |
else \ |
dir=''; \ |
fi; \ |
if test -d $$d/$$file; then \ |
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ |
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ |
fi; \ |
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ |
else \ |
test -f $(distdir)/$$file \ |
|| cp -p $$d/$$file $(distdir)/$$file \ |
|| exit 1; \ |
fi; \ |
done |
check-am: all-am |
check: check-am |
all-am: Makefile |
|
installdirs: |
|
install: install-am |
install-exec: install-exec-am |
install-data: install-data-am |
uninstall: uninstall-am |
|
install-am: all-am |
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am |
|
installcheck: installcheck-am |
install-strip: |
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ |
INSTALL_STRIP_FLAG=-s \ |
`test -z '$(STRIP)' || \ |
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install |
mostlyclean-generic: |
|
clean-generic: |
|
distclean-generic: |
-rm -f Makefile $(CONFIG_CLEAN_FILES) |
|
maintainer-clean-generic: |
@echo "This command is intended for maintainers to use" |
@echo "it deletes files that may require special tools to rebuild." |
clean: clean-am |
|
clean-am: clean-generic mostlyclean-am |
|
distclean: distclean-am |
|
distclean-am: clean-am distclean-generic |
|
dvi: dvi-am |
|
dvi-am: |
|
info: info-am |
|
info-am: |
|
install-data-am: |
|
install-exec-am: |
|
install-info: install-info-am |
|
install-man: |
|
installcheck-am: |
|
maintainer-clean: maintainer-clean-am |
|
maintainer-clean-am: distclean-am maintainer-clean-generic |
|
mostlyclean: mostlyclean-am |
|
mostlyclean-am: mostlyclean-generic |
|
uninstall-am: uninstall-info-am |
|
.PHONY: all all-am check check-am clean clean-generic distclean \ |
distclean-generic distdir dvi dvi-am info info-am install \ |
install-am install-data install-data-am install-exec \ |
install-exec-am install-info install-info-am install-man \ |
install-strip installcheck installcheck-am installdirs \ |
maintainer-clean maintainer-clean-generic mostlyclean \ |
mostlyclean-generic uninstall uninstall-am uninstall-info-am |
|
# Tell versions [3.59,3.63) of GNU make to not export all variables. |
# Otherwise a system limit (for SysV at least) may be exceeded. |
.NOEXPORT: |
/timetbl.t
0,0 → 1,1330
@c ****** This comment is here to remind you not to edit the timetbl.t |
@c ****** in any directory but common. |
@c |
@c Time Table Template |
@c |
@c COPYRIGHT (c) 1988-2002. |
@c On-Line Applications Research Corporation (OAR). |
@c All rights reserved. |
@c |
@c timetbl.t,v 1.8 2002/01/17 21:47:44 joel Exp |
@c |
|
@ifset use-tex |
@sp 1 |
@tex |
\centerline{\vbox{\offinterlineskip\halign{ |
\span\rtemstimetable |
\rtemsonecase{No Floating Point Contexts}{RTEMS_NO_FP_CONTEXTS} |
\rtemsdirective{Floating Point Contexts} |
\rtemscase{restore first FP task}{RTEMS_RESTORE_1ST_FP_TASK} |
\rtemscase{save initialized, restore initialized}{RTEMS_SAVE_INIT_RESTORE_INIT} |
\rtemscase{save idle, restore initialized}{RTEMS_SAVE_IDLE_RESTORE_INIT} |
\rtemscase{save idle, restore idle}{RTEMS_SAVE_IDLE_RESTORE_IDLE} |
\rtemsendtimetable |
}}\hfil} |
@end tex |
@end ifset |
|
@ifset use-ascii |
@ifinfo |
@itemize @bullet |
@item No Floating Point Contexts |
@itemize - |
@item only case: RTEMS_NO_FP_CONTEXTS |
@end itemize |
@item Floating Point Contexts |
@itemize - |
@item restore first FP task: RTEMS_RESTORE_1ST_FP_TASK |
@item save initialized, restore initialized: RTEMS_SAVE_INIT_RESTORE_INIT |
@item save idle, restore initialized: RTEMS_SAVE_IDLE_RESTORE_INIT |
@item save idle, restore idle: RTEMS_SAVE_IDLE_RESTORE_INIT |
@end itemize |
@end itemize |
@end ifinfo |
@end ifset |
|
@ifset use-html |
@html |
<CENTER> |
<TABLE COLS=2 WIDTH="80%" BORDER=2> |
<TR><TD ALIGN=left><STRONG>No Floating Point Contexts</STRONG></TD> |
<TD ALIGN=center>RTEMS_NO_FP_CONTEXTS</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>Floating Point Contexts</TR> |
<TR><TD ALIGN=left><dd>restore first FP task</TD> |
<TD ALIGN=center>RTEMS_RESTORE_1ST_FP_TASK</TD> |
<TR><TD ALIGN=left><dd>save initialized, restore initialized</TD> |
<TD ALIGN=center>RTEMS_SAVE_INIT_RESTORE_INIT</TD> |
<TR><TD ALIGN=left><dd>save idle, restore initialized</TD> |
<TD ALIGN=center>RTEMS_SAVE_IDLE_RESTORE_INIT</TD> |
<TR><TD ALIGN=left><dd>save idle, restore idle</TD> |
<TD ALIGN=center>RTEMS_SAVE_IDLE_RESTORE_IDLE</TD> |
</TABLE> |
</CENTER> |
@end html |
@end ifset |
|
@section Directive Times |
|
This sections is divided into a number of |
subsections, each of which contains a table listing the |
execution times of that manager's directives. |
|
@page |
@section Task Manager |
|
@ifset use-tex |
@tex |
\centerline{\vbox{\offinterlineskip\halign{ |
\span\rtemstimetable |
\rtemsonecase{TASK\_CREATE}{RTEMS_TASK_CREATE_ONLY} |
\rtemsonecase{TASK\_IDENT}{RTEMS_TASK_IDENT_ONLY} |
\rtemsonecase{TASK\_START}{RTEMS_TASK_START_ONLY} |
\rtemsdirective{TASK\_RESTART} |
\rtemscase{calling task}{RTEMS_TASK_RESTART_CALLING_TASK} |
\rtemscase{suspended task -- returns to caller} |
{RTEMS_TASK_RESTART_SUSPENDED_RETURNS_TO_CALLER} |
\rtemscase{blocked task -- returns to caller} |
{RTEMS_TASK_RESTART_BLOCKED_RETURNS_TO_CALLER} |
\rtemscase{ready task -- returns to caller} |
{RTEMS_TASK_RESTART_READY_RETURNS_TO_CALLER} |
\rtemscase{suspended task -- preempts caller} |
{RTEMS_TASK_RESTART_SUSPENDED_PREEMPTS_CALLER} |
\rtemscase{blocked task -- preempts caller} |
{RTEMS_TASK_RESTART_BLOCKED_PREEMPTS_CALLER} |
\rtemscase{ready task -- preempts caller} |
{RTEMS_TASK_RESTART_READY_PREEMPTS_CALLER} |
\rtemsdirective{TASK\_DELETE} |
\rtemscase{calling task}{RTEMS_TASK_DELETE_CALLING_TASK} |
\rtemscase{suspended task}{RTEMS_TASK_DELETE_SUSPENDED_TASK} |
\rtemscase{blocked task}{RTEMS_TASK_DELETE_BLOCKED_TASK} |
\rtemscase{ready task}{RTEMS_TASK_DELETE_READY_TASK} |
\rtemsdirective{TASK\_SUSPEND} |
\rtemscase{calling task}{RTEMS_TASK_SUSPEND_CALLING_TASK} |
\rtemscase{returns to caller}{RTEMS_TASK_SUSPEND_RETURNS_TO_CALLER} |
\rtemsdirective{TASK\_RESUME} |
\rtemscase{task readied -- returns to caller} |
{RTEMS_TASK_RESUME_TASK_READIED_RETURNS_TO_CALLER} |
\rtemscase{task readied -- preempts caller} |
{RTEMS_TASK_RESUME_TASK_READIED_PREEMPTS_CALLER} |
\rtemsdirective{TASK\_SET\_PRIORITY} |
\rtemscase{obtain current priority} |
{RTEMS_TASK_SET_PRIORITY_OBTAIN_CURRENT_PRIORITY} |
\rtemscase{returns to caller}{RTEMS_TASK_SET_PRIORITY_RETURNS_TO_CALLER} |
\rtemscase{preempts caller}{RTEMS_TASK_SET_PRIORITY_PREEMPTS_CALLER} |
\rtemsdirective{TASK\_MODE} |
\rtemscase{obtain current mode}{RTEMS_TASK_MODE_OBTAIN_CURRENT_MODE} |
\rtemscase{no reschedule}{RTEMS_TASK_MODE_NO_RESCHEDULE} |
\rtemscase{reschedule -- returns to caller} |
{RTEMS_TASK_MODE_RESCHEDULE_RETURNS_TO_CALLER} |
\rtemscase{reschedule -- preempts caller} |
{RTEMS_TASK_MODE_RESCHEDULE_PREEMPTS_CALLER} |
\rtemsonecase{TASK\_GET\_NOTE}{RTEMS_TASK_GET_NOTE_ONLY} |
\rtemsonecase{TASK\_SET\_NOTE}{RTEMS_TASK_SET_NOTE_ONLY} |
\rtemsdirective{TASK\_WAKE\_AFTER} |
\rtemscase{yield -- returns to caller} |
{RTEMS_TASK_WAKE_AFTER_YIELD_RETURNS_TO_CALLER} |
\rtemscase{yield -- preempts caller} |
{RTEMS_TASK_WAKE_AFTER_YIELD_PREEMPTS_CALLER} |
\rtemsonecase{TASK\_WAKE\_WHEN}{RTEMS_TASK_WAKE_WHEN_ONLY} |
\rtemsendtimetable |
}}\hfil} |
@end tex |
@end ifset |
|
@ifset use-ascii |
@ifinfo |
@itemize @bullet |
|
@item TASK_CREATE |
@itemize - |
@item only case: RTEMS_TASK_CREATE_ONLY |
@end itemize |
|
@item TASK_IDENT |
@itemize - |
@item only case: RTEMS_TASK_IDENT_ONLY |
@end itemize |
|
@item TASK_START |
@itemize - |
@item only case: RTEMS_TASK_START_ONLY |
@end itemize |
|
@item TASK_RESTART |
@itemize - |
@item calling task: RTEMS_TASK_RESTART_CALLING_TASK |
@item suspended task -- returns to caller: RTEMS_TASK_RESTART_SUSPENDED_RETURNS_TO_CALLER |
@item blocked task -- returns to caller: RTEMS_TASK_RESTART_BLOCKED_RETURNS_TO_CALLER |
@item ready task -- returns to caller: RTEMS_TASK_RESTART_READY_RETURNS_TO_CALLER |
@item suspended task -- preempts caller: RTEMS_TASK_RESTART_SUSPENDED_PREEMPTS_CALLER |
@item blocked task -- preempts caller: RTEMS_TASK_RESTART_BLOCKED_PREEMPTS_CALLER |
@item ready task -- preempts caller: RTEMS_TASK_RESTART_READY_PREEMPTS_CALLER |
@end itemize |
|
@item TASK_DELETE |
@itemize - |
@item calling task: RTEMS_TASK_DELETE_CALLING_TASK |
@item suspended task: RTEMS_TASK_DELETE_SUSPENDED_TASK |
@item blocked task: RTEMS_TASK_DELETE_BLOCKED_TASK |
@item ready task: RTEMS_TASK_DELETE_READY_TASK |
@end itemize |
|
@item TASK_SUSPEND |
@itemize - |
@item calling task: RTEMS_TASK_SUSPEND_CALLING_TASK |
@item returns to caller: RTEMS_TASK_SUSPEND_RETURNS_TO_CALLER |
@end itemize |
|
@item TASK_RESUME |
@itemize - |
@item task readied -- returns to caller: RTEMS_TASK_RESUME_TASK_READIED_RETURNS_TO_CALLER |
@item task readied -- preempts caller: RTEMS_TASK_RESUME_TASK_READIED_PREEMPTS_CALLER |
@end itemize |
|
@item TASK_SET_PRIORITY |
@itemize - |
@item obtain current priority: RTEMS_TASK_SET_PRIORITY_OBTAIN_CURRENT_PRIORITY |
@item returns to caller: RTEMS_TASK_SET_PRIORITY_RETURNS_TO_CALLER |
@item preempts caller: RTEMS_TASK_SET_PRIORITY_PREEMPTS_CALLER |
@end itemize |
|
@item TASK_MODE |
@itemize - |
@item obtain current mode: RTEMS_TASK_MODE_OBTAIN_CURRENT_MODE |
@item no reschedule: RTEMS_TASK_MODE_NO_RESCHEDULE |
@item reschedule -- returns to caller: RTEMS_TASK_MODE_RESCHEDULE_RETURNS_TO_CALLER |
@item reschedule -- preempts caller: RTEMS_TASK_MODE_RESCHEDULE_PREEMPTS_CALLER |
@end itemize |
|
@item TASK_GET_NOTE |
@itemize - |
@item only case: RTEMS_TASK_GET_NOTE_ONLY |
@end itemize |
|
@item TASK_SET_NOTE |
@itemize - |
@item only case: RTEMS_TASK_SET_NOTE_ONLY |
@end itemize |
|
@item TASK_WAKE_AFTER |
@itemize - |
@item yield -- returns to caller: RTEMS_TASK_WAKE_AFTER_YIELD_RETURNS_TO_CALLER |
@item yield -- preempts caller: RTEMS_TASK_WAKE_AFTER_YIELD_PREEMPTS_CALLER |
@end itemize |
|
@item TASK_WAKE_WHEN |
@itemize - |
@item only case: RTEMS_TASK_WAKE_WHEN_ONLY |
@end itemize |
|
@end itemize |
@end ifinfo |
@end ifset |
|
@ifset use-html |
@html |
<CENTER> |
<TABLE COLS=2 WIDTH="80%" BORDER=2> |
<TR><TD ALIGN=left><STRONG>TASK_CREATE</STRONG></TD> |
<TD ALIGN=center>RTEMS_TASK_CREATE_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>TASK_IDENT</STRONG></TD> |
<TD ALIGN=center>RTEMS_TASK_IDENT_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>TASK_START</STRONG></TD> |
<TD ALIGN=center>RTEMS_TASK_START_ONLY</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESTART</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>calling task</TD> |
<TD ALIGN=center>RTEMS_TASK_RESTART_CALLING_TASK</TD></TR> |
<TR><TD ALIGN=left><dd>suspended task -- returns to caller</TD> |
<TD ALIGN=center>RTEMS_TASK_RESTART_SUSPENDED_RETURNS_TO_CALLER</TD></TR> |
<TR><TD ALIGN=left><dd>blocked task -- returns to caller</TD> |
<TD ALIGN=center>RTEMS_TASK_RESTART_BLOCKED_RETURNS_TO_CALLER</TD></TR> |
<TR><TD ALIGN=left><dd>ready task -- returns to caller</TD> |
<TD ALIGN=center>RTEMS_TASK_RESTART_READY_RETURNS_TO_CALLER</TD></TR> |
<TR><TD ALIGN=left><dd>suspended task -- preempts caller</TD> |
<TD ALIGN=center>RTEMS_TASK_RESTART_SUSPENDED_PREEMPTS_CALLER</TD></TR> |
<TR><TD ALIGN=left><dd>blocked task -- preempts caller</TD> |
<TD ALIGN=center>RTEMS_TASK_RESTART_BLOCKED_PREEMPTS_CALLER</TD></TR> |
<TR><TD ALIGN=left><dd>ready task -- preempts caller</TD> |
<TD ALIGN=center>RTEMS_TASK_RESTART_READY_PREEMPTS_CALLER</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_DELETE</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>calling task</TD> |
<TD ALIGN=center>RTEMS_TASK_DELETE_CALLING_TASK</TD></TR> |
<TR><TD ALIGN=left><dd>suspended task</TD> |
<TD ALIGN=center>RTEMS_TASK_DELETE_SUSPENDED_TASK</TD></TR> |
<TR><TD ALIGN=left><dd>blocked task</TD> |
<TD ALIGN=center>RTEMS_TASK_DELETE_BLOCKED_TASK</TD></TR> |
<TR><TD ALIGN=left><dd>ready task</TD> |
<TD ALIGN=center>RTEMS_TASK_DELETE_READY_TASK</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SUSPEND</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>calling task</TD> |
<TD ALIGN=center>RTEMS_TASK_SUSPEND_CALLING_TASK</TD></TR> |
<TR><TD ALIGN=left><dd>returns to caller</TD> |
<TD ALIGN=center>RTEMS_TASK_SUSPEND_RETURNS_TO_CALLER</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_RESUME</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> |
<TD ALIGN=center>RTEMS_TASK_RESUME_TASK_READIED_RETURNS_TO_CALLER</TD></TR> |
<TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> |
<TD ALIGN=center>RTEMS_TASK_RESUME_TASK_READIED_PREEMPTS_CALLER</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_SET_PRIORITY</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>obtain current priority</TD> |
<TD ALIGN=center>RTEMS_TASK_SET_PRIORITY_OBTAIN_CURRENT_PRIORITY</TD></TR> |
<TR><TD ALIGN=left><dd>returns to caller</TD> |
<TD ALIGN=center>RTEMS_TASK_SET_PRIORITY_RETURNS_TO_CALLER</TD></TR> |
<TR><TD ALIGN=left><dd>preempts caller</TD> |
<TD ALIGN=center>RTEMS_TASK_SET_PRIORITY_PREEMPTS_CALLER</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_MODE</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>obtain current mode</TD> |
<TD ALIGN=center>RTEMS_TASK_MODE_OBTAIN_CURRENT_MODE</TD></TR> |
<TR><TD ALIGN=left><dd>no reschedule</TD> |
<TD ALIGN=center>RTEMS_TASK_MODE_NO_RESCHEDULE</TD></TR> |
<TR><TD ALIGN=left><dd>reschedule -- returns to caller</TD> |
<TD ALIGN=center>RTEMS_TASK_MODE_RESCHEDULE_RETURNS_TO_CALLER</TD></TR> |
<TR><TD ALIGN=left><dd>reschedule -- preempts caller</TD> |
<TD ALIGN=center>RTEMS_TASK_MODE_RESCHEDULE_PREEMPTS_CALLER</TD></TR> |
<TR><TD ALIGN=left><STRONG>TASK_GET_NOTE</STRONG></TD> |
<TD ALIGN=center>RTEMS_TASK_GET_NOTE_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>TASK_SET_NOTE</STRONG></TD> |
<TD ALIGN=center>RTEMS_TASK_SET_NOTE_ONLY</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>TASK_WAKE_AFTER</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>yield -- returns to caller</TD> |
<TD ALIGN=center>RTEMS_TASK_WAKE_AFTER_YIELD_RETURNS_TO_CALLER</TD></TR> |
<TR><TD ALIGN=left><dd>yield -- preempts caller</TD> |
<TD ALIGN=center>RTEMS_TASK_WAKE_AFTER_YIELD_PREEMPTS_CALLER</TD></TR> |
<TR><TD ALIGN=left><STRONG>TASK_WAKE_WHEN</STRONG></TD> |
<TD ALIGN=center>RTEMS_TASK_WAKE_WHEN_ONLY</TD></TR> |
</TABLE> |
</CENTER> |
@end html |
@end ifset |
|
@page |
@section Interrupt Manager |
|
It should be noted that the interrupt entry times |
include vectoring the interrupt handler. |
|
@ifset use-tex |
@sp 1 |
@tex |
\centerline{\vbox{\offinterlineskip\halign{ |
\span\rtemstimetable |
\rtemsdirective{Interrupt Entry Overhead} |
\rtemscase{returns to nested interrupt}{RTEMS_INTR_ENTRY_RETURNS_TO_NESTED} |
\rtemscase{returns to interrupted task} |
{RTEMS_INTR_ENTRY_RETURNS_TO_INTERRUPTED_TASK} |
\rtemscase{returns to preempting task} |
{RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK} |
\rtemsdirective{Interrupt Exit Overhead} |
\rtemscase{returns to nested interrupt}{RTEMS_INTR_EXIT_RETURNS_TO_NESTED} |
\rtemscase{returns to interrupted task} |
{RTEMS_INTR_EXIT_RETURNS_TO_INTERRUPTED_TASK} |
\rtemscase{returns to preempting task} |
{RTEMS_INTR_EXIT_RETURNS_TO_PREEMPTING_TASK} |
\rtemsendtimetable |
}}\hfil} |
@end tex |
@end ifset |
|
@ifset use-ascii |
@ifinfo |
@itemize @bullet |
|
@item Interrupt Entry Overhead |
@itemize - |
@item returns to nested interrupt: RTEMS_INTR_ENTRY_RETURNS_TO_NESTED |
@item returns to interrupted task: RTEMS_INTR_ENTRY_RETURNS_TO_INTERRUPTED_TASK |
@item returns to preempting task: RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK |
@end itemize |
|
@item Interrupt Exit Overhead |
@itemize - |
@item returns to nested interrupt: RTEMS_INTR_EXIT_RETURNS_TO_NESTED |
@item returns to interrupted task: RTEMS_INTR_EXIT_RETURNS_TO_INTERRUPTED_TASK |
@item returns to preempting task: RTEMS_INTR_EXIT_RETURNS_TO_PREEMPTING_TASK |
@end itemize |
|
@end itemize |
@end ifinfo |
@end ifset |
|
@ifset use-html |
@html |
<CENTER> |
<TABLE COLS=2 WIDTH="80%" BORDER=2> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Entry Overhead</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>returns to nested interrupt</TD> |
<TD ALIGN=center>RTEMS_INTR_ENTRY_RETURNS_TO_NESTED</TD></TR> |
<TR><TD ALIGN=left><dd>returns to interrupted task</TD> |
<TD ALIGN=center>RTEMS_INTR_ENTRY_RETURNS_TO_INTERRUPTED_TASK</TD></TR> |
<TR><TD ALIGN=left><dd>returns to preempting task</TD> |
<TD ALIGN=center>RTEMS_INTR_ENTRY_RETURNS_TO_PREEMPTING_TASK</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>Interrupt Exit Overhead</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>returns to nested interrupt</TD> |
<TD ALIGN=center>RTEMS_INTR_EXIT_RETURNS_TO_NESTED</TD></TR> |
<TR><TD ALIGN=left><dd>returns to interrupted task</TD> |
<TD ALIGN=center>RTEMS_INTR_EXIT_RETURNS_TO_INTERRUPTED_TASK</TD></TR> |
<TR><TD ALIGN=left><dd>returns to preempting task</TD> |
<TD ALIGN=center>RTEMS_INTR_EXIT_RETURNS_TO_PREEMPTING_TASK</TD></TR> |
</TABLE> |
</CENTER> |
@end html |
@end ifset |
|
|
@section Clock Manager |
|
@ifset use-tex |
@tex |
\centerline{\vbox{\offinterlineskip\halign{ |
\span\rtemstimetable |
\rtemsonecase{CLOCK\_SET}{RTEMS_CLOCK_SET_ONLY} |
\rtemsonecase{CLOCK\_GET}{RTEMS_CLOCK_GET_ONLY} |
\rtemsonecase{CLOCK\_TICK}{RTEMS_CLOCK_TICK_ONLY} |
\rtemsendtimetable |
}}\hfil} |
@end tex |
@end ifset |
|
@ifset use-ascii |
@ifinfo |
@itemize @bullet |
|
@item CLOCK_SET |
@itemize - |
@item only case: RTEMS_CLOCK_SET_ONLY |
@end itemize |
|
@item CLOCK_GET |
@itemize - |
@item only case: RTEMS_CLOCK_GET_ONLY |
@end itemize |
|
@item CLOCK_TICK |
@itemize - |
@item only case: RTEMS_CLOCK_TICK_ONLY |
@end itemize |
|
@end itemize |
@end ifinfo |
@end ifset |
|
@ifset use-html |
@html |
<CENTER> |
<TABLE COLS=2 WIDTH="80%" BORDER=2> |
<TR><TD ALIGN=left><STRONG>CLOCK_SET</STRONG></TD> |
<TD ALIGN=center>RTEMS_CLOCK_SET_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>CLOCK_GET</STRONG></TD> |
<TD ALIGN=center>RTEMS_CLOCK_GET_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>CLOCK_TICK</STRONG></TD> |
<TD ALIGN=center>RTEMS_CLOCK_TICK_ONLY</TD></TR> |
</TABLE> |
</CENTER> |
@end html |
@end ifset |
|
@section Timer Manager |
|
@ifset use-tex |
@tex |
\centerline{\vbox{\offinterlineskip\halign{ |
\span\rtemstimetable |
\rtemsonecase{TIMER\_CREATE}{RTEMS_TIMER_CREATE_ONLY} |
\rtemsonecase{TIMER\_IDENT}{RTEMS_TIMER_IDENT_ONLY} |
\rtemsdirective{TIMER\_DELETE} |
\rtemscase{inactive}{RTEMS_TIMER_DELETE_INACTIVE} |
\rtemscase{active}{RTEMS_TIMER_DELETE_ACTIVE} |
\rtemsdirective{TIMER\_FIRE\_AFTER} |
\rtemscase{inactive}{RTEMS_TIMER_FIRE_AFTER_INACTIVE} |
\rtemscase{active}{RTEMS_TIMER_FIRE_AFTER_ACTIVE} |
\rtemsdirective{TIMER\_FIRE\_WHEN} |
\rtemscase{inactive}{RTEMS_TIMER_FIRE_WHEN_INACTIVE} |
\rtemscase{active}{RTEMS_TIMER_FIRE_WHEN_ACTIVE} |
\rtemsdirective{TIMER\_RESET} |
\rtemscase{inactive}{RTEMS_TIMER_RESET_INACTIVE} |
\rtemscase{active}{RTEMS_TIMER_RESET_ACTIVE} |
\rtemsdirective{TIMER\_CANCEL} |
\rtemscase{inactive}{RTEMS_TIMER_CANCEL_INACTIVE} |
\rtemscase{active}{RTEMS_TIMER_CANCEL_ACTIVE} |
\rtemsendtimetable |
}}\hfil} |
@end tex |
@end ifset |
|
@ifset use-ascii |
@ifinfo |
@itemize @bullet |
|
@item TIMER_CREATE |
@itemize - |
@item only case: RTEMS_TIMER_CREATE_ONLY |
@end itemize |
|
@item TIMER_IDENT |
@itemize - |
@item only case: RTEMS_TIMER_IDENT_ONLY |
@end itemize |
|
@item TIMER_DELETE |
@itemize - |
@item inactive: RTEMS_TIMER_DELETE_INACTIVE |
@item active: RTEMS_TIMER_DELETE_ACTIVE |
@end itemize |
|
@item TIMER_FIRE_AFTER |
@itemize - |
@item inactive: RTEMS_TIMER_FIRE_AFTER_INACTIVE |
@item active: RTEMS_TIMER_FIRE_AFTER_ACTIVE |
@end itemize |
|
@item TIMER_FIRE_WHEN |
@itemize - |
@item inactive: TIMER_FIRE_WHEN_INACTIVE |
@item active: TIMER_FIRE_WHEN_ACTIVE |
@end itemize |
|
@item TIMER_RESET |
@itemize - |
@item inactive: TIMER_RESET_INACTIVE |
@item active: TIMER_RESET_ACTIVE |
@end itemize |
|
@item TIMER_CANCEL |
@itemize - |
@item inactive: TIMER_CANCEL_INACTIVE |
@item active: TIMER_CANCEL_ACTIVE |
@end itemize |
|
@end itemize |
@end ifinfo |
@end ifset |
|
@ifset use-html |
@html |
<CENTER> |
<TABLE COLS=2 WIDTH="80%" BORDER=2> |
<TR><TD ALIGN=left><STRONG>TIMER_CREATE</STRONG></TD> |
<TD ALIGN=center>RTEMS_TIMER_CREATE_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>TIMER_IDENT</STRONG></TD> |
<TD ALIGN=center>RTEMS_TIMER_IDENT_ONLY</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_DELETE</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>inactive</TD> |
<TD ALIGN=center>RTEMS_TIMER_DELETE_INACTIVE</TD></TR> |
<TR><TD ALIGN=left><dd>active</TD> |
<TD ALIGN=center>RTEMS_TIMER_DELETE_ACTIVE</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_AFTER</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>inactive</TD> |
<TD ALIGN=center>RTEMS_TIMER_FIRE_AFTER_INACTIVE</TD></TR> |
<TR><TD ALIGN=left><dd>active</TD> |
<TD ALIGN=center>RTEMS_TIMER_FIRE_AFTER_ACTIVE</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_FIRE_WHEN</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>inactive</TD> |
<TD ALIGN=center>RTEMS_TIMER_FIRE_WHEN_INACTIVE</TD></TR> |
<TR><TD ALIGN=left><dd>active</TD> |
<TD ALIGN=center>RTEMS_TIMER_FIRE_WHEN_ACTIVE</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_RESET</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>inactive</TD> |
<TD ALIGN=center>RTEMS_TIMER_RESET_INACTIVE</TD></TR> |
<TR><TD ALIGN=left><dd>active</TD> |
<TD ALIGN=center>RTEMS_TIMER_RESET_ACTIVE</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_CANCEL</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>inactive</TD> |
<TD ALIGN=center>RTEMS_TIMER_CANCEL_INACTIVE</TD></TR> |
<TR><TD ALIGN=left><dd>active</TD> |
<TD ALIGN=center>RTEMS_TIMER_CANCEL_ACTIVE</TD></TR> |
</TABLE> |
</CENTER> |
@end html |
@end ifset |
|
@page |
@section Semaphore Manager |
|
@ifset use-tex |
@tex |
\centerline{\vbox{\offinterlineskip\halign{ |
\span\rtemstimetable |
\rtemsonecase{SEMAPHORE\_CREATE}{RTEMS_SEMAPHORE_CREATE_ONLY} |
\rtemsonecase{SEMAPHORE\_IDENT}{RTEMS_SEMAPHORE_IDENT_ONLY} |
\rtemsonecase{SEMAPHORE\_DELETE}{RTEMS_SEMAPHORE_DELETE_ONLY} |
\rtemsdirective{SEMAPHORE\_OBTAIN} |
\rtemscase{available}{RTEMS_SEMAPHORE_OBTAIN_AVAILABLE} |
\rtemscase{not available -- NO\_WAIT} |
{RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_NO_WAIT} |
\rtemscase{not available -- caller blocks} |
{RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_CALLER_BLOCKS} |
\rtemsdirective{SEMAPHORE\_RELEASE} |
\rtemscase{no waiting tasks}{RTEMS_SEMAPHORE_RELEASE_NO_WAITING_TASKS} |
\rtemscase{task readied -- returns to caller} |
{RTEMS_SEMAPHORE_RELEASE_TASK_READIED_RETURNS_TO_CALLER} |
\rtemscase{task readied -- preempts caller} |
{RTEMS_SEMAPHORE_RELEASE_TASK_READIED_PREEMPTS_CALLER} |
\rtemsendtimetable |
}}\hfil} |
@end tex |
@end ifset |
|
@ifset use-ascii |
@ifinfo |
@itemize @bullet |
|
@item SEMAPHORE_CREATE |
@itemize - |
@item only case: RTEMS_SEMAPHORE_CREATE_ONLY |
@end itemize |
|
@item SEMAPHORE_IDENT |
@itemize - |
@item only case: RTEMS_SEMAPHORE_IDENT_ONLY |
@end itemize |
|
@item SEMAPHORE_DELETE |
@itemize - |
@item only case: RTEMS_SEMAPHORE_DELETE_ONLY |
@end itemize |
|
@item SEMAPHORE_OBTAIN |
@itemize - |
@item available: RTEMS_SEMAPHORE_OBTAIN_AVAILABLE |
@item not available -- NO_WAIT: RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_NO_WAIT |
@item not available -- caller blocks: RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_CALLER_BLOCKS |
@end itemize |
|
@item SEMAPHORE_RELEASE |
@itemize - |
@item no waiting tasks: RTEMS_SEMAPHORE_RELEASE_NO_WAITING_TASKS |
@item task readied -- returns to caller: RTEMS_SEMAPHORE_RELEASE_TASK_READIED_RETURNS_TO_CALLER |
@item task readied -- preempts caller: RTEMS_SEMAPHORE_RELEASE_TASK_READIED_PREEMPTS_CALLER |
@end itemize |
|
@end itemize |
@end ifinfo |
@end ifset |
|
@ifset use-html |
@html |
<CENTER> |
<TABLE COLS=2 WIDTH="80%" BORDER=2> |
<TR><TD ALIGN=left><STRONG>SEMAPHORE_CREATE</STRONG></TD> |
<TD ALIGN=center>RTEMS_SEMAPHORE_CREATE_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>SEMAPHORE_IDENT</STRONG></TD> |
<TD ALIGN=center>RTEMS_SEMAPHORE_IDENT_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>SEMAPHORE_DELETE</STRONG></TD> |
<TD ALIGN=center>RTEMS_SEMAPHORE_DELETE_ONLY</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_OBTAIN</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>available</TD> |
<TD ALIGN=center>RTEMS_SEMAPHORE_OBTAIN_AVAILABLE</TD></TR> |
<TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> |
<TD ALIGN=center>RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_NO_WAIT</TD></TR> |
<TR><TD ALIGN=left><dd>not available -- caller blocks</TD> |
<TD ALIGN=center>RTEMS_SEMAPHORE_OBTAIN_NOT_AVAILABLE_CALLER_BLOCKS</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_RELEASE</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>no waiting tasks</TD> |
<TD ALIGN=center>RTEMS_SEMAPHORE_RELEASE_NO_WAITING_TASKS</TD></TR> |
<TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> |
<TD ALIGN=center>RTEMS_SEMAPHORE_RELEASE_TASK_READIED_RETURNS_TO_CALLER</TD></TR> |
<TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> |
<TD ALIGN=center>RTEMS_SEMAPHORE_RELEASE_TASK_READIED_PREEMPTS_CALLER</TD></TR> |
</TABLE> |
</CENTER> |
@end html |
@end ifset |
|
@section Message Manager |
|
@ifset use-tex |
@tex |
\centerline{\vbox{\offinterlineskip\halign{ |
\span\rtemstimetable |
\rtemsonecase{MESSAGE\_QUEUE\_CREATE}{RTEMS_MESSAGE_QUEUE_CREATE_ONLY} |
\rtemsonecase{MESSAGE\_QUEUE\_IDENT}{RTEMS_MESSAGE_QUEUE_IDENT_ONLY} |
\rtemsonecase{MESSAGE\_QUEUE\_DELETE}{RTEMS_MESSAGE_QUEUE_DELETE_ONLY} |
\rtemsdirective{MESSAGE\_QUEUE\_SEND} |
\rtemscase{no waiting tasks} |
{RTEMS_MESSAGE_QUEUE_SEND_NO_WAITING_TASKS} |
\rtemscase{task readied -- returns to caller} |
{RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_RETURNS_TO_CALLER} |
\rtemscase{task readied -- preempts caller} |
{RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_PREEMPTS_CALLER} |
\rtemsdirective{MESSAGE\_QUEUE\_URGENT} |
\rtemscase{no waiting tasks}{RTEMS_MESSAGE_QUEUE_URGENT_NO_WAITING_TASKS} |
\rtemscase{task readied -- returns to caller} |
{RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_RETURNS_TO_CALLER} |
\rtemscase{task readied -- preempts caller} |
{RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_PREEMPTS_CALLER} |
\rtemsdirective{MESSAGE\_QUEUE\_BROADCAST} |
\rtemscase{no waiting tasks}{RTEMS_MESSAGE_QUEUE_BROADCAST_NO_WAITING_TASKS} |
\rtemscase{task readied -- returns to caller} |
{RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_RETURNS_TO_CALLER} |
\rtemscase{task readied -- preempts caller} |
{RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_PREEMPTS_CALLER} |
\rtemsdirective{MESSAGE\_QUEUE\_RECEIVE} |
\rtemscase{available}{RTEMS_MESSAGE_QUEUE_RECEIVE_AVAILABLE} |
\rtemscase{not available -- NO\_WAIT} |
{RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_NO_WAIT} |
\rtemscase{not available -- caller blocks} |
{RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS} |
\rtemsdirective{MESSAGE\_QUEUE\_FLUSH} |
\rtemscase{no messages flushed}{RTEMS_MESSAGE_QUEUE_FLUSH_NO_MESSAGES_FLUSHED} |
\rtemscase{messages flushed}{RTEMS_MESSAGE_QUEUE_FLUSH_MESSAGES_FLUSHED} |
\rtemsendtimetable |
}}\hfil} |
@end tex |
@end ifset |
|
@ifset use-ascii |
@ifinfo |
@itemize @bullet |
|
@item MESSAGE_QUEUE_CREATE |
@itemize - |
@item only case: RTEMS_MESSAGE_QUEUE_CREATE_ONLY |
@end itemize |
|
@item MESSAGE_QUEUE_IDENT |
@itemize - |
@item only case: RTEMS_MESSAGE_QUEUE_IDENT_ONLY |
@end itemize |
|
@item MESSAGE_QUEUE_DELETE |
@itemize - |
@item only case: RTEMS_MESSAGE_QUEUE_DELETE_ONLY |
@end itemize |
|
@item MESSAGE_QUEUE_SEND |
@itemize - |
@item no waiting tasks: RTEMS_MESSAGE_QUEUE_SEND_NO_WAITING_TASKS |
@item task readied -- returns to caller: RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_RETURNS_TO_CALLER |
@item task readied -- preempts caller: RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_PREEMPTS_CALLER |
@end itemize |
|
@item MESSAGE_QUEUE_URGENT |
@itemize - |
@item no waiting tasks: RTEMS_MESSAGE_QUEUE_URGENT_NO_WAITING_TASKS |
@item task readied -- returns to caller: RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_RETURNS_TO_CALLER |
@item task readied -- preempts caller: RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_PREEMPTS_CALLER |
@end itemize |
|
@item MESSAGE_QUEUE_BROADCAST |
@itemize - |
@item no waiting tasks: RTEMS_MESSAGE_QUEUE_BROADCAST_NO_WAITING_TASKS |
@item task readied -- returns to caller: RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_RETURNS_TO_CALLER |
@item task readied -- preempts caller: RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_PREEMPTS_CALLER |
@end itemize |
|
@item MESSAGE_QUEUE_RECEIVE |
@itemize - |
@item available: RTEMS_MESSAGE_QUEUE_RECEIVE_AVAILABLE |
@item not available -- NO_WAIT: RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_NO_WAIT |
@item not available -- caller blocks: RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS |
@end itemize |
|
@item MESSAGE_QUEUE_FLUSH |
@itemize - |
@item no messages flushed: RTEMS_MESSAGE_QUEUE_FLUSH_NO_MESSAGES_FLUSHED |
@item messages flushed: RTEMS_MESSAGE_QUEUE_FLUSH_MESSAGES_FLUSHED |
@end itemize |
|
@end itemize |
@end ifinfo |
@end ifset |
|
@ifset use-html |
@html |
<CENTER> |
<TABLE COLS=2 WIDTH="80%" BORDER=2> |
<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_CREATE</STRONG></TD> |
<TD ALIGN=center>RTEMS_MESSAGE_QUEUE_CREATE_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_IDENT</STRONG></TD> |
<TD ALIGN=center>RTEMS_MESSAGE_QUEUE_IDENT_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_DELETE</STRONG></TD> |
<TD ALIGN=center>RTEMS_MESSAGE_QUEUE_DELETE_ONLY</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_SEND</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>no waiting tasks</TD> |
<TD ALIGN=center>RTEMS_MESSAGE_QUEUE_SEND_NO_WAITING_TASKS</TD></TR> |
<TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> |
<TD ALIGN=center>RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_RETURNS_TO_CALLER</TD></TR> |
<TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> |
<TD ALIGN=center>RTEMS_MESSAGE_QUEUE_SEND_TASK_READIED_PREEMPTS_CALLER</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_URGENT</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>no waiting tasks</TD> |
<TD ALIGN=center>RTEMS_MESSAGE_QUEUE_URGENT_NO_WAITING_TASKS</TD></TR> |
<TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> |
<TD ALIGN=center>RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_RETURNS_TO_CALLER</TD></TR> |
<TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> |
<TD ALIGN=center>RTEMS_MESSAGE_QUEUE_URGENT_TASK_READIED_PREEMPTS_CALLER</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_BROADCAST</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>no waiting tasks</TD> |
<TD ALIGN=center>RTEMS_MESSAGE_QUEUE_BROADCAST_NO_WAITING_TASKS</TD></TR> |
<TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> |
<TD ALIGN=center>RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_RETURNS_TO_CALLER</TD></TR> |
<TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> |
<TD ALIGN=center>RTEMS_MESSAGE_QUEUE_BROADCAST_TASK_READIED_PREEMPTS_CALLER</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_RECEIVE</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>available</TD> |
<TD ALIGN=center>RTEMS_MESSAGE_QUEUE_RECEIVE_AVAILABLE</TD></TR> |
<TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> |
<TD ALIGN=center>RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_NO_WAIT</TD></TR> |
<TR><TD ALIGN=left><dd>not available -- caller blocks</TD> |
<TD ALIGN=center>RTEMS_MESSAGE_QUEUE_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>MESSAGE_QUEUE_FLUSH</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>no messages flushed</TD> |
<TD ALIGN=center>RTEMS_MESSAGE_QUEUE_FLUSH_NO_MESSAGES_FLUSHED</TD></TR> |
<TR><TD ALIGN=left><dd>messages flushed</TD> |
<TD ALIGN=center>RTEMS_MESSAGE_QUEUE_FLUSH_MESSAGES_FLUSHED</TD></TR> |
|
</TABLE> |
</CENTER> |
@end html |
@end ifset |
|
@page |
@section Event Manager |
|
@ifset use-tex |
@tex |
\centerline{\vbox{\offinterlineskip\halign{ |
\span\rtemstimetable |
\rtemsdirective{EVENT\_SEND} |
\rtemscase{no task readied}{RTEMS_EVENT_SEND_NO_TASK_READIED} |
\rtemscase{task readied -- returns to caller} |
{RTEMS_EVENT_SEND_TASK_READIED_RETURNS_TO_CALLER} |
\rtemscase{task readied -- preempts caller} |
{RTEMS_EVENT_SEND_TASK_READIED_PREEMPTS_CALLER} |
\rtemsdirective{EVENT\_RECEIVE} |
\rtemscase{obtain current events}{RTEMS_EVENT_RECEIVE_OBTAIN_CURRENT_EVENTS} |
\rtemscase{available}{RTEMS_EVENT_RECEIVE_AVAILABLE} |
\rtemscase{not available -- NO\_WAIT}{RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_NO_WAIT} |
\rtemscase{not available -- caller blocks} |
{RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS} |
\rtemsendtimetable |
}}\hfil} |
@end tex |
@end ifset |
|
@ifset use-ascii |
@ifinfo |
@itemize @bullet |
|
@item EVENT_SEND |
@itemize - |
@item no task readied: RTEMS_EVENT_SEND_NO_TASK_READIED |
@item task readied -- returns to caller: RTEMS_EVENT_SEND_TASK_READIED_RETURNS_TO_CALLER |
@item task readied -- preempts caller: RTEMS_EVENT_SEND_TASK_READIED_PREEMPTS_CALLER |
@end itemize |
|
@item EVENT_RECEIVE |
@itemize - |
@item obtain current events: RTEMS_EVENT_RECEIVE_OBTAIN_CURRENT_EVENTS |
@item available: RTEMS_EVENT_RECEIVE_AVAILABLE |
@item not available -- NO_WAIT: RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_NO_WAIT |
@item not available -- caller blocks: RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS |
@end itemize |
|
@end itemize |
@end ifinfo |
@end ifset |
|
@ifset use-html |
@html |
<CENTER> |
<TABLE COLS=2 WIDTH="80%" BORDER=2> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_SEND</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>no task readied</TD> |
<TD ALIGN=center>RTEMS_EVENT_SEND_NO_TASK_READIED</TD></TR> |
<TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> |
<TD ALIGN=center>RTEMS_EVENT_SEND_TASK_READIED_RETURNS_TO_CALLER</TD></TR> |
<TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> |
<TD ALIGN=center>RTEMS_EVENT_SEND_TASK_READIED_PREEMPTS_CALLER</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>EVENT_RECEIVE</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>obtain current events</TD> |
<TD ALIGN=center>RTEMS_EVENT_RECEIVE_OBTAIN_CURRENT_EVENTS</TD></TR> |
<TR><TD ALIGN=left><dd>available</TD> |
<TD ALIGN=center>RTEMS_EVENT_RECEIVE_AVAILABLE</TD></TR> |
<TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> |
<TD ALIGN=center>RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_NO_WAIT</TD></TR> |
<TR><TD ALIGN=left><dd>not available -- caller blocks</TD> |
<TD ALIGN=center>RTEMS_EVENT_RECEIVE_NOT_AVAILABLE_CALLER_BLOCKS</TD></TR> |
|
</TABLE> |
</CENTER> |
@end html |
@end ifset |
@section Signal Manager |
|
@ifset use-tex |
@tex |
\centerline{\vbox{\offinterlineskip\halign{ |
\span\rtemstimetable |
\rtemsonecase{SIGNAL\_CATCH}{RTEMS_SIGNAL_CATCH_ONLY} |
\rtemsdirective{SIGNAL\_SEND} |
\rtemscase{returns to caller}{RTEMS_SIGNAL_SEND_RETURNS_TO_CALLER} |
\rtemscase{signal to self}{RTEMS_SIGNAL_SEND_SIGNAL_TO_SELF} |
\rtemsdirective{EXIT ASR OVERHEAD} |
\rtemscase{returns to calling task} |
{RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_CALLING_TASK} |
\rtemscase{returns to preempting task} |
{RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_PREEMPTING_TASK} |
\rtemsendtimetable |
}}\hfil} |
@end tex |
@end ifset |
|
@ifset use-ascii |
@ifinfo |
@itemize @bullet |
@item SIGNAL_CATCH |
@itemize - |
@item only case: RTEMS_SIGNAL_CATCH_ONLY |
@end itemize |
|
@item SIGNAL_SEND |
@itemize - |
@item returns to caller: RTEMS_SIGNAL_SEND_RETURNS_TO_CALLER |
@item signal to self: RTEMS_SIGNAL_SEND_SIGNAL_TO_SELF |
@end itemize |
|
@item EXIT ASR OVERHEAD |
@itemize - |
@item returns to calling task: RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_CALLING_TASK |
@item returns to preempting task: RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_PREEMPTING_TASK |
@end itemize |
|
@end itemize |
@end ifinfo |
@end ifset |
|
@ifset use-html |
@html |
<CENTER> |
<TABLE COLS=2 WIDTH="80%" BORDER=2> |
<TR><TD ALIGN=left><STRONG>SIGNAL_CATCH</STRONG></TD> |
<TD ALIGN=center>RTEMS_SIGNAL_CATCH_ONLY</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>SIGNAL_SEND</TD></TR> |
<TR><TD ALIGN=left><dd>returns to caller</TD> |
<TD ALIGN=center>RTEMS_SIGNAL_SEND_RETURNS_TO_CALLER</TD></TR> |
<TR><TD ALIGN=left><dd>signal to self</TD> |
<TD ALIGN=center>RTEMS_SIGNAL_SEND_SIGNAL_TO_SELF</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>EXIT ASR OVERHEAD</TD></TR> |
<TR><TD ALIGN=left><dd>returns to calling task</TD> |
<TD ALIGN=center> |
RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_CALLING_TASK</TD></TR> |
<TR><TD ALIGN=left><dd>returns to preempting task</TD> |
<TD ALIGN=center> |
RTEMS_SIGNAL_EXIT_ASR_OVERHEAD_RETURNS_TO_PREEMPTING_TASK</TD></TR> |
</TABLE> |
</CENTER> |
@end html |
@end ifset |
|
@section Partition Manager |
|
@ifset use-tex |
@tex |
\centerline{\vbox{\offinterlineskip\halign{ |
\span\rtemstimetable |
\rtemsonecase{PARTITION\_CREATE}{RTEMS_PARTITION_CREATE_ONLY} |
\rtemsonecase{PARTITION\_IDENT}{RTEMS_PARTITION_IDENT_ONLY} |
\rtemsonecase{PARTITION\_DELETE}{RTEMS_PARTITION_DELETE_ONLY} |
\rtemsdirective{PARTITION\_GET\_BUFFER} |
\rtemscase{available}{RTEMS_PARTITION_GET_BUFFER_AVAILABLE} |
\rtemscase{not available}{RTEMS_PARTITION_GET_BUFFER_NOT_AVAILABLE} |
\rtemsonecase{PARTITION\_RETURN\_BUFFER} |
{RTEMS_PARTITION_GET_BUFFER_NOT_AVAILABLE} |
\rtemsendtimetable |
}}\hfil} |
@end tex |
@end ifset |
|
@ifset use-ascii |
@ifinfo |
@itemize @bullet |
|
@item PARTITION_CREATE |
@itemize - |
@item only case: RTEMS_PARTITION_CREATE_ONLY |
@end itemize |
|
@item PARTITION_IDENT |
@itemize - |
@item only case: RTEMS_PARTITION_IDENT_ONLY |
@end itemize |
|
@item PARTITION_DELETE |
@itemize - |
@item only case: RTEMS_PARTITION_DELETE_ONLY |
@end itemize |
|
@item PARTITION_GET_BUFFER |
@itemize - |
@item available: RTEMS_PARTITION_GET_BUFFER_AVAILABLE |
@item not available: RTEMS_PARTITION_GET_BUFFER_NOT_AVAILABLE |
@end itemize |
|
@item PARTITION_RETURN_BUFFER |
@itemize - |
@item only case: RTEMS_PARTITION_RETURN_BUFFER_ONLY |
@end itemize |
|
@end itemize |
@end ifinfo |
@end ifset |
|
@ifset use-html |
@html |
<CENTER> |
<TABLE COLS=2 WIDTH="80%" BORDER=2> |
<TR><TD ALIGN=left><STRONG>PARTITION_CREATE</STRONG></TD> |
<TD ALIGN=center>RTEMS_PARTITION_CREATE_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>PARTITION_IDENT</STRONG></TD> |
<TD ALIGN=center>RTEMS_PARTITION_IDENT_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>PARTITION_DELETE</STRONG></TD> |
<TD ALIGN=center>RTEMS_PARTITION_DELETE_ONLY</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>PARTITION_GET_BUFFER</STRONG></TD></TR> |
<TR><TD ALIGN=left><dd>available</TD> |
<TD ALIGN=center>RTEMS_PARTITION_GET_BUFFER_AVAILABLE</TD></TR> |
<TR><TD ALIGN=left><dd>not available</TD> |
<TD ALIGN=center>RTEMS_PARTITION_GET_BUFFER_NOT_AVAILABLE</TD></TR> |
<TR><TD ALIGN=left><STRONG>PARTITION_RETURN_BUFFER</STRONG></TD> |
<TD ALIGN=center>RTEMS_PARTITION_GET_BUFFER_NOT_AVAILABLE</TD></TR> |
</TABLE> |
</CENTER> |
@end html |
@end ifset |
|
@page |
@section Region Manager |
|
@ifset use-tex |
@tex |
\centerline{\vbox{\offinterlineskip\halign{ |
\span\rtemstimetable |
\rtemsonecase{REGION\_CREATE}{RTEMS_REGION_CREATE_ONLY} |
\rtemsonecase{REGION\_IDENT}{RTEMS_REGION_IDENT_ONLY} |
\rtemsonecase{REGION\_DELETE}{RTEMS_REGION_DELETE_ONLY} |
\rtemsdirective{REGION\_GET\_SEGMENT} |
\rtemscase{available}{RTEMS_REGION_GET_SEGMENT_AVAILABLE} |
\rtemscase{not available -- NO\_WAIT} |
{RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_NO_WAIT} |
\rtemscase{not available -- caller blocks} |
{RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_CALLER_BLOCKS} |
\rtemsdirective{REGION\_RETURN\_SEGMENT} |
\rtemscase{no waiting tasks}{RTEMS_REGION_RETURN_SEGMENT_NO_WAITING_TASKS} |
\rtemscase{task readied -- returns to caller} |
{RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_RETURNS_TO_CALLER} |
\rtemscase{task readied -- preempts caller} |
{RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_PREEMPTS_CALLER} |
\rtemsendtimetable |
}}\hfil} |
@end tex |
@end ifset |
|
@ifset use-ascii |
@ifinfo |
@itemize @bullet |
|
@item REGION_CREATE |
@itemize - |
@item only case: RTEMS_REGION_CREATE_ONLY |
@end itemize |
|
@item REGION_IDENT |
@itemize - |
@item only case: RTEMS_REGION_IDENT_ONLY |
@end itemize |
|
@item REGION_DELETE |
@itemize - |
@item only case: RTEMS_REGION_DELETE_ONLY |
@end itemize |
|
@item REGION_GET_SEGMENT |
@itemize - |
@item available: RTEMS_REGION_GET_SEGMENT_AVAILABLE |
@item not available -- NO_WAIT: RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_NO_WAIT |
@item not available -- caller blocks: RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_CALLER_BLOCKS |
@end itemize |
|
@item REGION_RETURN_SEGMENT |
@itemize - |
@item no waiting tasks: RTEMS_REGION_RETURN_SEGMENT_NO_WAITING_TASKS |
@item task readied -- returns to caller: RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_RETURNS_TO_CALLER |
@item task readied -- preempts caller: RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_PREEMPTS_CALLER |
@end itemize |
|
@end itemize |
@end ifinfo |
@end ifset |
|
@ifset use-html |
@html |
<CENTER> |
<TABLE COLS=2 WIDTH="80%" BORDER=2> |
<TR><TD ALIGN=left><STRONG>REGION_CREATE</STRONG></TD> |
<TD ALIGN=center>RTEMS_REGION_CREATE_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>REGION_IDENT</STRONG></TD> |
<TD ALIGN=center>RTEMS_REGION_IDENT_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>REGION_DELETE</STRONG></TD> |
<TD ALIGN=center>RTEMS_REGION_DELETE_ONLY</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_GET_SEGMENT</TD></TR> |
<TR><TD ALIGN=left><dd>available</TD> |
<TD ALIGN=center>RTEMS_REGION_GET_SEGMENT_AVAILABLE</TD></TR> |
<TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> |
<TD ALIGN=center> |
RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_NO_WAIT</TD></TR> |
<TR><TD ALIGN=left><dd>not available -- caller blocks</TD> |
<TD ALIGN=center> |
RTEMS_REGION_GET_SEGMENT_NOT_AVAILABLE_CALLER_BLOCKS</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_RETURN_SEGMENT</TD></TR> |
<TR><TD ALIGN=left><dd>no waiting tasks</TD> |
<TD ALIGN=center>RTEMS_REGION_RETURN_SEGMENT_NO_WAITING_TASKS</TD></TR> |
<TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> |
<TD ALIGN=center> |
RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_RETURNS_TO_CALLER</TD></TR> |
<TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> |
<TD ALIGN=center> |
RTEMS_REGION_RETURN_SEGMENT_TASK_READIED_PREEMPTS_CALLER</TD></TR> |
</TABLE> |
</CENTER> |
@end html |
@end ifset |
|
@section Dual-Ported Memory Manager |
|
@ifset use-tex |
@tex |
\centerline{\vbox{\offinterlineskip\halign{ |
\span\rtemstimetable |
\rtemsonecase{PORT\_CREATE}{RTEMS_PORT_CREATE_ONLY} |
\rtemsonecase{PORT\_IDENT}{RTEMS_PORT_IDENT_ONLY} |
\rtemsonecase{PORT\_DELETE}{RTEMS_PORT_DELETE_ONLY} |
\rtemsonecase{PORT\_INTERNAL\_TO\_EXTERNAL} |
{RTEMS_PORT_INTERNAL_TO_EXTERNAL_ONLY} |
\rtemsonecase{PORT\_EXTERNAL\_TO\_INTERNAL} |
{RTEMS_PORT_EXTERNAL_TO_INTERNAL_ONLY} |
\rtemsendtimetable |
}}\hfil} |
@end tex |
@end ifset |
|
@ifset use-ascii |
@ifinfo |
@itemize @bullet |
|
@item PORT_CREATE |
@itemize - |
@item only case: RTEMS_PORT_CREATE_ONLY |
@end itemize |
|
@item PORT_IDENT |
@itemize - |
@item only case: RTEMS_PORT_IDENT_ONLY |
@end itemize |
|
@item PORT_DELETE |
@itemize - |
@item only case: RTEMS_PORT_DELETE_ONLY |
@end itemize |
|
@item PORT_INTERNAL_TO_EXTERNAL |
@itemize - |
@item only case: RTEMS_PORT_INTERNAL_TO_EXTERNAL_ONLY |
@end itemize |
|
@item PORT_EXTERNAL_TO_INTERNAL |
@itemize - |
@item only case: RTEMS_PORT_EXTERNAL_TO_INTERNAL_ONLY |
@end itemize |
|
@end itemize |
@end ifinfo |
@end ifset |
|
@ifset use-html |
@html |
<CENTER> |
<TABLE COLS=2 WIDTH="80%" BORDER=2> |
<TR><TD ALIGN=left><STRONG>PORT_CREATE</STRONG></TD> |
<TD ALIGN=center>RTEMS_PORT_CREATE_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>PORT_IDENT</STRONG></TD> |
<TD ALIGN=center>RTEMS_PORT_IDENT_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>PORT_DELETE</STRONG></TD> |
<TD ALIGN=center>RTEMS_PORT_DELETE_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>PORT_INTERNAL_TO_EXTERNAL</STRONG></TD> |
<TD ALIGN=center>RTEMS_PORT_INTERNAL_TO_EXTERNAL_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>PORT_EXTERNAL_TO_INTERNAL</STRONG></TD> |
<TD ALIGN=center>RTEMS_PORT_EXTERNAL_TO_INTERNAL_ONLY</TD></TR> |
|
</TABLE> |
</CENTER> |
@end html |
@end ifset |
|
@section I/O Manager |
|
@ifset use-tex |
@tex |
\centerline{\vbox{\offinterlineskip\halign{ |
\span\rtemstimetable |
\rtemsonecase{IO\_INITIALIZE}{RTEMS_IO_INITIALIZE_ONLY} |
\rtemsonecase{IO\_OPEN}{RTEMS_IO_OPEN_ONLY} |
\rtemsonecase{IO\_CLOSE}{RTEMS_IO_CLOSE_ONLY} |
\rtemsonecase{IO\_READ}{RTEMS_IO_READ_ONLY} |
\rtemsonecase{IO\_WRITE}{RTEMS_IO_WRITE_ONLY} |
\rtemsonecase{IO\_CONTROL}{RTEMS_IO_CONTROL_ONLY} |
\rtemsendtimetable |
}}\hfil} |
@end tex |
@end ifset |
|
@ifset use-ascii |
@ifinfo |
@itemize @bullet |
|
@item IO_INITIALIZE |
@itemize - |
@item only case: RTEMS_IO_INITIALIZE_ONLY |
@end itemize |
|
@item IO_OPEN |
@itemize - |
@item only case: RTEMS_IO_OPEN_ONLY |
@end itemize |
|
@item IO_CLOSE |
@itemize - |
@item only case: RTEMS_IO_CLOSE_ONLY |
@end itemize |
|
@item IO_READ |
@itemize - |
@item only case: RTEMS_IO_READ_ONLY |
@end itemize |
|
@item IO_WRITE |
@itemize - |
@item only case: RTEMS_IO_WRITE_ONLY |
@end itemize |
|
@item IO_CONTROL |
@itemize - |
@item only case: RTEMS_IO_CONTROL_ONLY |
@end itemize |
|
@end itemize |
@end ifinfo |
@end ifset |
|
@ifset use-html |
@html |
<CENTER> |
<TABLE COLS=2 WIDTH="80%" BORDER=2> |
<TR><TD ALIGN=left><STRONG>IO_INITIALIZE</STRONG></TD> |
<TD ALIGN=center>RTEMS_IO_INITIALIZE_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>IO_OPEN</STRONG></TD> |
<TD ALIGN=center>RTEMS_IO_OPEN_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>IO_CLOSE</STRONG></TD> |
<TD ALIGN=center>RTEMS_IO_CLOSE_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>IO_READ</STRONG></TD> |
<TD ALIGN=center>RTEMS_IO_READ_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>IO_WRITE</STRONG></TD> |
<TD ALIGN=center>RTEMS_IO_WRITE_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>IO_CONTROL</STRONG></TD> |
<TD ALIGN=center>RTEMS_IO_CONTROL_ONLY</TD></TR> |
</TABLE> |
</CENTER> |
@end html |
@end ifset |
|
@section Rate Monotonic Manager |
|
@ifset use-tex |
@tex |
\centerline{\vbox{\offinterlineskip\halign{ |
\span\rtemstimetable |
\rtemsonecase{RATE\_MONOTONIC\_CREATE}{RTEMS_RATE_MONOTONIC_CREATE_ONLY} |
\rtemsonecase{RATE\_MONOTONIC\_IDENT}{RTEMS_RATE_MONOTONIC_IDENT_ONLY} |
\rtemsonecase{RATE\_MONOTONIC\_CANCEL}{RTEMS_RATE_MONOTONIC_CANCEL_ONLY} |
\rtemsdirective{RATE\_MONOTONIC\_DELETE} |
\rtemscase{active}{RTEMS_RATE_MONOTONIC_DELETE_ACTIVE} |
\rtemscase{inactive}{RTEMS_RATE_MONOTONIC_DELETE_INACTIVE} |
\rtemsdirective{RATE\_MONOTONIC\_PERIOD} |
\rtemscase{initiate period -- returns to caller} |
{RTEMS_RATE_MONOTONIC_PERIOD_INITIATE_PERIOD_RETURNS_TO_CALLER} |
\rtemscase{conclude period -- caller blocks} |
{RTEMS_RATE_MONOTONIC_PERIOD_CONCLUDE_PERIOD_CALLER_BLOCKS} |
\rtemscase{obtain status}{RTEMS_RATE_MONOTONIC_PERIOD_OBTAIN_STATUS} |
\rtemsendtimetable |
}}\hfil} |
@end tex |
@end ifset |
|
@ifset use-ascii |
@ifinfo |
@itemize @bullet |
|
@item RATE_MONOTONIC_CREATE |
@itemize - |
@item only case: RTEMS_RATE_MONOTONIC_CREATE_ONLY |
@end itemize |
|
@item RATE_MONOTONIC_IDENT |
@itemize - |
@item only case: RTEMS_RATE_MONOTONIC_IDENT_ONLY |
@end itemize |
|
@item RATE_MONOTONIC_CANCEL |
@itemize - |
@item only case: RTEMS_RATE_MONOTONIC_CANCEL_ONLY |
@end itemize |
|
@item RATE_MONOTONIC_DELETE |
@itemize - |
@item active: RTEMS_RATE_MONOTONIC_DELETE_ACTIVE |
@item inactive: RTEMS_RATE_MONOTONIC_DELETE_INACTIVE |
@end itemize |
|
@item RATE_MONOTONIC_PERIOD |
@itemize - |
@item initiate period -- returns to caller: RTEMS_RATE_MONOTONIC_PERIOD_INITIATE_PERIOD_RETURNS_TO_CALLER |
@item conclude period -- caller blocks: RTEMS_RATE_MONOTONIC_PERIOD_CONCLUDE_PERIOD_CALLER_BLOCKS |
@item obtain status: RTEMS_RATE_MONOTONIC_PERIOD_OBTAIN_STATUS |
@end itemize |
|
@end itemize |
@end ifinfo |
@end ifset |
|
@ifset use-html |
@html |
<CENTER> |
<TABLE COLS=2 WIDTH="80%" BORDER=2> |
<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CREATE</STRONG></TD> |
<TD ALIGN=center>RTEMS_RATE_MONOTONIC_CREATE_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_IDENT</STRONG></TD> |
<TD ALIGN=center>RTEMS_RATE_MONOTONIC_IDENT_ONLY</TD></TR> |
<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CANCEL</STRONG></TD> |
<TD ALIGN=center>RTEMS_RATE_MONOTONIC_CANCEL_ONLY</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_DELETE</TD></TR> |
<TR><TD ALIGN=left><dd>active</TD> |
<TD ALIGN=center>RTEMS_RATE_MONOTONIC_DELETE_ACTIVE</TD></TR> |
<TR><TD ALIGN=left><dd>inactive</TD> |
<TD ALIGN=center>RTEMS_RATE_MONOTONIC_DELETE_INACTIVE</TD></TR> |
<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_PERIOD</TD></TR> |
<TR><TD ALIGN=left><dd>initiate period -- returns to caller</TD> |
<TD ALIGN=center> |
RTEMS_RATE_MONOTONIC_PERIOD_INITIATE_PERIOD_RETURNS_TO_CALLER</TD></TR> |
<TR><TD ALIGN=left><dd>conclude period -- caller blocks</TD> |
<TD ALIGN=center> |
RTEMS_RATE_MONOTONIC_PERIOD_CONCLUDE_PERIOD_CALLER_BLOCKS</TD></TR> |
<TR><TD ALIGN=left><dd>obtain status</TD> |
<TD ALIGN=center>RTEMS_RATE_MONOTONIC_PERIOD_OBTAIN_STATUS</TD></TR> |
</TABLE> |
</CENTER> |
@end html |
@end ifset |
|
@tex |
\global\advance \smallskipamount by 4pt |
@end tex |
/ChangeLog
0,0 → 1,11
2002-03-27 Ralf Corsepius <corsepiu@faw.uni-ulm.de> |
|
* Makefile.am: Remove AUTOMAKE_OPTIONS. |
|
2002-01-18 Ralf Corsepius <corsepiu@faw.uni-ulm.de> |
|
* Makefile.am: Require automake-1.5. |
|
2000-08-10 Joel Sherrill <joel@OARcorp.com> |
|
* ChangeLog: New file. |
/timemac.texi
0,0 → 1,36
@c |
@c COPYRIGHT (c) 1988-2002. |
@c On-Line Applications Research Corporation (OAR). |
@c All rights reserved. |
@c |
@c timemac.texi,v 1.5 2002/01/17 21:47:44 joel Exp |
@c |
@c |
@c Macros to help with the tables in this file |
@c |
|
@tex |
\global\advance \smallskipamount by -4pt |
|
\global\def\rtemstimetable{ |
\vrule\strut##& |
\hbox to 3.0in{\enskip##\hfil}& |
\hbox to 0.75in{\enskip##\hfil}& |
\vrule##\cr |
\noalign{\hrule} |
} |
|
\global\def\rtemsendtimetable{} |
\global\def\rtemsonecase#1#2{ |
& \bf #1\hfil& #2 & \cr\noalign{\hrule} |
} |
|
\global\def\rtemsdirective#1{ |
& \bf #1 \hfil& & \cr\noalign{\hrule} |
} |
|
\global\def\rtemscase#1#2{ |
& \hskip 0.3in #1\hfil& #2 & \cr\noalign{\hrule} |
} |
|
@end tex |
/cpright.texi
0,0 → 1,47
@c |
@c COPYRIGHT (c) 1988-2002. |
@c On-Line Applications Research Corporation (OAR). |
@c All rights reserved. |
@c |
@c cpright.texi,v 1.9 2002/01/17 21:47:44 joel Exp |
@c |
|
@c |
@c The following puts a space somewhere on an otherwise empty page so we |
@c can force the copyright description onto a left hand page. |
@c |
|
@tex |
{\parskip=0pt \hfill On-Line Applications Research Corporation\par \hfill |
\TeX{}info \texinfoversion\par } |
@end tex |
|
@vskip 0pt plus 1filll |
COPYRIGHT @copyright{} 1988 - 2002.@* |
On-Line Applications Research Corporation (OAR).@* |
|
The authors have used their best efforts in preparing |
this material. These efforts include the development, research, |
and testing of the theories and programs to determine their |
effectiveness. No warranty of any kind, expressed or implied, |
with regard to the software or the material contained in this |
document is provided. No liability arising out of the |
application or use of any product described in this document is |
assumed. The authors reserve the right to revise this material |
and to make changes from time to time in the content hereof |
without obligation to notify anyone of such revision or changes. |
|
Any inquiries concerning RTEMS, its related support |
components, its documentation, or any custom services |
for RTEMS should be directed to: |
|
@example |
On-Line Applications Research Corporation |
4910-L Corporate Drive |
Huntsville, AL 35805 |
VOICE: (256) 722-9985 |
FAX: (256) 722-0985 |
EMAIL: rtems@@OARcorp.com |
URL: http://www.oarcorp.com |
@end example |
|
/setup.texi
0,0 → 1,65
@c |
@c COPYRIGHT (c) 1988-2002. |
@c On-Line Applications Research Corporation (OAR). |
@c All rights reserved. |
@c |
@c setup.texi,v 1.32 2002/01/17 21:47:44 joel Exp |
@c |
|
@c |
@c The following determines which set of the tables and figures we will use. |
@c We default to ASCII but if available TeX or HTML versions will |
@c be used instead. |
@c |
|
@set use-ascii |
@c @clear use-html |
@c @clear use-tex |
|
@iftex |
@clear use-ascii |
@clear use-html |
@set use-tex |
@end iftex |
|
@ifhtml |
@clear use-ascii |
@clear use-tex |
@set use-html |
@end ifhtml |
|
@c |
@c The following variable says to use texinfo or html for the two column |
@c texinfo tables. For somethings the format does not look good in html. |
@c With our adjustment to the left column in TeX, it nearly always looks |
@c good printed. |
@c |
@ifset use-ascii |
@set use-texinfo-tables |
@end ifset |
@ifset use-tex |
@set use-texinfo-tables |
@end ifset |
@ifset use-html |
@clear use-texinfo-tables |
@end ifset |
|
@c |
@c Custom whitespace adjustments. We could fiddle a bit more. |
@c |
@tex |
\global\parindent 0in |
\global\chapheadingskip = 15pt plus 4pt minus 2pt |
\global\secheadingskip = 12pt plus 4pt minus 2pt |
\global\subsecheadingskip = 9pt plus 4pt minus 2pt |
\global\hbadness = 10000 |
\global\tolerance = 6000 |
\global\tableindent = 1.5in |
\global\itemindent = 0.5in |
|
@ifclear smallbook |
\global\parskip 6pt plus 1pt |
@end ifclear |
@end tex |
|
|
/Makefile.am
0,0 → 1,6
## Makefile.am,v 1.6 2002/03/28 00:52:43 joel Exp |
|
|
EXTRA_DIST = cpright.texi setup.texi timemac.texi timetbl.t treedef.tex \ |
wksheets.t timing.t |
|
/timing.t
0,0 → 1,396
@c |
@c COPYRIGHT (c) 1988-2002. |
@c On-Line Applications Research Corporation (OAR). |
@c All rights reserved. |
@c |
@c timing.t,v 1.3 2002/01/17 21:47:44 joel Exp |
@c |
|
@chapter Timing Specification |
|
@section Introduction |
|
This chapter provides information pertaining to the |
measurement of the performance of RTEMS, the methods of |
gathering the timing data, and the usefulness of the data. Also |
discussed are other time critical aspects of RTEMS that affect |
an applications design and ultimate throughput. These aspects |
include determinancy, interrupt latency and context switch times. |
|
@section Philosophy |
|
Benchmarks are commonly used to evaluate the |
performance of software and hardware. Benchmarks can be an |
effective tool when comparing systems. Unfortunately, |
benchmarks can also be manipulated to justify virtually any |
claim. Benchmarks of real-time executives are difficult to |
evaluate for a variety of reasons. Executives vary in the |
robustness of features and options provided. Even when |
executives compare favorably in functionality, it is quite |
likely that different methodologies were used to obtain the |
timing data. Another problem is that some executives provide |
times for only a small subset of directives, This is typically |
justified by claiming that these are the only time-critical |
directives. The performance of some executives is also very |
sensitive to the number of objects in the system. To obtain any |
measure of usefulness, the performance information provided for |
an executive should address each of these issues. |
|
When evaluating the performance of a real-time |
executive, one typically considers the following areas: |
determinancy, directive times, worst case interrupt latency, and |
context switch time. Unfortunately, these areas do not have |
standard measurement methodologies. This allows vendors to |
manipulate the results such that their product is favorably |
represented. We have attempted to provide useful and meaningful |
timing information for RTEMS. To insure the usefulness of our |
data, the methodology and definitions used to obtain and |
describe the data are also documented. |
|
@subsection Determinancy |
|
The correctness of data in a real-time system must |
always be judged by its timeliness. In many real-time systems, |
obtaining the correct answer does not necessarily solve the |
problem. For example, in a nuclear reactor it is not enough to |
determine that the core is overheating. This situation must be |
detected and acknowledged early enough that corrective action |
can be taken and a meltdown avoided. |
|
Consequently, a system designer must be able to |
predict the worst-case behavior of the application running under |
the selected executive. In this light, it is important that a |
real-time system perform consistently regardless of the number |
of tasks, semaphores, or other resources allocated. An |
important design goal of a real-time executive is that all |
internal algorithms be fixed-cost. Unfortunately, this goal is |
difficult to completely meet without sacrificing the robustness |
of the executive's feature set. |
|
Many executives use the term deterministic to mean |
that the execution times of their services can be predicted. |
However, they often provide formulas to modify execution times |
based upon the number of objects in the system. This usage is |
in sharp contrast to the notion of deterministic meaning fixed |
cost. |
|
Almost all RTEMS directives execute in a fixed amount |
of time regardless of the number of objects present in the |
system. The primary exception occurs when a task blocks while |
acquiring a resource and specifies a non-zero timeout interval. |
|
Other exceptions are message queue broadcast, |
obtaining a variable length memory block, object name to ID |
translation, and deleting a resource upon which tasks are |
waiting. In addition, the time required to service a clock tick |
interrupt is based upon the number of timeouts and other |
"events" which must be processed at that tick. This second |
group is composed primarily of capabilities which are inherently |
non-deterministic but are infrequently used in time critical |
situations. The major exception is that of servicing a clock |
tick. However, most applications have a very small number of |
timeouts which expire at exactly the same millisecond (usually |
none, but occasionally two or three). |
|
@subsection Interrupt Latency |
|
Interrupt latency is the delay between the CPU's |
receipt of an interrupt request and the execution of the first |
application-specific instruction in an interrupt service |
routine. Interrupts are a critical component of most real-time |
applications and it is critical that they be acted upon as |
quickly as possible. |
|
Knowledge of the worst case interrupt latency of an |
executive aids the application designer in determining the |
maximum period of time between the generation of an interrupt |
and an interrupt handler responding to that interrupt. The |
interrupt latency of an system is the greater of the executive's |
and the applications's interrupt latency. If the application |
disables interrupts longer than the executive, then the |
application's interrupt latency is the system's worst case |
interrupt disable period. |
|
The worst case interrupt latency for a real-time |
executive is based upon the following components: |
|
@itemize @bullet |
@item the longest period of time interrupts are disabled |
by the executive, |
|
@item the overhead required by the executive at the |
beginning of each ISR, |
|
@item the time required for the CPU to vector the |
interrupt, and |
|
@item for some microprocessors, the length of the longest |
instruction. |
@end itemize |
|
The first component is irrelevant if an interrupt |
occurs when interrupts are enabled, although it must be included |
in a worst case analysis. The third and fourth components are |
particular to a CPU implementation and are not dependent on the |
executive. The fourth component is ignored by this document |
because most applications use only a subset of a |
microprocessor's instruction set. Because of this the longest |
instruction actually executed is application dependent. The |
worst case interrupt latency of an executive is typically |
defined as the sum of components (1) and (2). The second |
component includes the time necessry for RTEMS to save registers |
and vector to the user-defined handler. RTEMS includes the |
third component, the time required for the CPU to vector the |
interrupt, because it is a required part of any interrupt. |
|
Many executives report the maximum interrupt disable |
period as their interrupt latency and ignore the other |
components. This results in very low worst-case interrupt |
latency times which are not indicative of actual application |
performance. The definition used by RTEMS results in a higher |
interrupt latency being reported, but accurately reflects the |
longest delay between the CPU's receipt of an interrupt request |
and the execution of the first application-specific instruction |
in an interrupt service routine. |
|
The actual interrupt latency times are reported in |
the Timing Data chapter of this supplement. |
|
@subsection Context Switch Time |
|
An RTEMS context switch is defined as the act of |
taking the CPU from the currently executing task and giving it |
to another task. This process involves the following components: |
|
@itemize @bullet |
@item Saving the hardware state of the current task. |
|
@item Optionally, invoking the TASK_SWITCH user extension. |
|
@item Restoring the hardware state of the new task. |
@end itemize |
|
RTEMS defines the hardware state of a task to include |
the CPU's data registers, address registers, and, optionally, |
floating point registers. |
|
Context switch time is often touted as a performance |
measure of real-time executives. However, a context switch is |
performed as part of a directive's actions and should be viewed |
as such when designing an application. For example, if a task |
is unable to acquire a semaphore and blocks, a context switch is |
required to transfer control from the blocking task to a new |
task. From the application's perspective, the context switch is |
a direct result of not acquiring the semaphore. In this light, |
the context switch time is no more relevant than the performance |
of any other of the executive's subroutines which are not |
directly accessible by the application. |
|
In spite of the inappropriateness of using the |
context switch time as a performance metric, RTEMS context |
switch times for floating point and non-floating points tasks |
are provided for comparison purposes. Of the executives which |
actually support floating point operations, many do not report |
context switch times for floating point context switch time. |
This results in a reported context switch time which is |
meaningless for an application with floating point tasks. |
|
The actual context switch times are reported in the |
Timing Data chapter of this supplement. |
|
@subsection Directive Times |
|
Directives are the application's interface to the |
executive, and as such their execution times are critical in |
determining the performance of the application. For example, an |
application using a semaphore to protect a critical data |
structure should be aware of the time required to acquire and |
release a semaphore. In addition, the application designer can |
utilize the directive execution times to evaluate the |
performance of different synchronization and communication |
mechanisms. |
|
The actual directive execution times are reported in |
the Timing Data chapter of this supplement. |
|
@section Methodology |
|
@subsection Software Platform |
|
The RTEMS timing suite is written in C. The overhead |
of passing arguments to RTEMS by C is not timed. The times |
reported represent the amount of time from entering to exiting |
RTEMS. |
|
The tests are based upon one of two execution models: |
(1) single invocation times, and (2) average times of repeated |
invocations. Single invocation times are provided for |
directives which cannot easily be invoked multiple times in the |
same scenario. For example, the times reported for entering and |
exiting an interrupt service routine are single invocation |
times. The second model is used for directives which can easily |
be invoked multiple times in the same scenario. For example, |
the times reported for semaphore obtain and semaphore release |
are averages of multiple invocations. At least 100 invocations |
are used to obtain the average. |
|
@subsection Hardware Platform |
|
Since RTEMS supports a variety of processors, the |
hardware platform used to gather the benchmark times must also |
vary. Therefore, for each processor supported the hardware |
platform must be defined. Each definition will include a brief |
description of the target hardware platform including the clock |
speed, memory wait states encountered, and any other pertinent |
information. This definition may be found in the processor |
dependent timing data chapter within this supplement. |
|
@subsection What is measured? |
|
An effort was made to provide execution times for a |
large portion of RTEMS. Times were provided for most directives |
regardless of whether or not they are typically used in time |
critical code. For example, execution times are provided for |
all object create and delete directives, even though these are |
typically part of application initialization. |
|
The times include all RTEMS actions necessary in a |
particular scenario. For example, all times for blocking |
directives include the context switch necessary to transfer |
control to a new task. Under no circumstances is it necessary |
to add context switch time to the reported times. |
|
The following list describes the objects created by |
the timing suite: |
|
@itemize @bullet |
@item All tasks are non-floating point. |
|
@item All tasks are created as local objects. |
|
@item No timeouts are used on blocking directives. |
|
@item All tasks wait for objects in FIFO order. |
|
@end itemize |
|
In addition, no user extensions are configured. |
|
@subsection What is not measured? |
|
The times presented in this document are not intended |
to represent best or worst case times, nor are all directives |
included. For example, no times are provided for the initialize |
executive and fatal_error_occurred directives. Other than the |
exceptions detailed in the Determinancy section, all directives |
will execute in the fixed length of time given. |
|
Other than entering and exiting an interrupt service |
routine, all directives were executed from tasks and not from |
interrupt service routines. Directives invoked from ISRs, when |
allowable, will execute in slightly less time than when invoked |
from a task because rescheduling is delayed until the interrupt |
exits. |
|
@subsection Terminology |
|
The following is a list of phrases which are used to |
distinguish individual execution paths of the directives taken |
during the RTEMS performance analysis: |
|
@table @b |
@item another task |
The directive was performed |
on a task other than the calling task. |
|
@item available |
A task attempted to obtain a resource and |
immediately acquired it. |
|
@item blocked task |
The task operated upon by the |
directive was blocked waiting for a resource. |
|
@item caller blocks |
The requested resoure was not |
immediately available and the calling task chose to wait. |
|
@item calling task |
The task invoking the directive. |
|
@item messages flushed |
One or more messages was flushed |
from the message queue. |
|
@item no messages flushed |
No messages were flushed from |
the message queue. |
|
@item not available |
A task attempted to obtain a resource |
and could not immediately acquire it. |
|
@item no reschedule |
The directive did not require a |
rescheduling operation. |
|
@item NO_WAIT |
A resource was not available and the |
calling task chose to return immediately via the NO_WAIT option |
with an error. |
|
@item obtain current |
The current value of something was |
requested by the calling task. |
|
@item preempts caller |
The release of a resource caused a |
task of higher priority than the calling to be readied and it |
became the executing task. |
|
@item ready task |
The task operated upon by the directive |
was in the ready state. |
|
@item reschedule |
The actions of the directive |
necessitated a rescheduling operation. |
|
@item returns to caller |
The directive succeeded and |
immediately returned to the calling task. |
|
@item returns to interrupted task |
The instructions |
executed immediately following this interrupt will be in the |
interrupted task. |
|
@item returns to nested interrupt |
The instructions |
executed immediately following this interrupt will be in a |
previously interrupted ISR. |
|
@item returns to preempting task |
The instructions |
executed immediately following this interrupt or signal handler |
will be in a task other than the interrupted task. |
|
@item signal to self |
The signal set was sent to the |
calling task and signal processing was enabled. |
|
@item suspended task |
The task operated upon by the |
directive was in the suspended state. |
|
@item task readied |
The release of a resource caused a |
task of lower or equal priority to be readied and the calling |
task remained the executing task. |
|
@item yield |
The act of attempting to voluntarily release |
the CPU. |
|
@end table |
|
/treedef.tex
0,0 → 1,317
% treedef.tex |
% |
% These definitions for tree macros are taken from "Trees in TeX", |
% by David Eppstein, as published in TUGboat 6#1, March 1985. |
% David Eppstein's address (as of 15 June 1988) is |
% Computer Science Department |
% Columbia University |
% New York, NY 10027 |
% Eppstein@cs.Columbia.edu |
% |
% Tree -- a macro to make aligned (horizontal) trees in TeX |
% |
% Input is of the form |
% \tree |
% item |
% \subtree |
% \leaf{item} |
% . |
% . |
% . |
% \endsubtree |
% \subtree |
% . |
% . |
% . |
% \endsubtree |
% \endsubtree |
% \endtree |
% |
% Nesting is to any level. \leaf is defined as a subtree of one item: |
% \def\leaf#1{\subtree#1\endsubtree}. |
% |
% A structure: |
% \subtree |
% item_part1 |
% item_part2 |
% . |
% . |
% . |
% |
% will print item_part2 directly below item_part1 as a single item |
% as if they were in a \box. |
% |
% The macro is a 3-pass macro. On the first pass it sets up a data |
% structure from the \subtree ... \endsubtree definitions. On the second pass |
% it recursively calculates the width of each level of the tree. On the third |
% pass it sets up the boxes, glue and rules. |
% |
% By David Eppstein, TUGboat, vol. 6 (1985), no. 1, pp. 31--35. |
% Transcribed by Margaret Kromer (peg), Feb., 1986. |
% |
% Pass 1 |
% At the end of pass 1, the tree is coded as a nested collection of \hboxes |
% and \vboxes. |
\newbox\treebox\newcount\treeboxcnt |
\def\tree{\message{Begin tree}\treeboxcnt=1\global\setbox\treebox=\boxtree} |
\def\subtree{\ettext \advance\treeboxcnt by 1 \boxtree} |
\def\leaf#1{\subtree#1\endsubtree} |
\def\endsubtree{\ettext \egroup \advance\treeboxcnt-1{}% |
\ifnum\treeboxcnt=-1 \treeerrora\fi} |
\def\endtree{\endsubtree \ifnum\treeboxcnt>0 \treeerrorb\fi% |
\settreesizes \typesettree \message{-- end tree}} |
% Error messages for unbalanced tree |
\def\treeerrora{\errhelp=\treeerrorahelp% |
\errmessage{Unbalanced tree -- too many endsubtrees}} |
\newhelp\treeerrorahelp{There are more subtrees closed than opened} |
\def\treeerrorb{\errhelp=\treeerrorbhelp% |
\errmessage{Unbalanced tree -- not enough endsubtrees}} |
\newhelp\treeerrorbhelp{Not all the subtrees of the tree are closed. |
If you continue, you'll get some mysterious secondary errors.} |
% Set up \vbox containing root of tree |
\newif\iftreetext\treetextfalse % Whether still aligning text |
\def\boxtree{\hbox\bgroup % Start outer box of tree or subtree |
\baselineskip 2.5ex % Narrow line spacing slightly |
\tabskip 0pt % No spurious glue in alignment |
\vbox\bgroup % Start inner text \vbox |
\treetexttrue % Remember for \ettext |
\let\par\crcr \obeylines % New line breaks without explicit \cr |
\halign\bgroup##\hfil\cr} % Start alignment with simple template |
\def\ettext{\iftreetext % Are we still in inner text \vbox? |
\crcr\egroup \egroup \fi} % Yes, end alignment and box |
% Pass 2 |
% Recursively calculate widths of tree with \setsizes; keep results in |
% \treesizes; \treewidth contains total width calculated so far. \treeworkbox |
% is workspace containing subtree being sized. |
\newbox\treeworkbox |
\def\cons#1#2{\edef#2{\xmark #1#2}} % Add something to start of list |
\def\car#1{\expandafter\docar#1\docar} % Take first element of list |
\def\docar\xmark#1\xmark#2\docar{#1} % ..by ignoring rest in expansion |
\def\cdr#1{\expandafter\docdr#1\docdr#1}% Similarly, drop first element |
\def\docdr\xmark#1\xmark#2\docdr#3{\def#3{\xmark #2}} |
\def\xmark{\noexpand\xmark} % List separator expands to self |
\def\nil{\xmark} % Empty list is just separator |
\def\settreesizes{\setbox\treeworkbox=\copy\treebox% |
\global\let\treesizes\nil \setsizes} |
\newdimen\treewidth % Width of this part of the tree |
\def\setsizes{\setbox\treeworkbox=\hbox\bgroup% Get a horiz list as a workspace |
\unhbox\treeworkbox\unskip % Take tree, unpack it into horiz list |
\inittreewidth % Get old width at this level |
\sizesubtrees % Recurse through all subtrees |
\sizelevel % Now set width from remaining \vbox |
\egroup} % All done, finish our \hbox |
\def\inittreewidth{\ifx\treesizes\nil % If this is the first at this level |
\treewidth=0pt % ..then we have no previous max width |
\else \treewidth=\car\treesizes % Otherwise take old max level width |
\global\cdr\treesizes % ..and advance level width storage |
\fi} % ..in preparation for next level. |
\def\sizesubtrees{\loop % For each box in horiz list (subtree) |
\setbox\treeworkbox=\lastbox \unskip % ..pull it off list and flush glue |
\ifhbox\treeworkbox \setsizes % If hbox, it's a subtree - recurse |
\repeat} % ..and loop; end loop on tree text |
\def\sizelevel{% |
\ifdim\treewidth<\wd\treeworkbox % If greater than previous maximum |
\treewidth=\wd\treeworkbox \fi % Then set max to new high |
\global\cons{\the\treewidth}\treesizes}% In either case, put back on list |
% Pass 3 |
% Recursively typeset tree with \maketree by adding an \hbox containing |
% a subtree (in \treebox) to the horizontal list. |
\newdimen\treeheight % Height of this part of the tree |
\newif\ifleaf % Tree has no subtrees (is a leaf) |
\newif\ifbotsub % Bottom subtree of parent |
\newif\iftopsub % Top subtree of parent |
\def\typesettree{\medskip\maketree\medskip} % Make whole tree |
\def\maketree{\hbox{\treewidth=\car\treesizes % Get width at this level |
\cdr\treesizes % Set up width list for recursion |
\makesubtreebox\unskip % Set \treebox to text, make subtrees |
\ifleaf \makeleaf % No subtrees, add glue |
\else \makeparent \fi}} % Have subtrees, stick them at right |
{\catcode`@=11 % Be able to use \voidb@x |
\gdef\makesubtreebox{\unhbox\treebox % Open up tree or subtree |
\unskip\global\setbox\treebox\lastbox % Pick up very last box |
\ifvbox\treebox % If we're already at the \vbox |
\global\leaftrue \let\next\relax % ..then this is a leaf |
\else \botsubtrue % Otherwise, we have subtrees |
\setbox\treeworkbox\box\voidb@x % Init stack of processed subs |
\botsubtrue \let\next\makesubtree % ..and call \maketree on them |
\fi \next}} % Finish up for whichever it was |
\def\makesubtree{\setbox1\maketree % Call \maketree on this subtree |
\unskip\global\setbox\treebox\lastbox % Pick up box before it |
\treeheight=\ht1 % Get height of subtree we made |
\advance\treeheight 2ex % Add some room around the edges |
\ifhbox\treebox \topsubfalse % If picked up box is a \vbox, |
\else \topsubtrue \fi % ..this is the top, otherwise not |
\addsubtreebox % Stack subtree with the rest |
\iftopsub \global\leaffalse % If top, remember not a leaf |
\let\next\relax \else % ..(after recursion), set return |
\botsubfalse \let\next\makesubtree % Otherwise, we have more subtrees |
\fi \next} % Do tail recursion or return |
\def\addsubtreebox{\setbox\treeworkbox=\vbox{\subtreebox\unvbox\treeworkbox}} |
\def\subtreebox{\hbox\bgroup % Start \hbox of tree and lines |
\vbox to \treeheight\bgroup % Start \vbox for vertical rules |
\ifbotsub \iftopsub \vfil % If both bottom and top subtree |
\hrule width 0.4pt % ..vertical rule is just a dot |
\else \treehalfrule \fi \vfil % Bottom gets half-height rule |
\else \iftopsub \vfil \treehalfrule % Top gets half-height the other way |
\else \hrule width 0.4pt height \treeheight \fi\fi % Middle, full height |
\egroup % Finish vertical rule \vbox |
\treectrbox{\hrule width 1em}\hskip 0.2em\treectrbox{\box1}\egroup} |
\def\treectrbox#1{\vbox to \treeheight{\vfil #1\vfil}} |
\def\treehalfrule{\dimen\treeworkbox=\treeheight % Get total height |
\divide\dimen\treeworkbox 2% |
\advance\dimen\treeworkbox 0.2pt % Divide by two, add half horiz height |
\hrule width 0.4pt height \dimen\treeworkbox}% Make a vertical rule that high |
\def\makeleaf{\box\treebox} % Add leaf box to horiz list |
\def\makeparent{\ifdim\ht\treebox>% |
\ht\treeworkbox % If text is higher than subtrees |
\treeheight=\ht\treebox % ..use that height |
\else \treeheight=\ht\treeworkbox \fi % Otherwise use height of subtrees |
\advance\treewidth-\wd\treebox % Take remainder of level width |
\advance\treewidth 1em % ..after accounting for text and glue |
\treectrbox{\box\treebox}\hskip 0.2em % Add text, space before connection |
\treectrbox{\hrule width \treewidth}% |
\treectrbox{\box\treeworkbox}} % Add \hrule, subs |
|
************************************************ |
% Plain TeX driver for tree.tex |
|
\def\uncatcodespecials{\catcode`@=12\def\do##1{\catcode`##1=12}\dospecials} |
\def\setupverbatim{\tt\obeylines\uncatcodespecials\obeyspaces} |
{\obeyspaces\global\let =\ } |
\def\beginshowoff{\par\begingroup\setupverbatim\doverbatim} |
{\catcode`\!=0 \catcode`\\=12 |
!obeylines!gdef!doverbatim^^M#1\endshowoff{#1!endgroup!medbreak!filbreak% |
!smallskip}} |
|
% see The TeXbook, exercise 22.14 |
%\input tree.tex |
\centerline{\bf TREE TREE} |
\bigskip |
\tree |
{Tree} |
Uses |
\subtree |
Computer |
Science |
\subtree |
Data |
Structures |
\leaf{Search Tree} |
\leaf{Priority Queue} |
\endsubtree |
\subtree |
Parsing |
\leaf{Parse Tree} |
\leaf{Symbol Table} |
\endsubtree |
\subtree |
Structured |
Programming |
\endsubtree |
\endsubtree |
\subtree |
Genealogy |
\leaf{Ancestors} |
\leaf{Descendants} |
\endsubtree |
\subtree |
Electrical |
Engineering |
\subtree |
Paper |
\leaf{{\it Vitae}} |
\leaf{Announcements} |
\leaf{Proposals} |
\leaf{\TeX{} Samples} |
\endsubtree |
\endsubtree |
\subtree |
Construction |
\leaf{Fences} |
\subtree |
Buildings |
\subtree |
Houses |
\leaf{Human} |
\leaf{Dog} |
\leaf{Bird} |
\leaf{Tree} |
\endsubtree |
\leaf{Barns} |
\leaf{Other} |
\endsubtree |
\leaf{\dots} |
\endsubtree |
\subtree |
Taxonomies |
\leaf{Tree Uses} |
\endsubtree |
\endtree |
|
\vskip.5truein |
\beginshowoff |
% see The TeXbook, exercise 22.14 |
\input tree.tex |
\centerline{TREE TREE} |
\bigskip |
\tree |
Tree |
Uses |
\subtree |
Computer |
Science |
\subtree |
Data |
Structures |
\leaf{Search Tree} |
\leaf{Priority Queue} |
\endsubtree |
\subtree |
Parsing |
\leaf{Parse Tree} |
\leaf{Symbol Table} |
\endsubtree |
\subtree |
Structured |
Programming |
\endsubtree |
\endsubtree |
\subtree |
Genealogy |
\leaf{Ancestors} |
\leaf{Descendants} |
\endsubtree |
\subtree |
Electrical |
Engineering |
\subtree |
Paper |
\leaf{{\it Vitae}} |
\leaf{Announcements} |
\leaf{Proposals} |
\leaf{\TeX{} Samples} |
\endsubtree |
\endsubtree |
\subtree |
Construction |
\leaf{Fences} |
\subtree |
Buildings |
\subtree |
Houses |
\leaf{Human} |
\leaf{Dog} |
\leaf{Bird} |
\leaf{Tree} |
\endsubtree |
\leaf{Barns} |
\leaf{Other} |
\endsubtree |
\leaf{\dots} |
\endsubtree |
\subtree |
Taxonomies |
\leaf{Tree Uses} |
\endsubtree |
\endtree |
\endshowoff |
.
Property changes :
Added: svn:ignore
## -0,0 +1,3 ##
+Makefile
+Makefile.in
+setup.texi