From 3fa87ef8fcb647c77882424daa96bf50b24b3213 Mon Sep 17 00:00:00 2001 From: John David Anglin Date: Fri, 11 Jan 2008 01:00:48 +0000 Subject: [PATCH] re PR ada/34466 (s-tasinf.ads:81:42: "cpu_set_t" not declared in "OS_Interface") PR ada/34466 * s-osinte-linux-hppa.ads (SC_NPROCESSORS_ONLN): New constant for sysconf call. (bit_field): New packed boolean type used by cpu_set_t. (cpu_set_t): New type corresponding to the C type with the same name. Note that on the Ada side we use a bit field array for the affinity mask. There is not need for the C macro for setting individual bit. (pthread_setaffinity_np): New imported routine. From-SVN: r131457 --- gcc/ada/ChangeLog | 12 ++++++++++++ gcc/ada/s-osinte-linux-hppa.ads | 19 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 6537c951fb14..4dfdde62954c 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,15 @@ +2008-01-10 John David Anglin + + PR ada/34466 + * s-osinte-linux-hppa.ads (SC_NPROCESSORS_ONLN): New constant for + sysconf call. + (bit_field): New packed boolean type used by cpu_set_t. + (cpu_set_t): New type corresponding to the C type with + the same name. Note that on the Ada side we use a bit + field array for the affinity mask. There is not need + for the C macro for setting individual bit. + (pthread_setaffinity_np): New imported routine. + 2008-01-03 Tero Koskinen PR ada/34647 diff --git a/gcc/ada/s-osinte-linux-hppa.ads b/gcc/ada/s-osinte-linux-hppa.ads index 00b79af1ad52..1c4386bfe820 100644 --- a/gcc/ada/s-osinte-linux-hppa.ads +++ b/gcc/ada/s-osinte-linux-hppa.ads @@ -244,6 +244,7 @@ package System.OS_Interface is pragma Import (C, sysconf); SC_CLK_TCK : constant := 2; + SC_NPROCESSORS_ONLN : constant := 84; ------------------------- -- Priority Scheduling -- @@ -463,6 +464,24 @@ package System.OS_Interface is destructor : destructor_pointer) return int; pragma Import (C, pthread_key_create, "pthread_key_create"); + CPU_SETSIZE : constant := 1_024; + + type bit_field is array (1 .. CPU_SETSIZE) of Boolean; + for bit_field'Size use CPU_SETSIZE; + pragma Pack (bit_field); + pragma Convention (C, bit_field); + + type cpu_set_t is record + bits : bit_field; + end record; + pragma Convention (C, cpu_set_t); + + function pthread_setaffinity_np + (thread : pthread_t; + cpusetsize : size_t; + cpuset : access cpu_set_t) return int; + pragma Import (C, pthread_setaffinity_np, "__gnat_pthread_setaffinity_np"); + private type sigset_t is array (0 .. 31) of unsigned_long; -- 2.47.2