From 43bd4369ed8f3632e58aebadbfc0137153e394b9 Mon Sep 17 00:00:00 2001 From: matrevis Date: Wed, 13 Sep 2006 01:27:03 +0000 Subject: [PATCH] - Added priority inversion issue and solution. git-svn-id: svn://svn.gna.org/svn/sgpemv2/trunk@1123 3ecf2c5c-341e-0410-92b4-d18e462d057c --- Makefile.am | 5 ++- .../default_resource_policy_manager.cc | 2 + src/backend/resource_policy_priority.cc | 7 +--- .../environments/TheSecretOfMonkeyIsland.xgp | 38 +++++++++++++++++++ 4 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 src/testsuite/scheduling-wizards/environments/TheSecretOfMonkeyIsland.xgp diff --git a/Makefile.am b/Makefile.am index 7838b03..624ab53 100644 --- a/Makefile.am +++ b/Makefile.am @@ -201,6 +201,7 @@ src_backend_libbackend_la_SOURCES = \ src/backend/resource_policy_lifo.cc \ src/backend/resource_policy_manager.cc \ src/backend/resource_policy_priority.cc \ + src/backend/resource_policy_priority_inheritance.cc \ src/backend/schedulable.cc \ src/backend/schedulable_statistics.cc \ src/backend/scheduler.cc \ @@ -256,6 +257,7 @@ pkginclude_HEADERS += \ src/backend/sgpemv2/resource_policy_lifo.hh \ src/backend/sgpemv2/resource_policy_manager.hh \ src/backend/sgpemv2/resource_policy_priority.hh \ + src/backend/sgpemv2/resource_policy_priority_inheritance.hh \ src/backend/sgpemv2/process.hh \ src/backend/sgpemv2/schedulable.hh \ src/backend/sgpemv2/schedulable_statistics.hh \ @@ -588,7 +590,8 @@ examples_DATA = \ src/testsuite/scheduling-wizards/environments/Matteo_preemption_fail.xgp \ src/testsuite/scheduling-wizards/environments/Porno_priority_inversion.xgp \ src/testsuite/scheduling-wizards/environments/ScuolaDiMileto_gap_fail.xgp \ - src/testsuite/scheduling-wizards/environments/DiscWorld_unblock.xgp + src/testsuite/scheduling-wizards/environments/DiscWorld_unblock.xgp \ + src/testsuite/scheduling-wizards/environments/TheSecretOfMonkeyIsland.xgp EXTRA_DIST += $(noinst_DATA) $(examples_DATA) diff --git a/src/backend/default_resource_policy_manager.cc b/src/backend/default_resource_policy_manager.cc index 0dfb6f5..ef0b464 100644 --- a/src/backend/default_resource_policy_manager.cc +++ b/src/backend/default_resource_policy_manager.cc @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -38,6 +39,7 @@ DefaultResourcePolicyManager::DefaultResourcePolicyManager() _policies.push_back(new ResourcePolicyLiFo()); _policies.push_back(new ResourcePolicyFiFo()); _policies.push_back(new ResourcePolicyPriority()); + _policies.push_back(new ResourcePolicyPriorityInheritance()); } diff --git a/src/backend/resource_policy_priority.cc b/src/backend/resource_policy_priority.cc index bbad813..86bbe3d 100644 --- a/src/backend/resource_policy_priority.cc +++ b/src/backend/resource_policy_priority.cc @@ -21,8 +21,6 @@ #include #include -// FIXME: remove include -#include using namespace std; using namespace sgpem; @@ -49,7 +47,6 @@ ResourcePolicyPriority::enforce(Environment& environment, Environment::SubReques { typedef Environment::SubRequestQueue SubRequestQueue; - // the last inserted request goes on the first free place. SubRequestQueue old_queue(queue); queue.clear(); @@ -63,6 +60,7 @@ ResourcePolicyPriority::enforce(Environment& environment, Environment::SubReques + int pthis = sr.get_request().get_thread().get_current_priority(); // assume they are ordered by priority. bool inserted = false; typedef SubRequestQueue::iterator It; @@ -73,9 +71,6 @@ ResourcePolicyPriority::enforce(Environment& environment, Environment::SubReques { // non-allocated ones with lower priority go after the newly arrived int pthat = (**i).get_request().get_thread().get_current_priority(); - int pthis = sr.get_request().get_thread().get_current_priority(); - std::cout << "\npthat = " << pthat; - std::cout << "\npthis = " << pthis; if(!inserted && pthis <= pthat) { queue.push_back(&sr); diff --git a/src/testsuite/scheduling-wizards/environments/TheSecretOfMonkeyIsland.xgp b/src/testsuite/scheduling-wizards/environments/TheSecretOfMonkeyIsland.xgp new file mode 100644 index 0000000..117c332 --- /dev/null +++ b/src/testsuite/scheduling-wizards/environments/TheSecretOfMonkeyIsland.xgp @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +