-- Original Cheddar properties -- Some of the properties below have been introduced in the standard properties set -- Both standard and Cheddar_Properties properties can be used with the Cheddar plugin. -- property set Cheddar_Properties is -- This property specifies a maximum bound on the lateness of a thread dispatching. In -- the case of a periodic thread for instance, the thread is supposed to be dispatched -- according to a fixed delay called the period. However, for many reasons, a periodic thread -- dispatching event can be delayed. The Dispatch_Jitter property can be used to specify such a -- delay. The Dispatch_Jitter property can be specified on any thread which can be dispatched -- several times (i.e. Periodic, Sporadic, Poisson_Process or User_Defined threads). -- Dispatch_Jitter : inherit Time applies to (thread, thread group); -- This property specifies the priority of a thread. This priority is fixed : -- it means that the thread priority does not change during the execution of the system, -- except when the thread get the access to a data supporting a protocol such as PCP or PIP. Such -- a property may be used by fixed priority schedulers such as Rate Monotonic, Deadline Monotonic, -- POSIX 1003.1b scheduler or any user-defined scheduler. There is no default value for such a property : if -- this property is not specified, the thread fixed priority is undefined. The priority levels can be -- customized at Cheddar compilation time. In Cheddar: -- -- 255 is the highest fixed priority. -- 0 is the lowest fixed priority. -- Fixed_Priority : aadlinteger 0..255 applies to (thread, thread group); -- The POSIX_Scheduling_Policy property is used with the POSIX_1003_HIGHEST_PRIORITY_FIRST_PROTOCOL -- or any user-defined scheduling protocols. Such a property specifies the policy associated to -- a given thread. The policy may be either SCHED_FIFO, SCHED_RR or SCHED_OTHERS. In a POSIX 1003 -- system, the policy allows the scheduler to choose the thread to run when several threads -- have the same fixed priority (specified with the Fixed_Priority property). If a thread -- does not define the POSIX_Scheduling_Policy property, it has by default the SCHED_FIFO policy. -- In the current implementation of Cheddar, the POSIX policy and the POSIX fixed priority -- behavior is similar to the one found on a Linux machine : -- -- SCHED_FIFO implements a FIFO scheduling protocol : a thread stays on the processor until it has terminated or until a highest priority thread is released. -- SCHED_RR is similar to SCHED_FIFO except that the quantum is used. At the end of the quantum, the running thread leaves the processor. -- SCHED_OTHERS implements a time sharing scheduling. A thread with a SCHED_OTHERS policy must have a fixed priority equal to zero. -- POSIX_Scheduling_Policy : enumeration (SCHED_FIFO, SCHED_RR, SCHED_OTHERS) applies to (thread, thread group); -- This property specifies the quantum of a given processor. -- The quantum is a maximum bound on the delay a thread can held the processor without beeing -- preempted. A quantum is typically used in time sharing scheduling and in POSIX 1003.1b -- scheduling (with the SCHED_RR policy for example). The quantum can also be used with any Cheddar -- user-defined schedulers. If the quantum is not specified for a given processor, the Cheddar -- scheduling simulation engine assumes that the quantum has a positive infinitive value. -- Scheduler_Quantum : inherit Time applies to (processor, process); -- This property specifies if the processor can preempt a thread during its execution. -- By default, if this property is not specified, the processor owns a preemptive scheduler. -- Preemptive_Scheduler : aadlboolean applies to (processor, process); -- This property specifies the scheduling simulator initial state of a data. From the scheduling -- simulator point of view, a data is seen as a semaphore. A semaphore contains a counter which has to -- be first initialized before the semaphore can be used. The Data_Concurrency_State property provides such -- an initialization. If Data_Concurrency_State provides a positive value, the first thread which requires -- the access to the data will not be blocked. If Data_Concurrency_State initializes the counter to zero -- or to a negative value, the thread will be blocked. By default, if this property is not specified, the data -- semaphore counter is initialized to 1. -- Data_Concurrency_State : aadlinteger applies to (data); -- This property specifies the maximum duration a thread has to wait for the access to a -- protected data. Such delay is computed with feasibility tests according to the data access -- protocol or can be computed by analysis of a scheduling simulation. Bound_On_Data_Blocking_Time -- is also used to compute the worst case response time of a thread (with feasibility tests). -- Bound_On_Data_Blocking_Time : inherit Time applies to (thread, thread group); -- This property specifies the list of critical sections of a process, a thread or a data. This -- property has no default value. By critical section, we mean the time interval a thread access -- to a shared data. Critical sections may be used by feasibility tests to compute thread blocking -- times on shared data and worst case thread response times. They also may be used to compute the -- scheduling simulation. The Critical_Section property is an ordered list which expresses shared -- data access as follows : -- -- Critical_Section => "D1", "T1", "start1", "end1", "D2", "T2", "start2", "end2" ... ; -- -- means that the thread T1 requires the access to the data D1 from the start1 unit of time of its -- execution time, to the end1 unit of time of its execution time. This example also specifies that -- the thread T2 requires the access to the data D2 from the start2 unit of time of its execution -- time, to the end2 unit of time of its execution time. -- Critical_Section : inherit list of aadlstring applies to (process, thread, data); -- This property specifies the worst and the best duration of a critical section -- for a given thread, on a given data component. -- The purpose of this data is to compute worst case response time -- Critical_Section_Time : Time_Range applies to (data access); -- This property specifies how the seed must be generated. The seed is used by the Cheddar -- simulator engine. To compute a scheduling with Background, Poisson_Process, Sporadic or -- User_Defined threads, the simulator engine has to generate random dispatching time. The -- Dispatch_Seed_is_Predictable property specifies how the seed has to be initialized. If -- Dispatch_Seed_is_Predictable is true, the seed is initialized with the same value for all -- scheduling simulation. In this case, the successive simulations of an AADL specification lead -- to the same computed scheduling. If you plan to run several simulations of an AADL specification -- and if you plan to generate different scheduling for each simulation, then, the -- Dispatch_Seed_is_Predictable property has to be initialized with false. If this property is -- omitted, the seed is randomly initialized. -- Dispatch_Seed_is_Predictable : aadlboolean applies to (thread, thread group); -- This property specifies the seed value which is used by the Cheddar simulator engine. To compute -- a scheduling with Background, Poisson_Process, Sporadic or User_Defined threads, the simulator -- engine has to generate random dispatching time. Such random generator is initialized with the -- Dispatch_Seed_Value property. If this property is omitted, the seed random generator is -- initialized to zero : it means that several simulations of an AADL specification will lead -- to the same computed scheduling. -- Dispatch_Seed_Value : aadlinteger applies to (thread, thread group); -- This property specifies the time after which a cyclic thread must be completed -- After this time, the cyclic thread e.g. periodic or sporadic) is not allowed to be -- dispatched -- Completion_Time : inherit Time applies to (thread, thread group); -- This property specifies the very first arrival time of the thread. By arrival time, we mean the -- first dispatching time of the thread. Cheddar provides repetitive AADL threads and non -- repetitive threads. Repetitive threads such as Periodic threads, are dispatched several times. -- The dispatch absolute time specifies the first dispatching time of repetitive threads. Non -- repetitive threads such as Background thread are dispatched only one time. Such a unique -- dispatching time is also specified with the dispatch absolute time. In the context of real -- time scheduling simulation, for Background threads, the dispatch absolute time is usually -- randomly generated. A dispatch absolute time equal to zero is required for some feasibility tests. -- Dispatch_Absolute_Time : inherit Time applies to (thread, thread group); -- This property specifies the criticality level of a thread. This property is used by the -- MAXIMUM_URGENCY_FIRST_BASED_ON_LAXITY_PROTOCOL and -- MAXIMUM_URGENCY_FIRST_BASED_ON_DEADLINE_PROTOCOL scheduling protocols. Such a property can -- also be used by any user-defined scheduling protocols. -- Criticality : aadlinteger applies to (thread, thread group); -- This property specifies if a thread can be preempted during its execution -- time by a scheduler in order to run an other thread. By default, if this -- property is not specified, the thread is supposed to be preemptible. -- Is_Preemptible : aadlboolean applies to (thread, thread group); -- This property is associated to the Dispatch_Offset_Time_k property. Dispatch_Offset_Time_k and -- Dispatch_Offset_Value_k allow the user to force a scheduling protocol to delay the dispatching -- of a thread. Such properties can be useful for the design and the test of new user-defined -- scheduling protocols. The Dispatch_Offset_Time_k property specifies the thread dispatching event -- number to be delayed and the Dispatch_Offset_Value_k property specifies the delay to apply at -- thread dispatching. Several (Dispatch_Offset_Time_k,Dispatch_Offset_Value_k) property couples -- can be expressed, where k is the number of couples. The number of couples can be customized at -- Cheddar compilation time. -- Dispatch_Offset_Value_0 : aadlinteger applies to (thread, thread group); Dispatch_Offset_Value_1 : aadlinteger applies to (thread, thread group); Dispatch_Offset_Value_2 : aadlinteger applies to (thread, thread group); Dispatch_Offset_Value_3 : aadlinteger applies to (thread, thread group); Dispatch_Offset_Value_4 : aadlinteger applies to (thread, thread group); Dispatch_Offset_Value_5 : aadlinteger applies to (thread, thread group); -- This property is associated to the Dispatch_Offset_Value_k property. See the -- Dispatch_Offset_Value_k property for explanation. -- Dispatch_Offset_Time_0 : inherit Time applies to (thread, thread group); Dispatch_Offset_Time_1 : inherit Time applies to (thread, thread group); Dispatch_Offset_Time_2 : inherit Time applies to (thread, thread group); Dispatch_Offset_Time_3 : inherit Time applies to (thread, thread group); Dispatch_Offset_Time_4 : inherit Time applies to (thread, thread group); Dispatch_Offset_Time_5 : inherit Time applies to (thread, thread group); -- This property specifies the list of thread precedences of an AADL specification. This property has -- no default value. It is composed of an ordered list of thread name. Such a thread precedencies -- do not express any data exchange between thread but only constraints related to the scheduling of -- the threads : such a property expresses thread precedencies without event or event data port. -- For example, the following specification : -- -- Thread_Precedencies => "a", "b", "c", "d" ... ; -- -- means that the thread a has to be executed before the thread b and that the thread c has to be -- executed before the thread d. -- Thread_Precedencies : inherit list of aadlstring applies to (system); -- Source_Text specifies the name of .sc files. This property can contains several .sc file names. -- In this case, the file names are separated by a comma. -- The .sc files contain pieces of code which can be interpreted by the -- scheduling engine of Cheddar. These part of code are part of user-defined schedulers. With such .sc files, -- one can design and perform simulations with specific thread dispatching protocols or specific scheduling protocols. -- Source_Text : inherit list of aadlstring applies to (process, processor, thread, system); -- This properties the name of a .sc file that stores the automaton, which is a piece -- of software of a user-defined Cheddar scheduler. Such automation can be assigned to -- AADL processes of threads -- Automaton_Name : inherit list of aadlstring applies to (process, processor, thread); -- Does this property currently used in Cheddar? -- Context_Switch_Overhead : inherit Time applies to (thread, thread group); -- This property specifies the size of the heap memory segment of the process. This property -- can be used in order to perform memory footprint analysis. -- Source_Global_Heap_Size : Size applies to (process); -- This property specifies the size of the stack memory segment of the process. This property can be -- used in order to perform memory footprint analysis. -- Source_Global_Stack_Size : Size applies to (process); -- This property specifies the size of the text memory segment of the process. This property can be -- used in order to perform memory footprint analysis. -- Source_Global_Text_Size : Size applies to (process); -- This property specifies the size of the data memory segment of the process. This property can -- be used in order to perform memory footprint analysis. -- Source_Global_Data_Size : Size applies to (process); end Cheddar_Properties;