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
This commit is contained in:
Rainer Orth 2019-09-23 09:13:21 +00:00 committed by Rainer Orth
parent 193410e311
commit e254277236
6 changed files with 41 additions and 1 deletions

View File

@ -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

View File

@ -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 --
-------------

View File

@ -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;

View File

@ -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;

View File

@ -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.

View File

@ -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;