1------------------------------------------------------------------------------
2--                                                                          --
3--                GNU ADA 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) 1991-2009 Florida State University              --
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. It is --
28-- now maintained by Ada Core Technologies Inc. in cooperation with Florida --
29-- State University (http://www.gnat.com).                                  --
30--                                                                          --
31-- The GNARL files that were developed for RTEMS are maintained by  On-Line --
32-- Applications Research Corporation (http://www.oarcorp.com)  in  coopera- --
33-- tion with Ada Core Technologies Inc. and Florida State University.       --
34--                                                                          --
35------------------------------------------------------------------------------
36
37--  This is the RTEMS version of this package
38
39--  This package encapsulates all direct interfaces to OS services
40--  that are needed by children of System.
41
42pragma Polling (Off);
43--  Turn off polling, we do not want ATC polling to take place during
44--  tasking operations. It causes infinite loops and other problems.
45
46with Interfaces.C; use Interfaces.C;
47package body System.OS_Interface is
48
49   -----------------
50   -- To_Duration --
51   -----------------
52
53   function To_Duration (TS : timespec) return Duration is
54   begin
55      return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9;
56   end To_Duration;
57
58   ------------------------
59   -- To_Target_Priority --
60   ------------------------
61
62   function To_Target_Priority
63     (Prio : System.Any_Priority) return Interfaces.C.int
64   is
65   begin
66      return Interfaces.C.int (Prio);
67   end To_Target_Priority;
68
69   -----------------
70   -- To_Timespec --
71   -----------------
72
73   function To_Timespec (D : Duration) return timespec is
74      S : time_t;
75      F : Duration;
76   begin
77      S := time_t (Long_Long_Integer (D));
78      F := D - Duration (S);
79
80      --  If F has negative value due to round-up, adjust for positive F value
81
82      if F < 0.0 then
83         S := S - 1;
84         F := F + 1.0;
85      end if;
86      return timespec'(tv_sec => S,
87                       tv_nsec => long (Long_Long_Integer (F * 10#1#E9)));
88   end To_Timespec;
89
90   ------------------
91   -- pthread_init --
92   ------------------
93
94   procedure pthread_init is
95   begin
96      null;
97   end pthread_init;
98
99   --------------------
100   -- Get_Stack_Base --
101   --------------------
102
103   function Get_Stack_Base (thread : pthread_t) return Address is
104      pragma Warnings (Off, thread);
105
106   begin
107      return Null_Address;
108   end Get_Stack_Base;
109
110   -----------------
111   -- sigaltstack --
112   -----------------
113
114   function sigaltstack
115     (ss  : not null access stack_t;
116      oss : access stack_t) return int is
117      pragma Unreferenced (ss);
118      pragma Unreferenced (oss);
119   begin
120      return 0;
121   end sigaltstack;
122
123   -----------------------------------
124   -- pthread_rwlockattr_setkind_np --
125   -----------------------------------
126
127   function pthread_rwlockattr_setkind_np
128     (attr : access pthread_rwlockattr_t;
129      pref : int) return int is
130      pragma Unreferenced (attr);
131      pragma Unreferenced (pref);
132   begin
133      return 0;
134   end pthread_rwlockattr_setkind_np;
135
136end System.OS_Interface;
137