summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2006-10-31 18:11:57 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2006-10-31 18:11:57 +0000
commitaaf3a95f087d99f677bd7ed8d0ca85b5ad0191b3 (patch)
treea36042cc3adece3ba97ff82823b8989e6be471d3
parentebf18fc8d6b3cafae38c1bf838f7cde8f3c8a476 (diff)
downloadgcc-aaf3a95f087d99f677bd7ed8d0ca85b5ad0191b3.tar.gz
2006-10-31 Jose Ruiz <ruiz@adacore.com>
* s-tpobop.adb (Requeue_Call): Introduce a dispatching point when requeuing to the same protected object to give higher priority tasks the opportunity to execute. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118318 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ada/s-tpobop.adb6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/ada/s-tpobop.adb b/gcc/ada/s-tpobop.adb
index c65438a9789..b8bfc9a3ef9 100644
--- a/gcc/ada/s-tpobop.adb
+++ b/gcc/ada/s-tpobop.adb
@@ -755,6 +755,12 @@ package body System.Tasking.Protected_Objects.Operations is
else
-- Requeue is to same protected object
+ -- ??? Try to compensate apparent failure of the
+ -- scheduler on some OS (e.g VxWorks) to give higher
+ -- priority tasks a chance to run (see CXD6002).
+
+ STPO.Yield (False);
+
if Entry_Call.Requeue_With_Abort
and then Entry_Call.Cancellation_Attempted
then