Use of JCP site is subject to the
JCP Terms of Use and the
Oracle Privacy Policy
|
Proposed Note that changes to inherited methods are only itemized inthe class where the method is defined. Note that numbered items such as semantics are identified by unique numbers in this change list. Since deleted semantics and new semantics have numbers, the numbers inthis change list may not match either the 1.0.1(a) or 1.0.1(b) documents. Because if this, cross references that appear in this change list may not make sense. Where such semantics are mentioned, the change list includes enough text from the semantic to identify it. 1. change The non-normative thread safety chapter has been removed.
Design ChapterScheduling section2. change Replaced: By timely execution of threads we mean that� With: Timely execution of schedulable objects means that � In Timely execution of schedulable objects means that the programmer can determine byanalysis of the program, testing the program on particular implementations, orboth whether particular threads will always complete execution before a giventimeliness constraint. 3. change Replaced: threads With : schedulable objects In We use the term scheduling (or scheduling algorithm) to refer to the production of asequence (or ordering) for the execution of a set of schedulableobjects (a schedule). 4. change Replaced thread With schedulable object In Priority is typically an integer associated with a schedulable object; 5. change Replaced �to� With �that may help� In However, the base scheduler also inherits methods from itssuperclass that may help determinefeasibility. Memory ManagementSubsection Memory Areas6. change
Inserted �real-time� in specifically including no-heap real-timethreads and no-heap asynchronous event handlers.
Subsection Scoped Memory7. change Replaced: �Every � With: �The contents of a� Replaced �areaeffectively maintains� With �are discarded when no object in the scope can bereferenced. This is done by a technique similar to reference counting thescope. A conformant implementation might maintain� Replaced: �that� With �each� Replaced: �is� With �would be� Replaced: �is� With �would be� Replaced �is� With �would be� Replaced �The� With: �Reuse of the� Replaced �Cannot be reused� With �is blocked� Replaced �complete and the RTSJ requires that the finalizersexecute to completion before the next use (calling enter() or in a constructor)of the scoped memory area� With �complete� In The contents of a scoped memory arediscarded when no object in the scope can be referenced. This is done by atechnique similar to reference counting the scope. A conformant implementationmight maintain a count of the number ofexternal references to each memory area. Thereference count for a ScopedMemoryarea would be increased by entering a new scope throughthe enter() method of MemoryArea, by the creation of a schedulableobject using the particular ScopedMemory area,or by the opening of an inner scope. The reference count for a ScopedMemory area wouldbe decreased when returning from the enter() method, when the schedulable object using the ScopedMemory terminates, or when an inner scopereturns from its enter()method. When the countdrops to zero, the finalize method for each object in the memory would be executed to completion. Reuse of the scope isblocked until finalization is complete. 8. change Replaced �Enclosing� With �Outer� In A reference to a scoped object cannot be assigned to avariable from an outer scope, Synchronization sectionPriority Inversion Avoidance subsection9. change Replaced �Asecond policy, priority ceiling emulation protocol (or highest lockerprotocol), is also specified for systems that support it. The highest lockerprotocol is also a well known algorithm in the literature, and it has thefollowing effect: �With this policy, a monitor is given a priority ceiling when it is created, which is the highest priority ofany thread that could attempt to enter the monitor. �As soon as a thread enters synchronized code, its priority is raised to themonitor�s ceiling priority. �If, through programming error, a thread has a higher priority than the ceilingof the monitor it is attempting to enter, then an exception is thrown. Notethat while the RTSJ requires that the execution of non-heap schedulable objectsmust not be delayed by the execution of the garbage collector, an applicationcan cause a no-heap schedulable to wait for garbage collection by synchronizingusing an object between an heap-using thread or schedulable object and anon-heap schedulable object. The RTSJ provides three wait-free queue classes toprovide protected, non-blocking, shared access to objects accessed by bothregular Java threads and no-heap real-time threads. These classes are providedexplicitly to enable communication between the real-time execution of non-heapschedulable objects and regular Java threads.� With �A second policy, priority ceiling emulation protocol (orhighest locker protocol), is also specified for systems that support it. Thisprotocol is also a well-known algorithm in the literature; somewhat simplified, its effect is asfollows: � A monitor is given a �priority ceiling� when it iscreated; the programmer should choose the highest priority of any thread thatcould attempt to enter the monitor. � As soon as a thread enters synchronized code, its (active)priority is raised to the monitor�s ceiling priority. If, through programmingerror, a thread has a higher base priority than the ceiling of the monitor itis attempting to enter, then an exception is thrown. � On leaving the monitor, the thread has its active priorityreset. In simple cases it will set be to the thread�s previous active priority,but under some circumstances (e.g. a dynamic change to the thread�s basepriority while it was in the monitor) a different value is possible Note that while the RTSJ requires that the execution ofnon-heap schedulable objects must not be delayed by garbage collection on behalfof lower-priority schedulable objects, an application can cause a no-heapschedulable object to wait for garbage collection by synchronizing using anobject between an heap-using thread or schedulable object and a non-heapschedulable object. The RTSJ provides wait-free queue classes to provideprotected, non-blocking, shared access to objects accessed by both regular Javathreads and no-heap real-time threads. These classes are provided explicitly toenable communication between the real-time execution of non-heap schedulableobjects and regular Java threads or heap-using schedulable objects.� Asynchronous Event Handling section10. change
Replaced �soft� With �execution time� in The Clock class may be extended to represent other clocksthe underlying system might make available (such as a executiontime clock of some granularity). Asynchronous Transfer of Control sectionMethodological Principles subsection11. change Replaced �methods� with �methods, static initializers� in These ATC-deferred sections are synchronized methods, static initializers, and synchronizedstatements. Expressibility Principles subsection12. change Replaced �thread� With �schedulable object� In Code that responds to an ATC does not return to the point inthe schedulable object where the ATC wastriggered; 13. change Replaced �thread� With �schedulable object� Replaced �thread� With �thread or schedulable object� Replaced �thread � with �thread or schedulable object� in
14. change Inserted: �real-time� in Through ATC it must be possible to abort a real-time thread but in a manner that does not carrythe dangers of the Threadclass�s stop() and destroy() methods. Pragmatic Principles subsection15. change Inserted: �real-time� in There should be straightforward idioms for common cases suchas timer handlers and real-time thread termination. 16. change Deleted �ATCmust be implemented without inducing an overhead for programs that do not useit.� Asynchronous Thread Termination section17. change Inserted: �Real-Time� in the title. 18. change Replaced �is� With �would be� In It would be convenient toprogram threads that abnormally terminate when the external real-time systemchanges in a way such that the thread is no longer useful. 19. change
deleted �would� from Withoutthis facility, a thread or set of threads wouldhave to be coded in such a manner so that their computationalbehavior anticipated all of the possible transitions among possible states ofthe external system. 20. change Inserted �real-time� in The RTSJ accommodates safe asynchronous real-time thread termination through a combinationof the asynchronous event handling and the asynchronous transfer of controlmechanisms. 21. change Inserted �real-time� in To create such a set of real-timethreads consider the following steps 22. change Inserted �real-time� in Make all of the application methods of the real-time thread interruptible 23. change Inserted �real-time� in Have the handlers call interrupt() on each of the real-time threadsaffected by the change 24. change Inserted �real-time� in After the handlers call interrupt() have them create a new set of real-timethreads appropriate to the current state of the external world 25. change Inserted �real-time� in Ultimately the run() methodof the real-time thread will completenormally. 26. change Insert �real-time� in This idiom provides a quick (if coded to be so) but orderlyclean up and termination of the real-timethread. Physical Memory Access section27. change Deleted �The base implementation will provide aPhysicalMemoryManager and a set of PhysicalMemoryTypeFilter classes thatcorrectly identify memory classes that are standard for the (OS, JVM, andprocessor) platform.� from ThePhysicalMemoryManager is available for use by the various physical memoryaccessor objects (VTPhysicalMemory,LTPhysicalMemory, ImmortalPhysicalMemory, RawMemoryAccess, and RawMemoryFloatAccess)to create objects of the correct typethat are bound to areas of physical memory with the appropriate characteristics- or with appropriate accessor behavior. Examples of characteristics that mightbe specified are: DMA memory, accessors with byte swapping, etc. The base implementation will provide a PhysicalMemoryManager and a set of PhysicalMemoryTypeFilter classes that correctly identify memory classes that are standard forthe (OS, JVM, and processor) platform.OEMs may provide PhysicalMemoryTypeFilter classes that allow additional characteristics ofmemory devices to be specified. Requirements and Conventions28. change Inserted �Subject to the usual assumptions, the methods injavax.realtime can safely be used concurrently by multiple threads unless it isotherwise documented.� In the list of base requirements Optional Facilities section29. change Replaced �Allows the application to control the processor utilizationof a thread or group of threads.� With �Allows the application to control the processor utilizationof a schedulable object.� In the description of the cost enforcement option 30. change
Insert the following option in the option table: �ProcessingGroup Enforcement Allows the application to control the processor utilizationof a group of schedulable objects� 31. change Insert the following option in the option table: �Processing Group deadline less than period Allows the application to specify a processing groupdeadline � 32. change Insert the following option in the option table: �Allocation-rate enforcement on heap allocation Allows the application to limit the rate at which aschedulable object creates objects in the heap.� 33. change Inserted �The ProcessingGroupParameters class is only functional onsystems that support the processing group enforcement option. Cost enforcement,and cost overrun handlers are onlyfunctional on systems that support the cost enforcement option. If processinggroup enforcement is supported, ProcessingGroupParameters must function asspecified. If cost enforcement is supported, cost enforcement, and cost overrunhandlers must function as specified.� 34. change Inserted �If the processing group deadline less than period is notsupported, values passed to the constructor for ProcessingGroupParameters andits setDeadline method are constrained to be equal to the period. If the optionis supported, processing group deadlines less than the period must be supportedand function as specified.� 35. change Replaced �If cost enforcement is not supported, theProcessingGroupParameters class must not be present. If cost enforcement issupported, ProcessingGroupParameters must be implemented as specified.� With �If priority ceiling emulation is supported, PriorityCeilingEmulationmust be implemented as specified. If priority ceiling emulation is notsupported, PriorityCeilingEmulation must be present, but the implementation maynot permit its use as a monitor control policy.� 36. change Replaced �If priority ceiling emulation protocol is not supported,the PriorityCeilingEmulation class must not be present. If priority ceilingemulation is supported, PriorityCeilingEmulation must be implemented asspecified.� With �If heap allocation rate enforcement is supported, it mustbe implemented as specified. If heap allocation rate enforcement is notsupported, the allocation rate attribute of MemoryParameters must be checkedfor validity but otherwise ignored by the implementation.� 37. change Inserted �The following semantics are optional for an RTSJimplementation designed and licensed exclusively as a development tool: � The priority scheduler need not support fixed-prioritypreemptive scheduling or priority inheritance. This does not excuse animplementation from fully supporting the relevant APIs. It only reduces therequired behavior of the underlying scheduler to the level of the scheduler inthe Java specification extended to at least 28 priorities. � No semantics constraining timing beyond the requirementsof the Java specifications need be supported. Specifically, garbage collectionmay delay any thread without bound and any delay in delivering asynchronouslyinterrupted exceptions is permissible including never delivering the exception.Note, however, that if any AIE other than the generic AIE is delivered, it mustmeet the AIE semantics, and all heap-memory-related semantics other thanpreemption remain fully in effect. Further, relaxed timing does not implyrelaxed sequencing. For instance, semantics for scoped memory must be fullyimplemented. � The RTSJ semantics that alter standard Java methodbehavior�such as the modified semantics for Thread.setPriority andThread.interrupt�are not required for a development tool, but suchdeviations from the RTSJ must be documented, and the implementation must beable to generate a run-time warning each time one of these methods deviatesfrom standard RTSJ behavior. � These relaxed requirements set a floor for RTSJdevelopment system tool implementations. A development tool may choose toimplement semantics that are not required.� Required Documentation section38. change Replaced �admission control� with �feasibility testing� twice in If the feasibility testingalgorithm is not the default, document the feasibilitytesting algorithm. 39. change Replaced �the base� With �each other� In document the behavior of the scheduler and its interactionwith each other scheduler 40. change Deleted �3 An implementation of the RTSJ is permitted to spuriouslyrelease waiting threads, but it must document the circumstances under whichthat may happen.� 41. change Deleted �4. Threads that are preempted in favor of a thread withhigher execution eligibility may be given access to the processor at any timeas determined by a particular implementation. If the behavior does not matchthe POSIX specification, the implementation is required to providedocumentation stating exactly the algorithm used for granting such access.� 42. change Inserted �Placement at the front of the queue may be required in afuture version of this specification.� In If the preempted schedulable object is not placed at thefront of the appropriate queue the implementation must document the algorithmused for such placement. Placement at the front ofthe queue may be required in a future version of this specification. 43. change Replaced �default� With �base� in It must supply documentation for the behavior of the newscheduler with priority inheritance (and, if it is supported, priority ceilingemulation protocol) equivalent to the semantics for the base priority scheduler found in the Synchronization chapter. 44. change Replaced �This� With �The� in The worst-case response interval between firing an AsyncEvent because of a bound happening toreleasing an associated AsyncEventHandler 45. change Inserted the following documentation requirement �An implementation may run finalizers for objects in scopedmemory before the scope is reentered and before it returns from any call togetReferenceCount() for that scope. It must, however, document when it runsthose finalizers.�
46. change Insertedthe following documentation requirement �For each supported clock, the documentation must specifywhether the resolution is settable, and if it is settable the documentationmust indicate the supported values.� 47. change Inserted the following documentation requirement
�If an implementation includes any clocks other than therequired real-time clock, their documentation must indicate in what contextsthose clocks can be used.� 48. change Deleted �If we refer to other heaps, such as the heap used by the Clanguage runtime or the operating system�s heap, we will explicitly state whichheap.� from Throughoutthe RTSJ, when we use the word code,we mean code written in the Java programming language. When we mention the Javalanguage in the RTSJ, that also refers to the Java programming language. Theuse of the term heap in the RTSJwill refer to the heap used by the runtime of the Java language. If we refer to other heaps, such as the heap used by the Clanguage runtime or the operating system�s heap, we will explicitly state whichheap. Standard Java ChapterThread Groups section49. change Replaced �Thread groups are rooted at a base ThreadGroup object whichis created in heap memory, and thread group objects hold references to alltheir member threads. Since no-heap threads cannot hold a reference to a heapobject they are not permitted to contain a reference to a thread group, andsince thread groups cannot hold references to threads created in scoped memorythey are also not permitted to have normal thread group membership. Inconsequence all no-heap threads and some plain real-time threads have nullthread group references.� With �Thread groups are rooted at a base ThreadGroup object whichmay be created in heap or immortal memory. All thread group object holdreferences to all their member threads, and subgroups, and a reference to theirparent group. Since heap and immortal memory can not hold references to scopedmemory, it follows that a thread group can never be allocated in scoped memory.It then follows that no thread allocated in scoped memory may be referencedfrom any thread group, and consequently such threads are not part of any threadgroup and will hold a null thread group reference. Similarly, aNoHeapRealtimeThread can not be a member of a heap allocated thread group.� 50. change Deleted �Note that a thread group cannot be created in a scopedmemory area because the parent/child references between thread groups wouldviolate scoped memory assignment rules and throw an IllegalAssignmentError.� 51. change Insert new section �InterruptedException� 52. change Inserted �The interruptible methods inthe standard libraries (such as Object.wait, Thread.sleep, and Thread.join)have their contract expanded slightly such that they will respond tointerruption not only when the interrupt method is invoked on the currentthread, but also, for schedulable objects, when executing within a call to AIE.doInterruptible and that AIE is fired. SeeAsynchrony.� Real-Time Threads chapter
Semantics and Requirements for Real-time Threads section53. change Replaced �A no-heap real- time thread will not be blocked by thegarbage collector executing in the context of a Java thread with a lowerexecution eligibility.� With �Garbage collection executing in the context of a Javathread must not in itself block execution of a no-heap thread with a higherexecution eligibility, however application locks work as specified even whenthe lock causes synchronization between a heap-using thread and a no-heapthread.� 54. change Inserted �, and when an asynchronously interrupted exception�s firemethod is invoked between the time the real-time thread has entered thatexception�s doInterruptible method, and return from doInterruptible. (See theAsynchrony chapter.)� in Each real-time thread has an attribute which indicateswhether an AsynchronouslyInterruptedExceptionis pending. Thisattribute is set when a call to RealtimeThread.interrupt() is made on the associated real-time thread, and when an asynchronously interrupted exception�s fire method is invokedbetween the time the real-time thread has entered that exception�s doInterruptible method, and return from doInterruptible. (See the Asynchronychapter.)
Second RealtimeThread constructor55. change Replaced �default� With �associated� In java.lang.IllegalArgumentException - Thrown if thescheduling parameters are not compatible with the associatedscheduler.
Third RealtimeThread constructor56. change Replaced �default� With �associated� In java.lang.IllegalArgumentException - Thrown if thescheduling parameters or release parameters are not compatible with the associated scheduler.
Fourth RealtimeThread constructor57. change Inserted �The newly-created real-time thread is associatedwith the scheduler in effect during execution of the constructor.� In the description of the scheduling parameter 58. change Replaced �copy� With �clone� Replaced �the new RealtimeThread� With �this� Replaced �default � with �associated� in scheduling - The SchedulingParameters associatedwith this (And possibly other instances of Schedulable). If schedulingis null and the creator is a schedulable object, SchedulingParameters102 is a clone of thecreator�s value created in the same memory area as this. If schedulingis null and the creator is a Java thread, the contents and type ofthe new SchedulingParameters object is governed by the associatedscheduler.
59. change In the description of the release parameter Replaced �default � with �associated� Replaced �copy� with �clone� In release - The ReleaseParameters associatedwith this (and possibly other instances of Schedulable). If release is nullthe new RealtimeThread will use a clone of thedefault ReleaseParameters for the associatedscheduler created in the memory area that contains the RealtimeThreadobject. 60. change Replaced �The � with �This � In java.lang.IllegalArgumentException - Thrown if theparameters are not compatible with the associatedscheduler.
Text copied from the Schedulable interface is coveredwith that interface
currentRealtimeThread method61. change Replaced �notan instance of RealtimeThread or an asynch event handler� with �that of a Java thread� in java.lang.ClassCastException - Thrown if thecurrent execution context is that of a Java thread. getCurrentMemoryArea method62. change Inserted �If this method is invoked from a Java thread it will returnthat thread�s current memory area (heap or immortal.)� getInitialMemoryAreaIndex method63. chang Inserted �This method returns the position in the memoryarea stack of the initial memory area.� 64. change Insert �may� 65. change Delete �This method returns the position in the memory areastack of initial memory area.� In This method returns the position in the memoryarea stack of the initial memory area. Memory area stacks mayinclude inherited stacks from parent threads. The initial memory area for thecurrent RealtimeThread or AsyncEventHandler is the memory area given as a parameter to the constructor.The index on the memory area stack of the initial memory area is a fixedproperty of the real-time thread. This method returnsthe position in the memory area stack of initial memory area. getOuterMemoryArea method66. change Inserted �Note: The current memory area(getCurrentMemoryArea()) is found at memory area stack indexgetMemoryAreaStackDepth() - 1., so getCurrentMemoryArea() ==getOutMemoryArea(getMemoryAreaStack- Depth() - 1).� Sleep(clock, time) method67. change Inserted �This method must not throw IllegalAssignmentError.It must tolerate time instances that may not be stored in this.� 68. change Replaced �if interrupted � with �if the thread isinterrupted by interrupt() or AsynchronouslyInterruptedException.fire() duringthe time between calling this method and returning from it.� In java.lang.InterruptedException - Thrownif the thread is interrupted by interrupt() or AsynchronouslyInterruptedException.fire() duringthe time between calling this method and returning from it.
69. change Replaced �not an instance of RealtimeThread or an asyncevent handler.� With �that of a Java thread.� In java.lang.ClassCastException - Thrown if thecurrent execution context is that of a Java thread. 70. change Replaced �java.lang.IllegalArgumentException - Thrown ifclock cannot represent calendar time, or if time is a relative time less thanzero.� With �java.lang.UnsupportedOperationException - Thrown if thesleep operation is not supported by clock. java.lang.IllegalArgumentException - Thrown if time is null,or if time is a relative time less than zero.�
Sleep(time) method71. change Inserted �This method must not throw IllegalAssignmentError. It musttolerate time instances that may not be stored in this.� 72. change Replaced �ifinterrupted � With �if the thread is interrupted by interrupt()36 orAsynchronouslyInterruptedException.fire() during the time between calling thismethod and returning from it.� In java.lang.InterruptedException - Thrownif the thread is interrupted by interrupt()36 or AsynchronouslyInterruptedException.fire() duringthe time between calling this method and returning from it. 73. change Replaced �notan instance of RealtimeThread or an async event handler.� With �that of a Java thread.� In java.lang.ClassCastException - Thrown if thecurrent execution context is that of a Java thread. 74. change Replaced �java.lang.IllegalArgumentException - Thrown ifclock cannot represent calendar time, or if time is a relative time less thanzero.� With �java.lang.UnsupportedOperationException - Thrown if thesleep operation is not supported using the clock associated with time.� java.lang.IllegalArgumentException - Thrown if time is null, or if time is a relative timeless than zero. start() method75. change Inserted �it � in Set up the real-time thread�s environment and start it. Theset up might include delaying it until theassigned start time and initializing the thread�s scope stack. NoHeapRealtimeThread classFirst constructor76. change Replaced �scheduling or area is� with �the parameters are� Replaced �default � with �associated� Deleted �or� Inserted �if area is heap memory, if area or scheduling is allocatedin heap memory, or if this is in heap memory� in java.lang.IllegalArgumentException - Thrown if the parameters are not compatible with the associated scheduler, if area is null,if area is heap memory, if area or schedulingis allocated in heap memory, or if this is inheap memory. Second constructor77. change Replaced �default� with �associated� Deleted �or� Inserted �if area is null, if area is heap memory, if area, releaseor scheduling is allocated in heap memory, or if this is in heap memory.� In java.lang.IllegalArgumentException - Thrown if theparameters are not compatible with the associatedscheduler, if area is null,if area is heap memory, if area, release or schedulingis allocated in heap memory, or if this is inheap memory.
78. change Deleted �release� Replaced �area and group� with �release� In IllegalAssignmentError - Thrown if the new NoHeapRealtimeThread instance cannot hold a reference to non-null values of scheduling release and area and grouprelease, or if those parameters cannot hold a reference to the new NoHeapRealtimeThread. Third constructor79. change Inserted �The newly-created no-heap real-time thread is associatedwith the scheduler in effect during execution of the constructor.� 80. change Replaced �default� with �associated� Deleted �or� Inserted �if area is heap memory, if area, scheduling release, memoryor group is allocated in heap memory, if this is in heap memory, or if logic isin heap memory. � In java.lang.IllegalArgumentException - Thrown if theparameters are not compatible with the associatedscheduler, if areais null, if area is heap memory, if area, schedulingrelease, memory or group is allocated in heap memory, if this is inheap memory, or if logic is in heap memory.
81. change Replaces �parameters � with �scheduling, release, memory and group� In IllegalAssignmentError422 - Thrownif the new NoHeapRealtimeThread instance cannot hold referencesto non-null values of the scheduling release, memory and group, or if those parameters cannothold a reference to the new NoHeapRealtimeThread. start() method82. change Replaced �Checks if the NoHeapRealtimeThread is startable and startsit if it is. Checks that the parameters associated with this NHRT object arenot allocated in heap. Also checks if this object is allocated in heap. If anyof them are allocated, start() throws a MemoryAccessError� with �Checks if the NoHeapRealtimeThread is startable and startsit if it is.� 83. change Delete the Throws: MemoryAccessError clause Scheduling chapterDefinitions and Abbreviations section84. change Replaced �inherited�with �acquired� Inserted �theaction of� 85. change Replaced �inheritance � with �inversion avoidance algorithms� 86. change Replaced �Synchronization � with �the Synchronization� In The active priority of a schedulable object, or a Java thread, is themaximum of its base priority and any priority it has acquireddue to the action of priority inversion avoidancealgorithms (see the SynchronizationChapter). 87. change Replaced �This specification does not require any particularfeasibility algorithm be implemented in the Scheduler object. The defaultalgorithm always returns success, as it assumes an adequately fast computer.� With �This specification does not require any particularfeasibility algorithm be implemented in the Scheduler object. The defaultalgorithm always returns success for sporadic and periodic schedulable objects,as it assumes adequate resources, but it always returns false for aperiodicschedulable objects since no pool of resources would render such a loadfeasible.�
Processing Groups subsection88. change Replaced �costenforcement � with �processinggroup enforcement� in Processing groups are only functional in a system thatimplements processing group enforcement.Although the processing group itself does not consume CPU time, it acts as aproxy for its members. 89. change Insert semantic �Changes to the membership of the processing group takeeffect immediately� Rationale section90. change Inserted �active � in Although a system may not implement the first release(start) of a schedulable object as unblocking that schedulable object, underthe base scheduler those semantics apply; i.e., the schedulable object is addedto the tail of the queue for its activepriority. Schedulable interfaceaddIfFeasible method91. change Replaced �The �with �This� In The This method first performs a feasibility analysis with this added to thesystem. 92. change Deleted �the scheduling release, and memory parameters of� from If the resulting system is feasible, inform the scheduler andcooperating facilities that thescheduling, release, and memory parameters of this instance of Schedulable should be considered 93. change Replace �feasible� with �feasibility� In This method first performs a feasibility analysiswith this added to the system. Ifthe resulting system is feasible, inform the scheduler and cooperating facilities that this instance of Schedulable73 should be considered infeasibility analysis until further notified. If the analysis showed that thesystem including this would not be feasible, this method does not admit this to the feasibility set. 94. change Replace �feasible� with �feasibility � In If the object is already included in the feasibility set, do nothing. 95. change Replaced �Returns: True, if this was admitted to the feasible set,False, if this was not admitted because it would not be feasible or becausethere is no assigned instance of Scheduler.� With �Returns: True if inclusion of this in the feasibility setyields a feasible system, and false otherwise. If true is returned then this isknown to be in the feasibility set. If false is returned this was not added tothe feasibility set, but may already have been present.� addToFeasibility method96. change Deleted:
�theSchedulingParameters ReleaseParameters ReleaseParameters
andMemoryParameters of� from Inform the scheduler and cooperating facilities that the SchedulingParameters ReleaseParameters and MemoryParameters of this instanceof Schedulable should be considered in feasibility analysis until furthernotified. 97. change Replaced �feasible � with �feasibility � In If the object is already included in the feasibility set, do nothing.
getScheduler() method98. change Replaced �current � with �associated� in Returns: A reference to the associated Scheduler object. removeFromFeasibility() method99. change Deleted �theparameters of � in Inform the scheduler and cooperating facilities that the parameters of this instance of Schedulable82 should notbe considered infeasibility analysis until it is further notified. 100. change Deleted �thereis no assigned instance of Scheduler or if� Replaced �feasible � with �feasibility � in Returns: True,if the removal was successful. False, if there is no assigned instance of Scheduler , or if theschedulable object cannot be removedfrom the scheduler�s feasible set; e.g., the schedulable object is not part of the scheduler�s feasible feasibility set. setIfFeasible(release, memory) method101. change Deleted �release and memory � From Themethod first performs a feasibility analysis using release and memory as replacements for the matching parameter values of this. If theresulting system is feasible the methodreplaces the current release and memory parametersof this with the new parameters. 102. change Replaced �The � with �This� Replaced �release and memory � with �the proposed parameter objects� Replaced �matching parameter values � with �current parameters� Replaced �feasible the � with �feasible,this � Replaced �newparameters � with �proposed ones� in This method first performs a feasibility analysis using the proposed parameter objects as replacements forthe current parameters of this. If the resultingsystem is feasible, this method replaces thecurrent parameters of thiswith the proposed ones. 103. change Replaced �feasible � with �feasibility� Replaced �feasible � with �feasibility� Replaced �schedule � with �system� In This method does not require that the schedulable object bein the feasibility set before it is called. Ifit is not initially a member of the feasibilityset it will be added if the resulting systemis feasible. 104. change Inserted �Also thrown if this schedulable object is noheap and any ofthe proposed parameter objects are located in heap memory.� In java.lang.IllegalArgumentException - Thrown when theparameter values are not compatible with the schedulable object�s scheduler. Also thrown if this schedulable object is noheap and any ofthe proposed parameter objects are located in heap memory. 105. change Deleted �object� Replaced �release and memory � with �the proposed parameter objects� Replaced �release or memory � with �parameter objects� Replaced �references � with �areference � in IllegalAssignmentError - Thrown if this object cannot holdreferences to release and memory the proposedparameter objects, or the release or memory parameter objects cannot hold references areference to this. setIfFeasible(release, memory, group) method106. change Replaced �The� with �This� Replaced �new ReleaseParameters, MemoryParameters, andProcessingGroupParameters� with �proposed parameter objects� Replaced �feasible the� with �feasibility, this� Replaced �release, memory and processing group� with �of this� Replaced �corresponding replacement parameters� with�proposed ones� in The This method first performs a feasibility analysisusing the newReleaseParameters , MemoryParameters and ProcessingGroupParameters proposed parameterobjects asreplacements for the current parameters of this. If the resulting system is feasible the feasible, this method replaces thecurrent release,memory and processing group parameters of this with the corresponding replacement parameters.proposed ones. 107. change Replaced �feasible� with �feasibility� Replaced �feasible� with �feasibility� Replaced �schedule� with �system� In This method does not require that theschedulable object be in the feasible feasibility set before it is called. If it is not initially a member of thefeasible feasibility set it will be added ifthe resulting schedule system is feasible. 108. change Inserted �schedulable object�s� Inserted �Also thrown if this schedulable object is noheapand any of the proposed parameter objects are located in heap memory� In java.lang.IllegalArgumentException - Thrown when the parameter values are not compatible withthe schedulable object�s scheduler. Also thrown if this schedulable object is noheap and anyof the proposed parameter objects are located in heap memory. 109. change Deleted �object� Replaced �all three� with �the proposed� Replaced �objects� with �objects,� Replaced �parameters� with �parameter objects� Replaced �references� with �a reference� In IllegalAssignmentError456 - Thrown if this object cannot holdreferences to all three the proposed parameter objectsobjects, or the parameters parameterobjects cannot hold references a reference tothis. setIfFeasible(release, group) method110. change Replaced �The� with �This� Replaced �new ReleaseParameters andProcessingGroupParameters� with �proposed parameter objects� Replaced �the� with �this� Replaced �ReleaseParameters and ProcessingGroupParameters�with �parameters of this� Replaced �new parameters� with �proposed ones� In The This method first performs a feasibility analysisusing the newReleaseParameters and ProcessingGroupParameters proposed parameter objects as replacements for thecurrent parameters of this. If the resulting system is feasible, the this method replaces thecurrent ReleaseParametersand ProcessingGroupParameters parameters of this with the new parametersproposed ones. 111. change Replaced �feasible� with �feasibility� Replaced �feasible� with �feasibility� Replaced �schedule� with �system� In This method does not require that theschedulable object be in the feasible feasibility set before it is called. If it is not initially a member ofthe feasible feasibility set it will be added ifthe resulting schedule system is feasible. 112. change Inserted �schedulable object�s� Inserted �Also thrown if this schedulable object is noheapand any of the proposed parameter objects are located in heap memory.� In java.lang.IllegalArgumentException - Thrown when the parameter values are not compatible withthe schedulable object�s scheduler. Also thrown if this schedulable object is noheap and anyof the proposed parameter objects are located in heap memory. 113. change Deleted �object� Replaced �both� with �the proposed� Replaced �objects� with �objects,� Replaced �parameters� with �parameter objects� Replaced �references� with �a reference� In IllegalAssignmentError456 - Thrown if this object cannot holdreferences to both the proposed parameter objectsobjects, or the parameters parameterobjects cannot hold references a reference tothis. setIfFeasible(scheduling, release, memory) method114. change Replaced �sched� with �scheduling� in the method declaration 115. change Replaced �The� with �This� Replaced �release and memory� with �the proposed parameterobjects� Replaced �matching parameter values� with �currentparameters� Replaced �feasible the� with �feasibility, this� Deleted "scheduling, release and memory� Replaced �corresponding replacement parameters� with�proposed ones� In The This method first performs a feasibility analysisusing release and memory the proposed parameterobjects asreplacements for the matching parameter values current parameters of this. If the resulting system is feasible the feasible, this method replaces thecurrent scheduling,release andmemory parameters of this with the corresponding replacementparametersproposedones. 116. change Replaced �feasible� with �feasibility� Replaced �feasible� with �feasibility� Replaced �schedule� with �system� In This method does not require that theschedulable object be in the feasible feasibility set before it is called. If it is not initially a member ofthe feasible feasibility set it will be added ifthe resulting schedule system is feasible. 117. change Inserted �. Also thrown if this schedulable object is noheapand any of the proposed parameter objects are located in heap memory� In java.lang.IllegalArgumentException - Thrown when the parameter values are not compatible withthe schedulable object�s scheduler.Also thrown if this schedulable object is noheap and any of the proposedparameter objects are located in heap memory. 118. change Inserted �object� Replaced �release and memory� with �the proposed parameterobjects� Replace �release or memory� with �parameter objects� Replace �references� with �a reference� In IllegalAssignmentError456 - Thrown if this object cannot holdreferences to release and memory the proposedparameter objects, or the release or memory parameter objects cannothold references a reference to this. setIfFeasible(scheduling, release, memory, group) method119. change Rename �sched� to �scheduling� in the declaration 120. change Replaced: �new ReleaseParameters, MemoryParameters. And ProcessingGroupParameters� With: �proposed parameterobjects � Replaced: �feasible the � With:�feasible, this � Replaced: �ReleaseParameters,MemoryParameters andProcessingGroupParameters � With: �parameters of this � Replaced: �new parameters� With:�proposed ones� In The This method first performs a feasibility analysisusing the newReleaseParameters , MemoryParameters and ProcessingGroupParameters proposed parameterobjects asreplacements for the current parameters of this. If the resulting system is feasible the feasible, this method replaces thecurrent ReleaseParameters, MemoryParameters and ProcessingGroupParameters parameters of this with the new parametersproposed ones. 121. change Replaced: �feasible � With:�feasibility � Replaced: �feasible � With:�feasibility � Replaced: �schedule � With:�system � In This method does not require that theschedulable object be in the feasible feasibility set before it is called. If it is not initially a member ofthe feasible feasibility set it will be added ifthe resulting schedule system is feasible. 122. change Inserted: �schedulable object�s � Inserted: �. Also thrown if this this schedulable object isnoheap and any of the proposed parameter objects are located in heap memory.� In java.lang.IllegalArgumentException - Thrown when the parameter values are not compatible withthe schedulable object�s scheduler. Also thrown if this schedulable object is noheap and anyof the proposed parameter objects are located in heap memory. 123. change Deleted: �object � Replaced: �all three � With:�the proposed � Replaced: �objects � With:�objects, � Replaced: �parameters � With:�parameter objects � Replaced: �references � With: �areference � In IllegalAssignmentError - Thrown if this object cannot holdreferences to all three the proposed parameter objectsobjects, or the parameters parameter objects cannot hold references areference to this. 124. change Deleted: �, or if sched is not compatible with the schedulerassociated with this.� In java.lang.IllegalThreadStateException - Thrown if the new release parameterschange the schedulable object from periodic scheduling to some other protocol and the schedulable object iscurrently waiting for the next release in RealtimeThread.waitForNextPeriod() or RealtimeThread.waitForNextPeriodInterruptible() , or if sched is not compatible with the schedulerassociated with this. setMemoryParameters(memory) method125. change Replaced: �schedule� With:�system� In Since this affects the constraints expressed inthe memory parameters of the existing schedulable objects, this may change thefeasibility of the current schedulesystem. 126. change Inserted: �. Also thrown if this this schedulable object isno-heap and memory is located in heap memory.� In java.lang.IllegalArgumentException - Thrown if memory is notcompatible with the schedulable object�s scheduler. Also thrown ifthis schedulable object is no-heap and memory is located in heap memory. setMemoryParametersIfFeasible(memory) method127. change �The � With: �This � Replaced: �given memoryparameters � With: �proposed parameter object � Replaced: �replacements � With:�replacement � Replaced: �memory parameters �With: �current parameter � Replaced: �this � With: �this. � Replaced: �feasible the � With:�feasible, this � Replaced: �memory parameters �With: �parameter � Replaced: �new memoryparameters� With: �proposed one� In The This method first performs a feasibility analysisusing the givenmemory parameters proposed parameter object as replacements replacement for the memory parameters current parameter of this this. If the resulting systemis feasiblethe feasible,this methodreplaces the current memory parameters parameter of this with the new memory parametersproposed one. 128. change Replaced: �feasible � With: �feasibility � Replaced: �feasible � With: �feasibility � Replaced: �schedule � With: �system � In This method does not require that theschedulable object be in the feasible feasibility set before it is called. If it is not initially a member ofthe feasible feasibility set it will be added ifthe resulting schedule system is feasible. 129. change Replaced: �memory � With: �the parameter value � Inserted: �schedulable object�s � Inserted: �. Also thrown if this schedulable object isnoheap and the proposed parameter object is located in heap memory� In java.lang.IllegalArgumentException - Thrown when memory theparameter value is notcompatible with the schedulableobject�s scheduler. Also thrown if this schedulable object is noheap and theproposed parameter object is located in heap memory. 130. change Deleted �object � Replaced: �memory � With: �theproposed parameter object,� Replaced: �memory � With: �theparameter object � In IllegalAssignmentError456 - Thrown if this object cannot holda reference to memory the proposed parameter object, or memory theparameter object cannot holda reference to this. setProcessingGroupParameters(group) method131. change Replaced: �schedule� With:�system� In Since this affects the constraints expressed inthe processing group parameters of the existing schedulable objects, this maychange the feasibility of the current schedulesystem. 132. change Replaced: �at � With: �as determined by � Replaced: �next release of this� With: �associatedscheduler� In group - A ProcessingGroupParameters object which will takeeffect at as determined by the next release of thisassociated scheduler. If null, the defaultvalue is governed by the associated scheduler (a new object is created if thedefault value is not null). (See PriorityScheduler .) 133. change Inserted: �. Also thrown if this schedulable object isno-heap and group is located in heap memory� In java.lang.IllegalArgumentException - Thrown when group is not compatible withthe scheduler for this schedulable object. Also thrown if this schedulable object isno-heap and groupis locatedin heap memory. setProcessingGroupParametersIfFeasible(group) method134. change Replaced: �The � With: �This � Replaced: �newProcessingGroupParameters � With: �proposed parameter object � Deleted: �a � Replaced: �parameters � With:�parameter � Replaced: �feasible the � With:�feasible, this � Replaced:�ProcessingGroupParameters � With: �parameter of this � Replaced: �new parameters. Thechanges ...� With: �proposed one� In The This method first performs a feasibility analysisusing the newProcessingGroupParameters proposed parameter objectas a replacement for thecurrent parametersparameter of this. If the resultingsystem is feasiblethe feasible,this methodreplaces the current ProcessingGroupParameters parameter of this with the new parameters. The changes take place at the schedulable object�snext releaseproposedone. 135. change Replaced: �feasible � With:�feasibility � Replaced: �feasible � With:�feasibility � Replaced: �schedule � With:�system � In This method does not require that theschedulable object be in the feasible feasibility set before it is called. If it is not initially a member ofthe feasible feasibility set it will be added ifthe resulting schedule system is feasible. 136. change Replaced:�ProcessingGroupParameters object� With: �proposed processing group parameters� In group - The ProcessingGroupParameters objectproposedprocessing group parameters.If null, the default value is governed by the associated scheduler (a newobject is created if the default value is not null). (See PriorityScheduler .) 137. change Replaced: �group � With: �theparameter value � Inserted: �schedulable object�s� 138. change Inserted: �. Also thrown if this schedulable object isnoheap and the proposed parameter object is located in heap memory� In java.lang.IllegalArgumentException - Thrown when group the parametervalue is not compatible withthe schedulable object�s scheduler. Also thrown if this schedulable object is noheap and theproposed parameter object is located in heap memory. 139. change Deleted: �object � Replaced: �group � With: �theproposed parameter object, � Replaced: �group � With: �theparameter object � In IllegalAssignmentError - Thrown if this object cannot holda reference to group the proposed parameter object, or group the parameterobject cannot hold areference to this. setReleaseParameters(release) method140. change Replaced: �schedule� With:�system� In Since this affects the constraints expressed inthe release parameters of the existing schedulable objects, this may change thefeasibility of the current schedulesystem. 141. change Inserted: �, and take effect as determined by the associatedscheduler� In release - A ReleaseParameters object which will become the release parameters associated withthis after the method call, and take effect as determined by the associated scheduler. If null, the default value is governedby the associated scheduler (a new object is created if the default value isnot null). (See PriorityScheduler .) 142. change Inserted: �associated � Inserted: �. Also thrown if this schedulable object isno-heap and release is located in heap memory� In java.lang.IllegalArgumentException - Thrown when release is notcompatible with the associatedscheduler. Also thrown if this schedulable object isno-heap and release is located in heap memory. setReleaseParametersIfFeasible(release) method143. change Replaced: �The � With: �This � Replaced: �new ReleaseParameters� With: �proposed parameter object � Deleted: �a � Replaced: �parameters � With:�parameter � Replaced: �feasible the � With:�feasible, this � Replaced: �ReleaseParameters �With: �parameter of this � Replaced: �new parameters� With:�proposed one� In The This method first performs a feasibility analysisusing the newReleaseParameters proposed parameter objectas a replacement for thecurrent parametersparameter of this. If the resultingsystem is feasiblethe feasible,this methodreplaces the current ReleaseParameters parameter of this with the new parametersproposed one. 144. change Moved from one paragraph down: �This change becomeseffective under conditions determined by the scheduler controlling theschedulable object. For instance, the change may be immediate or it may bedelayed until the next release of the schedulable object. See the documentationfor the scheduler for details.� 145. change Replaced: �feasible � With:�feasibility � Replaced: �feasible � With:�feasibility � Replaced: �schedule � With:�system � In This method does not require that theschedulable object be in the feasible feasibility set before it is called. If it is not initially a member ofthe feasible feasibility set it will be added ifthe resulting schedule system is feasible. 146. change Replaced: �ReleaseParametersobject� With: �proposed release parameters� Inserted: �the � Replaced: �release parametersfor � With: �value is governed by � Deleted: �are used � Inserted: �. (See PriorityScheduler) � In release - The ReleaseParameters objectproposed release parameters. If null, the default release parameters for value is governed by the associated schedulerare used (a new object is createdif the default value is not null). (See PriorityScheduler.) 147. change Replaced: �release � With: �theparameter value � Inserted: �schedulable object�s� 148. change Inserted: �. Also thrown if this schedulable object isno-heap and release is located in heap memory� In java.lang.IllegalArgumentException - Thrown when release the parameter value is not compatible withthe schedulableobject�s scheduler. Also thrown if thisschedulable object is noheap and the proposed parameter object is located inheap memory. 149. change Deleted: �object � Replaced: �release � With: �theproposed parameter object, � Replaced: �release � With: �theparameter object � In IllegalAssignmentError - Thrown if this object cannot hold a referenceto release the proposed parameterobject, or release the parameter object cannot hold a referenceto this. setScheduler(scheduler) method150. change Replace: �Sets the reference to the Scheduler object. Thetiming of the change is under the control of the new scheduler. In the case ofthe default scheduler, the change is made immediately. If this schedulableobject has been admitted to the feasible set (e.g., by addToFeasibility()) itremains in the feasible set after the change in scheduler. This change in thescheduler may affect the feasibility of the current schedule.� With �Sets the reference to the Scheduler object. The timing ofthe change must be agreed between the scheduler currently associated with thisschedulable object, and scheduler.� 151. change Deleted: �the new � Inserted: �. Also thrown if this schedulable object isno-heap and release is located in heap memory� In java.lang.IllegalArgumentException - Thrown when scheduler isnull, or the schedulable object�s existing parameter values are not compatiblewith the new scheduler. Also thrown if this schedulable object is no-heap and scheduler is located in heap memory. setScheduler(scheduler, scheduling, release, memoryParameters, group)method152. change Replaced: �is under the controlof the new scheduler. In the case of� With: �must be agreed between � Deleted: �default scheduler, the� 153. change Replaced: �and schedulingparameters take control immediately� With: �currently associated with thisschedulable object� Replaced: �the release and processing group parameters takeeffect the next time the schedulable is released� With: �scheduler.� In Sets the scheduler and associated parameterobjects. The timing of the change is under the control of the new scheduler. In thecase of mustbe agreed between the default scheduler, the scheduler and scheduling parameters take control immediatelycurrently associated withthis schedulable object, and the release and processing group parameters takeeffect the next time the schedulable is released. scheduler. 154. change Deleted: �If this schedulable object has been admitted tothe feasible set (e.g., by addToFeasibility() ) it remains in the feasible setafter the change in scheduler. This change in the scheduler may affect thefeasibility of the current schedule.� 155. change Replaced: �the � With: �scheduler. Also thrown when thisschedulable object is no-heap and� 156. change Inserted: �, scheduling release, memoryParameters, or groupis located in heap memory� In java.lang.IllegalArgumentException - Thrown when scheduler isnull or the parameter values are not compatible with the scheduler. Alsothrown when this schedulable object is no-heap and scheduler, schedulingrelease, memoryParameters, or group is locatedin heap memory. setSchedulingParameters(scheduling) method157. change Replaced: �schedule� With: �system� In Since this affects the scheduling parameters ofthe existing schedulable objects, this may change the feasibility of thecurrent schedulesystem. 158. change Inserted: �associated � 159. change Inserted: �. Also thrown if this schedulable object isno-heap and scheduling is located in heap memory� In java.lang.IllegalArgumentException - Thrown when scheduling isnot compatible with the associatedscheduler. Also thrown if this schedulable object isno-heap and scheduling is located in heap memory. setSchedulingParametersIfFeasible(scheduling) method160. change Replaced: �The � With: �This � Replaced: �given schedulingparameters � With: �proposed parameter object � Replaced: �replacements � With:�replacement � Replaced: �scheduling parameters� With: �current parameter � Replaced: �this � With: �this. � Replaced: �feasible the � With:�feasible, this � Replaced: �scheduling parameters� With: �parameter � Replaced: �new schedulingparameters� With: �proposed one� In The This method first performs a feasibility analysisusing the givenscheduling parameters proposed parameter object as replacements replacement\ for the scheduling parameters current parameter of this this. If the resulting systemis feasiblethe feasible,this methodreplaces the current scheduling parameters parameter of this with the new scheduling parametersproposed one. 161. change Replaced: �feasible � With:�feasibility � Replaced: �feasible � With:�feasibility � Replaced: �schedule � With:�system � In This method does not require that theschedulable object be in the feasible feasibility set before it is called. If it is not initially a member ofthe feasible feasibility set it will be added ifthe resulting schedule system is feasible. 162. change Deleted: �SchedulingParametersare set to the� Replaced: �SchedulingParametersfor � With: �value is governed by � Inserted: �a new object iscreated � Replaced: �null a new object iscreated� With: �null� Inserted: �. (SeePriorityScheduler )� In scheduling - Theproposed scheduling parameters. If null, the SchedulingParameters are set to the default SchedulingParameters for value isgoverned by the associated scheduler (a newobject is created if thedefault value is not null a newobject is creatednull). (See PriorityScheduler108 .) 163. change Replaced: �scheduling � With:�the parameter value � Inserted: �schedulable object�s � 164. change Inserted: �. Also thrown if this schedulable object isno-heap and the proposed parameter object is located in heap memory� In java.lang.IllegalArgumentException - Thrown when scheduling theparameter value is notcompatible with the schedulableobject�s scheduler. Also thrown if this schedulable object isno-heap and the proposed parameter object is located in heap memory. 165. change Deleted: �object � Replaced: �scheduling � With: �the proposed parameterobject, � Replaced: �scheduling � With: �the parameter object � In IllegalAssignmentError456 - Thrown if this object cannot holda reference to scheduling the proposed parameter object, or scheduling theparameter object cannot holda reference to this. Scheduler class166. change Replaced: �schedule� With:�system� In An instance of Scheduler manages the execution of schedulableobjects and implements a feasibility algorithm. The feasibility algorithmdetermines if the known set of schedulable objects, given their particularexecution ordering (or priority assignment), is a feasible schedulesystem. addToFeasibility(schedulable) method167. change Deleted: �(as expressed in the the associated instances� Deleted: �SchedulingParameters , ReleaseParametersMemoryParameters , and ProcessingGroupParameters ) of� Replaced: �feasible � With: �feasibility � In Inform this scheduler and cooperating facilitiesthat the resource demands (as expressed in the associated instances of SchedulingParameters, ReleaseParameters , MemoryParameters , and ProcessingGroupParameters ) of the given instance of Schedulable83 will be considered inthe feasibility analysis of the associated Scheduler101 until further notice. Whether the resultingsystem is feasible or not, the addition is completed. If the object is alreadyincluded in the feasible feasibility set, do nothing. 168. change Inserted: �, or if schedulable is not associated with this;that is schedulable.getScheduler() != this� In java.lang.IllegalArgumentException - Thrown if schedulableis null, or if schedulable is notassociated with this; that is schedulable.getScheduler() != this. isFeasible() method169. change Replaced: �set of scheduling and release characteristics�With: �system � Inserted: �. The definitions of �feasible� and �system� arethe responsibility of the feasibility algorithm of the actual Schedulersubclass� In Queries the system about the feasibility of the set of scheduling andrelease characteristics system currently being considered. The definitions of �feasible� and �system� arethe responsibility of the feasibility algorithm of the actual Scheduler subclass. removeFromFeasibility(schedulable) method170. change Replaced: �the � With: �this � Replaced: �demands, as expressedin � With: �demands of � Replaced: �associated instances of SchedulingParameters ,ReleaseParameters, MemoryParameters , and ProcessingGroupParameters , of this�With: �given � In Inform the this scheduler and cooperating facilities that theresource demands,as expressed in demands of the associated instances of SchedulingParameters , ReleaseParameters, MemoryParameters , and ProcessingGroupParameters , of this given instance of Schedulable shouldno longer be considered in the feasibility analysis of the associated Scheduler . Whether the resultingsystem is feasible or not, the removal is completed. 171. change Inserted: �Parameters: schedulable - A reference to thegiven instance of Schedulable�
Replaced: �feasible � With:�feasibility � Replaced: �feasible � With:�feasibility � In Returns: True, if the removal was successful.False, if the schedulable object cannot be removed from the scheduler�s feasible feasibility set; e.g., theschedulable object is not part of the scheduler�s feasible feasibility set. setDefaultScheduler(scheduler) method172. change Replaced: �constructed� With:�constructed by a Java thread� In Sets the default scheduler. This is thescheduler given to instances of schedulable objects when they are constructedconstructed by a Javathread. Thedefault scheduler is set to the required PriorityScheduler at startup.
173. change Inserted: �schedulable objectscreated by Java � In scheduler - The Scheduler that becomes the default scheduler assigned to new schedulable objects created by Java threads. If null nothing happens. setIfFeasible(schedulable, release, memory)174. change Replaced: �new ReleaseParametersand MemoryParameters� With: �proposed parameter objects � Replaced: �feasible the � With:�feasible, this � Replaced: �ReleaseParameters andMemoryParameters � With: �parameters of schedulable � Replaced: �new parameters� With:�proposed ones� In This method first performs a feasibilityanalysis using the new ReleaseParameters and MemoryParameters proposed parameter objects as replacements for the current parameters of schedulable. If the resultingsystem is feasiblethe feasible,this methodreplaces the current ReleaseParameters and MemoryParameters parameters of chedulable with the new parametersproposed ones. 175. change Replaced: �feasible � With:�feasibility � Replaced: �feasible � With:�feasibility � Replaced: �schedule � With:�system � In This method does not require that theschedulable object be in the feasible feasibility set before it is called. If it is not initially a member ofthe feasible feasibility set it will be added ifthe resulting schedule system is feasible. 176. change Inserted: �of this scheduler� Replaced: �governed by theassociated scheduler � With: �used � In release - Theproposed release parameters. If null, the default value of this scheduler is governed by the associated scheduler used (anew object is created if the default value is not null). (See PriorityScheduler.) 177. change Inserted: �of this scheduler � Replaced: �governed by theassociated scheduler � With: �used � In memory - Theproposed memory parameters. If null, the default value of this scheduler is governed by the associated scheduler used (anew object is created if the default value is not null). (See PriorityScheduler.) 178. change Inserted: �schedulable is null, or schedulable is notassociated with this scheduler, or� Inserted: �proposed � Replaced: �the schedulableobject�s � With: �this � Deleted: �, or if schedulable isnull� In java.lang.IllegalArgumentException - Thrown if schedulableis null, or schedulable is not associated with this scheduler, orthe proposed parameters are not compatible with theschedulable object�s this scheduler, or if schedulableis null. 179. change Deleted: �the � Inserted: �proposed � Replaced: �if either � With:�the � Replaced: �object is unable to �With: �objects cannot � IllegalAssignmentError422 - Thrown if the schedulable cannothold references to the proposedparameter objects, or if either the parameterobject is unable to objects cannot hold a reference to schedulable. 180. change Inserted: java.lang.IllegalThreadStateException - Thrown ifthe new release parameters change schedulable from periodic scheduling to someother protocol and schedulable is currently waiting for the next release inRealtimeThread.waitForNextPeriod() or RealtimeThread.waitForNextPeriodInterruptible(). setIfFeasible(schedulable, release, memory, group)181. change Replaced: �new ReleaseParametersMemoryParameters and ProcessingGroupParameters� With: �proposed parameterobjects � Replaced: �feasible the � With:�feasible, this � Replaced: �ReleaseParametersMemoryParameters and ProcessingGroupParameters � With: �parameters ofschedulable � Replaced: �new parameters� With:�proposed ones� In This method first performs a feasibilityanalysis using the new ReleaseParameters MemoryParameters and ProcessingGroupParameters proposed parameter objects as replacements for the current parameters of schedulable. If the resultingsystem is feasiblethe feasible,this methodreplaces the current ReleaseParameters MemoryParameters and ProcessingGroupParameters parameters of schedulable with the new parametersproposed ones. 182. change Replaced: �feasible � With:�feasibility � Replaced: �feasible � With:�feasibility � Replaced: �schedule � With:�system � In This method does not require that theschedulable object be in the feasible feasibility set before it is called. If it is not initially a member ofthe feasible feasibility set it will be added ifthe resulting schedule system is feasible. 183. change Replaced: �instance ofSchedulable � With: �schedulable object � In schedulable -The instance of Schedulable85 schedulableobject for which the changesare proposed. 184. change Inserted: �of this scheduler � Replaced: �governed by theassociated scheduler � With: �used � In release - Theproposed release parameters. If null, the default value of this scheduler is governed by the associated scheduler used (a new object is created if the default value isnot null). (See PriorityScheduler.) 185. change Inserted: �of this scheduler � Replaced: �governed by the associatedscheduler � With: �used � In memory - Theproposed memory parameters. If null, the default value of this scheduler is governed by the associated scheduler used (anew object is created if the default value is not null). (See PriorityScheduler.) 186. change Inserted: �of this scheduler � 187. change Replaced: �governed by theassociated scheduler � With: �used � In group - Theproposed processing group parameters. If null, the default value of this scheduler is governed by the associated scheduler used (anew object is created if the default value is not null). (See PriorityScheduler.) 188. change Inserted: �schedulable is null, or schedulable is notassociated with this scheduler, or� Inserted: �proposed � Replaced: �the schedulableobject�s � With: �this � Deleted: �, or if schedulable isnull� In java.lang.IllegalArgumentException - Thrown if schedulableis null, or schedulable is not associated with this scheduler, orthe proposed parameters are not compatible with the schedulable object�s this scheduler, or if schedulable is null. 189. change Deleted: �the � Inserted: �proposed � Deleted: �if any of � Replaced: �is unable to � With:�cannot � In IllegalAssignmentError - Thrown if the schedulablecannothold references to the proposedparameter objects, or ifany of the parameter objects is unable to cannothold a referenceto schedulable. 190. change Inserted: java.lang.IllegalThreadStateException - Thrown if the newrelease parameters change schedulable from periodic scheduling to some otherprotocol and schedulable is currently waiting for the next release inRealtimeThread.waitForNextPeriod() orRealtimeThread.waitForNextPeriodInterruptible()
setIfFeasible(schedulable, scheduling, release, memory, group)191. change New method public abstract boolean setIfFeasible(javax.realtime.Schedulable schedulable, javax.realtime.SchedulingParameters scheduling, javax.realtime.ReleaseParameters release, javax.realtime.MemoryParameters memory, javax.realtime.ProcessingGroupParameters group) This method first performs afeasibility analysis using the proposed parameter objects as replacements forthe current parameters of schedulable. the resulting system is feasible, this method replaces thecurrent parameters schedulable with the proposed ones.
This method does not requirethat the schedulable object be in the feasibility set before it is called. Ifit is not initially a member of the feasibility set will be added if theresulting system is feasible.
Parameters: schedulable - Theschedulable object for which the changes are proposed. scheduling - Theproposed scheduling parameters. If null, the default value of this scheduler isused (a new object is created the default value is not null). (See PriorityScheduler.) release - Theproposed release parameters. If null, the default value of this scheduler isused (a new object is created if the default value is not null). (See PriorityScheduler.) memory - Theproposed memory parameters. If null, the default value of this scheduler isused (a new object is created if the default value is not null). (See PriorityScheduler.) group - Theproposed processing group parameters. If null, the default value of thisscheduler is used (a new object is created the default value is not null). (SeePriorityScheduler.)
Returns: True, ifthe resulting system is feasible and the changes are made. False, if theresulting system is not feasible and no changes are made.
Throws: java.lang.IllegalArgumentException- Thrown if schedulable is null, or schedulable is not associated with this scheduler,or the proposed parameters are not compatible with this scheduler. IllegalAssignmentError - Thrownif schedulable cannot hold references to the proposed parameter objects, or theparameter objects cannot hold a reference to schedulable. java.lang.IllegalThreadStateException- Thrown if the new release parameters change schedulablefrom periodic scheduling to some other protocol and schedulableis currently waiting for the next release in RealtimeThread.waitForNextPeriod() or RealtimeThread.waitForNextPeriodInterruptible()
PriorityScheduler classDescription192. change Replaced: �required priority �With: �base � In Class which represents the required (by theRTSJ) priority-based scheduler. The default instance is the required priority base scheduler which doesfixed priority, preemptive scheduling. 193. change Inserted: Note that the system contains one instance of thePriorityScheduler which is the system�s base scheduler and is returned byPriorityScheduler.instance(). It may, however, contain instances of subclassesof PriorityScheduler and even additional instances of PriorityScheduler itselfcreated through this class� protected constructor. The instance returned by theinstance() method is the base scheduler and is returned by Scheduler.getDefaultScheduler()unless the default scheduler is reset withScheduler.setDefaultScheduler(Scheduler). instance() method194. change Replaced: �Return a reference to the singleton instance ofPriorityScheduler.� With: �Return a reference to the distinguished instance ofPriorityScheduler which is the system�s base scheduler.� 195. change Replaced: �singleton � With:�distinguished � In Returns: A reference to the singleton distinguished instance PriorityScheduler. isFeasible() method196. change Deleted: �Override the isFeasible method from Schedulerproviding feasibility analysis appropriate to the priority scheduler� Replaced: �the system � With: �this scheduler � Replaced: �scheduling and release characteristics � With:�schedulable objects � Replaced: �being considered.� With: �in the feasibility set.� In Override the isFeasible method from Scheduler providing feasibility analysis appropriate to the priorityscheduler. Queriesthe system this scheduler about the feasibility ofthe set of schedulingand release characteristics schedulable objects currently being considered. in the feasibility set. 197. change Inserted: Implementation Notes: The default feasibility test for the PrioritySchedulerconsiders a set of schedulable objects with bounded resource requirements, toalways be feasible. This covers all schedulable objects with release parametersof types PeriodicParameters and SporadicParameters. If any schedulable object within the feasibility set hasrelease parameters of the exact type AperiodicParameters135 (not a subclassthereof), then the feasibility set is not feasible, as aperiodic releasecharacteristics require unbounded resources. In that case, this method willreturn false and all methods in the setIfFeasible family of methods will alsoreturn false. Consequently, any call to a setIfFeasible method that passes aschedulable object which has release parameters of type AperiodicParameters, orpasses proposed release parameters of type AperiodicParameters, will returnfalse. The only time a set IfFeasible method can return true, when there existsin the feasibility set a schedulable object with release parameters of typeAperiodicParameters, is when the method will change those parameters to not beAperiodicParameters. Implementations may provide a feasibility test other thanthe default just described. In which case the details of that test should bedocumented here in place of this description of the default implementation. SchedulingParameters classclone() method198. change Inserted: �clones of � 199. change Replaced: �visible � With:�high-resolution time � In Return a clone of this. This method should behave effectively as if itconstructed a new object with clones of the visible high-resolution time values of this. 200. change Inserted: ҥ The new object has clones of allhigh-resolution time values (deep copy). � References to event handlers are copied (shallow copy.)� ReleaseParameters classDescription201. change Replaced: �The implementation may use copy semantics foreach HighResolutionTime parameter value. For instance the value returned bygetCost() must be equal to the value passed in by setCost, but it need not bethe same object. � With: �Release parameters use HighResolutionTime values for cost,and deadline. Since the times are expressed as a HighResolutionTime318 values,these values use accurate timers with nanosecond granularity. The actualresolution available and even the quantity the timers measure depend on theclock associated with each time value.
The implementation must use modified copy semantics for eachHighResolutionTime parameter value. The value of each time object should betreated as if it were copied at the time it is passed to the parameter object,but the object reference must also be retained. For instance, the valuereturned by getCost() must be the same object passed in by setCost(), but anychanges made to the time value of the cost must not take effect in theassociated ReleaseParameters instance unless they are passed to the parameterobject again, e.g. with a new invocation of setCost.� Second Constructor202. change Insert: �IllegalAssignmentError - Thrown if cost, deadline,overrunHandler, or missHandler cannot be stored in this.� clone() method203. change Inserted: �clones of � 204. change Replaced: �visible � With:�high-resolution time � In Return a clone of this. This method should behave effectively as if itconstructed a new object with clones of the visible high-resolution time values of this. 205. change Insert: ҥ The new object has clones of all high-resolutiontime values (deep copy). � References to event handlers are copied (shallow copy.)� setCost(cost) method206. change Insert: �IllegalAssignmentError - Thrown if cost cannot bestored in this.� setCostOverrunHandler(handler) method207. change Insert �Throws: IllegalAssignmentError - Thrown if handlercannot be stored in this.� setDeadline(deadline) method208. change Deleted: �if � In java.lang.IllegalArgumentException - Thrown if deadlineis null, if the time value of deadlineis less than or equal tozero, or if the new value of this deadline is incompatible with thescheduler for any associated schedulable object. 209. change Insert: �IllegalAssignmentError - Thrown if deadline cannotbe stored in this.� setDeadlineMissHandler(handler) method210. change Insert: �Throws: IllegalAssignmentError - Thrown if handlercannot be stored in this. setIfFeasible(cost, deadline) method211. change Insert: �IllegalAssignmentError - Thrown if cost or deadlinecannot be stored in this.� PeriodicParameters classDescription212. change Replaced: �The implementation may use copy semantics foreach HighResolutionTime parameter value. For instance the value returned bygetCost() must be equal to the value passed in by setCost, but it need not bethe same object.� With: �Periodic parameters use HighResolutionTime values forperiod and startime. Since these times are expressed as a HighResolutionTimevalues, thesevalues use accurate timers with nanosecond granularity. The actualresolution available and even the quantity the timers measure depend on theclock associated with each time value. The implementation must use modified copy semantics for eachHighResolutionTime parameter value. The value of each time object should betreated as if it were copied at the time it is passed to the parameter object,but the object reference must also be retained. For instance, the valuereturned by getCost() must be the same object passed in by setCost(), but anychanges made to the time value of the cost must not take effect in theassociated PeriodicParameters instance unless they are passed to the parameterobject again, e.g. with a new invocation of setCost.� First Constructor213. change Inserted: �IllegalAssignmentError - Thrown if start orperiod cannot be stored in this.� Second Constructor214. change Inserted: �IllegalAssignmentError - Thrown if start periodcost, deadline, overrunHandler or missHandler cannot be stored in this.� Third Constructor215. change Inserted: �IllegalAssignmentError - Thrown if period cannotbe stored in this.� setDeadline(deadline) method216. change Added override, replacing: �deadline - The latestpermissible completion time measured from the release time of the associatedinvocation of the schedulable object. The default value of the deadline must becontrolled by the classes that extend ReleaseParameters.� With: �deadline - The latest permissible completion time measuredfrom the release time of the associated invocation of the schedulable object.If deadline is null, the deadline is set to a new instance of RelativeTimeequal to period.� 217. change Added override Replacing:�java.lang.IllegalArgumentException - Thrown if deadline is null, if the timevalue of deadline is less than or equal to zero, or if the new value of thisdeadline is incompatible with the scheduler for any associated schedulableobject.� With: �java.lang.IllegalArgumentException - Thrown if the timevalue of deadline is less than or equal to zero, or if the new value of thisdeadline is incompatible with the scheduler for any associated schedulableobject.� setIfFeasible(period, cost, deadline) method218. change Inserted �IllegalAssignmentError - Thrown if period, cost ordeadline cannot be stored in this.� setStart(start) method219. change Replaced: �Changes to the start time of a real-time threadare only effective until invocation of the start method. Changes to the starttime after invocation of start are silently ignored.� With: �The effect of changing the start time for any schedulableobjects associated with this parameter object is determined by the schedulerassociated with each schedulable object.� 220. change Replaced: �start - Time at which the first release begins(i.e. the schedulable object becomes eligible for execution. If a RelativeTime,this time is relative to the first time the schedulable object becomesactivated (that is, when start() is called on a real-time thread or when anassociated event handler is first fired). If an AbsoluteTime, then the firstrelease is the maximum of the start parameter and the time of the call to theassociated RealtimeThread.start() method (or the first firing of an associatedevent). If null, the default value is a new instance of RelativeTime(0,0).� With: �start - The new start time. If null, the default value is anew instance of RelativeTime(0,0).� 221. change Inserted: �IllegalAssignmentError - Thrown if start cannotbe stored in this.� AperiodicParameters classDescription222. change Replaced: �The implementation may use copy semantics foreach HighResolutionTime parameter value. For instance the value returned bygetCost() must be equal to the value passed in by setCost, but it need not bethe same object.� With: �The implementation must use modified copy semantics foreach HighResolutionTime318 parameter value. The value of each time objectshould be treated as if it were copied at the time it is passed to theparameter object, but the object reference must also be retained. For instance,the value returned by getCost() must be the same object passed in by setCost(),but any changes made to the time value of the cost must not take effect in theassociated AperiodicParameters instance unless they are passed to the parameterobject again, e.g. with a new invocation of setCost.� Second Constructor223. change Inserted: �IllegalAssignmentError - Thrown if cost,deadline, overrunHandler or missHandler cannot be stored in this.� setDeadline(deadline) method224. change Added override, replacing: �deadline - The latestpermissible completion time measured from the release time of the associatedinvocation of the schedulable object. The default value of the deadline must becontrolled by the classes that extend ReleaseParameters.� With: �deadline - The latest permissible completion time measuredfrom the release time of the associated invocation of the schedulable object.If deadline is null, the deadline is set to a new instance ofRelativeTime(Long.MAX_VALUE, 999999).� 225. change Added override Replacing: �java.lang.IllegalArgumentException- Thrown if deadline is null, if the time value of deadline is less than orequal to zero, or if the new value of this deadline is incompatible with thescheduler for any associated schedulable object.� With: �java.lang.IllegalArgumentException - Thrown if the timevalue of deadline is less than or equal to zero, or if the new value of thisdeadline is incompatible with the scheduler for any associated schedulableobject.� setIfFeasible(cost, deadline) method226. change Replace: �Returns: True, if the resulting system is feasibleand the changes are made. False, if the resulting system is not feasible and nochanges are made.� With: �Returns: false. Aperiodic parameters never yield a feasiblesystem. (Subclasses of AperiodicParameters, such as SporadicParameters, neednot return false.)� 227. change Inserted: �IllegalAssignmentError - Thrown if cost ordeadline cannot be stored in this.� SporadicParameters classDescription228. change Inserted: �The implementation must use modified copysemantics for each HighResolutionTime parameter value. The value of each timeobject should be treated as if it were copied at the time it is passed to theparameter object, but the object reference must also be retained.� Before Only changes to a SporadicParameters object caused bymethods on that object cause the change to propagate to all schedulable objectsusing the parameter object. 229. change In the default value table, Replaced the default for deadline �Long.MAX_VALUE, 999999)�With: �mit�
First Constructor230. change Inserted: �IllegalAssignmentError - Thrown ifminInterarrival cannot be stored in this.� Second Constructor231. change Replaced: �Long.MAX_VALUE,999999� With: �mit� In deadline - Thelatest permissible completion time measured from the release time of theassociated invocation of the schedulable object. For a minimum implementationfor purposes of feasibility analysis, the deadline is equal to the minimuminterarrival interval. Other implementations may use this parameter to computeexecution eligibility. If null, the default value is a new instance of RelativeTime(Long.MAX_VALUE, 999999mit).
Inserted: �IllegalAssignmentError - Thrown ifminInterarrival, cost, deadline, overrunHandler or missHandler cannot be storedin this.� setIfFeasible(cost, deadline) method232. change added override Replaced: �Long.MAX_VALUE,999999� With: �mit� In deadline- The proposed deadline. If null, thedefault value is a new instance of RelativeTime(Long.MAX_VALUE, 999999mit) setIfFeasible(interarrival, cost, deadline) method233. change Replaced: �Long.MAX_VALUE,999999� With: �mit� In deadline - Theproposed deadline. If null, the default value is a new instance of RelativeTime(Long.MAX_VALUE, 999999mit). 234. change Inserted: �IllegalAssignmentError - Thrown if interarrival,cost or deadline cannot be stored in this.� setMinimumInterarrival(minimum) method235. change Inserted: �IllegalAssignmentError - Thrown if minimum cannotbe stored in this.� ProcessingGroupParameters classDescription236. change Replaced: �cannot measureexecution time� With: �do not support processing group parameters� In This is associated with one or more schedulableobjects for which the system guarantees that the associated objects will not begiven more time per period than indicated by cost. On implementations which cannot measure executiontimedo notsupport processing group parameters, this class may be used as a hint to thefeasibility algorithm. 237. change Inserted: �Processing group parameters useHighResolutionTime values for cost, deadline, period and start time. Sincethose times are expressed as a HighResolutionTime, the values use accuratetimers with nanosecond granularity. The actual resolution available and eventhe quantity it measures depends on the clock associated with each time value.� 238. change Inserted: �The implementation must use modified copysemantics for each HighResolutionTime parameter value. The value of each timeobject should be treated as if it were copied at the time it is passed to theparameter object, but the object reference must also be retained.� Before Only changes to a ProcessingGroupParameters object caused by methods on that object areimmediately visible to the scheduler. First Constructor239. change Inserted: �if cost is null, � 240. change Inserted: �if � 241. change Inserted: �than zero and less than or equal to the period.If the implementation does not support processing group deadline less than period, deadline less� 242. change Replaced: �zero� With: �periodwill cause IllegalArgumentException to be thrown� In java.lang.IllegalArgumentException - Thrown if the period is nullor its time value is not greater than zero, if cost is null, or if the time value of cost is lessthan zero, if start is an instance of RelativeTimeand its value is negative, orif the time value of deadline is not greater than zero and less than or equal to the period. If the implementation does not support processing group deadlineless than period, deadline less than zeroperiod will cause IllegalArgumentExceptionto be thrown. 243. change Inserted: �IllegalAssignmentError - Thrown if start, period,cost, deadline, overrunHandler or missHandler cannot be stored in this.� clone() method244. change Inserted: �clones of � 245. change Replaced: �visible � With:�high-resolution time � 246. change Inserted: �The new object has clones of all high-resolutiontime values (deep copy). � References to event handlers are copied (shallow copy.)� In Return a clone of this. This method should behave effectively as if itconstructed a new object with clones of the visible high-resolution time values of this. � The new object is in the current allocationcontext. � clone does not copy any associations from this and it does not implicitly bind the new object to a SO. � The new object has clones of allhigh-resolution time values (deep copy). � References to event handlers are copied(shallow copy.) setCost(cost) method247. change Inserted: �IllegalAssignmentError - Thrown if cost cannot bestored in this.� setCostOverrunHandler(handler) method248. change Inserted: �Throws: IllegalAssignmentError - Thrown ifhandler cannot be stored in this.� setDeadline(deadline) method249. change Inserted: �Throws: java.lang.IllegalArgumentException - Thrown if deadline hasa value less than zero or greater than the period. Unless the implementationsupports deadline less than period in processing groups,IllegalArgumentException is also thrown if deadline is less than the period. IllegalAssignmentError - Thrown if deadline cannot be storedin this.� setDeadlineMissHandler(handler) method250. change Inserted: �Throws: IllegalAssignmentError - Thrown if handler cannot be storedin this.� setIfFeasible(period, cost, deadline) method251. change Inserted: �IllegalAssignmentError - Thrown if period costdeadline cannot be stored in this.� setPeriod(period) method252. change Inserted: �. If the implementation does not supportprocessing group deadline less than period, and period is not equal to the currentvalue of the processing group�s deadline, the deadline is set to a clone ofperiod created in the same memory area as period.� In java.lang.IllegalArgumentException - Thrown if periodis null, or its time value isnot greater than zero. If theimplementation does not support processing group deadline less than period, andperiod is not equal to the current value of theprocessing group�s deadline, the deadline is set to a clone of period created in the same memory area as period. 253. change Inserted: �IllegalAssignmentError - Thrown if period cannotbe stored in this.� setStart(start) method254. change Inserted: �alters the value of this object�s start timeproperty, but� 255. change Inserted: �other � In Sets the value of start. If the processing group is already startedthis method altersthe value of this object�s start time property, but has no other effect. 256. change Replaced:�java.lang.IllegalStateException � With: �IllegalAssignmentError � 257. change Replaced: �the processing groupis already started� With: �start cannot be stored in this� In java.lang.IllegalStateException IllegalAssignmentError456 - Thrown if the processing group is already startedstart cannot be stored in this. 258. change Inserted: �java.lang.IllegalArgumentException Thrown ifstart is a relative time value and less than zero.� Memory Management ChapterSemantics and RequirementsSemantic 2259. change Replaced: �spend � With: �spent� In Execution time of object constructors, and time spend spent in class loading andstatic initialization are not governed by bounds on object allocation in thisspecification, but� Semantic 3260. change Replaced: �area � With: �area,m, � Replaced: �the � With: �m.� Inserted: �(or another � Inserted: �from the family � Replaced: �the instance, thememory area� With: �enter-like methods in MemoryArea or ScopedMemory) m� In A memory area is represented by an instance of asubclass of the MemoryArea class. When a memory area area, m, is entered by calling the m.enter (or another method from the family of the instance, the memoryarea enter-likemethods in MemoryAreaor ScopedMemory) m becomes the allocationcontext ofthe current schedulable object. When control returns from the enter method, the allocationcontext is restored to the value it had immediately before enter was called. Semantic 5This semantic is a modified version of what was semantic 11 261. change Inserted: �The initial allocation context for a schedulableobject when it is first released, is the memory area that was designated theinitial memory area when the schedulable object was constructed. This initialallocation context becomes the current allocation context for that schedulableobject when the schedulable object first becomes eligible for execution. Forasync event handlers, the initial allocation context is the same on eachrelease; for real-time threads, in releases subsequent to the first, theallocation context is the same as it was when the real-time thread becameblocked-for-release-event.� Semantic 6262. change Inserted: �, but note that allocation can be performed in aspecific memory area using the newInstance and newArray methods.� In Allobject allocation through the newkeyword will use the current allocationcontext, but note that allocation can beperformed in a specific memory area using the newInstance and newArray methods.� Deleted SemanticsThe concept of �enclosing allocation context has beenreplaced with a more formal model of Scope Stack. The contained semantics arerelocated to the semantics in Maintaining the Scope Stack 263. change Deleted: 7 The enclosing allocation context of a memoryarea, mem for a schedulable object, t, is the allocationcontext in effect for t immediatelybefore it calls mem.enter. 8. The structure of enclosing allocation contexts,the scope stack, is accessible through a set of static methods on RealtimeThread. These methods allowouter allocation contexts to be accessed by their index number. The algorithmsfor maintaining the scope stack are given in �Maintaining the Scope Stack.� Relocated Semantics:264. change Consolidated with �Maintaining the Scope Stack semantic 4 9. The executeInArea method may only be used on memory areas that areouter scopes on the current schedulable object�s scope stack. New SemanticsThe following semantics pertain to the scope stack 265. change Inserted: 10 Schedulable objects behave as if they stored their memoryarea context in a structure called the scope stack. This structure ismanipulated by creation of schedulable objects, and the following methods fromthe MemoryArea and ScopedMemory classes: all the enter and joinAndEntermethods, executeInArea, and both newInstance methods. See the semantics inMaintaining the Scope Stack for details. 266. change Inserted 11. The scope stack is accessible through a set of staticmethods on RealtimeThread. These methods allow outer allocation contexts to beaccessed by their index number. Memory areas on a scope stack may be referredto as inner or outer relative to other entries in that scope stack. An �outerscope� is further from the current allocation context on the current scopestack and has a lower index. 267. change Inserted 12. The executeInArea, newInstance and newArray methods,when invoked on an instance of ScopedMemory require that instance to be anouter allocation context on the current schedulable object�s current scopestack. Inserted 268. change 13. An instance of ScopedMemory is said to be in use if ithas a non-zero reference count as defined by semantic (17) below. The Parent Scope269. change Inserted subsection. Parent Scope Semantic 14270. change Replaced: �If � With: �When � Inserted: �becomes in use, itsparent� Replaced: �in use and � With: �the nearest ScopedMemoryobject outside it on the current scope stack. If� Replaced: �enclosing scoped memory� With: �outsideScopedMemory object in the current scope stack� Deleted: �ScopedMemory objects in this class. For all other� Deleted: �, the parent is the nearest ScopedMemory objectoutside it on the current schedulable object�s scope stack.� In Instances of ScopedMemory have special semantics including definition of parent.If a ScopedMemory object is not in use, ithas no parent scope. If When a Scoped- Memory object becomes in use, its parent is in use and the nearest ScopedMemory object outside it on the current scope stack. If there is no enclosing scoped memoryoutside ScopedMemory object in the currentscope stack,the parent is the primordial scope which is not actually a memory area, but only amarker thatconstrainsthe parentage of ScopedMemory objects in this class. For all other ScopedMemory objects, the parent is thenearest ScopedMemoryobjectoutside it on the current schedulable object�s scope stack. Semantic 15271. change Replaced: �are made current by entering them or passing themas the initial memory area for a new schedulable object� With: �become in use � 272. change Replaced: �9. � With: �(11.) � In Instances of ScopedMemory that are made current by entering them or passing themas the initial memory area for a new schedulable object become in use must satisfy the singleparent rule which requires that each scoped memory has a unique parent asdefined in semantic 9. (11.) Semantic 16273. change New semantic: �Pushing a scoped memory onto a scope stack isalways subject to the single parent rule.� Semantic 17274. change Inserted: �execution of � In Each schedulable object has an initial memoryarea which is that object�s initial allocation context. The default initialmemory area is the current allocation context in effect during execution of the schedulable object�sconstructor, but schedulable objects may supply constructors that override thedefault. Semantic 18275. change Now redundant with to Maintaining the Scope Stacksemantic 2 -- deleted: If a schedulable object, t, creates a schedulableobject, nt, in a ScopedMemory object�s allocation area, nt inherits the stack of nested memory areasassociated with t at the time nt is constructed including all entries from up to and includingthe memory area containing nt. If nt is created in heap, immortal, or immortal physicalmemory, nt is created with a scope stack containing only heap, immortal, orimmortal physical memory respectively. Semantic 19276. change Replaced: �An instance ofjava.lang.Thread� With: �A Java thread � Replaced: �an instance ofjava.lang.Thread� With: �a Java thread � Inserted: �a � Inserted: �area � In An instance of java.lang.Thread A Java thread cannot have a scopestack; consequently it can only be created and execute within heap or immortalmemory. An attempt to create an instance of java.lang.Thread a Java thread in a scoped memory area throws IllegalAssignmentError. Semantic 20277. change Replaced: �An instance ofjava....� With: �A Java thread � 278. change Replaced: �13� With: �15� In An instance of java.lang.Thread A Java thread may use executeInArea, and the newInstance and newArray methods from the ImmortalMemory and Heap- Memory classes. These methodsallow it to execute with an immortal current allocation context, but semantic (1315) applies even duringexecution of these methods. . Semantic 21279. change Inserted: �Each instance of the class ScopedMemory or itssubclasses must maintain a referencecount which is greater than zero if andonly if either:� Deleted: �Each instance of the class ScopedMemory or itssubclasses must maintain a reference count which is greater than zero if andonly if the� Replaced: �. For purposes ofthis semantic� With: �; or else � 280. change Inserted: ҥ the scoped memory area is the initial memory area for aschedulable object. In this context, a schedulable objects ceases to be asource of a non-zero reference count on its initial memory area when either: � the schedulable object is a RealtimeThread and itterminates; or else � the schedulable object is de-allocated from its memoryarea. For purposes of this semantic the following are treated asexecution contexts:� 281. change Inserted: �been started and have� Deleted: �and � Deleted: �are treated asexecution contexts.� In 21. Each instance of the class ScopedMemory or its subclasses mustmaintain a reference count which is greater than zero if and only ifeither: � Each instance of the class ScopedMemory or its subclasses must maintain a reference countwhich is greater than zero if and only if the scoped memory area is the currentallocation context or an outer allocation context for one or more executioncontexts.For purposes of this semantic, ; or else � the scoped memory area is the initial memoryarea fora schedulable object. In this context, a schedulable objects ceases to be asource of a non-zero reference count on its initial memory area when either: � the schedulable object is a RealtimeThread and it terminates; orelse � the schedulable object is de-allocated from itsmemory area. For purposes of this semantic the following aretreated as execution contexts: � RealtimeThread objects that have been started and havenot terminated, � AsyncEventHandler objects that are currently in a releasedstate, � AsyncEvent objects that are bound to happenings, � Timer objects that have been started and have not been destroyed, and � other schedulable objects that control anexecution engine Semantic 22282. change Inserted: �still ready to bedecremented to� 283. change Inserted: �then it isdecremented to zero and� In When the reference count for an instance of theclass ScopedMemoryis ready tobe decremented from one to zero, all unfinalized objects within that area areconsidered ready for finalization. If after the finalizers for all unfinalizedobjects in the scoped memory area run to completion, the reference count forthe memory area is still ready to be decremented to zero, then it is decremented to zero and the memory scope isemptied of all objects. The RTSJ implementation must complete finalization ofobjects in the scope and, if the reference count is zero after finalizers run,deletion of the objects in the scope before that memory scope can again becomethe current allocation context for any schedulable object. (This is a specialcase of the finalization implementation specified in The Java LanguageSpecification, second edition, section 12.6.1) Semantic 27284. change Inserted: �. Static initializers are executed executedeffectively as if the current thread performedImmortalMemory.instance().executeInArea(r) where r is a Runnable that executesthe <clinit> method of the class being initialized.� In Class objects, the associated static memory, andinterned Strings behave effectively as if they were allocated in immortalmemory with respect to reference rules, assignment rules, and preemption delaysby no-heap schedulable objects. Static initializers are executed effectively as if thecurrent thread performed ImmortalMemory.instance().executeInArea(r) where r is a Runnable that executes the <clinit> method of the class beinginitialized. Assignment Rule Table285. change Replaced each: �Yes� With: �Permit� 286. change For Local Variable: Replaced �Yes, if the reference is fromthe same scope, or an outer scope� with �Permit� 287. change Replaced each: �No� With: �Forbid� Semantic 28288. change Replaced: �area� With: �are� In For this table, ImmortalMemory and ImmortalPhysicalMemory are equivalent, and allsub-classes of ScopedMemory area are equivalent. Semantic 29289. change Inserted: �Checks for operations on local variables are notrequired because a potentially invalid reference would be captured by the otherchecks before it reached a local variable.� In An implementation must ensure that the abovechecks are performed on every assignment statement before the statement isexecuted. (This includes the possibility of static analysis of the applicationlogic). Checksfor operations on local variables are not required because a potentiallyinvalid reference would be captured by the other checks before it reached alocal variable. Maintaining the Scope Stack290. change Replaced: �Five � With: �Four � 291. change Replaced: �method � With:�methods � 292. change Replaced: �MemoryArea� With:�MemoryArea and ScopedMemory� 293. change Deleted: �starting a schedulableobject, � 294. change Deleted: �all � 295. change Inserted: �1. The memory area at the top of a schedulable object�sscope stack is the schedulable object�s current allocation context. 2. When a schedulable object, t, creates a schedulableobject, nt, in a ScopedMemory object�s allocation area, nt acquires a copy ofthe scope stack associated with t at the time nt is constructed including allentries from up to and including the memory area containing nt. If nt iscreated in heap, immortal, or immortal physical memory, nt is created with ascope stack containing only heap, immortal, or immortal physical memoryrespectively. 3. When a memory area, ma, is entered by calling a ma.entermethod, ma is pushed on the scope stack and becomes the allocation context ofthe current schedulable object. When control returns from the enter method, theallocation context is popped from the scope stack 4. When a memory area, m, is entered by calling m�sexecuteInArea method or one of the m.newInstance methods the scope stack beforethe method call is preserved and replaced with a scope stack constructed asfollows: � If ma is a scoped memory area the new scope stack is acopy of the schedulable object�s previous scope stack up to and including ma. � If ma is not a scoped memory area the new scope stackincludes only ma. When control returns from the executeInArea method, thescope stack is restored to the value it had before ma.executeInArea orma.newInstance was called.� In Five Four operations effect the scope stack: the enter method methods in MemoryAreaMemoryArea and ScopedMemory, construction of a newschedulable object, starting a schedulable object, the executeInArea method in MemoryArea, and all the new instance methods in MemoryArea. 1. The memory area at the top of a schedulableobject�s scope stack is the schedulable object�s current allocation context. 2. When a schedulable object, t, creates a schedulableobject, nt, in a ScopedMemory object�s allocation area, nt acquires a copy of the scope stackassociated with t at the time nt is constructed including all entries from up to and includingthe memory area containing nt. If nt is created in heap, immortal, or immortalphysical memory, nt is created with a scope stack containing only heap, immortal, orimmortal physical memory respectively. 3. When a memory area, ma, is entered by calling a ma.enter method, ma is pushed on the scopestack and becomes the allocation context of the current schedulable object. Whencontrol returns from the enter method, the allocation context is popped from the scope stack 4. When a memory area, m, is entered by calling m�s executeInArea method or one of the m.newInstance methods the scope stackbefore the method call is preserved and replaced with a scope stack constructedas follows: � If ma is a scoped memory areathe new scope stack is a copy of the schedulable object�s previous scope stackup to and including ma. � If ma is not a scoped memoryarea the new scope stack includes only ma. When control returns from the executeInArea method, the scope stackis restored to the value it had before ma.executeInArea or ma.newInstance was called. Pseudocode for enter296. change Replace Forma.enter(logic): ifentering ma would violate the single parent rule throwScopedCycleException pushma on the scope stack belonging to the current schedulableobject executelogic.run method popma from the scope stack
With For ma.enter(logic): push ma on the scope stack belonging to thecurrent schedulable object -- which may throw ScopedCycleException execute logic.run method pop ma from the scope stack
Construct and Start a Schedulable Object297. change Rename section to Construct a Schedulable Object
298. change Replace ifcma is heap, immortal or ImmortalPhysicalMemory createa new scope stack containing cma else starta new scope stack containing the entirecurrent scope stack ifima != cma pushima on new scope stack whichmay throw ScopedCycleException
Tostart the schedulable object: forevery scoped memory area in the schedulableobject's scope stack incrementthe reference count runthe new schedulable object with the newscope stack whenthe schedulable object terminates everymemory area pushed by the schedulableobject will have been popped forevery scoped memory area in the scope stack decrementthe reference count discardthe schedulable objects scope stack. With if cma is heap, immortal orImmortalPhysicalMemory create a new scope stack containing cma else start a new scope stack containing the entire current scope stack if ima != cma push ima on new scope stack -- which may throw ScopedCycleException
299. change Delete: �Note that freeing and terminating a schedulableobject are symmetrical to constructing and starting it except that the memoryarea pushed in the constructor is popped when the schedulable objectterminates.� The Single Parent Rule300. change Replaced: �below � With:�outside � In For all other scoped memory areas, the parent isthe first scoped memory area below outside it on the scope stack. . On Scope Stack Push of ma301. change Deleted: �ma.refCount++� In precondition:ma.parent is set to the correct parent (eithera scoped memory area or the primordial scope) or to noParent t.scopeStackis the scope stack of the current schedulable object ifma is scoped parent= findFirstScope(t.scopeStack) ifma.parent == noParent ma.parent= parent elseif ma.parent != parent throwScopedCycleException else t.scopeStack.push(ma) ma.refCount++
|