New Proposed Changes

Num Class Change

Changes Accepted on August 9 2004

This is a quick summary of the API changes and semantic changes found in the draft 1.0.1 specification that are not plainly clarifications.

We have tried hard to keep the complete draft synchronized with these changes, but this is a summary and does give rationale or put the changes in context. Please refer to the complete draft for the best information on the proposed changes.

This set of changes will be considered final when the RI and TCK have been updated to reflect them.

Num Class Change
1 All Clarified the semantics in the specification
2 RealtimeThread Added MemoryArea getMemoryArea() to return the initial memory area of the RealtimeThread.
3 changes to the operation of setPriority in java.lang.Thread are described
4 waitForNextPeriod changed to static
5 added waitForNextPeriodInterruptible
6 added the two new setIfFeasible methods from the Schedulable interface.
7 Scheduler let fireSchedulable() throw UnsupportedOperationException
8 switch the following methods to abstract:

1. public abstract boolean setIfFeasible (Schedulable schedulable, ReleaseParameters release, MemoryParameters memory)
2. public abstract boolean setIfFeasible (Schedulable schedulable, ReleaseParameters release, MemoryParameters memory, ProcessingGroupParameters group)

9 Schedulable Move methods from all classes that extend Schedulable into Schedulable
1. boolean addIfFeasible(),
2. boolean setIfFeasible(ReleaseParameters release, MemoryParameters memory),
3. boolean setIfFeasible(ReleaseParameters release, MemoryParameters memory, ProcessingGroupParameters group),
4. boolean setIfFeasible(ReleaseParameters release, ProcessingGroupParameters group)
10 Add
1. boolean setIfFeasible(SchedulingParameters sched,
ReleaseParameters release,
MemoryParameters memory)
2. boolean setIfFeasible(SchedulingParameters sched,
ReleaseParameters release,
MemoryParameters memory,
ProcessingGroupParameters group)

These two methods are also added to classes that implement Schedulable.

11 IllegalThreadStateException was removed from the setScheduler methods.
12 ReleaseParameters Add Cloneable interface and clone() method
13 SchedulingParameters Add Cloneable interface and clone() method
14 Convert the constructor to from public to protected
15 PeriodicParameters Add constructors:
1. PeriodicParameters(RelativeTime period)
2. PeriodicParameters(HighResolutionTime start, RelativeTime period)
16 ProcessingGroupParameters Add Cloneable interface and clone() method
17 AperiodicParameters Promoted arrivalTimeQueue overflow methods from the subclass, SporadicParameters:

String arrivalTimeQueueOverflowExcept
String arrivalTimeQueueOverflowIgnore
String arrivalTimeQueueOverflowReplace
String arrivalTimeQueueOverflowSave
int getInitialArrivalTimeQueueLength()
void setInitialArrivalTimeQueueLength(int length)
void setArrivalTimeQueueOverflowBehavior(String behavior)
String getArrivalTimeQueueOverflowBehavior()

18 Add no-arg constructor
AperiodParameters()
19 SporadicParameters Add constructor
SporadicParameters(RelativeTime minInterarrival)
20 Several methods and fields have been promoted to the AperiodicParameters super-class. See that class.
21 PriorityScheduler Revise the semantics for the REPLACE MIT violation policy
22 The fireSchedulable method is permitted to throw UnsupportedOperationException
23 Deprecated MAX_PRIORITY and MIN_PRIORITY
24 SchedulingParameters Implements Cloneable and includes the public clone method
25 The no-arg constructor is switched from public to protected.
26 MemoryArea Updated the throws clauses of newArray(), and the newInstance() methods to reflect the checked exceptions from the underlying platform
27 ImmortalMemory Clarify that java.lang.Thread can use executeInArea() and newInstance() from ImmortalMemory
28 HeapMemory In many cases, including this, methods that are inherited from the super-class with no semantic changes are no longer specifically mentioned. Here the methods are memoryConsumed() and memoryRemaining(). The methods are still present, but repeating them would be redundant.
29 SizeEstimator Add reserveArray(int dimension)
and
reserveArray(int dimension, Class type)
30 ScopedMemory getPortal() throws MemoryAccessError and IllegalAssignmentError (both unchecked)
31 ScopedCycleException cannot be thrown by joinAndEnter() unless the method has a time parameter. It has been removed where appropriate
32 joinAndEnter() methods throw IllegalArgumentException immediately when they have no non-null logic value
33 Documentation for executeInArea is repeated here to add that ordinary threads cannot use the method on scoped memories.
34 LTMemory Added four new constructors:
  1. LTMemory(long size)
  2. LTMemory(long size, Runnable logic)
  3. LTMemory(SizeEstimator size)
  4. LTMemory(SizeEstimator size, Runnable logic)
35 VTMemory

Added four new constructors

  1. VTMemory(long size)
  2. VTMemory(long size, Runnable logic)
  3. VTMemory(SizeEstimator size)
  4. VTMemory(SizeEstimator size, Runnable logic)
36 PhysicalMemoryManager The type of the static final fields ALIGNED, BYTESWAP, SHARED, and DMA is changed from String to Object.
37 A new static final field, IO_PAGE, is added.
38

The methods

  • public static void onInsertion(long base, long size, AsyncEvent ae)
  • public static void onRemoval(long base, long size, AsyncEvent ae)
  • public static boolean unregisterInsertionEvent(long base, long size, AsyncEvent ae)
  • public static boolean unregisterRemovalEvent(long base, long size, AsyncEvent ae)

have been added

39

All methods now throw OffsetOutOfBoundsException when the base is negative, and SizeOutOfBoundsException when the extent of memory passes the physical or virtual addressing boundary

