SCHEMA Tasks; USE FROM Framework_Config; USE FROM Objects; USE FROM Parameters; USE FROM Offsets; USE FROM Basic_Types; TYPE Tasks_Type = ENUMERATION OF ( Periodic_Type, Aperiodic_Type, Sporadic_Type, Poisson_Type, Parametric_Type, Scheduling_Task_Type, Frame_Task_Type ); END_TYPE; TYPE Policies = ENUMERATION OF ( Sched_Fifo, Sched_Rr, Sched_Others ); END_TYPE; ENTITY Generic_Task ABSTRACT SUPERTYPE SUBTYPE OF ( Named_Object ); task_type : Tasks_Type; cpu_name : STRING; address_space_name : STRING; capacity : Natural; deadline : Natural; start_time : Natural; priority : priority_range; blocking_time : Natural; policy : Policies; offsets : Offsets_Table; text_memory_size : Natural; stack_memory_size : Natural; parameters : User_Defined_Parameters_Table; criticality : Natural; context_switch_overhead : Natural; test : Natural; DERIVE SELF\Generic_Object.object_type : Objects_Type := Task_Object_Type; END_ENTITY; TYPE Generic_Task_Iterator = Iterator; END_TYPE; TYPE Generic_Task_List = LIST OF Generic_Task; END_TYPE; ENTITY Generic_Task_List_Package; iterator : Generic_Task_Iterator; List_ : Generic_Task_List; END_ENTITY; ENTITY Periodic_Task SUBTYPE OF ( Generic_Task ); period : Natural; jitter : Natural; DERIVE SELF\Generic_Task.task_type : Tasks_Type := Periodic_Type; WHERE wr1 : Period > 0; END_ENTITY; ENTITY Aperiodic_Task SUBTYPE OF ( Generic_Task ); DERIVE SELF\Generic_Task.task_type : Tasks_Type := Aperiodic_Type; END_ENTITY; ENTITY Poisson_Task SUBTYPE OF ( Periodic_Task ); seed : INTEGER; predictable : BOOLEAN; DERIVE SELF\Periodic_Task.task_type : Tasks_Type := Poisson_Type; END_ENTITY; ENTITY Sporadic_Task SUBTYPE OF ( Poisson_Task ); DERIVE SELF\Poisson_Task.task_type : Tasks_Type := Sporadic_Type; END_ENTITY; ENTITY Parametric_Task SUBTYPE OF ( Poisson_Task ); activation_rule : STRING; DERIVE SELF\Poisson_Task.task_type : Tasks_Type := Parametric_Type; END_ENTITY; ENTITY Scheduling_Task SUBTYPE OF ( Poisson_Task ); DERIVE SELF\Poisson_Task.task_type : Tasks_Type := Scheduling_Task_type; END_ENTITY; ENTITY Frame_Task SUBTYPE OF ( Periodic_Task ); interarrival : INTEGER; DERIVE SELF\Poisson_Task.task_type : Tasks_Type := Frame_Task_type; END_ENTITY; END_SCHEMA;