In a system that supports cost monitoring, the CPU time of a group
of schedulable objects that are members of a processing group
is limited to the amount specified by the cost parameter
per period.

In a system that does not support cost monitoring, the information
from the processing group parameters may be used by the feasibility
analysis. This is particularly important if schedulable objects
with aperiodic release parameters are involved since they would
otherwise make feasibility analysis impossible.

Note that any changes to RelativeTime arguments of this object do
not propagate to the schedulable object until the corresponding setter
method of AperiodicParameters is called to notify this object about
the change.

NOTE: the methods in this class are not synchronized. They cannot
be used by several threads simultaneously without proper explicit
synchronization.

start - The start time of the first period described by this
object. A start time of class RelativeTime will be relative to
the time this constructor is called. A start time of class
AbsoluteTime will result in a start at that time or immediately
after the execution of this constructor, whichever comes
later. If null, the default value will be new RelativeTime(0,0).

period - The time for which the cost budget is
allocated. This argument must not be null or a time <=0.

cost - The CPU time budget for each period. This must not be
null.

deadline - The deadline for the completion of all members of
this group, relative to the release time of each period. If null,
the default value is a new instance of RelativeTime(period).

overrunHandler - This handler will be invoked if the cost of
of all schedulable objects in this group exceeds the cost
parameter. If null, there will be no overrunHandler.

missHandler - This handler will be invoked if a schedulable
object in this group still executes after the deadline has
passed. If null, there will be no deadline miss handler.

Throws:

java.lang.IllegalArgumentException - if start is a negative
RelativeTime, if the period is null or negative or zero, if cost
is null or negative or deadline is negative or zero.

Method Detail

setIfFeasible

setIfFeasible performs a feasibility analysis using the new
period, cost, and deadline parameters. If the resulting system
remains feasible, the period, cost, and deadline will be set to
the new values. This will change the corresponding attributes of
all schedulable objects this is associated with.

Parameters:

period - The new time for which the cost budget is
allocated. This argument must not be null or a time <=0.

cost - The new CPU time budget for each period. This must
not be null.

deadline - The new deadline for the completion of all
members of this group, relative to the release time of each
period. If null, the default value is a new instance of
RealtiveTime(period).

Returns:

true if the change was performed and the resulting system
is feasible. false if the change would result in an infeasible
system and was not performed.

Throws:

java.lang.IllegalArgumentException - if the period is null
or negative or zero, if cost is null or negative or deadline is
negative or zero.

setStart

start - The new start time of the first period described by
this object. A start time of class RelativeTime will be relative
to the time this constructor is called. A start time of class
AbsoluteTime will result in a start at that time or immediately
after the execution of this constructor, whichever comes
earlier. If null, the default value will be new
RelativeTime(0,0).

Throws:

java.lang.IllegalArgumentException - if start is a negative
RelativeTime.

clone

public java.lang.Object clone()

clone creates a clone of this object with the same parameters but
without association to any schedulable object. According to RTSJ 1.0.2,
event handlers are only shallow-copied.