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-2017, Florida State University             --
10--          Copyright (C) 1995-2019, Free Software Foundation, Inc.         --
11--                                                                          --
12-- GNAT is free software;  you can  redistribute it  and/or modify it under --
13-- terms of the  GNU General Public License as published  by the Free Soft- --
14-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
15-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
16-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
17-- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
18--                                                                          --
19-- As a special exception under Section 7 of GPL version 3, you are granted --
20-- additional permissions described in the GCC Runtime Library Exception,   --
21-- version 3.1, as published by the Free Software Foundation.               --
22--                                                                          --
23-- You should have received a copy of the GNU General Public License and    --
24-- a copy of the GCC Runtime Library Exception along with this program;     --
25-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
26-- <http://www.gnu.org/licenses/>.                                          --
27--                                                                          --
28-- GNARL was developed by the GNARL team at Florida State University. It is --
29-- now maintained by Ada Core Technologies Inc. in cooperation with Florida --
30-- State University (http://www.gnat.com).                                  --
31--                                                                          --
32-- The GNARL files that were developed for RTEMS are maintained by  On-Line --
33-- Applications Research Corporation (http://www.oarcorp.com)  in  coopera- --
34-- tion with Ada Core Technologies Inc. and Florida State University.       --
35--                                                                          --
36------------------------------------------------------------------------------
37
38--  This is the RTEMS version of this package
39
40--  This package encapsulates all direct interfaces to OS services
41--  that are needed by children of System.
42
43pragma Polling (Off);
44--  Turn off polling, we do not want ATC polling to take place during
45--  tasking operations. It causes infinite loops and other problems.
46
47with Interfaces.C; use Interfaces.C;
48package body System.OS_Interface is
49
50   -----------------
51   -- To_Duration --
52   -----------------
53
54   function To_Duration (TS : timespec) return Duration is
55   begin
56      return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9;
57   end To_Duration;
58
59   ------------------------
60   -- To_Target_Priority --
61   ------------------------
62
63   function To_Target_Priority
64     (Prio : System.Any_Priority) return Interfaces.C.int
65   is
66   begin
67      return Interfaces.C.int (Prio);
68   end To_Target_Priority;
69
70   -----------------
71   -- To_Timespec --
72   -----------------
73
74   function To_Timespec (D : Duration) return timespec is
75      S : time_t;
76      F : Duration;
77   begin
78      S := time_t (Long_Long_Integer (D));
79      F := D - Duration (S);
80
81      --  If F has negative value due to round-up, adjust for positive F value
82
83      if F < 0.0 then
84         S := S - 1;
85         F := F + 1.0;
86      end if;
87      return timespec'(tv_sec => S,
88                       tv_nsec => long (Long_Long_Integer (F * 10#1#E9)));
89   end To_Timespec;
90
91   ------------------
92   -- pthread_init --
93   ------------------
94
95   procedure pthread_init is
96   begin
97      null;
98   end pthread_init;
99
100   --------------------
101   -- Get_Stack_Base --
102   --------------------
103
104   function Get_Stack_Base (thread : pthread_t) return Address is
105      pragma Warnings (Off, thread);
106
107   begin
108      return Null_Address;
109   end Get_Stack_Base;
110
111   -----------------
112   -- sigaltstack --
113   -----------------
114
115   function sigaltstack
116     (ss  : not null access stack_t;
117      oss : access stack_t) return int is
118      pragma Unreferenced (ss);
119      pragma Unreferenced (oss);
120   begin
121      return 0;
122   end sigaltstack;
123
124   -----------------------------------
125   -- pthread_rwlockattr_setkind_np --
126   -----------------------------------
127
128   function pthread_rwlockattr_setkind_np
129     (attr : access pthread_rwlockattr_t;
130      pref : int) return int is
131      pragma Unreferenced (attr);
132      pragma Unreferenced (pref);
133   begin
134      return 0;
135   end pthread_rwlockattr_setkind_np;
136
137end System.OS_Interface;
138