source: rtems/doc/user/rtmon.t @ 75e22db

4.104.114.84.95
Last change on this file since 75e22db was 75e22db, checked in by Joel Sherrill <joel.sherrill@…>, on 03/27/98 at 16:47:53

Completed sweep adding directive and constant prefixes.

  • Property mode set to 100644
File size: 43.5 KB
Line 
1@c
2@c  COPYRIGHT (c) 1988-1998.
3@c  On-Line Applications Research Corporation (OAR).
4@c  All rights reserved.
5@c
6@c  $Id$
7@c
8
9@c
10@c  Open Issues
11@c    - nicen up the tables
12@c    - use math mode to print formulas
13@c
14
15@ifinfo
16@node Rate Monotonic Manager, Rate Monotonic Manager Introduction, Scheduling Concepts Task State Transitions, Top
17@end ifinfo
18@chapter Rate Monotonic Manager
19@ifinfo
20@menu
21* Rate Monotonic Manager Introduction::
22* Rate Monotonic Manager Background::
23* Rate Monotonic Manager Operations::
24* Rate Monotonic Manager Directives::
25@end menu
26@end ifinfo
27
28@ifinfo
29@node Rate Monotonic Manager Introduction, Rate Monotonic Manager Background, Rate Monotonic Manager, Rate Monotonic Manager
30@end ifinfo
31@section Introduction
32
33The rate monotonic manager provides facilities to
34implement tasks which execute in a periodic fashion.  The
35directives provided by the rate monotonic manager are:
36
37@itemize @bullet
38@item @code{@value{DIRPREFIX}rate_monotonic_create} - Create a rate monotonic period
39@item @code{@value{DIRPREFIX}rate_monotonic_ident} - Get ID of a period
40@item @code{@value{DIRPREFIX}rate_monotonic_cancel} - Cancel a period
41@item @code{@value{DIRPREFIX}rate_monotonic_delete} - Delete a rate monotonic period
42@item @code{@value{DIRPREFIX}rate_monotonic_period} - Conclude current/Start next period
43@item @code{@value{DIRPREFIX}rate_monotonic_get_status} - Obtain status information on period
44@end itemize
45
46@ifinfo
47@node Rate Monotonic Manager Background, Rate Monotonic Manager Required Support, Rate Monotonic Manager Introduction, Rate Monotonic Manager
48@end ifinfo
49@section Background
50@ifinfo
51@menu
52* Rate Monotonic Manager Required Support::
53* Rate Monotonic Manager Definitions::
54* Rate Monotonic Scheduling Algorithm::
55* Schedulability Analysis::
56* Assumptions::
57* Processor Utilization Rule::
58* Processor Utilization Rule Example::
59* First Deadline Rule::
60* First Deadline Rule Example::
61* Relaxation of Assumptions::
62* Further Reading::
63@end menu
64@end ifinfo
65
66The rate monotonic manager provides facilities to
67manage the execution of periodic tasks.  This manager was
68designed to support application designers who utilize the Rate
69Monotonic Scheduling Algorithm (RMS) to insure that their
70periodic tasks will meet their deadlines, even under transient
71overload conditions.  Although designed for hard real-time
72systems, the services provided by the rate monotonic manager may
73be used by any application which requires periodic tasks.
74
75@ifinfo
76@node Rate Monotonic Manager Required Support, Rate Monotonic Manager Definitions, Rate Monotonic Manager Background, Rate Monotonic Manager Background
77@end ifinfo
78@subsection Rate Monotonic Manager Required Support
79
80A clock tick is required to support the functionality provided by this manager.
81
82@ifinfo
83@node Rate Monotonic Manager Definitions, Rate Monotonic Scheduling Algorithm, Rate Monotonic Manager Required Support, Rate Monotonic Manager Background
84@end ifinfo
85@subsection Rate Monotonic Manager Definitions
86
87A periodic task is one which must be executed at a
88regular interval.  The interval between successive iterations of
89the task is referred to as its period.  Periodic tasks can be
90characterized by the length of their period and execution time.
91The period and execution time of a task can be used to determine
92the processor utilization for that task.  Processor utilization
93is the percentage of processor time used and can be calculated
94on a per-task or system-wide basis.  Typically, the task's
95worst-case execution time will be less than its period.  For
96example, a periodic task's requirements may state that it should
97execute for 10 milliseconds every 100 milliseconds.  Although
98the execution time may be the average, worst, or best case, the
99worst-case execution time is more appropriate for use when
100analyzing system behavior under transient overload conditions.
101
102In contrast, an aperiodic task executes at irregular
103intervals and has only a soft deadline.  In other words, the
104deadlines for aperiodic tasks are not rigid, but adequate
105response times are desirable.  For example, an aperiodic task
106may process user input from a terminal.
107
108Finally, a sporadic task is an aperiodic task with a
109hard deadline and minimum interarrival time.  The minimum
110interarrival time is the minimum period of time which exists
111between successive iterations of the task.  For example, a
112sporadic task could be used to process the pressing of a fire
113button on a joystick.  The mechanical action of the fire button
114insures a minimum time period between successive activations,
115but the missile must be launched by a hard deadline.
116
117@ifinfo
118@node Rate Monotonic Scheduling Algorithm, Schedulability Analysis, Rate Monotonic Manager Definitions, Rate Monotonic Manager Background
119@end ifinfo
120@subsection Rate Monotonic Scheduling Algorithm
121
122The Rate Monotonic Scheduling Algorithm (RMS) is
123important to real-time systems designers because it allows one
124to guarantee that a set of tasks is schedulable.  A set of tasks
125is said to be schedulable if all of the tasks can meet their
126deadlines.  RMS provides a set of rules which can be used to
127perform a guaranteed schedulability analysis for a task set.
128This analysis determines whether a task set is schedulable under
129worst-case conditions and emphasizes the predictability of the
130system's behavior.  It has been proven that:
131
132@itemize @code{ }
133@b{RMS is an optimal static priority algorithm for
134scheduling independent, preemptible, periodic tasks
135on a single processor.}
136@end itemize
137
138RMS is optimal in the sense that if a set of tasks
139can be scheduled by any static priority algorithm, then RMS will
140be able to schedule that task set.  RMS bases it schedulability
141analysis on the processor utilization level below which all
142deadlines can be met.
143
144RMS calls for the static assignment of task
145priorities based upon their period.  The shorter a task's
146period, the higher its priority.  For example, a task with a 1
147millisecond period has higher priority than a task with a 100
148millisecond period.  If two tasks have the same period, than RMS
149does not distinguish between the tasks.  However, RTEMS
150specifies that when given tasks of equal priority, the task
151which has been ready longest will execute first.  RMS's priority
152assignment scheme does not provide one with exact numeric values
153for task priorities.  For example, consider the following task
154set and priority assignments:
155
156@ifset use-ascii
157@example
158@group
159+--------------------+---------------------+---------------------+
160|        Task        |       Period        |      Priority       |
161|                    |  (in milliseconds)  |                     |
162+--------------------+---------------------+---------------------+
163|         1          |         100         |         Low         |
164+--------------------+---------------------+---------------------+
165|         2          |          50         |       Medium        |
166+--------------------+---------------------+---------------------+
167|         3          |          50         |       Medium        |
168+--------------------+---------------------+---------------------+
169|         4          |          25         |        High         |
170+--------------------+---------------------+---------------------+
171@end group
172@end example
173@end ifset
174
175@ifset use-tex
176@sp 1
177@tex
178\centerline{\vbox{\offinterlineskip\halign{
179\vrule\strut#&
180\hbox to 0.75in{\enskip\hfil#\hfil}&
181\vrule#&
182\hbox to 1.25in{\enskip\hfil#\hfil}&
183\vrule#&
184\hbox to 1.25in{\enskip\hfil#\hfil}&
185\vrule#\cr\noalign{\hrule}
186&\bf Task&& \bf Period && \bf Priority &\cr
187& && \bf (in milliseconds) && &\cr\noalign{\hrule}
188& 1 && 100 && Low &\cr\noalign{\hrule}
189& 2 && 50 && Medium &\cr\noalign{\hrule}
190& 3 && 50 && Medium &\cr\noalign{\hrule}
191& 4 && 25 && High &\cr\noalign{\hrule}
192}}\hfil}
193@end tex
194@end ifset
195
196@ifset use-html
197@html
198<CENTER>
199  <TABLE COLS=3 WIDTH="80%" BORDER=2>
200<TR><TD ALIGN=center><STRONG>Task</STRONG></TD>
201    <TD ALIGN=center><STRONG>Period (in milliseconds)</STRONG></TD>
202    <TD ALIGN=center><STRONG>Priority</STRONG></TD></TR>
203<TR><TD ALIGN=center>1</TD>
204    <TD ALIGN=center>100 </TD>
205    <TD ALIGN=center>Low</TD></TR>
206<TR><TD ALIGN=center>2</TD>
207    <TD ALIGN=center>50 </TD>
208    <TD ALIGN=center>Medium</TD></TR>
209<TR><TD ALIGN=center>3</TD>
210    <TD ALIGN=center>50 </TD>
211    <TD ALIGN=center>Medium</TD></TR>
212<TR><TD ALIGN=center>4</TD>
213    <TD ALIGN=center>25 </TD>
214    <TD ALIGN=center>High</TD></TR>
215  </TABLE>
216</CENTER>
217@end html
218@end ifset
219
220RMS only calls for task 1 to have the lowest
221priority, task 4 to have the highest priority, and tasks 2 and 3
222to have an equal priority between that of tasks 1 and 4.  The
223actual RTEMS priorities assigned to the tasks must only adhere
224to those guidelines.
225
226Many applications have tasks with both hard and soft
227deadlines.  The tasks with hard deadlines are typically referred
228to as the critical task set, with the soft deadline tasks being
229the non-critical task set.  The critical task set can be
230scheduled using RMS, with the non-critical tasks not executing
231under transient overload, by simply assigning priorities such
232that the lowest priority critical task (i.e. longest period) has
233a higher priority than the highest priority non-critical task.
234Although RMS may be used to assign priorities to the
235non-critical tasks, it is not necessary.  In this instance,
236schedulability is only guaranteed for the critical task set.
237
238@ifinfo
239@node Schedulability Analysis, Assumptions, Rate Monotonic Scheduling Algorithm, Rate Monotonic Manager Background
240@end ifinfo
241@subsection Schedulability Analysis
242
243RMS allows application designers to insure that tasks
244can meet all deadlines, even under transient overload, without
245knowing exactly when any given task will execute by applying
246proven schedulability analysis rules.
247
248@lowersections
249
250@ifinfo
251@node Assumptions, Processor Utilization Rule, Schedulability Analysis, Rate Monotonic Manager Background
252@end ifinfo
253@subsection Assumptions
254
255The schedulability analysis rules for RMS were
256developed based on the following assumptions:
257
258
259@itemize @bullet
260@item The requests for all tasks for which hard deadlines
261exist are periodic, with a constant interval between requests.
262
263@item Each task must complete before the next request for it
264occurs.
265
266@item The tasks are independent in that a task does not depend
267on the initiation or completion of requests for other tasks.
268
269@item The execution time for each task without preemption or
270interruption is constant and does not vary.
271
272@item Any non-periodic tasks in the system are special.  These
273tasks displace periodic tasks while executing and do not have
274hard, critical deadlines.
275@end itemize
276
277Once the basic schedulability analysis is understood,
278some of the above assumptions can be relaxed and the
279side-effects accounted for.
280
281@ifinfo
282@node Processor Utilization Rule, Processor Utilization Rule Example, Assumptions, Rate Monotonic Manager Background
283@end ifinfo
284@subsection Processor Utilization Rule
285
286The Processor Utilization Rule requires that
287processor utilization be calculated based upon the period and
288execution time of each task.  The fraction of processor time
289spent executing task index is Time(index) / Period(index).  The
290processor utilization can be calculated as follows:
291
292@example
293@group
294Utilization = 0
295
296for index = 1 to maximum_tasks
297  Utilization = Utilization + (Time(index)/Period(index))
298@end group
299@end example
300
301To insure schedulability even under transient
302overload, the processor utilization must adhere to the following
303rule:
304
305@example
306Utilization = maximum_tasks * (2(1/maximum_tasks) - 1)
307@end example
308
309As the number of tasks increases, the above formula
310approaches ln(2) for a worst-case utilization factor of
311approximately 0.693.  Many tasks sets can be scheduled with a
312greater utilization factor.  In fact, the average processor
313utilization threshold for a randomly generated task set is
314approximately 0.88.
315
316@ifinfo
317@node Processor Utilization Rule Example, First Deadline Rule, Processor Utilization Rule, Rate Monotonic Manager Background
318@end ifinfo
319@subsection Processor Utilization Rule Example
320
321This example illustrates the application of the
322Processor Utilization Rule to an application with three critical
323periodic tasks.  The following table details the RMS priority,
324period, execution time, and processor utilization for each task:
325
326@ifset use-ascii
327@example
328@group
329    +------------+----------+--------+-----------+-------------+
330    |    Task    |   RMS    | Period | Execution |  Processor  |
331    |            | Priority |        |   Time    | Utilization |
332    +------------+----------+--------+-----------+-------------+
333    |     1      |   High   |  100   |    15     |    0.15     |
334    +------------+----------+--------+-----------+-------------+
335    |     2      |  Medium  |  200   |    50     |    0.25     |
336    +------------+----------+--------+-----------+-------------+
337    |     3      |   Low    |  300   |   100     |    0.33     |
338    +------------+----------+--------+-----------+-------------+
339@end group
340@end example
341@end ifset
342
343@ifset use-tex
344@sp 1
345@tex
346\centerline{\vbox{\offinterlineskip\halign{
347\vrule\strut#&
348\hbox to 0.75in{\enskip\hfil#\hfil}&
349\vrule#&
350\hbox to 0.75in{\enskip\hfil#\hfil}&
351\vrule#&
352\hbox to 0.75in{\enskip\hfil#\hfil}&
353\vrule#&
354\hbox to 1.00in{\enskip\hfil#\hfil}&
355\vrule#&
356\hbox to 1.00in{\enskip\hfil#\hfil}&
357\vrule#\cr\noalign{\hrule}
358&\bf Task&& \bf RMS && \bf Period && \bf Execution &&\bf Processor&\cr
359& && \bf Priority && &&\bf Time &&\bf Utilization &\cr\noalign{\hrule}
360& 1 && High && 100 && 15 && 0.15 &\cr\noalign{\hrule}
361& 2 && Medium && 200 && 50 && 0.25 &\cr\noalign{\hrule}
362& 3 && Low && 300 && 100 && 0.33 &\cr\noalign{\hrule}
363}}\hfil}
364@end tex
365@end ifset
366 
367@ifset use-html
368@html
369<CENTER>
370  <TABLE COLS=5 WIDTH="80%" BORDER=2>
371<TR><TD ALIGN=center><STRONG>Task</STRONG></TD>
372    <TD ALIGN=center><STRONG>RMS Priority</STRONG></TD>
373    <TD ALIGN=center><STRONG>Period</STRONG></TD>
374    <TD ALIGN=center><STRONG>Execution Time</STRONG></TD>
375    <TD ALIGN=center><STRONG>Processor Utilization</STRONG></TD></TR>
376<TR><TD ALIGN=center>1</TD>
377    <TD ALIGN=center>High</TD>
378    <TD ALIGN=center>100</TD>
379    <TD ALIGN=center>15</TD>
380    <TD ALIGN=center>0.15</TD></TR>
381<TR><TD ALIGN=center>2</TD>
382    <TD ALIGN=center>Medium</TD>
383    <TD ALIGN=center>200</TD>
384    <TD ALIGN=center>50</TD>
385    <TD ALIGN=center>0.25</TD></TR>
386<TR><TD ALIGN=center>3</TD>
387    <TD ALIGN=center>Low</TD>
388    <TD ALIGN=center>300</TD>
389    <TD ALIGN=center>100</TD>
390    <TD ALIGN=center>0.33</TD></TR>
391  </TABLE>
392</CENTER>
393@end html
394@end ifset
395
396The total processor utilization for this task set is
3970.73 which is below the upper bound of 3 * (2(1/3) - 1), or
3980.779, imposed by the Processor Utilization Rule.  Therefore,
399this task set is guaranteed to be schedulable using RMS.
400
401@ifinfo
402@node First Deadline Rule, First Deadline Rule Example, Processor Utilization Rule Example, Rate Monotonic Manager Background
403@end ifinfo
404@subsection First Deadline Rule
405
406If a given set of tasks do exceed the processor
407utilization upper limit imposed by the Processor Utilization
408Rule, they can still be guaranteed to meet all their deadlines
409by application of the First Deadline Rule.  This rule can be
410stated as follows:
411
412For a given set of independent periodic tasks, if
413each task meets its first deadline when all tasks are started at
414the same time, then the deadlines will always be met for any
415combination of start times.
416
417A key point with this rule is that ALL periodic tasks
418are assumed to start at the exact same instant in time.
419Although this assumption may seem to be invalid,  RTEMS makes it
420quite easy to insure.  By having a non-preemptible user
421initialization task, all application tasks, regardless of
422priority, can be created and started before the initialization
423deletes itself.  This technique insures that all tasks begin to
424compete for execution time at the same instant -- when the user
425initialization task deletes itself.
426
427@ifinfo
428@node First Deadline Rule Example, Relaxation of Assumptions, First Deadline Rule, Rate Monotonic Manager Background
429@end ifinfo
430@subsection First Deadline Rule Example
431
432The First Deadline Rule can insure schedulability
433even when the Processor Utilization Rule fails.  The example
434below is a modification of the Processor Utilization Rule
435example where task execution time has been increased from 15 to
43625 units.  The following table details the RMS priority, period,
437execution time, and processor utilization for each task:
438
439@ifset use-ascii
440@example
441@group
442    +------------+----------+--------+-----------+-------------+
443    |    Task    |   RMS    | Period | Execution |  Processor  |
444    |            | Priority |        |   Time    | Utilization |
445    +------------+----------+--------+-----------+-------------+
446    |     1      |   High   |  100   |    25     |    0.25     |
447    +------------+----------+--------+-----------+-------------+
448    |     2      |  Medium  |  200   |    50     |    0.25     |
449    +------------+----------+--------+-----------+-------------+
450    |     3      |   Low    |  300   |   100     |    0.33     |
451    +------------+----------+--------+-----------+-------------+
452@end group
453@end example
454@end ifset
455
456@ifset use-tex
457@sp 1
458@tex
459\centerline{\vbox{\offinterlineskip\halign{
460\vrule\strut#&
461\hbox to 0.75in{\enskip\hfil#\hfil}&
462\vrule#&
463\hbox to 0.75in{\enskip\hfil#\hfil}&
464\vrule#&
465\hbox to 0.75in{\enskip\hfil#\hfil}&
466\vrule#&
467\hbox to 1.00in{\enskip\hfil#\hfil}&
468\vrule#&
469\hbox to 1.00in{\enskip\hfil#\hfil}&
470\vrule#\cr\noalign{\hrule}
471&\bf Task&& \bf RMS && \bf Period && \bf Execution &&\bf Processor&\cr
472& && \bf Priority && &&\bf Time &&\bf Utilization &\cr\noalign{\hrule}
473& 1 && High && 100 && 25 && 0.25 &\cr\noalign{\hrule}
474& 2 && Medium && 200 && 50 && 0.25 &\cr\noalign{\hrule}
475& 3 && Low && 300 && 100 && 0.33 &\cr\noalign{\hrule}
476}}\hfil}
477@end tex
478@end ifset
479 
480@ifset use-html
481@html
482<CENTER>
483  <TABLE COLS=5 WIDTH="80%" BORDER=2>
484<TR><TD ALIGN=center><STRONG>Task</STRONG></TD>
485    <TD ALIGN=center><STRONG>RMS Priority</STRONG></TD>
486    <TD ALIGN=center><STRONG>Period</STRONG></TD>
487    <TD ALIGN=center><STRONG>Execution Time</STRONG></TD>
488    <TD ALIGN=center><STRONG>Processor Utilization</STRONG></TD></TR>
489<TR><TD ALIGN=center>1</TD>
490    <TD ALIGN=center>High</TD>
491    <TD ALIGN=center>100</TD>
492    <TD ALIGN=center>25</TD>
493    <TD ALIGN=center>0.25</TD></TR>
494<TR><TD ALIGN=center>2</TD>
495    <TD ALIGN=center>Medium</TD>
496    <TD ALIGN=center>200</TD>
497    <TD ALIGN=center>50</TD>
498    <TD ALIGN=center>0.25</TD></TR>
499<TR><TD ALIGN=center>3</TD>
500    <TD ALIGN=center>Low</TD>
501    <TD ALIGN=center>300</TD>
502    <TD ALIGN=center>100</TD>
503    <TD ALIGN=center>0.33</TD></TR>
504  </TABLE>
505</CENTER>
506@end html
507@end ifset
508
509The total processor utilization for the modified task
510set is 0.83 which is above the upper bound of 3 * (2(1/3) - 1),
511or 0.779, imposed by the Processor Utilization Rule.  Therefore,
512this task set is not guaranteed to be schedulable using RMS.
513However, the First Deadline Rule can guarantee the
514schedulability of this task set.  This rule calls for one to
515examine each occurrence of deadline until either all tasks have
516met their deadline or one task failed to meet its first
517deadline.  The following table details the time of each deadline
518occurrence, the maximum number of times each task may have run,
519the total execution time, and whether all the deadlines have
520been met.
521
522@ifset use-ascii
523@example
524@group
525+----------+------+------+------+----------------------+---------------+
526| Deadline | Task | Task | Task |        Total         | All Deadlines |
527|   Time   |  1   |  2   |  3   |    Execution Time    |     Met?      |
528+----------+------+------+------+----------------------+---------------+
529|   100    |  1   |  1   |  1   |  25 + 50 + 100 = 175 |      NO       |
530+----------+------+------+------+----------------------+---------------+
531|   200    |  2   |  1   |  1   |  50 + 50 + 100 = 200 |     YES       |
532+----------+------+------+------+----------------------+---------------+
533@end group
534@end example
535@end ifset
536
537@ifset use-tex
538@sp 1
539@tex
540\centerline{\vbox{\offinterlineskip\halign{
541\vrule\strut#&
542\hbox to 0.75in{\enskip\hfil#\hfil}&
543\vrule#&
544\hbox to 0.75in{\enskip\hfil#\hfil}&
545\vrule#&
546\hbox to 0.75in{\enskip\hfil#\hfil}&
547\vrule#&
548\hbox to 0.75in{\enskip\hfil#\hfil}&
549\vrule#&
550\hbox to 2.00in{\enskip\hfil#\hfil}&
551\vrule#&
552\hbox to 1.00in{\enskip\hfil#\hfil}&
553\vrule#\cr\noalign{\hrule}
554&\bf Deadline&& \bf Task &&\bf Task&&\bf Task&&\bf Total          &&\bf All Deadlines &\cr
555&\bf Time    && \bf 1    &&\bf 2   &&\bf 3   &&\bf Execution Time &&\bf Net?&\cr\noalign{\hrule}
556& 100&& 1 && 1 && 1 && 25 + 50 + 100 = 175 && NO &\cr\noalign{\hrule}
557& 200&& 2 && 1 && 1 && 50 + 50 + 100 = 200 && YES &\cr\noalign{\hrule}
558}}\hfil}
559@end tex
560@end ifset
561 
562@ifset use-html
563@html
564<CENTER>
565  <TABLE COLS=6 WIDTH="80%" BORDER=2>
566<TR><TD ALIGN=center><STRONG>Deadline Time</STRONG></TD>
567    <TD ALIGN=center><STRONG>Task 1</STRONG></TD>
568    <TD ALIGN=center><STRONG>Task 2</STRONG></TD>
569    <TD ALIGN=center><STRONG>Task 3</STRONG></TD>
570    <TD ALIGN=center><STRONG>Total Execution Time</STRONG></TD>
571    <TD ALIGN=center><STRONG>All Deadlines Met?</STRONG></TD></TR>
572<TR><TD ALIGN=center>100</TD>
573    <TD ALIGN=center>1</TD>
574    <TD ALIGN=center>1</TD>
575    <TD ALIGN=center>1</TD>
576    <TD ALIGN=center>25 + 50 + 100 = 175</TD>
577    <TD ALIGN=center>NO</TD></TR>
578<TR><TD ALIGN=center>200</TD>
579    <TD ALIGN=center>2</TD>
580    <TD ALIGN=center>1</TD>
581    <TD ALIGN=center>1</TD>
582    <TD ALIGN=center>50 + 50 + 100 = 175</TD>
583    <TD ALIGN=center>YES</TD></TR>
584  </TABLE>
585</CENTER>
586@end html
587@end ifset
588
589The key to this analysis is to recognize when each
590task will execute.  For example at time 100, task 1 must have
591met its first deadline, but tasks 2 and 3 may also have begun
592execution.  In this example, at time 100 tasks 1 and 2 have
593completed execution and thus have met their first deadline.
594Tasks 1 and 2 have used (25 + 50) = 75 time units, leaving (100
595- 75) = 25 time units for task 3 to begin.  Because task 3 takes
596100 ticks to execute, it will not have completed execution at
597time 100.  Thus at time 100, all of the tasks except task 3 have
598met their first deadline.
599
600At time 200, task 1 must have met its second deadline
601and task 2 its first deadline.  As a result, of the first 200
602time units, task 1 uses (2 * 25) = 50 and task 2 uses 50,
603leaving (200 - 100) time units for task 3.  Task 3 requires 100
604time units to execute, thus it will have completed execution at
605time 200.  Thus, all of the tasks have met their first deadlines
606at time 200, and the task set is schedulable using the First
607Deadline Rule.
608
609@ifinfo
610@node Relaxation of Assumptions, Further Reading, First Deadline Rule Example, Rate Monotonic Manager Background
611@end ifinfo
612@subsection Relaxation of Assumptions
613
614The assumptions used to develop the RMS
615schedulability rules are uncommon in most real-time systems.
616For example, it was assumed that tasks have constant unvarying
617execution time.  It is possible to relax this assumption, simply
618by using the worst-case execution time of each task.
619
620Another assumption is that the tasks are independent.
621This means that the tasks do not wait for one another or
622contend for resources.  This assumption can be relaxed by
623accounting for the amount of time a task spends waiting to
624acquire resources.  Similarly, each task's execution time must
625account for any I/O performed and any RTEMS directive calls.
626
627In addition, the assumptions did not account for the
628time spent executing interrupt service routines.  This can be
629accounted for by including all the processor utilization by
630interrupt service routines in the utilization calculation.
631Similarly, one should also account for the impact of delays in
632accessing local memory caused by direct memory access and other
633processors accessing local dual-ported memory.
634
635The assumption that nonperiodic tasks are used only
636for initialization or failure-recovery can be relaxed by placing
637all periodic tasks in the critical task set.  This task set can
638be scheduled and analyzed using RMS.  All nonperiodic tasks are
639placed in the non-critical task set.  Although the critical task
640set can be guaranteed to execute even under transient overload,
641the non-critical task set is not guaranteed to execute.
642
643In conclusion, the application designer must be fully
644cognizant of the system and its run-time behavior when
645performing schedulability analysis for a system using RMS.
646Every hardware and software factor which impacts the execution
647time of each task must be accounted for in the schedulability
648analysis.
649
650@ifinfo
651@node Further Reading, Rate Monotonic Manager Operations, Relaxation of Assumptions, Rate Monotonic Manager Background
652@end ifinfo
653@subsection Further Reading
654
655For more information on Rate Monotonic Scheduling and
656its schedulability analysis, the reader is referred to the
657following:
658
659@itemize @code{ }
660@item @cite{C. L. Liu and J. W. Layland. "Scheduling Algorithms for
661Multiprogramming in a Hard Real Time Environment." @b{Journal of
662the Association of Computing Machinery}. January 1973. pp. 46-61.}
663
664@item @cite{John Lehoczky, Lui Sha, and Ye Ding. "The Rate Monotonic
665Scheduling Algorithm: Exact Characterization and Average Case
666Behavior."  @b{IEEE Real-Time Systems Symposium}. 1989. pp. 166-171.}
667
668@item @cite{Lui Sha and John Goodenough. "Real-Time Scheduling
669Theory and Ada."  @b{IEEE Computer}. April 1990. pp. 53-62.}
670
671@item @cite{Alan Burns. "Scheduling hard real-time systems: a
672review."  @b{Software Engineering Journal}. May 1991. pp. 116-128.}
673@end itemize
674
675@raisesections
676
677@ifinfo
678@node Rate Monotonic Manager Operations, Creating a Rate Monotonic Period, Further Reading, Rate Monotonic Manager
679@end ifinfo
680@section Operations
681@ifinfo
682@menu
683* Creating a Rate Monotonic Period::
684* Manipulating a Period::
685* Obtaining a Period's Status::
686* Canceling a Period::
687* Deleting a Rate Monotonic Period::
688* Examples::
689* Simple Periodic Task::
690* Task with Multiple Periods::
691@end menu
692@end ifinfo
693
694@ifinfo
695@node Creating a Rate Monotonic Period, Manipulating a Period, Rate Monotonic Manager Operations, Rate Monotonic Manager Operations
696@end ifinfo
697@subsection Creating a Rate Monotonic Period
698
699The @code{@value{DIRPREFIX}rate_monotonic_create} directive creates a rate
700monotonic period which is to be used by the calling task to
701delineate a period.  RTEMS allocates a Period Control Block
702(PCB) from the PCB free list.  This data structure is used by
703RTEMS to manage the newly created rate monotonic period.  RTEMS
704returns a unique period ID to the application which is used by
705other rate monotonic manager directives to access this rate
706monotonic period.
707
708@ifinfo
709@node Manipulating a Period, Obtaining a Period's Status, Creating a Rate Monotonic Period, Rate Monotonic Manager Operations
710@end ifinfo
711@subsection Manipulating a Period
712
713The @code{@value{DIRPREFIX}rate_monotonic_period} directive is used to
714establish and maintain periodic execution utilizing a previously
715created rate monotonic period.   Once initiated by the
716@code{@value{DIRPREFIX}rate_monotonic_period} directive, the period is
717said to run until it either expires or is reinitiated.  The state of the rate
718monotonic period results in one of the following scenarios:
719
720@itemize @bullet
721@item If the rate monotonic period is running, the calling
722task will be blocked for the remainder of the outstanding period
723and, upon completion of that period, the period will be
724reinitiated with the specified period.
725
726@item If the rate monotonic period is not currently running
727and has not expired, it is initiated with a length of period
728ticks and the calling task returns immediately.
729
730@item If the rate monotonic period has expired before the task
731invokes the @code{@value{DIRPREFIX}rate_monotonic_period} directive,
732the period will be initiated with a length of period ticks and the calling task
733returns immediately with a timeout error status.
734
735@end itemize
736
737@ifinfo
738@node Obtaining a Period's Status, Canceling a Period, Manipulating a Period, Rate Monotonic Manager Operations
739@end ifinfo
740@subsection Obtaining a Period's Status
741
742If the @code{@value{DIRPREFIX}rate_monotonic_period} directive is invoked
743with a period of @code{@value{RPREFIX}PERIOD_STATUS} ticks, the current
744state of the specified rate monotonic period will be returned.  The following
745table details the relationship between the period's status and
746the directive status code returned by the
747@code{@value{DIRPREFIX}rate_monotonic_period}
748directive:
749
750@itemize @bullet
751@item @code{@value{RPREFIX}SUCCESSFUL} - period is running
752
753@item @code{@value{RPREFIX}TIMEOUT} - period has expired
754
755@item @code{@value{RPREFIX}NOT_DEFINED} - period has never been initiated
756@end itemize
757
758Obtaining the status of a rate monotonic period does
759not alter the state or length of that period.
760
761@ifinfo
762@node Canceling a Period, Deleting a Rate Monotonic Period, Obtaining a Period's Status, Rate Monotonic Manager Operations
763@end ifinfo
764@subsection Canceling a Period
765
766The @code{@value{DIRPREFIX}rate_monotonic_cancel} directive is used to stop
767the period maintained by the specified rate monotonic period.
768The period is stopped and the rate monotonic period can be
769reinitiated using the @code{@value{DIRPREFIX}rate_monotonic_period} directive.
770
771@ifinfo
772@node Deleting a Rate Monotonic Period, Examples, Canceling a Period, Rate Monotonic Manager Operations
773@end ifinfo
774@subsection Deleting a Rate Monotonic Period
775
776The @code{@value{DIRPREFIX}rate_monotonic_delete} directive is used to delete
777a rate monotonic period.  If the period is running and has not
778expired, the period is automatically canceled.  The rate
779monotonic period's control block is returned to the PCB free
780list when it is deleted.  A rate monotonic period can be deleted
781by a task other than the task which created the period.
782
783@ifinfo
784@node Examples, Simple Periodic Task, Deleting a Rate Monotonic Period, Rate Monotonic Manager Operations
785@end ifinfo
786@subsection Examples
787
788The following sections illustrate common uses of rate
789monotonic periods to construct periodic tasks.
790
791@ifinfo
792@node Simple Periodic Task, Task with Multiple Periods, Examples, Rate Monotonic Manager Operations
793@end ifinfo
794@subsection Simple Periodic Task
795
796This example consists of a single periodic task
797which, after initialization, executes every 100 clock ticks.
798
799@page
800@example
801rtems_task Periodic_task()
802@{
803  rtems_name        name;
804  rtems_id          period;
805  rtems_status_code status;
806
807  name = rtems_build_name( 'P', 'E', 'R', 'D' );
808
809  (void) rate_monotonic_create( name, &period );
810
811  while ( 1 ) @{
812    if ( rate_monotonic_period( period, 100 ) == TIMEOUT )
813      break;
814
815    /* Perform some periodic actions */
816  @}
817
818  /* missed period so delete period and SELF */
819
820  (void) rate_monotonic_delete( period );
821  (void) task_delete( SELF );
822@}
823@end example
824
825
826The above task creates a rate monotonic period as
827part of its initialization.  The first time the loop is
828executed, the @code{@value{DIRPREFIX}rate_monotonic_period}
829directive will initiate the period for 100 ticks and return
830immediately.  Subsequent invocations of the
831@code{@value{DIRPREFIX}rate_monotonic_period} directive will result
832in the task blocking for the remainder of the 100 tick period.
833If, for any reason, the body of the loop takes more than 100
834ticks to execute, the @code{@value{DIRPREFIX}rate_monotonic_period}
835directive will return the @code{@value{RPREFIX}TIMEOUT} status. 
836If the above task misses its deadline, it will delete the rate
837monotonic period and itself.
838
839@ifinfo
840@node Task with Multiple Periods, Rate Monotonic Manager Directives, Simple Periodic Task, Rate Monotonic Manager Operations
841@end ifinfo
842@subsection Task with Multiple Periods
843
844This example consists of a single periodic task
845which, after initialization, performs two sets of actions every
846100 clock ticks.  The first set of actions is performed in the
847first forty clock ticks of every 100 clock ticks, while the
848second set of actions is performed between the fortieth and
849seventieth clock ticks.  The last thirty clock ticks are not
850used by this task.
851
852@page
853@example
854task Periodic_task()
855@{
856  rtems_name        name_1, name_2;
857  rtems_id          period_1, period_2;
858  rtems_status_code status;
859
860  name_1 = rtems_build_name( 'P', 'E', 'R', '1' );
861  name_2 = rtems_build_name( 'P', 'E', 'R', '2' );
862
863  (void ) rate_monotonic_create( name_1, &period_1 );
864  (void ) rate_monotonic_create( name_2, &period_2 );
865
866  while ( 1 ) @{
867    if ( rate_monotonic_period( period_1, 100 ) == TIMEOUT )
868      break;
869
870    if ( rate_monotonic_period( period_2, 40 ) == TIMEOUT )
871      break;
872
873    /*
874     *  Perform first set of actions between clock
875     *  ticks 0 and 39 of every 100 ticks.
876     */
877
878    if ( rate_monotonic_period( period_2, 30 ) == TIMEOUT )
879      break;
880
881    /*
882     *  Perform second set of actions between clock 40 and 69
883     *  of every 100 ticks.  THEN ...
884     *
885     *  Check to make sure we didn't miss the period_2 period.
886     */
887
888    if ( rate_monotonic_period( period_2, STATUS ) == TIMEOUT )
889      break;
890
891    (void) rate_monotonic_cancel( period_2 );
892  @}
893
894  /* missed period so delete period and SELF */
895
896  (void ) rate_monotonic_delete( period_1 );
897  (void ) rate_monotonic_delete( period_2 );
898  (void ) task_delete( SELF );
899@}
900@end example
901
902The above task creates two rate monotonic periods as
903part of its initialization.  The first time the loop is
904executed, the @code{@value{DIRPREFIX}rate_monotonic_period}
905directive will initiate the period_1 period for 100 ticks
906and return immediately.  Subsequent invocations of the
907@code{@value{DIRPREFIX}rate_monotonic_period} directive
908for period_1 will result in the task blocking for the remainder
909of the 100 tick period.  The period_2 period is used to control
910the execution time of the two sets of actions within each 100
911tick period established by period_1.  The
912@code{@value{DIRPREFIX}rate_monotonic_cancel( period_2 )}
913call is performed to insure that the period_2 period
914does not expire while the task is blocked on the period_1
915period.  If this cancel operation were not performed, every time
916the @code{@value{DIRPREFIX}rate_monotonic_period( period_1, 40 )}
917call is executed, except for the initial one, a directive status
918of @code{@value{RPREFIX}TIMEOUT} is returned.  It is important to
919note that every time this call is made, the period_1 period will be
920initiated immediately and the task will not block.
921
922If, for any reason, the task misses any deadline, the
923@code{@value{DIRPREFIX}rate_monotonic_period} directive will
924return the @code{@value{RPREFIX}TIMEOUT}
925directive status.  If the above task misses its deadline, it
926will delete the rate monotonic periods and itself.
927
928@ifinfo
929@node Rate Monotonic Manager Directives, RATE_MONOTONIC_CREATE - Create a rate monotonic period, Task with Multiple Periods, Rate Monotonic Manager
930@end ifinfo
931@section Directives
932@ifinfo
933@menu
934* RATE_MONOTONIC_CREATE - Create a rate monotonic period::
935* RATE_MONOTONIC_IDENT - Get ID of a period::
936* RATE_MONOTONIC_CANCEL - Cancel a period::
937* RATE_MONOTONIC_DELETE - Delete a rate monotonic period::
938* RATE_MONOTONIC_PERIOD - Conclude current/Start next period::
939* RATE_MONOTONIC_GET_STATUS - Obtain status information on period::
940@end menu
941@end ifinfo
942
943This section details the rate monotonic manager's
944directives.  A subsection is dedicated to each of this manager's
945directives and describes the calling sequence, related
946constants, usage, and status codes.
947
948@page
949@ifinfo
950@node RATE_MONOTONIC_CREATE - Create a rate monotonic period, RATE_MONOTONIC_IDENT - Get ID of a period, Rate Monotonic Manager Directives, Rate Monotonic Manager Directives
951@end ifinfo
952@subsection RATE_MONOTONIC_CREATE - Create a rate monotonic period
953
954@subheading CALLING SEQUENCE:
955
956@ifset is-C
957@example
958rtems_status_code rtems_rate_monotonic_create(
959  rtems_name  name,
960  rtems_id   *id
961);
962@end example
963@end ifset
964
965@ifset is-Ada
966@example
967procedure Rate_Monotonic_Create (
968   Name   : in     RTEMS.Name;
969   ID     :    out RTEMS.ID;
970   Result :    out RTEMS.Status_Codes
971);
972@end example
973@end ifset
974
975@subheading DIRECTIVE STATUS CODES:
976@code{@value{RPREFIX}SUCCESSFUL} - rate monotonic period created successfully@*
977@code{@value{RPREFIX}INVALID_NAME} - invalid task name@*
978@code{@value{RPREFIX}TOO_MANY} - too many periods created
979
980@subheading DESCRIPTION:
981
982This directive creates a rate monotonic period.  The
983assigned rate monotonic id is returned in id.  This id is used
984to access the period with other rate monotonic manager
985directives.  For control and maintenance of the rate monotonic
986period, RTEMS allocates a PCB from the local PCB free pool and
987initializes it.
988
989@subheading NOTES:
990
991This directive will not cause the calling task to be
992preempted.
993
994@page
995@ifinfo
996@node RATE_MONOTONIC_IDENT - Get ID of a period, RATE_MONOTONIC_CANCEL - Cancel a period, RATE_MONOTONIC_CREATE - Create a rate monotonic period, Rate Monotonic Manager Directives
997@end ifinfo
998@subsection RATE_MONOTONIC_IDENT - Get ID of a period
999
1000@subheading CALLING SEQUENCE:
1001
1002@ifset is-C
1003@example
1004rtems_status_code rtems_rate_monotonic_ident(
1005  rtems_name  name,
1006  rtems_id   *id
1007);
1008@end example
1009@end ifset
1010
1011@ifset is-Ada
1012@example
1013procedure Rate_Monotonic_Ident (
1014   Name   : in     RTEMS.Name;
1015   ID     :    out RTEMS.ID;
1016   Result :    out RTEMS.Status_Codes
1017);
1018@end example
1019@end ifset
1020
1021@subheading DIRECTIVE STATUS CODES:
1022@code{@value{RPREFIX}SUCCESSFUL} - period identified successfully@*
1023@code{@value{RPREFIX}INVALID_NAME} - period name not found
1024
1025@subheading DESCRIPTION:
1026
1027This directive obtains the period id associated with
1028the period name to be acquired.  If the period name is not
1029unique, then the period id will match one of the periods with
1030that name.  However, this period id is not guaranteed to
1031correspond to the desired period.  The period id is used to
1032access this period in other rate monotonic manager directives.
1033
1034@subheading NOTES:
1035
1036This directive will not cause the running task to be
1037preempted.
1038
1039@page
1040@ifinfo
1041@node RATE_MONOTONIC_CANCEL - Cancel a period, RATE_MONOTONIC_DELETE - Delete a rate monotonic period, RATE_MONOTONIC_IDENT - Get ID of a period, Rate Monotonic Manager Directives
1042@end ifinfo
1043@subsection RATE_MONOTONIC_CANCEL - Cancel a period
1044
1045@subheading CALLING SEQUENCE:
1046
1047@ifset is-C
1048@example
1049rtems_status_code rtems_rate_monotonic_cancel(
1050  rtems_id id
1051);
1052@end example
1053@end ifset
1054
1055@ifset is-Ada
1056@example
1057procedure Rate_Monotonic_Cancel (
1058   ID     : in     RTEMS.ID;
1059   Result :    out RTEMS.Status_Codes
1060);
1061@end example
1062@end ifset
1063
1064@subheading DIRECTIVE STATUS CODES:
1065@code{@value{RPREFIX}SUCCESSFUL} - period canceled successfully@*
1066@code{@value{RPREFIX}INVALID_ID} - invalid rate monotonic period id@*
1067@code{@value{RPREFIX}NOT_OWNER_OF_RESOURCE} - rate monotonic period not created by calling task
1068
1069@subheading DESCRIPTION:
1070
1071This directive cancels the rate monotonic period id.
1072This period will be reinitiated by the next invocation of
1073@code{@value{DIRPREFIX}rate_monotonic_period} with id.
1074
1075@subheading NOTES:
1076
1077This directive will not cause the running task to be
1078preempted.
1079
1080The rate monotonic period specified by id must have
1081been created by the calling task.
1082
1083@page
1084@ifinfo
1085@node RATE_MONOTONIC_DELETE - Delete a rate monotonic period, RATE_MONOTONIC_PERIOD - Conclude current/Start next period, RATE_MONOTONIC_CANCEL - Cancel a period, Rate Monotonic Manager Directives
1086@end ifinfo
1087@subsection RATE_MONOTONIC_DELETE - Delete a rate monotonic period
1088
1089@subheading CALLING SEQUENCE:
1090
1091@ifset is-C
1092@example
1093rtems_status_code rtems_rate_monotonic_delete(
1094  rtems_id id
1095);
1096@end example
1097@end ifset
1098
1099@ifset is-Ada
1100@example
1101procedure Rate_Monotonic_Delete (
1102   ID     : in     RTEMS.ID;
1103   Result :    out RTEMS.Status_Codes
1104);
1105@end example
1106@end ifset
1107
1108@subheading DIRECTIVE STATUS CODES:
1109@code{@value{RPREFIX}SUCCESSFUL} - period deleted successfully@*
1110@code{@value{RPREFIX}INVALID_ID} - invalid rate monotonic period id
1111
1112@subheading DESCRIPTION:
1113
1114This directive deletes the rate monotonic period
1115specified by id.  If the period is running, it is automatically
1116canceled.  The PCB for the deleted period is reclaimed by RTEMS.
1117
1118@subheading NOTES:
1119
1120This directive will not cause the running task to be
1121preempted.
1122
1123A rate monotonic period can be deleted by a task
1124other than the task which created the period.
1125
1126@page
1127@ifinfo
1128@node RATE_MONOTONIC_PERIOD - Conclude current/Start next period, RATE_MONOTONIC_GET_STATUS - Obtain status information on period, RATE_MONOTONIC_DELETE - Delete a rate monotonic period, Rate Monotonic Manager Directives
1129@end ifinfo
1130@subsection RATE_MONOTONIC_PERIOD - Conclude current/Start next period
1131
1132@subheading CALLING SEQUENCE:
1133
1134@ifset is-C
1135@example
1136rtems_status_code rtems_rate_monotonic_period(
1137  rtems_id       id,
1138  rtems_interval length
1139);
1140@end example
1141@end ifset
1142
1143@ifset is-Ada
1144@example
1145procedure Rate_Monotonic_Period (
1146   ID      : in     RTEMS.ID;
1147   Length  : in     RTEMS.Interval;
1148   Result  :    out RTEMS.Status_Codes
1149);
1150@end example
1151@end ifset
1152
1153@subheading DIRECTIVE STATUS CODES:
1154@code{@value{RPREFIX}SUCCESSFUL} - period initiated successfully@*
1155@code{@value{RPREFIX}INVALID_ID} - invalid rate monotonic period id@*
1156@code{@value{RPREFIX}NOT_OWNER_OF_RESOURCE} - period not created by calling task@*
1157@code{@value{RPREFIX}NOT_DEFINED} - period has never been initiated (only
1158possible when period is set to PERIOD_STATUS)@*
1159@code{@value{RPREFIX}TIMEOUT} - period has expired
1160
1161@subheading DESCRIPTION:
1162
1163This directive initiates the rate monotonic period id
1164with a length of period ticks.  If id is running, then the
1165calling task will block for the remainder of the period before
1166reinitiating the period with the specified period.  If id was
1167not running (either expired or never initiated), the period is
1168immediately initiated and the directive returns immediately.
1169
1170If invoked with a period of @code{@value{RPREFIX}PERIOD_STATUS} ticks, the
1171current state of id will be returned.  The directive status
1172indicates the current state of the period.  This does not alter
1173the state or period of the period.
1174
1175@subheading NOTES:
1176
1177This directive will not cause the running task to be preempted.
1178
1179---------------------
1180@page
1181@ifinfo
1182@node RATE_MONOTONIC_GET_STATUS - Obtain status information on period, Board Support Packages, RATE_MONOTONIC_PERIOD - Conclude current/Start next period, Rate Monotonic Manager Directives
1183@end ifinfo
1184@subsection RATE_MONOTONIC_GET_STATUS - Obtain status information on period
1185
1186@subheading CALLING SEQUENCE:
1187
1188@ifset is-C
1189@example
1190rtems_status_code rtems_rate_monotonic_get_status(
1191  rtems_id                            id,
1192  rtems_rate_monotonic_period_status *status
1193);
1194@end example
1195@end ifset
1196
1197@ifset is-Ada
1198@example
1199procedure Rate_Monotonic_Get_Status (
1200   ID      : in     RTEMS.ID;
1201   Status  :    out RTEMS.Rate_Monotonic_Period_Status;
1202   Result  :    out RTEMS.Status_Codes
1203);
1204@end example
1205@end ifset
1206
1207@subheading DIRECTIVE STATUS CODES:
1208@code{@value{RPREFIX}SUCCESSFUL} - period initiated successfully@*
1209@code{@value{RPREFIX}INVALID_ID} - invalid rate monotonic period id@*
1210@code{@value{RPREFIX}INVALID_ADDRESS} - invalid address of status@*
1211
1212@subheading DESCRIPTION:
1213
1214This directive returns status information associated with
1215the rate monotonic period id in the following data @value{STRUCTURE}:
1216
1217@ifset is-C
1218@example
1219typedef struct @{
1220  rtems_rate_monotonic_period_states  state;
1221  unsigned32                          ticks_since_last_period;
1222  unsigned32                          ticks_executed_since_last_period;
1223@}  rtems_rate_monotonic_period_status;
1224@end example
1225@end ifset
1226
1227@ifset is-Ada
1228@example
1229type Rate_Monotonic_Period_Status is
1230   begin
1231      State                            : RTEMS.Rate_Monotonic_Period_States;
1232      Ticks_Since_Last_Period          : RTEMS.Unsigned32;
1233      Ticks_Executed_Since_Last_Period : RTEMS.Unsigned32;
1234   end record;
1235@end example
1236@end ifset
1237
1238@c RATE_MONOTONIC_INACTIVE does not have RTEMS_ in front of it.
1239
1240If the period's state is @code{RATE_MONOTONIC_INACTIVE}, both
1241ticks_since_last_period and ticks_executed_since_last_period
1242will be set to 0.  Otherwise, ticks_since_last_period will
1243contain the number of clock ticks which have occurred since
1244the last invocation of the
1245@code{@value{DIRPREFIX}rate_monotonic_period} directive.
1246Also in this case, the ticks_executed_since_last_period will indicate
1247how much processor time the owning task has consumed since the invocation
1248of the @code{@value{DIRPREFIX}rate_monotonic_period} directive.
1249
1250@subheading NOTES:
1251
1252This directive will not cause the running task to be preempted.
Note: See TracBrowser for help on using the repository browser.