diff options
Diffstat (limited to '')
-rw-r--r-- | doc/supplements/powerpc/timeDMV177_.t | 1447 |
1 files changed, 1447 insertions, 0 deletions
diff --git a/doc/supplements/powerpc/timeDMV177_.t b/doc/supplements/powerpc/timeDMV177_.t new file mode 100644 index 0000000000..85bb6fb41b --- /dev/null +++ b/doc/supplements/powerpc/timeDMV177_.t @@ -0,0 +1,1447 @@ +@c +@c Timing information for the DMV177 +@c +@c COPYRIGHT (c) 1988-1999. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c $Id$ +@c + +@include ../../common/timemac.texi +@tex +\global\advance \smallskipamount by -4pt +@end tex + +@chapter DMV177 Timing Data + +@section Introduction + +The timing data for RTEMS on the DY-4 DMV177 board +is provided along with the target +dependent aspects concerning the gathering of the timing data. +The hardware platform used to gather the times is described to +give the reader a better understanding of each directive time +provided. Also, provided is a description of the interrupt +latency and the context switch times as they pertain to the +PowerPC version of RTEMS. + +@section Hardware Platform + +All times reported in this chapter were measured using a DMV177 board. +All data and code caching was disabled. This results in very deterministic +times which represent the worst possible performance. Many embedded +applications disable caching to insure that execution times are +repeatable. Moreover, the JTAG port on certain revisions of the PowerPC +603e does not operate properly if caching is enabled. Thus during +development and debug, caching must be off. + +The PowerPC decrementer register was was used to gather +all timing information. In the PowerPC architecture, +this register typically counts +something like CPU cycles or is a function of the clock +speed. On the PPC603e decrements once for every four (4) bus cycles. +On the DMV177, the bus operates at a clock speed of +33 Mhz. This result in a very accurate number since it is a function of the +microprocessor itself. Thus all measurements in this +chapter are reported as the actual number of decrementer +clicks reported. + +To convert the numbers reported to microseconds, one should +divide the number reported by 8.650752. This number was derived as +shown below: + +@example +((33 * 1048576) / 1000000) / 4 = 8.650752 +@end example + +All sources of hardware interrupts were disabled, +although traps were enabled and the interrupt level of the +PowerPC allows all interrupts. + +@section Interrupt Latency + +The maximum period with traps disabled or the +processor interrupt level set to it's highest value inside RTEMS +is less than TBD +microseconds including the instructions which +disable and re-enable interrupts. The time required for the +PowerPC to vector an interrupt and for the RTEMS entry overhead +before invoking the user's trap handler are a total of +202 +microseconds. These combine to yield a worst case interrupt +latency of less than TBD + +202 microseconds at +100.0 Mhz. +[NOTE: The maximum period with interrupts disabled was last +determined for Release 4.0.0-lmco.] + +The maximum period with interrupts disabled within +RTEMS is hand-timed with some assistance from the PowerPC simulator. +The maximum period with interrupts disabled with RTEMS has not +been calculated on this target. + +The interrupt vector and entry overhead time was +generated on the PSIM benchmark platform using the PowerPC's +decrementer register. This register was programmed to generate +an interrupt after one countdown. + +@section Context Switch + +The RTEMS processor context switch time is 585 +bus cycle on the DMV177 benchmark platform when no floating +point context is saved or restored. Additional execution time +is required when a TASK_SWITCH user extension is configured. +The use of the TASK_SWITCH extension is application dependent. +Thus, its execution time is not considered part of the raw +context switch time. + +Since RTEMS was designed specifically for embedded +missile applications which are floating point intensive, the +executive is optimized to avoid unnecessarily saving and +restoring the state of the numeric coprocessor. The state of +the numeric coprocessor is only saved when an FLOATING_POINT +task is dispatched and that task was not the last task to +utilize the coprocessor. In a system with only one +FLOATING_POINT task, the state of the numeric coprocessor will +never be saved or restored. When the first FLOATING_POINT task +is dispatched, RTEMS does not need to save the current state of +the numeric coprocessor. + +The following table summarizes the context switch +times for the DMV177 benchmark platform: + +@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-1999. +@c On-Line Applications Research Corporation (OAR). +@c All rights reserved. +@c +@c $Id$ +@c + +@ifset use-tex +@sp 1 +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{No Floating Point Contexts}{585} +\rtemsdirective{Floating Point Contexts} +\rtemscase{restore first FP task}{730} +\rtemscase{save initialized, restore initialized}{478} +\rtemscase{save idle, restore initialized}{825} +\rtemscase{save idle, restore idle}{478} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet +@item No Floating Point Contexts +@itemize - +@item only case: 585 +@end itemize +@item Floating Point Contexts +@itemize - +@item restore first FP task: 730 +@item save initialized, restore initialized: 478 +@item save idle, restore initialized: 825 +@item save idle, restore idle: 825 +@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>585</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>730</TD> + <TR><TD ALIGN=left><dd>save initialized, restore initialized</TD> + <TD ALIGN=center>478</TD> + <TR><TD ALIGN=left><dd>save idle, restore initialized</TD> + <TD ALIGN=center>825</TD> + <TR><TD ALIGN=left><dd>save idle, restore idle</TD> + <TD ALIGN=center>478</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}{2301} +\rtemsonecase{TASK\_IDENT}{2900} +\rtemsonecase{TASK\_START}{794} +\rtemsdirective{TASK\_RESTART} +\rtemscase{calling task}{1137} +\rtemscase{suspended task -- returns to caller} + {906} +\rtemscase{blocked task -- returns to caller} + {1102} +\rtemscase{ready task -- returns to caller} + {928} +\rtemscase{suspended task -- preempts caller} + {1483} +\rtemscase{blocked task -- preempts caller} + {1640} +\rtemscase{ready task -- preempts caller} + {1601} +\rtemsdirective{TASK\_DELETE} +\rtemscase{calling task}{2117} +\rtemscase{suspended task}{1555} +\rtemscase{blocked task}{1609} +\rtemscase{ready task}{1620} +\rtemsdirective{TASK\_SUSPEND} +\rtemscase{calling task}{960} +\rtemscase{returns to caller}{433} +\rtemsdirective{TASK\_RESUME} +\rtemscase{task readied -- returns to caller} + {960} +\rtemscase{task readied -- preempts caller} + {803} +\rtemsdirective{TASK\_SET\_PRIORITY} +\rtemscase{obtain current priority} + {368} +\rtemscase{returns to caller}{633} +\rtemscase{preempts caller}{1211} +\rtemsdirective{TASK\_MODE} +\rtemscase{obtain current mode}{184} +\rtemscase{no reschedule}{213} +\rtemscase{reschedule -- returns to caller} + {247} +\rtemscase{reschedule -- preempts caller} + {919} +\rtemsonecase{TASK\_GET\_NOTE}{382} +\rtemsonecase{TASK\_SET\_NOTE}{383} +\rtemsdirective{TASK\_WAKE\_AFTER} +\rtemscase{yield -- returns to caller} + {245} +\rtemscase{yield -- preempts caller} + {851} +\rtemsonecase{TASK\_WAKE\_WHEN}{1275} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item TASK_CREATE +@itemize - +@item only case: 2301 +@end itemize + +@item TASK_IDENT +@itemize - +@item only case: 2900 +@end itemize + +@item TASK_START +@itemize - +@item only case: 794 +@end itemize + +@item TASK_RESTART +@itemize - +@item calling task: 1137 +@item suspended task -- returns to caller: 906 +@item blocked task -- returns to caller: 1102 +@item ready task -- returns to caller: 928 +@item suspended task -- preempts caller: 1483 +@item blocked task -- preempts caller: 1640 +@item ready task -- preempts caller: 1601 +@end itemize + +@item TASK_DELETE +@itemize - +@item calling task: 2117 +@item suspended task: 1555 +@item blocked task: 1609 +@item ready task: 1620 +@end itemize + +@item TASK_SUSPEND +@itemize - +@item calling task: 960 +@item returns to caller: 433 +@end itemize + +@item TASK_RESUME +@itemize - +@item task readied -- returns to caller: 960 +@item task readied -- preempts caller: 803 +@end itemize + +@item TASK_SET_PRIORITY +@itemize - +@item obtain current priority: 368 +@item returns to caller: 633 +@item preempts caller: 1211 +@end itemize + +@item TASK_MODE +@itemize - +@item obtain current mode: 184 +@item no reschedule: 213 +@item reschedule -- returns to caller: 247 +@item reschedule -- preempts caller: 919 +@end itemize + +@item TASK_GET_NOTE +@itemize - +@item only case: 382 +@end itemize + +@item TASK_SET_NOTE +@itemize - +@item only case: 383 +@end itemize + +@item TASK_WAKE_AFTER +@itemize - +@item yield -- returns to caller: 245 +@item yield -- preempts caller: 851 +@end itemize + +@item TASK_WAKE_WHEN +@itemize - +@item only case: 1275 +@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>2301</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_IDENT</STRONG></TD> + <TD ALIGN=center>2900</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_START</STRONG></TD> + <TD ALIGN=center>794</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>1137</TD></TR> + <TR><TD ALIGN=left><dd>suspended task -- returns to caller</TD> + <TD ALIGN=center>906</TD></TR> + <TR><TD ALIGN=left><dd>blocked task -- returns to caller</TD> + <TD ALIGN=center>1102</TD></TR> + <TR><TD ALIGN=left><dd>ready task -- returns to caller</TD> + <TD ALIGN=center>928</TD></TR> + <TR><TD ALIGN=left><dd>suspended task -- preempts caller</TD> + <TD ALIGN=center>1483</TD></TR> + <TR><TD ALIGN=left><dd>blocked task -- preempts caller</TD> + <TD ALIGN=center>1640</TD></TR> + <TR><TD ALIGN=left><dd>ready task -- preempts caller</TD> + <TD ALIGN=center>1601</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>2117</TD></TR> + <TR><TD ALIGN=left><dd>suspended task</TD> + <TD ALIGN=center>1555</TD></TR> + <TR><TD ALIGN=left><dd>blocked task</TD> + <TD ALIGN=center>1609</TD></TR> + <TR><TD ALIGN=left><dd>ready task</TD> + <TD ALIGN=center>1620</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>960</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>433</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>960</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>803</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>368</TD></TR> + <TR><TD ALIGN=left><dd>returns to caller</TD> + <TD ALIGN=center>633</TD></TR> + <TR><TD ALIGN=left><dd>preempts caller</TD> + <TD ALIGN=center>1211</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>184</TD></TR> + <TR><TD ALIGN=left><dd>no reschedule</TD> + <TD ALIGN=center>213</TD></TR> + <TR><TD ALIGN=left><dd>reschedule -- returns to caller</TD> + <TD ALIGN=center>247</TD></TR> + <TR><TD ALIGN=left><dd>reschedule -- preempts caller</TD> + <TD ALIGN=center>919</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_GET_NOTE</STRONG></TD> + <TD ALIGN=center>382</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_SET_NOTE</STRONG></TD> + <TD ALIGN=center>383</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>245</TD></TR> + <TR><TD ALIGN=left><dd>yield -- preempts caller</TD> + <TD ALIGN=center>851</TD></TR> +<TR><TD ALIGN=left><STRONG>TASK_WAKE_WHEN</STRONG></TD> + <TD ALIGN=center>1275</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}{201} +\rtemscase{returns to interrupted task} + {206} +\rtemscase{returns to preempting task} + {202} +\rtemsdirective{Interrupt Exit Overhead} +\rtemscase{returns to nested interrupt}{201} +\rtemscase{returns to interrupted task} + {213} +\rtemscase{returns to preempting task} + {857} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item Interrupt Entry Overhead +@itemize - +@item returns to nested interrupt: 201 +@item returns to interrupted task: 206 +@item returns to preempting task: 202 +@end itemize + +@item Interrupt Exit Overhead +@itemize - +@item returns to nested interrupt: 201 +@item returns to interrupted task: 213 +@item returns to preempting task: 857 +@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>201</TD></TR> + <TR><TD ALIGN=left><dd>returns to interrupted task</TD> + <TD ALIGN=center>206</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center>202</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>201</TD></TR> + <TR><TD ALIGN=left><dd>returns to interrupted task</TD> + <TD ALIGN=center>213</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center>857</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + + +@section Clock Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{CLOCK\_SET}{792} +\rtemsonecase{CLOCK\_GET}{78} +\rtemsonecase{CLOCK\_TICK}{214} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item CLOCK_SET +@itemize - +@item only case: 792 +@end itemize + +@item CLOCK_GET +@itemize - +@item only case: 78 +@end itemize + +@item CLOCK_TICK +@itemize - +@item only case: 214 +@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>792</TD></TR> +<TR><TD ALIGN=left><STRONG>CLOCK_GET</STRONG></TD> + <TD ALIGN=center>78</TD></TR> +<TR><TD ALIGN=left><STRONG>CLOCK_TICK</STRONG></TD> + <TD ALIGN=center>214</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Timer Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{TIMER\_CREATE}{357} +\rtemsonecase{TIMER\_IDENT}{2828} +\rtemsdirective{TIMER\_DELETE} +\rtemscase{inactive}{432} +\rtemscase{active}{471} +\rtemsdirective{TIMER\_FIRE\_AFTER} +\rtemscase{inactive}{607} +\rtemscase{active}{646} +\rtemsdirective{TIMER\_FIRE\_WHEN} +\rtemscase{inactive}{766} +\rtemscase{active}{764} +\rtemsdirective{TIMER\_RESET} +\rtemscase{inactive}{552} +\rtemscase{active}{766} +\rtemsdirective{TIMER\_CANCEL} +\rtemscase{inactive}{339} +\rtemscase{active}{378} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item TIMER_CREATE +@itemize - +@item only case: 357 +@end itemize + +@item TIMER_IDENT +@itemize - +@item only case: 2828 +@end itemize + +@item TIMER_DELETE +@itemize - +@item inactive: 432 +@item active: 471 +@end itemize + +@item TIMER_FIRE_AFTER +@itemize - +@item inactive: 607 +@item active: 646 +@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>357</TD></TR> +<TR><TD ALIGN=left><STRONG>TIMER_IDENT</STRONG></TD> + <TD ALIGN=center>2828</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_DELETE</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>432</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>471</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>607</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>646</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>766</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>764</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_RESET</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>552</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>766</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>TIMER_CANCEL</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>339</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>378</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}{571} +\rtemsonecase{SEMAPHORE\_IDENT}{3243} +\rtemsonecase{SEMAPHORE\_DELETE}{575} +\rtemsdirective{SEMAPHORE\_OBTAIN} +\rtemscase{available}{414} +\rtemscase{not available -- NO\_WAIT} + {414} +\rtemscase{not available -- caller blocks} + {1254} +\rtemsdirective{SEMAPHORE\_RELEASE} +\rtemscase{no waiting tasks}{501} +\rtemscase{task readied -- returns to caller} + {636} +\rtemscase{task readied -- preempts caller} + {982} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item SEMAPHORE_CREATE +@itemize - +@item only case: 571 +@end itemize + +@item SEMAPHORE_IDENT +@itemize - +@item only case: 3243 +@end itemize + +@item SEMAPHORE_DELETE +@itemize - +@item only case: 575 +@end itemize + +@item SEMAPHORE_OBTAIN +@itemize - +@item available: 414 +@item not available -- NO_WAIT: 414 +@item not available -- caller blocks: 1254 +@end itemize + +@item SEMAPHORE_RELEASE +@itemize - +@item no waiting tasks: 501 +@item task readied -- returns to caller: 636 +@item task readied -- preempts caller: 982 +@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>571</TD></TR> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_IDENT</STRONG></TD> + <TD ALIGN=center>3243</TD></TR> +<TR><TD ALIGN=left><STRONG>SEMAPHORE_DELETE</STRONG></TD> + <TD ALIGN=center>575</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>SEMAPHORE_OBTAIN</STRONG></TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>414</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>414</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>1254</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>501</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>636</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>982</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}{2270} +\rtemsonecase{MESSAGE\_QUEUE\_IDENT}{2828} +\rtemsonecase{MESSAGE\_QUEUE\_DELETE}{708} +\rtemsdirective{MESSAGE\_QUEUE\_SEND} +\rtemscase{no waiting tasks} + {923} +\rtemscase{task readied -- returns to caller} + {955} +\rtemscase{task readied -- preempts caller} + {1322} +\rtemsdirective{MESSAGE\_QUEUE\_URGENT} +\rtemscase{no waiting tasks}{919} +\rtemscase{task readied -- returns to caller} + {955} +\rtemscase{task readied -- preempts caller} + {1322} +\rtemsdirective{MESSAGE\_QUEUE\_BROADCAST} +\rtemscase{no waiting tasks}{589} +\rtemscase{task readied -- returns to caller} + {1079} +\rtemscase{task readied -- preempts caller} + {1435} +\rtemsdirective{MESSAGE\_QUEUE\_RECEIVE} +\rtemscase{available}{755} +\rtemscase{not available -- NO\_WAIT} + {467} +\rtemscase{not available -- caller blocks} + {1283} +\rtemsdirective{MESSAGE\_QUEUE\_FLUSH} +\rtemscase{no messages flushed}{369} +\rtemscase{messages flushed}{431} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item MESSAGE_QUEUE_CREATE +@itemize - +@item only case: 2270 +@end itemize + +@item MESSAGE_QUEUE_IDENT +@itemize - +@item only case: 2828 +@end itemize + +@item MESSAGE_QUEUE_DELETE +@itemize - +@item only case: 708 +@end itemize + +@item MESSAGE_QUEUE_SEND +@itemize - +@item no waiting tasks: 923 +@item task readied -- returns to caller: 955 +@item task readied -- preempts caller: 1322 +@end itemize + +@item MESSAGE_QUEUE_URGENT +@itemize - +@item no waiting tasks: 919 +@item task readied -- returns to caller: 955 +@item task readied -- preempts caller: 1322 +@end itemize + +@item MESSAGE_QUEUE_BROADCAST +@itemize - +@item no waiting tasks: 589 +@item task readied -- returns to caller: 1079 +@item task readied -- preempts caller: 1435 +@end itemize + +@item MESSAGE_QUEUE_RECEIVE +@itemize - +@item available: 755 +@item not available -- NO_WAIT: 467 +@item not available -- caller blocks: 1283 +@end itemize + +@item MESSAGE_QUEUE_FLUSH +@itemize - +@item no messages flushed: 369 +@item messages flushed: 431 +@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>2270</TD></TR> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_IDENT</STRONG></TD> + <TD ALIGN=center>2828</TD></TR> +<TR><TD ALIGN=left><STRONG>MESSAGE_QUEUE_DELETE</STRONG></TD> + <TD ALIGN=center>708</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>923</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>955</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>1322</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>919</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>955</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>1322</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>589</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>1079</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>1435</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>755</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>467</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>1283</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>369</TD></TR> + <TR><TD ALIGN=left><dd>messages flushed</TD> + <TD ALIGN=center>431</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}{354} +\rtemscase{task readied -- returns to caller} + {571} +\rtemscase{task readied -- preempts caller} + {946} +\rtemsdirective{EVENT\_RECEIVE} +\rtemscase{obtain current events}{43} +\rtemscase{available}{357} +\rtemscase{not available -- NO\_WAIT}{331} +\rtemscase{not available -- caller blocks} + {1043} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item EVENT_SEND +@itemize - +@item no task readied: 354 +@item task readied -- returns to caller: 571 +@item task readied -- preempts caller: 946 +@end itemize + +@item EVENT_RECEIVE +@itemize - +@item obtain current events: 43 +@item available: 357 +@item not available -- NO_WAIT: 331 +@item not available -- caller blocks: 1043 +@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>354</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center>571</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center>946</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>43</TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>357</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center>331</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center>1043</TD></TR> + + </TABLE> +</CENTER> +@end html +@end ifset +@section Signal Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{SIGNAL\_CATCH}{267} +\rtemsdirective{SIGNAL\_SEND} +\rtemscase{returns to caller}{408} +\rtemscase{signal to self}{607} +\rtemsdirective{EXIT ASR OVERHEAD} +\rtemscase{returns to calling task} + {464} +\rtemscase{returns to preempting task} + {752} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet +@item SIGNAL_CATCH +@itemize - +@item only case: 267 +@end itemize + +@item SIGNAL_SEND +@itemize - +@item returns to caller: 408 +@item signal to self: 607 +@end itemize + +@item EXIT ASR OVERHEAD +@itemize - +@item returns to calling task: 464 +@item returns to preempting task: 752 +@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>267</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>408</TD></TR> + <TR><TD ALIGN=left><dd>signal to self</TD> + <TD ALIGN=center>607</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> + 464</TD></TR> + <TR><TD ALIGN=left><dd>returns to preempting task</TD> + <TD ALIGN=center> + 752</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@section Partition Manager + +@ifset use-tex +@tex +\centerline{\vbox{\offinterlineskip\halign{ +\span\rtemstimetable +\rtemsonecase{PARTITION\_CREATE}{762} +\rtemsonecase{PARTITION\_IDENT}{2828} +\rtemsonecase{PARTITION\_DELETE}{426} +\rtemsdirective{PARTITION\_GET\_BUFFER} +\rtemscase{available}{394} +\rtemscase{not available}{376} +\rtemsonecase{PARTITION\_RETURN\_BUFFER} + {376} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item PARTITION_CREATE +@itemize - +@item only case: 762 +@end itemize + +@item PARTITION_IDENT +@itemize - +@item only case: 2828 +@end itemize + +@item PARTITION_DELETE +@itemize - +@item only case: 426 +@end itemize + +@item PARTITION_GET_BUFFER +@itemize - +@item available: 394 +@item not available: 376 +@end itemize + +@item PARTITION_RETURN_BUFFER +@itemize - +@item only case: 420 +@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>762</TD></TR> +<TR><TD ALIGN=left><STRONG>PARTITION_IDENT</STRONG></TD> + <TD ALIGN=center>2828</TD></TR> +<TR><TD ALIGN=left><STRONG>PARTITION_DELETE</STRONG></TD> + <TD ALIGN=center>426</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>394</TD></TR> + <TR><TD ALIGN=left><dd>not available</TD> + <TD ALIGN=center>376</TD></TR> + <TR><TD ALIGN=left><STRONG>PARTITION_RETURN_BUFFER</STRONG></TD> + <TD ALIGN=center>376</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}{614} +\rtemsonecase{REGION\_IDENT}{2878} +\rtemsonecase{REGION\_DELETE}{425} +\rtemsdirective{REGION\_GET\_SEGMENT} +\rtemscase{available}{515} +\rtemscase{not available -- NO\_WAIT} + {472} +\rtemscase{not available -- caller blocks} + {1345} +\rtemsdirective{REGION\_RETURN\_SEGMENT} +\rtemscase{no waiting tasks}{544} +\rtemscase{task readied -- returns to caller} + {935} +\rtemscase{task readied -- preempts caller} + {1296} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item REGION_CREATE +@itemize - +@item only case: 614 +@end itemize + +@item REGION_IDENT +@itemize - +@item only case: 2878 +@end itemize + +@item REGION_DELETE +@itemize - +@item only case: 425 +@end itemize + +@item REGION_GET_SEGMENT +@itemize - +@item available: 515 +@item not available -- NO_WAIT: 472 +@item not available -- caller blocks: 1345 +@end itemize + +@item REGION_RETURN_SEGMENT +@itemize - +@item no waiting tasks: 544 +@item task readied -- returns to caller: 935 +@item task readied -- preempts caller: 1296 +@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>614</TD></TR> +<TR><TD ALIGN=left><STRONG>REGION_IDENT</STRONG></TD> + <TD ALIGN=center>2878</TD></TR> +<TR><TD ALIGN=left><STRONG>REGION_DELETE</STRONG></TD> + <TD ALIGN=center>425</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>REGION_GET_SEGMENT</TD></TR> + <TR><TD ALIGN=left><dd>available</TD> + <TD ALIGN=center>515</TD></TR> + <TR><TD ALIGN=left><dd>not available -- NO_WAIT</TD> + <TD ALIGN=center> + 472</TD></TR> + <TR><TD ALIGN=left><dd>not available -- caller blocks</TD> + <TD ALIGN=center> + 1345</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>544</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- returns to caller</TD> + <TD ALIGN=center> + 935</TD></TR> + <TR><TD ALIGN=left><dd>task readied -- preempts caller</TD> + <TD ALIGN=center> + 1296</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}{428} +\rtemsonecase{PORT\_IDENT}{2828} +\rtemsonecase{PORT\_DELETE}{421} +\rtemsonecase{PORT\_INTERNAL\_TO\_EXTERNAL} + {339} +\rtemsonecase{PORT\_EXTERNAL\_TO\_INTERNAL} + {339} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item PORT_CREATE +@itemize - +@item only case: 428 +@end itemize + +@item PORT_IDENT +@itemize - +@item only case: 2828 +@end itemize + +@item PORT_DELETE +@itemize - +@item only case: 421 +@end itemize + +@item PORT_INTERNAL_TO_EXTERNAL +@itemize - +@item only case: 339 +@end itemize + +@item PORT_EXTERNAL_TO_INTERNAL +@itemize - +@item only case: 339 +@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>428</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_IDENT</STRONG></TD> + <TD ALIGN=center>2828</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_DELETE</STRONG></TD> + <TD ALIGN=center>421</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_INTERNAL_TO_EXTERNAL</STRONG></TD> + <TD ALIGN=center>339</TD></TR> +<TR><TD ALIGN=left><STRONG>PORT_EXTERNAL_TO_INTERNAL</STRONG></TD> + <TD ALIGN=center>339</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}{52} +\rtemsonecase{IO\_OPEN}{42} +\rtemsonecase{IO\_CLOSE}{44} +\rtemsonecase{IO\_READ}{42} +\rtemsonecase{IO\_WRITE}{44} +\rtemsonecase{IO\_CONTROL}{42} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item IO_INITIALIZE +@itemize - +@item only case: 52 +@end itemize + +@item IO_OPEN +@itemize - +@item only case: 42 +@end itemize + +@item IO_CLOSE +@itemize - +@item only case: 44 +@end itemize + +@item IO_READ +@itemize - +@item only case: 42 +@end itemize + +@item IO_WRITE +@itemize - +@item only case: 44 +@end itemize + +@item IO_CONTROL +@itemize - +@item only case: 42 +@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>52</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_OPEN</STRONG></TD> + <TD ALIGN=center>42</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_CLOSE</STRONG></TD> + <TD ALIGN=center>44</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_READ</STRONG></TD> + <TD ALIGN=center>42</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_WRITE</STRONG></TD> + <TD ALIGN=center>44</TD></TR> +<TR><TD ALIGN=left><STRONG>IO_CONTROL</STRONG></TD> + <TD ALIGN=center>42</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}{388} +\rtemsonecase{RATE\_MONOTONIC\_IDENT}{2826} +\rtemsonecase{RATE\_MONOTONIC\_CANCEL}{427} +\rtemsdirective{RATE\_MONOTONIC\_DELETE} +\rtemscase{active}{519} +\rtemscase{inactive}{465} +\rtemsdirective{RATE\_MONOTONIC\_PERIOD} +\rtemscase{initiate period -- returns to caller} + {556} +\rtemscase{conclude period -- caller blocks} + {842} +\rtemscase{obtain status}{377} +\rtemsendtimetable +}}\hfil} +@end tex +@end ifset + +@ifset use-ascii +@ifinfo +@itemize @bullet + +@item RATE_MONOTONIC_CREATE +@itemize - +@item only case: 388 +@end itemize + +@item RATE_MONOTONIC_IDENT +@itemize - +@item only case: 2826 +@end itemize + +@item RATE_MONOTONIC_CANCEL +@itemize - +@item only case: 427 +@end itemize + +@item RATE_MONOTONIC_DELETE +@itemize - +@item active: 519 +@item inactive: 465 +@end itemize + +@item RATE_MONOTONIC_PERIOD +@itemize - +@item initiate period -- returns to caller: 556 +@item conclude period -- caller blocks: 842 +@item obtain status: 377 +@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>388</TD></TR> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_IDENT</STRONG></TD> + <TD ALIGN=center>2826</TD></TR> +<TR><TD ALIGN=left><STRONG>RATE_MONOTONIC_CANCEL</STRONG></TD> + <TD ALIGN=center>427</TD></TR> +<TR><TD ALIGN=left COLSPAN=2><STRONG>RATE_MONOTONIC_DELETE</TD></TR> + <TR><TD ALIGN=left><dd>active</TD> + <TD ALIGN=center>519</TD></TR> + <TR><TD ALIGN=left><dd>inactive</TD> + <TD ALIGN=center>465</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> + 556</TD></TR> + <TR><TD ALIGN=left><dd>conclude period -- caller blocks</TD> + <TD ALIGN=center> + 842</TD></TR> + <TR><TD ALIGN=left><dd>obtain status</TD> + <TD ALIGN=center>377</TD></TR> + </TABLE> +</CENTER> +@end html +@end ifset + +@tex +\global\advance \smallskipamount by 4pt +@end tex + +@tex +\global\advance \smallskipamount by 4pt +@end tex |