s-osinte-rtems.adb: Add sigalstack function.
authorJoel Sherrill <joel.sherrill@oarcorp.com>
Tue, 22 Apr 2008 14:15:04 +0000 (14:15 +0000)
committerJoel Sherrill <joel@gcc.gnu.org>
Tue, 22 Apr 2008 14:15:04 +0000 (14:15 +0000)
2008-04-22  Joel Sherrill <joel.sherrill@oarcorp.com>

* s-osinte-rtems.adb: Add sigalstack function.
* s-osinte-rtems.ads: Add SO_ONSTACK and sigalstack
function. Add Alternate_Stack and Alternate_Stack_Size.
Add missing process_shared field to pthread_condattr_t
and change ss_low_priority to int from timespec.

From-SVN: r134560

gcc/ada/ChangeLog
gcc/ada/s-osinte-rtems.adb
gcc/ada/s-osinte-rtems.ads

index d4a76a68b04ffa30de97cd408693cfae1589f940..0cf552efba789392909b5885c87d717f5cf59895 100644 (file)
@@ -1,3 +1,11 @@
+2008-04-22  Joel Sherrill <joel.sherrill@oarcorp.com>
+
+       * s-osinte-rtems.adb: Add sigalstack function.
+       * s-osinte-rtems.ads: Add SO_ONSTACK and sigalstack
+       function. Add Alternate_Stack and Alternate_Stack_Size.
+       Add missing process_shared field to pthread_condattr_t
+       and change ss_low_priority to int from timespec.
+
 2008-04-22  Samuel Tardieu  <sam@rfc1149.net>
 
        * i-forbla.adb: Link against -llapack and -lblas by default
index 494947cbd7f25459cc42e5b19cba245aae378e18..1e4efbc351db0c296bb3c321d86669967b1b3812 100644 (file)
@@ -135,4 +135,13 @@ package body System.OS_Interface is
       return 0;
    end Get_Page_Size;
 
+   function sigaltstack
+     (ss  : not null access stack_t;
+      oss : access stack_t) return int is
+      pragma Unreferenced (ss);
+      pragma Unreferenced (oss);
+   begin
+      return 0;
+   end sigaltstack;
+
 end System.OS_Interface;
index f28e14d30831b29feadcb09faeee9e3a687b3e4b..8d5483b6c38d8bfabc01a94f78cc49fe7e3ae3c7 100644 (file)
 --                                                                          --
 ------------------------------------------------------------------------------
 
---  This is the RTEMS version of this package
-
---  These are guesses based on what I think the GNARL team will want to
---  call the rtems configurations.  We use CPU-rtems for the rtems
---  configurations.
+--  This is the RTEMS version of this package.
+--
+--  RTEMS target names are of the form CPU-rtems.
+--  This implementation is designed to work on ALL RTEMS targets.
+--  The RTEMS implementation is primarily based upon the POSIX threads
+--  API but there are also bindings to GNAT/RTEMS support routines
+--  to insulate this code from C API specific details and, in some
+--  cases, obtain target architecture and BSP specific information
+--  that is unavailable at the time this package is built.
 
 --  This package encapsulates all direct interfaces to OS services
 --  that are needed by children of System.
 
 --  PLEASE DO NOT add any with-clauses to this package
---  or remove the pragma Elaborate_Body.
+--  or remove the pragma Preelaborate.
 --  It is designed to be a bottom-level (leaf) package.
 
 with Interfaces.C;
@@ -141,6 +145,11 @@ package System.OS_Interface is
 
    SA_SIGINFO  : constant := 16#02#;
 
+   SA_ONSTACK : constant := 16#00#;
+   --  SA_ONSTACK is not defined on RTEMS, but it is refered to in the POSIX
+   --  implementation of System.Interrupt_Management. Therefore we define a
+   --  dummy value of zero here so that setting this flag is a nop.
+
    SIG_BLOCK   : constant := 1;
    SIG_UNBLOCK : constant := 2;
    SIG_SETMASK : constant := 3;
@@ -249,6 +258,23 @@ package System.OS_Interface is
    -- Stack --
    -----------
 
+   type stack_t is record
+      ss_sp    : System.Address;
+      ss_flags : int;
+      ss_size  : size_t;
+   end record;
+   pragma Convention (C, stack_t);
+
+   function sigaltstack
+     (ss  : not null access stack_t;
+      oss : access stack_t) return int;
+
+   Alternate_Stack : aliased System.Address;
+   --  This is a dummy definition, never used (Alternate_Stack_Size is null)
+
+   Alternate_Stack_Size : constant := 0;
+   --  No alternate signal stack is used on this platform
+
    Stack_Base_Available : constant Boolean := False;
    --  Indicates whether the stack base is available on this target.
    --  This allows us to share s-osinte.adb between all the FSU/RTEMS
@@ -386,7 +412,7 @@ package System.OS_Interface is
 
    type struct_sched_param is record
       sched_priority      : int;
-      ss_low_priority     : timespec;
+      ss_low_priority     : int;
       ss_replenish_period : timespec;
       ss_initial_budget   : timespec;
    end record;
@@ -512,7 +538,8 @@ private
    pragma Convention (C, pthread_attr_t);
 
    type pthread_condattr_t is record
-      flags        : int;
+      flags           : int;
+      process_shared  : int;
    end record;
    pragma Convention (C, pthread_condattr_t);