2008-05-26 Jose Ruiz <ruiz@adacore.com>
authorJose Ruiz <ruiz@adacore.com>
Mon, 26 May 2008 09:41:28 +0000 (11:41 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Mon, 26 May 2008 09:41:28 +0000 (11:41 +0200)
* s-osinte-aix.adb:
(To_Target_Priority): Setting the time slice value to 0 or greater sets
the scheduling policy to FIFO within priorities or round-robin
respectively.
Hence, the priority must be set in this case to the one selected by the
user.

From-SVN: r135907

gcc/ada/s-osinte-aix.adb

index 469ce3bfbb44eb0d9b62a25e4844a07c4af554ca..cdaff52b20d3cb7b3404b9d68a8ee869a0ec3964 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                  B o d y                                 --
 --                                                                          --
---          Copyright (C) 1997-2007, Free Software Foundation, Inc.         --
+--          Copyright (C) 1997-2008, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNARL is free software; you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -65,13 +65,18 @@ package body System.OS_Interface is
       Dispatching_Policy : Character;
       pragma Import (C, Dispatching_Policy, "__gl_task_dispatching_policy");
 
+      Time_Slice_Val : Integer;
+      pragma Import (C, Time_Slice_Val, "__gl_time_slice_val");
+
    begin
       --  For the case SCHED_OTHER the only valid priority across all supported
-      --  versions of AIX is 1. Otherwise, for SCHED_RR and SCHED_FIFO, the
-      --  system defines priorities in the range 1 .. 127. This means that we
-      --  must map System.Any_Priority in the range 0 .. 126 to 1 .. 127.
+      --  versions of AIX is 1 (note that the scheduling policy can be set
+      --  with the pragma Task_Dispatching_Policy or setting the time slice
+      --  value). Otherwise, for SCHED_RR and SCHED_FIFO, the system defines
+      --  priorities in the range 1 .. 127. This means that we must map
+      --  System.Any_Priority in the range 0 .. 126 to 1 .. 127.
 
-      if Dispatching_Policy = ' ' then
+      if Dispatching_Policy = ' ' and then Time_Slice_Val < 0 then
          return 1;
       else
          return Interfaces.C.int (Prio) + 1;