OSDN Git Service

PR ada/34466
authordanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 11 Jan 2008 01:00:48 +0000 (01:00 +0000)
committerdanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 11 Jan 2008 01:00:48 +0000 (01:00 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131457 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/ChangeLog
gcc/ada/s-osinte-linux-hppa.ads

index 6537c95..4dfdde6 100644 (file)
@@ -1,3 +1,15 @@
+2008-01-10  John David Anglin  <dave.anglin.@nrc-cnrc.gc.ca>
+
+       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 <tero.koskinen@iki.fi>
 
        PR ada/34647
index 00b79af..1c4386b 100644 (file)
@@ -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;