Skip to content
Snippets Groups Projects
Commit 7235ace1 authored by Blinningjr's avatar Blinningjr
Browse files

Added schedulable output variable

parent 6f613f81
No related branches found
No related tags found
No related merge requests found
Overview Overview
Schedulable: No
Total Util: 0.85 Total Util: 0.85
Tasks: T1 T2 T3 Tasks: T1 T2 T3
Priority: P(R1) = 2 P(T2) = 2 P(T1) = 1 P(R2) = 3 P(T3) = 3 Priority: P(R1) = 2 P(T1) = 1 P(T2) = 2 P(R2) = 3 P(T3) = 3
Task Resources: T2:( R1 R2 ) T3:( R2 ) Task Resources: T2:( R1 R2 ) T3:( R2 )
Analysis of T1 Analysis of T1
......
...@@ -6,7 +6,7 @@ use super::srp_analyser::*; ...@@ -6,7 +6,7 @@ use super::srp_analyser::*;
* Creates a readable representation of the analysis and the given information. * Creates a readable representation of the analysis and the given information.
*/ */
pub fn format_analysis(analysis: &Vec<AnalysedTask>, tasks: &Tasks, ip: &IdPrio, tr: &TaskResources) -> String { pub fn format_analysis(analysis: &Vec<AnalysedTask>, tasks: &Tasks, ip: &IdPrio, tr: &TaskResources) -> String {
let overview = format_overview(tasks, ip, tr); let overview = format_overview(tasks, ip, tr, analysis);
let mut body = String::new(); let mut body = String::new();
for at in analysis { for at in analysis {
...@@ -26,7 +26,7 @@ pub fn format_analysis(analysis: &Vec<AnalysedTask>, tasks: &Tasks, ip: &IdPrio, ...@@ -26,7 +26,7 @@ pub fn format_analysis(analysis: &Vec<AnalysedTask>, tasks: &Tasks, ip: &IdPrio,
/* /*
* Creates the overview section of the readable representation. * Creates the overview section of the readable representation.
*/ */
pub fn format_overview(tasks: &Tasks, ip: &IdPrio, tr: &TaskResources) -> String { pub fn format_overview(tasks: &Tasks, ip: &IdPrio, tr: &TaskResources, atasks: &Vec<AnalysedTask>) -> String {
// Formats the names of all the tasks. // Formats the names of all the tasks.
fn format_task_names(tasks: &Tasks) -> String { fn format_task_names(tasks: &Tasks) -> String {
let mut task_names = "Tasks:".to_string(); let mut task_names = "Tasks:".to_string();
...@@ -60,13 +60,18 @@ pub fn format_overview(tasks: &Tasks, ip: &IdPrio, tr: &TaskResources) -> String ...@@ -60,13 +60,18 @@ pub fn format_overview(tasks: &Tasks, ip: &IdPrio, tr: &TaskResources) -> String
} }
return task_res; return task_res;
} }
let ltot = total_load_factor(tasks);
let tot_util = format!("Total Util: {}", total_load_factor(tasks)); let schedulable = format!("Schedulable: {}", match schedulable(ltot, atasks) {
true => "Yes",
false => "No",
});
let tot_util = format!("Total Util: {}", ltot);
let task_names = format_task_names(tasks); let task_names = format_task_names(tasks);
let id_prio = format_id_prio(ip); let id_prio = format_id_prio(ip);
let task_res = format_task_res(tr); let task_res = format_task_res(tr);
return format!("Overview\n\t{}\n\t{}\n\t{}\n\t{}", tot_util, task_names, id_prio, task_res); return format!("Overview\n\t{}\n\t{}\n\t{}\n\t{}\n\t{}", schedulable, tot_util, task_names, id_prio, task_res);
} }
......
...@@ -175,6 +175,23 @@ pub fn interference_time(task: &Task, tasks: &Tasks, ip: &IdPrio, tr: &TaskResou ...@@ -175,6 +175,23 @@ pub fn interference_time(task: &Task, tasks: &Tasks, ip: &IdPrio, tr: &TaskResou
} }
/*
* Calculate if it is schedulable.
*/
pub fn schedulable(ltot: f32, atasks: &Vec<AnalysedTask>) -> bool {
if ltot >= 1.0 {
return false;
}
for at in atasks {
if at.response_time >= at.task.deadline {
return false;
}
}
return true;
}
/* /*
* Analyse tasks. * Analyse tasks.
* *
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment