Updated scheduler descriptions
diff --git a/plugins/org.eclipse.app4mc.amalthea.converters.200/src/org/eclipse/app4mc/amalthea/converters200/utils/StandardSchedulers.java b/plugins/org.eclipse.app4mc.amalthea.converters.200/src/org/eclipse/app4mc/amalthea/converters200/utils/StandardSchedulers.java index 0729117..992ad25 100644 --- a/plugins/org.eclipse.app4mc.amalthea.converters.200/src/org/eclipse/app4mc/amalthea/converters200/utils/StandardSchedulers.java +++ b/plugins/org.eclipse.app4mc.amalthea.converters.200/src/org/eclipse/app4mc/amalthea/converters200/utils/StandardSchedulers.java
@@ -22,6 +22,58 @@ public class StandardSchedulers { + private static final String ALGORITHM_PARAMETERS = "\nAlgorithm parameters:\n"; + private static final String PROCESS_PARAMETERS = "\nProcess parameters:\n"; + private static final String OPTIONS = "\nOptions:\n"; + private static final String REFERENCE = "\nReference:\n"; + private static final String NO_ITEMS = " -\n"; + private static final String PASSES_PARAMETERS_UPWARDS = " - passes parameters upwards\n"; + private static final String HAS_EXACTLY_ONE_CHILD = " - has exactly one child\n"; + private static final String REQUIRES_PARENT_SCHEDULER = " - requires parent scheduler\n"; + + private static final String LIU_LAYLAND_1973 = // http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.36.8216 + " - Liu, Chung Laung, and James W. Layland (1973).\n" + + " \"Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment\"\n" + + " Journal of the ACM (JACM) 20.1 (1973): 46-61.\n"; + private static final String SPRUNT_SHA_LEHOCZKY_1989 = // http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.916.4332 + " - Sprunt, Brinkley, Lui Sha, and John Lehoczky (1989).\n" + + " \"Aperiodic Task Scheduling for Hard Real-Time Systems\"\n" + + " Real-Time Systems 1(1):27-60, DOI:10.1007/BF02341920\n"; + private static final String AUDSLEY_1990 = // http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.53.8928 + " - Audsley, Neil (1990).\n" + + " \"Deadline Monotonic Scheduling\"\n"; + private static final String STROSNIDER_LEHOCZKY_SHA_1995 = + " - Strosnider, Jay K., John P. Lehoczky, and Lui Sha (1995).\n" + + " \"The Deferrable Server Algorithm for Enhanced Aperiodic Responsiveness in Hard Real-Time Environments\"\n"+ + " IEEE Transactions on Computers 44.1 (1995): 73-91.\n"; + private static final String ABENI_BUTTAZZO_1998 = // http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.638.3683 + " - Abeni, Luca, and Giorgio Buttazzo (1998).\n" + + " \"Integrating Multimedia Applications in Hard Real-Time Systems\"\n" + + " Proceedings 19th IEEE Real-Time Systems Symposium (Cat. No. 98CB36279). IEEE, 1998.\n"; + private static final String CACCAMO_BUTTAZZO_SHA_2000 = + " - M. Caccamo, G. Buttazzo and Lui Sha (2000).\n" + + " \"Capacity sharing for overrun control\"\n" + + " Proceedings 21st IEEE Real-Time Systems Symposium, 2000, pp. 295-304, doi: 10.1109/REAL.2000.896018.\n"; + private static final String ANDERSON_SRINIVASAN_2001 = + " - J. H. Anderson and A. Srinivasan.\n" + + " \"Mixed Pfair/ERfair scheduling of asynchronous periodic tasks\"\n" + + " Proceedings 13th Euromicro Conference on Real-Time Systems, 2001, pp. 76-85, doi: 10.1109/EMRTS.2001.934004.\n"; + private static final String BUTTAZZO_2004 = + " - Buttazzo, Giorgio (2004).\n" + + " \"Real-Time Computing Systems - Predictable Scheduling Algorithms and Applications\"\n" + + " Springer Publications, Chapter 5, DOI:10.1007/0-387-27578-9\n"; + private static final String OSEK_2005 = + " - OSEK/VDX - Operating System Specification 2.2.3 (2005)\n"; + private static final String DEUBZER_MARGULL_MOTTOK = + " - Deubzer, Michael & Margull, Ulrich & Mottok, Juergen & Niemetz, M. & Wirrer, G. (2010).\n" + + " \"Efficient scheduling of reliable automotive multi-core systems with pd2 by weakening erfair tasksystem requirements\"\n" + + " Lecture Notes in Informatics (LNI), Proceedings - Series of the Gesellschaft fur Informatik (GI). 53-68.\n"; + private static final String ZOUAOUI_BOUSSAID_ABDELLATIF_2019 = + " - Zouaoui, Sonia & Boussaid, Lotfi & Abdellatif, Mtibaa (2019).\n" + + " \"Priority based round robin (PBRR) CPU scheduling algorithm\"\n" + + " International Journal of Electrical and Computer Engineering (IJECE),\n" + + " 9. 190. 10.11591/ijece.v9i1.pp190-202.\n"; + // Suppress default constructor private StandardSchedulers() { throw new IllegalStateException("Utility class"); @@ -35,33 +87,31 @@ + "act as a logical grouping of tasks/child-schedulers, e.g. a partition\n" + "for some tasks for budget accounting reasons.\n\n" + "This scheduler does not take any scheduling decisions,\n" - + "and a parent scheduler is mandatory.\n\n" - + "Algorithm parameters\n" + + "and a parent scheduler is mandatory.\n" + + ALGORITHM_PARAMETERS + " - capacity [1] Time\n" + " The fixed budget that can be used by processes.\n" + " It will be replenished periodically.\n" + " - period [1] Time\n" - + " Amount of time after which the capacity will be replenished.\n\n" - + "Process parameters\n" - + " -\n\n" - + "Options:\n" - + " - passes parameters upwards\n" - + " - requires parent scheduler\n", + + " Amount of time after which the capacity will be replenished.\n" + + PROCESS_PARAMETERS + + NO_ITEMS + + OPTIONS + + PASSES_PARAMETERS_UPWARDS + + REQUIRES_PARENT_SCHEDULER, new Parameter[] { Parameter.CAPACITY, Parameter.PERIOD }, new Parameter[] {}, false, true, true), PRIORITY_BASED( "PriorityBased", - "???\n\n" - + "Algorithm parameters\n" - + " -\n\n" - + "Process parameters\n" + "???\n" + + ALGORITHM_PARAMETERS + + NO_ITEMS + + PROCESS_PARAMETERS + " - priority [1] Integer\n" - + " The priority of the process (a higher value means a higher priority).\n\n" - + "Options:\n" - + " -\n\n" - + "Reference:\n" - + " - TODO", + + " The priority of the process (a higher value means a higher priority).\n" + + OPTIONS + + NO_ITEMS, new Parameter[] {}, new Parameter[] { Parameter.PRIORITY }, false, false, false), @@ -71,35 +121,35 @@ "OSEK compliant Scheduling. A fixed priority preemptive scheduling algorithm\n" + "with task groups. Tasks belonging to the same task group are scheduled\n" + "cooperatively (they do not preempt each other), preemptive otherwise.\n" - + "Tasks with the same priority also behave cooperatively.\n\n" - + "Algorithm parameters\n" - + " -\n\n" - + "Process parameters\n" + + "Tasks with the same priority also behave cooperatively.\n" + + ALGORITHM_PARAMETERS + + NO_ITEMS + + PROCESS_PARAMETERS + " - priority [1] Integer\n" + " The priority of the process (a higher value means a higher priority).\n" + " - taskGroup [1] Integer\n" + " The OSEK task group number (if for two processes the number is equal,\n" - + " that means they are in the same task group).\n\n" - + "Options:\n" - + " -\n\n" - + "Reference:\n" - + " - TODO", + + " that means they are in the same task group).\n" + + OPTIONS + + NO_ITEMS + + REFERENCE + + OSEK_2005, new Parameter[] {}, new Parameter[] { Parameter.PRIORITY, Parameter.TASK_GROUP }, false, false, false), FIXED_PRIORITY_PREEMPTIVE( "FixedPriorityPreemptive", "Fixed Priority Preemptive Scheduling (e.g. AUTOSAR),\n" - + "same as OSEK but without task groups.\n\n" - + "Algorithm parameters\n" - + " -\n\n" - + "Process parameters\n" + + "same as OSEK but without task groups.\n" + + ALGORITHM_PARAMETERS + + NO_ITEMS + + PROCESS_PARAMETERS + " - priority [1] Integer\n" - + " The priority of the process (a higher value means a higher priority).\n\n" - + "Options:\n" - + " -\n\n" - + "Reference:\n" - + " - TODO", + + " The priority of the process (a higher value means a higher priority).\n" + + OPTIONS + + NO_ITEMS + + REFERENCE + + LIU_LAYLAND_1973, new Parameter[] {}, new Parameter[] { Parameter.PRIORITY }, false, false, false), @@ -108,10 +158,10 @@ "Works like the Fixed Priority Preemptive Scheduling. But it is possible\n" + "to put budget boundaries on the execution. Prevents low priority tasks \n" + "from starving if a higher priority task is trying to constantly occupy the\n" - + "CPU (safety insurance, bounding the execution time of sporadic loads).\n\n" - + "Algorithm parameters\n" - + " -\n\n" - + "Process parameters\n" + + "CPU (safety insurance, bounding the execution time of sporadic loads).\n" + + ALGORITHM_PARAMETERS + + NO_ITEMS + + PROCESS_PARAMETERS + " - priority [1] Integer\n" + " The priority of the process (a higher value means a higher priority).\n" + " - minBudget [1] Time\n" @@ -121,44 +171,42 @@ + " Sets a limit to the usage of a process even if the CPU would be idle\n" + " (important for algorithms with payback mechanisms).\n" + " - replenishment [1] Time\n" - + " The periodic time interval after which the budget is set to the configured value.\n\n" - + "Options:\n" - + " -\n\n" - + "Reference:\n" - + " - TODO", + + " The periodic time interval after which the budget is set to the configured value.\n" + + OPTIONS + + NO_ITEMS, new Parameter[] {}, new Parameter[] { Parameter.PRIORITY, Parameter.MIN_BUDGET, Parameter.MAX_BUDGET, Parameter.REPLENISHMENT }, false, false, false), DEADLINE_MONOTONIC( // only for migration "DeadlineMonotonic", "This is not a scheduling algorithm, it only describes how to derive priorities for a\n" - + "fixed priority scheduler: Task with the shortest deadline gets the highest priority.\n\n" - + "Algorithm parameters\n" - + " -\n\n" - + "Process parameters\n" + + "fixed priority scheduler: Task with the shortest deadline gets the highest priority.\n" + + ALGORITHM_PARAMETERS + + NO_ITEMS + + PROCESS_PARAMETERS + " - deadline [1] Time\n" - + " The time after each activation at which the process must finish.\n\n" - + "Options:\n" - + " -\n\n" - + "Reference:\n" - + " - TODO", + + " The time after each activation at which the process must finish.\n" + + OPTIONS + + NO_ITEMS + + REFERENCE + + AUDSLEY_1990, new Parameter[] {}, new Parameter[] { Parameter.DEADLINE }, false, false, false), RATE_MONOTONIC( // only for migration "RateMonotonic", "This is not a scheduling algorithm, it only describes how to derive priorities for a\n" - + "fixed priority scheduler: Task with the shortest period gets the highest priority.\n\n" - + "Algorithm parameters\n" - + " -\n\n" - + "Process parameters\n" + + "fixed priority scheduler: Task with the shortest period gets the highest priority.\n" + + ALGORITHM_PARAMETERS + + NO_ITEMS + + PROCESS_PARAMETERS + " - period [1] Integer\n" + " The time span after the previous activation at which\n" - + " the next instance of the process shall be activated.\n\n" - + "Options:\n" - + " -\n\n" - + "Reference:\n" - + " - TODO", + + " the next instance of the process shall be activated.\n" + + OPTIONS + + NO_ITEMS + + REFERENCE + + LIU_LAYLAND_1973, new Parameter[] {}, new Parameter[] { Parameter.PERIOD }, false, false, false), @@ -166,36 +214,32 @@ EARLIEST_DEADLINE_FIRST( "EarliestDeadlineFirst", "Earliest Deadline First (EDF): The task with the closest deadline in relation\n" - + "to the current point in time will be scheduled next.\n\n" - + "Algorithm parameters\n" - + " -\n\n" - + "Process parameters\n" + + "to the current point in time will be scheduled next.\n" + + ALGORITHM_PARAMETERS + + NO_ITEMS + + PROCESS_PARAMETERS + " - deadline [1] Time\n" - + " The time after each activation at which the process must finish.\n\n" - + "Options:\n" - + " -\n\n" - + "Reference:\n" - + " - First introduced in: Liu, Chung Laung, and James W. Layland.\n" - + " \"Scheduling algorithms for multiprogramming in a hard-real-time environment.\"\n" - + " Journal of the ACM (JACM) 20.1 (1973): 46-61.", + + " The time after each activation at which the process must finish.\n" + + OPTIONS + + NO_ITEMS + + REFERENCE + + LIU_LAYLAND_1973, new Parameter[] {}, new Parameter[] { Parameter.DEADLINE }, false, false, false), LEAST_LOCAL_REMAINING_EXECUTION_TIME_FIRST( // only for migration "LeastLocalRemainingExecutionTimeFirst", "Least Local Remaining Execution-time First (LLREF): Task with the\n" - + "smallest local remaining execution time will be scheduled next.\n\n" - + "Algorithm parameters\n" - + " -\n\n" - + "Process parameters\n" + + "smallest local remaining execution time will be scheduled next.\n" + + ALGORITHM_PARAMETERS + + NO_ITEMS + + PROCESS_PARAMETERS + " - executionTime [1] Time\n" + " The time which the process will use until it is finished\n" + " (usually the worst case execution time is used here in order\n" - + " to guarantee that the process can finish).\n\n" - + "Options:\n" - + " -\n\n" - + "Reference:\n" - + " - TODO", + + " to guarantee that the process can finish).\n" + + OPTIONS + + NO_ITEMS, new Parameter[] {}, new Parameter[] { Parameter.EXECUTION_TIME }, false, false, false), @@ -204,86 +248,82 @@ "Round Robin scheduling algorithm assigns equally sized time slices\n" + "to each process that it schedules. The priority describes the order\n" + "in which the processes will be executed. If two processes have the\n" - + "same priority, the order of these two is random (non-deterministic).\n\n" - + "Algorithm parameters\n" + + "same priority, the order of these two is random (non-deterministic).\n" + + ALGORITHM_PARAMETERS + " - timeSliceLength [1] Time\n" - + " Length of each time slice.\n\n" - + "Process parameters\n" + + " Length of each time slice.\n" + + PROCESS_PARAMETERS + " - priority [1] Integer\n" - + " The priority of the process (a higher value means a higher priority).\n\n" - + "Options:\n" - + " -\n\n" - + "Reference:\n" - + " - TODO", + + " The priority of the process (a higher value means a higher priority).\n" + + OPTIONS + + NO_ITEMS + + REFERENCE + + ZOUAOUI_BOUSSAID_ABDELLATIF_2019, new Parameter[] { Parameter.TIME_SLICE_LENGTH }, new Parameter[] { Parameter.PRIORITY }, false, false, false), P_FAIR_PD2( "PFairPD2", - "Proportionate Fair PD2 Scheduling (Pfair-PD2).\n\n" - + "Algorithm parameters\n" + "Proportionate Fair PD2 Scheduling (Pfair-PD2).\n" + + ALGORITHM_PARAMETERS + " - quantSize [0..1] Time = 1ns\n" + " Length of the minimum schedulable time slot used in Pfair scheduling.\n" + " It is assumed that execution times are an integer multiple of this\n" - + " time slot length.\n\n" - + "Process parameters\n" - + " -\n\n" - + "Options:\n" - + " -\n\n" - + "Reference:\n" - + " - TODO", + + " time slot length.\n" + + PROCESS_PARAMETERS + + NO_ITEMS + + OPTIONS + + NO_ITEMS + + REFERENCE + + ANDERSON_SRINIVASAN_2001, new Parameter[] { Parameter.QUANT_SIZE }, new Parameter[] {}, false, false, false), PARTLY_P_FAIR_PD2( "PartlyPFairPD2", - "Partly Proportionate Fair PD2 Scheduling (PPfair-PD2).\n\n" - + "Algorithm parameters\n" + "Partly Proportionate Fair PD2 Scheduling (PPfair-PD2).\n" + + ALGORITHM_PARAMETERS + " - quantSize [0..1] Time = 1ns\n" + " Length of the minimum schedulable time slot used in Pfair scheduling.\n" + " It is assumed that execution times are an integer multiple of this\n" - + " time slot length.\n\n" - + "Process parameters\n" - + " -\n\n" - + "Options:\n" - + " -\n\n" - + "Reference:\n" - + " - TODO", + + " time slot length.\n" + + PROCESS_PARAMETERS + + NO_ITEMS + + OPTIONS + + NO_ITEMS, new Parameter[] { Parameter.QUANT_SIZE }, new Parameter[] {}, false, false, false), EARLY_RELEASE_FAIR_PD2( "EarlyReleaseFairPD2", - "Early Release Fair PD2 Scheduling (ERfair-PD2).\n\n" - + "Algorithm parameters\n" + "Early Release Fair PD2 Scheduling (ERfair-PD2).\n" + + ALGORITHM_PARAMETERS + " - quantSize [0..1] Time = 1ns\n" + " Length of the minimum schedulable time slot used in Pfair scheduling.\n" + " It is assumed that execution times are an integer multiple of this\n" - + " time slot length.\n\n" - + "Process parameters\n" - + " -\n\n" - + "Options:\n" - + " -\n\n" - + "Reference:\n" - + " - TODO", + + " time slot length.\n" + + PROCESS_PARAMETERS + + NO_ITEMS + + OPTIONS + + NO_ITEMS + + REFERENCE + + DEUBZER_MARGULL_MOTTOK, new Parameter[] { Parameter.QUANT_SIZE }, new Parameter[] {}, false, false, false), PARTLY_EARLY_RELEASE_FAIR_PD2( "PartlyEarlyReleaseFairPD2", - "Partly Early Release Fair PD2 Scheduling (P-ERfair-PD2).\n\n" - + "Algorithm parameters\n" + "Partly Early Release Fair PD2 Scheduling (P-ERfair-PD2).\n" + + ALGORITHM_PARAMETERS + " - quantSize [0..1] Time = 1ns\n" + " Length of the minimum schedulable time slot used in Pfair scheduling.\n" + " It is assumed that execution times are an integer multiple of this\n" - + " time slot length.\n\n" - + "Process parameters\n" - + " -\n\n" - + "Options:\n" - + " -\n\n" - + "Reference:\n" - + " - TODO", + + " time slot length.\n" + + PROCESS_PARAMETERS + + NO_ITEMS + + OPTIONS + + NO_ITEMS, new Parameter[] { Parameter.QUANT_SIZE }, new Parameter[] {}, false, false, false), @@ -291,22 +331,20 @@ DEFERRABLE_SERVER( "DeferrableServer", "Deferrable Server (DS): provides a fixed budget,\n" - + "in which the budget replenishment is done periodically.\n\n" - + "Algorithm parameters\n" + + "in which the budget replenishment is done periodically.\n" + + ALGORITHM_PARAMETERS + " - capacity [1] Time\n" + " The fixed budget that can be used by processes.\n" + " It will be replenished periodically.\n" + " - period [1] Time\n" - + " Amount of time after which the capacity will be replenished.\n\n" - + "Process parameters\n" - + " -\n\n" - + "Options:\n" - + " - has exactly one child\n" - + " - requires parent scheduler\n\n" - + "Reference:\n" - + " - First introduced in: Strosnider, Jay K., John P. Lehoczky, and Lui Sha.\n" - + " \"The deferrable server algorithm for enhanced aperiodic responsiveness in hard real-time environments.\"\n" - + " IEEE Transactions on Computers 44.1 (1995): 73-91.", + + " Amount of time after which the capacity will be replenished.\n" + + PROCESS_PARAMETERS + + NO_ITEMS + + OPTIONS + + HAS_EXACTLY_ONE_CHILD + + REQUIRES_PARENT_SCHEDULER + + REFERENCE + + STROSNIDER_LEHOCZKY_SHA_1995, new Parameter[] { Parameter.CAPACITY, Parameter.PERIOD }, new Parameter[] {}, true, false, true), @@ -314,44 +352,42 @@ "PollingServer", "Polling Server (PS): provides a fixed budget periodically that is only\n" + "available at pre-defined times. If the process is not using the budget\n" - + "at that point in time the budget is lost.\n\n" - + "Algorithm parameters\n" + + "at that point in time the budget is lost.\n" + + ALGORITHM_PARAMETERS + " - capacity [1] Time\n" + " The fixed budget that can be used by processes (usually directly\n" + " after it has been replenished). The capacity will be consumed even\n" + " if there is no process using it. It will be replenished periodically.\n" + " - period [1] Time\n" - + " Amount of time after which the capacity will be replenished.\n\n" - + "Process parameters\n" - + " -\n\n" - + "Options:\n" - + " - has exactly one child\n" - + " - requires parent scheduler\n\n" - + "Reference:\n" - + " - TODO", + + " Amount of time after which the capacity will be replenished.\n" + + PROCESS_PARAMETERS + + NO_ITEMS + + OPTIONS + + HAS_EXACTLY_ONE_CHILD + + REQUIRES_PARENT_SCHEDULER + + REFERENCE + + BUTTAZZO_2004, new Parameter[] { Parameter.CAPACITY, Parameter.PERIOD }, new Parameter[] {}, true, false, true), SPORADIC_SERVER( "SporadicServer", "Sporadic Server (SS): provides a fixed budget, in which the budget replenishment\n" - + "is performed with a pre-defined replenishment delay after it was consumed.\n\n" - + "Algorithm parameters\n" + + "is performed with a pre-defined replenishment delay after it was consumed.\n" + + ALGORITHM_PARAMETERS + " - capacity [1] Time\n" + " The fixed budget that can be used by processes. It will be replenished after\n" + " the specified amount of time has passed since it has last been consumed.\n" + " - replenishmentDelay [1] Time\n" + " Amount of time after which the capacity will be replenished\n" - + " after it has last been consumed.\n\n" - + "Process parameters\n" - + " -\n\n" - + "Options:\n" - + " - has exactly one child\n" - + " - requires parent scheduler\n\n" - + "Reference:\n" - + " - First introduced in: Sprunt, Brinkley, Lui Sha, and John Lehoczky.\n" - + " \"Aperiodic task scheduling for hard-real-time systems.\"\n" - + " Real-Time Systems 1.1 (1989): 27-60.", + + " after it has last been consumed.\n" + + PROCESS_PARAMETERS + + NO_ITEMS + + OPTIONS + + HAS_EXACTLY_ONE_CHILD + + REQUIRES_PARENT_SCHEDULER + + REFERENCE + + SPRUNT_SHA_LEHOCZKY_1989, new Parameter[] { Parameter.CAPACITY, Parameter.REPLENISHMENT_DELAY }, new Parameter[] {}, true, false, true), @@ -359,42 +395,40 @@ "ConstantBandwidthServer", "Constant Bandwidth Server (CBS): provides a fixed utilization for\n" + "executing jobs, in which the deadline for execution is independent\n" - + "on the execution time of jobs.\n\n" - + "Algorithm parameters\n" + + "on the execution time of jobs.\n" + + ALGORITHM_PARAMETERS + " - capacity [1] Time\n" + " The fixed budget that can be used by processes.\n" + " It will be replenished periodically.\n" + " - period [1] Time\n" - + " Amount of time after which the capacity will be replenished.\n\n" - + "Process parameters\n" - + " -\n\n" - + "Options:\n" - + " - has exactly one child\n" - + " - requires parent scheduler\n\n" - + "Reference:\n" - + " - First introduced in: Abeni, Luca, and Giorgio Buttazzo.\n" - + " \"Integrating multimedia applications in hard real-time systems.\"\n" - + " Proceedings 19th IEEE Real-Time Systems Symposium (Cat. No. 98CB36279). IEEE, 1998.", + + " Amount of time after which the capacity will be replenished.\n" + + PROCESS_PARAMETERS + + NO_ITEMS + + OPTIONS + + HAS_EXACTLY_ONE_CHILD + + REQUIRES_PARENT_SCHEDULER + + REFERENCE + + ABENI_BUTTAZZO_1998, new Parameter[] { Parameter.CAPACITY, Parameter.PERIOD }, new Parameter[] {}, true, false, true), CONSTANT_BANDWIDTH_SERVER_WITH_CAPACITY_SHARING( "ConstantBandwidthServerWithCapacitySharing", "Constant Bandwidth Server (CBS) with capacity sharing (CASH).\n" - + "Consumes residual slack from other servers (work conserving).\n\n" - + "Algorithm parameters\n" + + "Consumes residual slack from other servers (work conserving).\n" + + ALGORITHM_PARAMETERS + " - capacity [1] Time\n" + " The fixed budget that can be used by processes.\n" + " It will be replenished periodically.\n" + " - period [1] Time\n" - + " Amount of time after which the capacity will be replenished.\n\n" - + "Process parameters\n" - + " -\n\n" - + "Options:\n" - + " - has exactly one child\n" - + " - requires parent scheduler\n\n" - + "Reference:\n" - + " - TODO", + + " Amount of time after which the capacity will be replenished.\n" + + PROCESS_PARAMETERS + + NO_ITEMS + + OPTIONS + + HAS_EXACTLY_ONE_CHILD + + REQUIRES_PARENT_SCHEDULER + + REFERENCE + + CACCAMO_BUTTAZZO_SHA_2000, new Parameter[] { Parameter.CAPACITY, Parameter.PERIOD }, new Parameter[] {}, true, false, true);