40 onInsertion(long base, long size, AsyncEvent ae) and onRemoval(long base, long size, AsyncEvent ae) are deprecated.
41 Throughout the specification we have been removing unchecked exceptions from the throws clause of methods. This change is only matter of bringing the document in line with the current Javadoc practice. The exceptions remain in the @throws part of the document.
42 PhysicalMemoryTypeFilter

The methods

  • public static void onInsertion(long base, long size, AsyncEvent ae)
  • public static void onRemoval(long base, long size, AsyncEvent ae)
  • public static boolean unregisterInsertionEvent(long base, long size, AsyncEvent ae)
  • public static boolean unregisterRemovalEvent(long base, long size, AsyncEvent ae)

have been added

43

All methods now throw OffsetOutOfBoundsException when the base is negative, and SizeOutOfBoundsException when the extent of memory passes the physical or virtual addressing boundary

44 onInsertion(long base, long size, AsyncEvent ae) and onRemoval(long base, long size, AsyncEvent ae) are deprecated.
45 RawMemoryAccess The constructors now mention the possibility of OutOfMemoryError
46 RawMemoryFloatAccess The constructors now mention the possibility of OutOfMemoryError
47 MemoryParameters Changed setAllocationRateIfFeasible() to accept a long argument.
48 Added implements Cloneable and added the clone() method
49 GarbageCollector Deprecated the public constructor
50 MonitorControl made the constructor protected
51 changed the setMonitorControl methods to return the old policy instead of void
52 PriorityCeilingEmulation added static PriorityCeilingEmulation instance(int ceiling)
53 added getCeiling()
54 added static PriorityCeilingEmulation getMaxCeiling()
55 Removed the public constructor
56 Deprecated getDefaultCeiling()
57 PriorityInheritance Removed the public constructor
58 WaitFreeWriteQueue Added constructor

WaitFreeWriteQueue(int maximum) throws IllegalArgumentException

59 Added constructor

WaitFreeWriteQueue(int maximum, MemoryArea memory) throws IllegalArgumentException

60 added throws InterruptedException to read()
61 WaitFreeReadQueue Added constructor

WaitFreeReadQueue(int maximum, boolean notify) throws IllegalArgumentException

62 Added constructor

WaitFreeReadQueue(int maximum, MemoryArea memory, boolean notify) throws IllegalArgumentException

63 Changed the return type of write() from boolean to void
64 Added InterruptedException to the throws clause of write()
65 Added InterruptedException to the throws clause of waitForData()
66 WaitFreeDequeue Deprecated
67 Changed the return type of blockingWrite from boolean to void
68 HighResolutionTime Changed relative(Clock clock, HighResolutionTime time) to relative(Clock clock, RelativeTime time)
69 add getClock()
70 Change the operation of set(HighResolutionTime time) to match normal Java usage
71 Add implements Cloneable, and the clone() method
72 AbsoluteTime Added new constructors
  1. AbsoluteTime(Clock clock)
  2. AbsoluteTime(long millis, int nanos, Clock clock)
  3. AbsoluteTime(AbsoluteTime time, Clock clock)
  4. AbsoluteTime(java.util.Date date, Clock clock)
73 Changed several methods from final to non-final
  • add(RelativeTime time),
  • subtract(AbsoluteTime time)
  • subtract(AbsoluteTime time, RelativeTime destination)
  • subtract(RelativeTime time)
74 Changed

RelativeTime relative (Clock clock, AbsoluteTime dest)

to

RelativeTime relative (Clock clock, RelativeTime dest)

75 RelativeTime Added new constructors
  1. RelativeTime(Clock clock)
  2. RelativeTime(long millis, int nanos, Clock clock)
  3. RelativeTime(RelativeTime time, Clock clock)
76 Changed two methods from final to non-final
  • add(RelativeTime time)
  • subtract(RelativeTime time)
77 Deprecated
  • getInterarrivalTime(),
  • getInterarrivalTime(RelativeTime destination), and
  • addInterarrivalTo(AbsoluteTime timeAndDestination)
78 RationalTime Deprecated
79 Clock Added
RelativeTime getEpochOffset() throws UnsupportedOperationException
80 Changed the return type of
getTime(AbsoluteTime time) from void to AbsoluteTime
81 Timer This class overrides fire() to note that it throws UnsupportedOperationException
82 Added
void start(boolean disabled) throws IllegalStateException
83 AsyncEventHandler Remove the final qualifier from
  1. getAndClearPendingFireCount
  2. getPendingFireCount
84 Add
  1. boolean isDaemon()
  2. void setDaemon(boolean on)
85 added the two new setIfFeasible methods from the Schedulable interface.
86 BoundAsyncEventHandler Make it a non-abstract class
87 AsynchronouslyInterruptedException Added clear()
88 Deprecate happened()
89 Deprecated propagate()
90 POSIXSignalHandler Deprecate all signal codes that were not included in the older POSIX standard.
91 Removed the default no-arg constructor
92 RealtimeSecurity Added checkSetDaemon method
93 Added checkSetMonitorControl method
94 RealtimeSystem Removed the no-arg constructor
95 Return version information from System.getProperty("javax.realtime.version")
96 Added MonitorControl getInitialMonitorControl()
97 ArrivalTimeQueueOverflowException Added. This is thrown instead of ResourceLimitError when the arrival time queue overflows.
98 CeilingViolationException Added
99 MemoryScopeException Changed to unchecked
100 InnaccessibleAreaException Changed to unchecked
101 MemoryTypeConflictException Changed to unchecked
102 MITViolationException Changed to unchecked
103 OffsetOutOfBoundsException Changed to unchecked
104 SizeOutOfBoundsException Changed to unchecked
105 UnsupportedPhysicalMemoryException Changed to unchecked

Changes Deferred on August 9, 2004

The EC passed the 1.0.1 changes with no objections.