* gcc.dg/guality/guality.exp: Skip on AIX.
[official-gcc.git] / gcc / ada / s-osinte-lynxos.adb
blob4b9957d4a27610b35c05ea4e0734f97d22f44d89
1 ------------------------------------------------------------------------------
2 -- --
3 -- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
4 -- --
5 -- S Y S T E M . O S _ I N T E R F A C E --
6 -- --
7 -- B o d y --
8 -- --
9 -- Copyright (C) 2001-2010, AdaCore --
10 -- --
11 -- GNAT is free software; you can redistribute it and/or modify it under --
12 -- terms of the GNU General Public License as published by the Free Soft- --
13 -- ware Foundation; either version 3, or (at your option) any later ver- --
14 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
15 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
16 -- or FITNESS FOR A PARTICULAR PURPOSE. --
17 -- --
18 -- As a special exception under Section 7 of GPL version 3, you are granted --
19 -- additional permissions described in the GCC Runtime Library Exception, --
20 -- version 3.1, as published by the Free Software Foundation. --
21 -- --
22 -- You should have received a copy of the GNU General Public License and --
23 -- a copy of the GCC Runtime Library Exception along with this program; --
24 -- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
25 -- <http://www.gnu.org/licenses/>. --
26 -- --
27 -- GNARL was developed by the GNARL team at Florida State University. --
28 -- Extensive contributions were provided by Ada Core Technologies, Inc. --
29 -- --
30 ------------------------------------------------------------------------------
32 -- This is a LynxOS (POSIX Threads) version of this package
34 pragma Polling (Off);
35 -- Turn off polling, we do not want ATC polling to take place during
36 -- tasking operations. It causes infinite loops and other problems.
38 package body System.OS_Interface is
40 use Interfaces.C;
42 -----------------
43 -- To_Duration --
44 -----------------
46 function To_Duration (TS : timespec) return Duration is
47 begin
48 return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9;
49 end To_Duration;
51 -----------------
52 -- To_Timespec --
53 -----------------
55 function To_Timespec (D : Duration) return timespec is
56 S : time_t;
57 F : Duration;
59 begin
60 S := time_t (Long_Long_Integer (D));
61 F := D - Duration (S);
63 -- If F has negative value due to a round-up, adjust for positive F
64 -- value.
66 if F < 0.0 then
67 S := S - 1;
68 F := F + 1.0;
69 end if;
71 return timespec'(tv_sec => S,
72 tv_nsec => long (Long_Long_Integer (F * 10#1#E9)));
73 end To_Timespec;
75 -------------
76 -- sigwait --
77 -------------
79 function sigwait
80 (set : access sigset_t;
81 sig : access Signal)
82 return int
84 function sigwaitinfo
85 (set : access sigset_t;
86 info : System.Address) return Signal;
87 pragma Import (C, sigwaitinfo, "sigwaitinfo");
89 begin
90 sig.all := sigwaitinfo (set, Null_Address);
92 if sig.all = -1 then
93 return errno;
94 end if;
96 return 0;
97 end sigwait;
99 --------------------
100 -- Get_Stack_Base --
101 --------------------
103 function Get_Stack_Base (thread : pthread_t) return Address is
104 pragma Warnings (Off, thread);
106 begin
107 return Null_Address;
108 end Get_Stack_Base;
110 ------------------
111 -- pthread_init --
112 ------------------
114 procedure pthread_init is
115 begin
116 null;
117 end pthread_init;
119 end System.OS_Interface;