|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjava.lang.Thread
javax.realtime.RealtimeThread
RealtimeThread extends Thread and
includes classes and methods to get and set parameter objects,
manage the execution of those threads with a ReleaseParameters type of PeriodicParameters , and
waiting. A RealtimeThread object must be placed in a
memory area such that thread logic may unexceptionally access
instance variables and such that Java methods on Thread (e.g., enumerate and join) complete normally
except where such execution would cause access violations.
Parameters for constructors may be null . In such cases the default
value will be the default value set for the particular type by the
associated instance of Scheduler.
| Field Summary | |
protected AsyncEventHandler |
deadlineMissHandler
|
protected javax.realtime.ExecutionEligibilityParameters |
eligibilityParam
|
protected ProcessingGroupParameters |
groupParam
|
protected boolean |
hasMissedDeadline
|
protected boolean |
hasMissHandlers
|
protected boolean |
hasOverrun
|
protected boolean |
hasOverrunHandlers
|
protected boolean |
hasStarted
|
protected boolean |
hasStartedTimer
|
protected boolean |
isPeriodic
|
protected Runnable |
logic
|
protected MemoryParameters |
memoryParam
|
protected EventVariable |
missCondition
|
protected AsyncEventHandler |
overrunHandler
|
protected boolean |
periodExpired
|
protected gnu.gcj.RawData |
pipeID_
|
protected ReleaseParameters |
releaseParam
|
protected Scheduler |
scheduler
|
protected SchedulingParameters |
schedulingParam
|
protected gnu.gcj.RawData |
scopeStack
|
protected gnu.gcj.RawData |
timeoutHandler_
|
protected boolean |
waitingForNextPeriod
|
| Fields inherited from class java.lang.Thread |
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY |
| Constructor Summary | |
RealtimeThread()
Creates a new RealtimeThread instance. |
|
RealtimeThread(Runnable logic)
Creates a new RealtimeThread instance. |
|
RealtimeThread(SchedulingParameters schedulingParam)
Creates a new RealtimeThread instance with given
SchedulingParameters |
|
RealtimeThread(SchedulingParameters schedulingParam,
ReleaseParameters releaseParam)
Creates a new RealtimeThread instance with given
SchedulingParameters and
ReleaseParameters. |
|
RealtimeThread(SchedulingParameters schedulingParam,
ReleaseParameters releaseParam,
MemoryParameters memoryParam,
MemoryArea memoryArea,
ProcessingGroupParameters groupParam,
Runnable logic)
Creates a new RealtimeThread instance with the
given characteristics and a java.lang.Runnable. |
|
| Method Summary | |
boolean |
addIfFeasible()
Add to the feasibility of the already set scheduler if the resulting feasibility set is schedulable. |
boolean |
addToFeasibility()
Inform the scheduler and cooperating facilities that the resource demands (as expressed in the associated instances of SchedulingParameters, ReleaseParameters, MemoryParameters, and ProcessingGroupParameters) of this instance of Schedulable will be considered in the feasibility analysis of the associated Scheduler until further notice. |
static RealtimeThread |
currentRealtimeThread()
Gets the currently running RealtimeThread. |
void |
deschedulePeriodic()
Stop unblocking waitForNextPeriod() for a
periodic schedulable object. |
int |
executionEligibility()
NOTE: This method is not part of the RTSJ Specification. |
MemoryArea |
getActiveMemoryArea()
|
static MemoryArea |
getCurrentMemoryArea()
Return the instance of MemoryArea which is the current
memory area for this. |
protected int |
getInitialMemoryAreaIndex_()
|
static int |
getInitialMemoryAreaIndex()
Memory area stacks include inherited stacks from parent threads. |
int |
getMemoryAreaStackDepth_()
|
static int |
getMemoryAreaStackDepth()
Get the size of the stack of MemoryArea instances to which
this RealtimeThread has access. |
MemoryParameters |
getMemoryParameters()
Get the MemoryParameters of this schedulable object. |
protected MemoryArea |
getOuterMemoryArea_(int index)
|
static MemoryArea |
getOuterMemoryArea(int index)
Get the instance of MemoryArea in the memory area stack at
the index given. |
ProcessingGroupParameters |
getProcessingGroupParameters()
Get the ProcessingGroupParameters of this
schedulable object. |
ReleaseParameters |
getReleaseParameters()
Get the ReleaseParameters of this schedulable object. |
Scheduler |
getScheduler()
Get the Scheduler for this schedulable object. |
SchedulingParameters |
getSchedulingParameters()
Get the SchedulingParameters for this schedulable object. |
protected gnu.gcj.RawData |
getScopeStack()
|
void |
interrupt()
|
boolean |
removeFromFeasibility()
Inform the scheduler and cooperating facilities that the resource demands, as expressed in the associated instances of SchedulingParameters, ReleaseParameters, MemoryParameters, and ProcessingGroupParameters, of
this instance of Schedulable should no longer be
considered in the feasibility analysis of the associated Scheduler. |
protected void |
rtfini_()
|
void |
run()
|
void |
schedulePeriodic()
Begin unblocking waitForNextPeriod() for a
periodic thread. |
boolean |
setIfFeasible(ReleaseParameters releaseParam,
MemoryParameters memoryParam)
Returns true if, after considering the values of the parameters, the task set would still be feasible. |
boolean |
setIfFeasible(ReleaseParameters releaseParam,
MemoryParameters memoryParam,
ProcessingGroupParameters groupParam)
Returns true if, after considering the values of the parameters, the task set would still be feasible. |
boolean |
setIfFeasible(ReleaseParameters releaseParam,
ProcessingGroupParameters groupParam)
Returns true if, after considering the values of the parameters, the task set would still be feasible. |
void |
setMemoryParameters(MemoryParameters memoryParam)
Set the MemoryParameters for this schedulable object. |
boolean |
setMemoryParametersIfFeasible(MemoryParameters memoryParam)
Returns true if, after considering the value of the parameter, the task set would still be feasible. |
void |
setProcessingGroupParameters(ProcessingGroupParameters groupParam)
Set the ProcessingGroupParameters for this schedulable object. |
boolean |
setProcessingGroupParametersIfFeasible(ProcessingGroupParameters groupParam)
Set the ProcessingGroupParameters of this schedulable object
only if the resulting task set is feasible. |
void |
setReleaseParameters(ReleaseParameters releaseParam)
Set the ReleaseParametersfor this schedulable object. |
boolean |
setReleaseParametersIfFeasible(ReleaseParameters releaseParam)
Returns true if, after considering the value of the parameter, the task set would still be feasible. |
void |
setScheduler(Scheduler scheduler)
Set the Scheduler for this schedulable object. |
void |
setScheduler(Scheduler scheduler,
SchedulingParameters schedulingParam,
ReleaseParameters releaseParam,
MemoryParameters memoryParam,
ProcessingGroupParameters groupParam)
Set the Scheduler for this schedulable object. |
void |
setSchedulingParameters(SchedulingParameters schedulingParam)
Set the SchedulingParameters for this schedulable
object only if the resulting task set is feasible. |
boolean |
setSchedulingParametersIfFeasible(SchedulingParameters schedulingParam)
Set the SchedulingParameters for this schedulable object. |
protected boolean |
setTopMemoryArea(MemoryArea memoryArea)
|
protected void |
setupTimeoutHandler()
|
void |
setupTSS()
|
static void |
sleep(AbsoluteTime time)
An accurate timer with nanosecond granularity. |
static void |
sleep(Clock clock,
AbsoluteTime time)
An accurate timer with nanosecond granularity. |
static void |
sleep(Clock clock,
HighResolutionTime time)
Deprecated. Use the approriate method i.e. the one that has either RelativeTime or AbsoluteTime. |
static void |
sleep(Clock clock,
RelativeTime time)
An accurate timer with nanosecond granularity. |
static void |
sleep(HighResolutionTime time)
An accurate timer with nanosecond granularity. |
static void |
sleep(RelativeTime time)
An accurate timer with nanosecond granularity. |
void |
start()
Checks if the instance of RealtimeThread is startable and starts it if it is. |
protected void |
updatePeriodicParameters()
|
protected boolean |
validateSchedulingParameters()
|
boolean |
waitForNextPeriod()
Used by threads that have a reference to a ReleaseParameters type of PeriodicParameters to block
until the start of each period. |
static void |
yield()
|
| Methods inherited from class java.lang.Thread |
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getContextClassLoader, getName, getPriority, getThreadGroup, holdsLock, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setName, setPriority, sleep, sleep, stop, stop, suspend, toString |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
protected SchedulingParameters schedulingParam
protected ReleaseParameters releaseParam
protected MemoryParameters memoryParam
protected ProcessingGroupParameters groupParam
protected Runnable logic
protected Scheduler scheduler
protected boolean hasStarted
protected gnu.gcj.RawData scopeStack
protected boolean isPeriodic
protected gnu.gcj.RawData timeoutHandler_
protected gnu.gcj.RawData pipeID_
protected AsyncEventHandler deadlineMissHandler
protected AsyncEventHandler overrunHandler
protected boolean hasStartedTimer
protected boolean periodExpired
protected boolean hasMissedDeadline
protected boolean hasOverrun
protected boolean hasMissHandlers
protected boolean hasOverrunHandlers
protected boolean waitingForNextPeriod
protected EventVariable missCondition
protected javax.realtime.ExecutionEligibilityParameters eligibilityParam
| Constructor Detail |
public RealtimeThread()
RealtimeThread instance. All
parameter values are null.
public RealtimeThread(SchedulingParameters schedulingParam)
RealtimeThread instance with given
SchedulingParameters
schedulingParam - -The SchedulingParameters associated
with this (and possibly other instances of RealtimeThread ).
public RealtimeThread(SchedulingParameters schedulingParam,
ReleaseParameters releaseParam)
RealtimeThread instance with given
SchedulingParameters and
ReleaseParameters.
schedulingParam - -The SchedulingParameters associated
with this (and possibly other instances of RealtimeThread ).releaseParam - -The ReleaseParameters associated with
this (and possibly other instances of RealtimeThread ).
public RealtimeThread(SchedulingParameters schedulingParam,
ReleaseParameters releaseParam,
MemoryParameters memoryParam,
MemoryArea memoryArea,
ProcessingGroupParameters groupParam,
Runnable logic)
RealtimeThread instance with the
given characteristics and a java.lang.Runnable.
schedulingParam - The SchedulingParameters
associated with this (and possibly other instances of
RealtimeThread).releaseParam - The ReleaseParameters associated
with this (and possibly other instances of RealtimeThread).memoryParam - The MemoryParameters associated with
this (and possibly other instances of RealtimeThread).memoryArea - The MemoryArea associated with this.groupParam - -The ProcessingGroupParameters associated
with this (and possibly other instances of RealtimeThread).logic - the logic for this thread.public RealtimeThread(Runnable logic)
RealtimeThread instance. All
parameter values are null, but the logic.
logic - a Runnable representing the thread logic.| Method Detail |
public static RealtimeThread currentRealtimeThread()
throws ClassCastException
RealtimeThread value representing the
thread the is running now.
RuntimeException - if the current running thread is
not Realtime.
ClassCastExceptionpublic boolean addIfFeasible()
addIfFeasible in interface Schedulable
public boolean setIfFeasible(ReleaseParameters releaseParam,
MemoryParameters memoryParam)
releaseParam - a ReleaseParameters valuememoryParam - a MemoryParameters value
public boolean setIfFeasible(ReleaseParameters releaseParam,
MemoryParameters memoryParam,
ProcessingGroupParameters groupParam)
releaseParam - a ReleaseParameters valuememoryParam - a MemoryParameters valuegroupParam - a ProcessingGroupParameters value
public boolean setIfFeasible(ReleaseParameters releaseParam,
ProcessingGroupParameters groupParam)
releaseParam - a ReleaseParameters valuegroupParam - a ProcessingGroupParameters value
public void schedulePeriodic()
waitForNextPeriod() for a
periodic thread. Typically used when a periodic schedulable
object is in an overrun condition. The scheduler should
recompute the schedule and perform admission control. If this
does not have a type of PeriodicParameters as it ReleaseParameters nothing happens.
public void deschedulePeriodic()
waitForNextPeriod() for a
periodic schedulable object. If this does not have a type of
PeriodicParameters as it ReleaseParameters
nothing happens.
public static MemoryArea getCurrentMemoryArea()
MemoryArea which is the current
memory area for this.
MemoryArea valuepublic static int getInitialMemoryAreaIndex()
RealtimeThread is the memory area given as a
parameter to the constructor. This method returns the position
in the memory area stack of that initial memory area.
RealtimeThreadpublic static int getMemoryAreaStackDepth()
MemoryArea instances to which
this RealtimeThread has access.
MemoryArea instances.public static MemoryArea getOuterMemoryArea(int index)
MemoryArea in the memory area stack at
the index given. If the given index does not exist in the
memory area scope stack then null is returned.
index - The offset into the memory area stack.
MemoryArea at index or null if the
given value is does not correspond to a position in the stack.public void interrupt()
public boolean addToFeasibility()
addToFeasibility in interface Schedulablepublic MemoryParameters getMemoryParameters()
MemoryParameters of this schedulable object.
getMemoryParameters in interface SchedulableMemoryParameters value.public void setMemoryParameters(MemoryParameters memoryParam)
MemoryParameters for this schedulable object.
setMemoryParameters in interface SchedulablememoryParam - the MemoryParameters for this
schedulable object.public boolean setMemoryParametersIfFeasible(MemoryParameters memoryParam)
setMemoryParametersIfFeasible in interface SchedulablememoryParam - the MemoryParameters for this
schedulable object.
public ProcessingGroupParameters getProcessingGroupParameters()
ProcessingGroupParameters of this
schedulable object.
getProcessingGroupParameters in interface SchedulableProcessingGroupParameters valuepublic void setProcessingGroupParameters(ProcessingGroupParameters groupParam)
ProcessingGroupParameters for this schedulable object.
setProcessingGroupParameters in interface SchedulablegroupParam - a ProcessingGroupParameters valuepublic boolean setProcessingGroupParametersIfFeasible(ProcessingGroupParameters groupParam)
ProcessingGroupParameters of this schedulable object
only if the resulting task set is feasible.
setProcessingGroupParametersIfFeasible in interface SchedulablegroupParam - a ProcessingGroupParameters value
public ReleaseParameters getReleaseParameters()
ReleaseParameters of this schedulable object.
getReleaseParameters in interface SchedulableReleaseParameters value
public void setReleaseParameters(ReleaseParameters releaseParam)
throws IllegalThreadStateException
ReleaseParametersfor this schedulable object.
setReleaseParameters in interface SchedulablereleaseParam - a ReleaseParameters value
IllegalThreadStateExceptionpublic boolean setReleaseParametersIfFeasible(ReleaseParameters releaseParam)
setReleaseParametersIfFeasible in interface SchedulablereleaseParam - a ReleaseParameters valuepublic Scheduler getScheduler()
Scheduler for this schedulable object.
getScheduler in interface SchedulableScheduler value
public void setScheduler(Scheduler scheduler)
throws IllegalThreadStateException
Scheduler for this schedulable object.
setScheduler in interface Schedulablescheduler - the scheduler.
IllegalThreadStateException
public void setScheduler(Scheduler scheduler,
SchedulingParameters schedulingParam,
ReleaseParameters releaseParam,
MemoryParameters memoryParam,
ProcessingGroupParameters groupParam)
throws IllegalThreadStateException
Scheduler for this schedulable object.
setScheduler in interface Schedulablescheduler - a Scheduler valueschedulingParam - a SchedulingParameters valuereleaseParam - a ReleaseParameters valuememoryParam - a MemoryParameters valuegroupParam - a ProcessingGroupParameters value
IllegalThreadStateException - if an error occurspublic SchedulingParameters getSchedulingParameters()
SchedulingParameters for this schedulable object.
getSchedulingParameters in interface SchedulableSchedulingParameters valuepublic void setSchedulingParameters(SchedulingParameters schedulingParam)
SchedulingParameters for this schedulable
object only if the resulting task set is feasible.
setSchedulingParameters in interface SchedulableschedulingParam - a SchedulingParameters valuepublic boolean setSchedulingParametersIfFeasible(SchedulingParameters schedulingParam)
SchedulingParameters for this schedulable object.
setSchedulingParametersIfFeasible in interface SchedulableschedulingParam - a SchedulingParameters value
public boolean removeFromFeasibility()
SchedulingParameters, ReleaseParameters, MemoryParameters, and ProcessingGroupParameters, of
this instance of Schedulable should no longer be
considered in the feasibility analysis of the associated Scheduler. Whether the resulting system is feasible or not,
the subtrac-tion is completed.
removeFromFeasibility in interface Schedulable
public static void sleep(Clock clock,
HighResolutionTime time)
throws InterruptedException
Clock. The
sleep time may be relative or absolute. If relative, then the
calling thread is blocked for the amount of time given by the
parameter. If absolute, then the calling thread is blocked
until the indicated point in time. If the given absolute time
is before the current time, the call to sleep returns
immediately.
clock - a Clock valuetime - a HighResolutionTime value
InterruptedException
public static void sleep(Clock clock,
RelativeTime time)
throws InterruptedException
Clock. The
sleep time may be relative or absolute. If relative, then the
calling thread is blocked for the amount of time given by the
parameter. If absolute, then the calling thread is blocked
until the indicated point in time. If the given absolute time
is before the current time, the call to sleep returns
immediately.
clock - a Clock valuetime - a RelativeTime value
InterruptedException
public static void sleep(Clock clock,
AbsoluteTime time)
throws InterruptedException
Clock. The
sleep time may be relative or absolute. If relative, then the
calling thread is blocked for the amount of time given by the
parameter. If absolute, then the calling thread is blocked
until the indicated point in time. If the given absolute time
is before the current time, the call to sleep returns
immediately.
clock - a Clock valuetime - a AbsoluteTime value
InterruptedException
public static void sleep(RelativeTime time)
throws InterruptedException
Clock. The
calling thread is blocked for the amount of time given by the
parameter.
time - a RelativeTime value
InterruptedException
public static void sleep(AbsoluteTime time)
throws InterruptedException
Clock. The
calling thread is blocked until the indicated point in time. If
the given absolute time is before the current time, the call to
sleep returns immediately.
time - an AbsoluteTime value
InterruptedException
public static void sleep(HighResolutionTime time)
throws InterruptedException
Clock. The
sleep time may be relative or absolute. If relative, then the
calling thread is blocked for the amount of time given by the
parameter. If absolute, then the calling thread is blocked
until the indicated point in time. If the given absolute time
is before the current time, the call to sleep returns
immediately.
time - a HighResolutionTime value
InterruptedExceptionpublic void start()
public void run()
run in interface Runnableprotected void rtfini_()
public boolean waitForNextPeriod()
throws IllegalThreadStateException
ReleaseParameters type of PeriodicParameters to block
until the start of each period. Periods start at either the
start time in PeriodicParameters or when
this.start() is called. This method will block
until the start of the next period unless the thread is in
either an overrun or deadline miss condition. If both overrun
and miss handlers are null and the thread has overrun its cost
or missed a deadline public boolean waitForNextPeriod()
throws IllegalThreadStateException will immediately
return false once per overrun or deadline miss. It
will then again block until the start of the next period
(unless, of course, the thread has overrun or missed again). If
either the overrun or deadline miss handlers are not null and
the thread is in either an overrun or deadline miss condition
public boolean waitForNextPeriod() throws
IllegalThreadStateException will block until the handler
corrects the situation (possibly by calling public void
schedulePeriodic() ).
boolean value
IllegalThreadStateException - if this does not have a reference
to a ReleaseParameters type of PeriodicParameters.protected boolean validateSchedulingParameters()
public void setupTSS()
public MemoryArea getActiveMemoryArea()
protected MemoryArea getOuterMemoryArea_(int index)
protected int getInitialMemoryAreaIndex_()
public int getMemoryAreaStackDepth_()
public int executionEligibility()
Schedulable
executionEligibility in interface Schedulableint value used internally to represent
a total ordering of the schedulable entities.protected boolean setTopMemoryArea(MemoryArea memoryArea)
protected gnu.gcj.RawData getScopeStack()
public static void yield()
protected void setupTimeoutHandler()
protected void updatePeriodicParameters()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||