Hi Olivier, >> On 19 Sep 2019, at 18:40, Olivier Hainque <hain...@adacore.com> wrote: > >>>> Given that the test cannot compile on anything but *-*-linux* and >>>> *-*-mingw*, I'd rather restrict the test to those two (or more targets >>>> that decide to implement the missing interface). > >> Works for me as well. > [...] >> We can take care of adding the required filter. > > I have just committed the attached patch to this effect. > Thanks again for the heads-up!
thanks. > 2019-09-20 Olivier Hainque <hain...@adacore.com> > > testsuite/ > > * gnat.dg/system_info1.adb: Restrict to *-*-linux* and *-*-mingw*. I'd keep the target list alphabetical. Can do so when the Solaris patch goes in. Here's what I've successfully tested last night on both i386-pc-solaris2.11 and sparc-sun-solaris2.11, shamelessly stolen from the Linux counterparts. If it is acceptable, I'd add *-*-solaris2.* to the target list when merging. Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University 2019-09-19 Rainer Orth <r...@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.
# HG changeset patch # Parent 48b6a952486ff0ee28ce4b9c1bd4f77a4078491d Provide Task_Info.Number_Of_Processors on Solaris diff --git a/gcc/ada/libgnarl/s-osinte__solaris.ads b/gcc/ada/libgnarl/s-osinte__solaris.ads --- 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 --- 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 --- 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;