diff options
author | Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> | 2019-09-23 09:13:21 +0000 |
---|---|---|
committer | Rainer Orth <ro@gcc.gnu.org> | 2019-09-23 09:13:21 +0000 |
commit | e25427723608118c1441aac4c4808e2360eb0b6c (patch) | |
tree | 8e93c5682c82a055e989daddadffaea2f4612035 /gcc | |
parent | 193410e311002ebe1013a7b18ad30c0c2e8f31b1 (diff) | |
download | gcc-e25427723608118c1441aac4c4808e2360eb0b6c.zip gcc-e25427723608118c1441aac4c4808e2360eb0b6c.tar.gz gcc-e25427723608118c1441aac4c4808e2360eb0b6c.tar.bz2 |
Provide Task_Info.Number_Of_Processors on Solaris
gcc/ada:
* libgnarl/s-osinte__solaris.ads (sysconf): Declare.
(SC_NPROCESSORS_ONLN): Define.
* libgnarl/s-tasinf__solaris.ads (Number_Of_Processors): Declare.
* libgnarl/s-tasinf__solaris.adb (N_CPU): New variable.
(Number_Of_Processors): New function.
gcc/testsuite:
* gnat.dg/system_info1.adb: Sort dg-do target list.
Add *-*-solaris2.*.
From-SVN: r276049
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/ada/libgnarl/s-osinte__solaris.ads | 5 | ||||
-rw-r--r-- | gcc/ada/libgnarl/s-tasinf__solaris.adb | 19 | ||||
-rw-r--r-- | gcc/ada/libgnarl/s-tasinf__solaris.ads | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gnat.dg/system_info1.adb | 2 |
6 files changed, 41 insertions, 1 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index c0bc883..08244e8 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,11 @@ +2019-09-23 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * libgnarl/s-osinte__solaris.ads (sysconf): Declare. + (SC_NPROCESSORS_ONLN): Define. + * libgnarl/s-tasinf__solaris.ads (Number_Of_Processors): Declare. + * libgnarl/s-tasinf__solaris.adb (N_CPU): New variable. + (Number_Of_Processors): New function. + 2019-09-23 Eric Botcazou <ebotcazou@adacore.com> * gcc-interface/trans.c (Regular_Loop_to_gnu): Do not rotate the loop diff --git a/gcc/ada/libgnarl/s-osinte__solaris.ads b/gcc/ada/libgnarl/s-osinte__solaris.ads index 2543225..be242ba 100644 --- a/gcc/ada/libgnarl/s-osinte__solaris.ads +++ b/gcc/ada/libgnarl/s-osinte__solaris.ads @@ -259,6 +259,11 @@ package System.OS_Interface is function To_Timespec (D : Duration) return timespec; pragma Inline (To_Timespec); + function sysconf (name : int) return long; + pragma Import (C, sysconf); + + SC_NPROCESSORS_ONLN : constant := 15; + ------------- -- Process -- ------------- diff --git a/gcc/ada/libgnarl/s-tasinf__solaris.adb b/gcc/ada/libgnarl/s-tasinf__solaris.adb index 9744d01..44a9115 100644 --- a/gcc/ada/libgnarl/s-tasinf__solaris.adb +++ b/gcc/ada/libgnarl/s-tasinf__solaris.adb @@ -84,4 +84,23 @@ package body System.Task_Info is return (False, False); end Unbound_Thread_Attributes; + N_CPU : Natural := 0; + pragma Atomic (N_CPU); + -- Cache CPU number. Use pragma Atomic to avoid a race condition when + -- setting N_CPU in Number_Of_Processors below. + + -------------------------- + -- Number_Of_Processors -- + -------------------------- + + function Number_Of_Processors return Positive is + begin + if N_CPU = 0 then + N_CPU := Natural + (OS_Interface.sysconf (OS_Interface.SC_NPROCESSORS_ONLN)); + end if; + + return N_CPU; + end Number_Of_Processors; + end System.Task_Info; diff --git a/gcc/ada/libgnarl/s-tasinf__solaris.ads b/gcc/ada/libgnarl/s-tasinf__solaris.ads index c3dc0f1..0d2cbfd 100644 --- a/gcc/ada/libgnarl/s-tasinf__solaris.ads +++ b/gcc/ada/libgnarl/s-tasinf__solaris.ads @@ -139,4 +139,7 @@ package System.Task_Info is Unspecified_Task_Info : constant Task_Info_Type := null; + function Number_Of_Processors return Positive; + -- Returns the number of processors on the running host + end System.Task_Info; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 02462fc..815aee0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-09-23 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> + + * gnat.dg/system_info1.adb: Sort dg-do target list. + Add *-*-solaris2.*. + 2019-09-23 Eric Botcazou <ebotcazou@adacore.com> * gnat.dg/specs/compile_time1.ads: New test. diff --git a/gcc/testsuite/gnat.dg/system_info1.adb b/gcc/testsuite/gnat.dg/system_info1.adb index e299bc4..fedcc22 100644 --- a/gcc/testsuite/gnat.dg/system_info1.adb +++ b/gcc/testsuite/gnat.dg/system_info1.adb @@ -3,7 +3,7 @@ -- both 32bit and 64bit Windows. Additional configurations where the -- feature was verified to work can opt-in. --- { dg-do run { target *-*-mingw* *-*-linux* } } +-- { dg-do run { target *-*-linux* *-*-mingw* *-*-solaris2.* } } with System.Multiprocessors; with System.Task_Info; |