|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object java.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 ReleaseParameters for 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.
ClassCastException
public 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.
RealtimeThread
public 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 Schedulable
public MemoryParameters getMemoryParameters()
MemoryParameters
of this schedulable object.
getMemoryParameters
in interface Schedulable
MemoryParameters
value.public void setMemoryParameters(MemoryParameters memoryParam)
MemoryParameters
for this schedulable object.
setMemoryParameters
in interface Schedulable
memoryParam
- the MemoryParameters
for this
schedulable object.public boolean setMemoryParametersIfFeasible(MemoryParameters memoryParam)
setMemoryParametersIfFeasible
in interface Schedulable
memoryParam
- the MemoryParameters
for this
schedulable object.
public ProcessingGroupParameters getProcessingGroupParameters()
ProcessingGroupParameters
of this
schedulable object.
getProcessingGroupParameters
in interface Schedulable
ProcessingGroupParameters
valuepublic void setProcessingGroupParameters(ProcessingGroupParameters groupParam)
ProcessingGroupParameters
for this schedulable object.
setProcessingGroupParameters
in interface Schedulable
groupParam
- a ProcessingGroupParameters
valuepublic boolean setProcessingGroupParametersIfFeasible(ProcessingGroupParameters groupParam)
ProcessingGroupParameters
of this schedulable object
only if the resulting task set is feasible.
setProcessingGroupParametersIfFeasible
in interface Schedulable
groupParam
- a ProcessingGroupParameters
value
public ReleaseParameters getReleaseParameters()
ReleaseParameters
of this schedulable object.
getReleaseParameters
in interface Schedulable
ReleaseParameters
valuepublic void setReleaseParameters(ReleaseParameters releaseParam) throws IllegalThreadStateException
ReleaseParameters
for this schedulable object.
setReleaseParameters
in interface Schedulable
releaseParam
- a ReleaseParameters
value
IllegalThreadStateException
public boolean setReleaseParametersIfFeasible(ReleaseParameters releaseParam)
setReleaseParametersIfFeasible
in interface Schedulable
releaseParam
- a ReleaseParameters
valuepublic Scheduler getScheduler()
Scheduler
for this schedulable object.
getScheduler
in interface Schedulable
Scheduler
valuepublic void setScheduler(Scheduler scheduler) throws IllegalThreadStateException
Scheduler
for this schedulable object.
setScheduler
in interface Schedulable
scheduler
- 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 Schedulable
scheduler
- 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 Schedulable
SchedulingParameters
valuepublic void setSchedulingParameters(SchedulingParameters schedulingParam)
SchedulingParameters
for this schedulable
object only if the resulting task set is feasible.
setSchedulingParameters
in interface Schedulable
schedulingParam
- a SchedulingParameters
valuepublic boolean setSchedulingParametersIfFeasible(SchedulingParameters schedulingParam)
SchedulingParameters
for this schedulable object.
setSchedulingParametersIfFeasible
in interface Schedulable
schedulingParam
- 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
InterruptedException
public void start()
public void run()
run
in interface Runnable
protected 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 Schedulable
int
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 |