]>
Commit | Line | Data |
---|---|---|
d0567dc0 PMR |
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) 1991-2017, Florida State University -- | |
4b490c1e | 10 | -- Copyright (C) 1995-2020, AdaCore -- |
d0567dc0 PMR |
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. -- | |
29 | -- Extensive contributions were provided by Ada Core Technologies, Inc. -- | |
30 | -- -- | |
31 | ------------------------------------------------------------------------------ | |
32 | ||
33 | -- This version is for QNX operating systems | |
34 | ||
35 | pragma Polling (Off); | |
36 | -- Turn off polling, we do not want ATC polling to take place during | |
37 | -- tasking operations. It causes infinite loops and other problems. | |
38 | ||
39 | -- This package encapsulates all direct interfaces to OS services | |
40 | -- that are needed by children of System. | |
41 | ||
42 | with Interfaces.C; use Interfaces.C; | |
43 | package body System.OS_Interface is | |
44 | ||
3f89eb7f JS |
45 | ----------------- |
46 | -- sigaltstack -- | |
47 | ----------------- | |
48 | ||
49 | function sigaltstack | |
50 | (ss : not null access stack_t; | |
51 | oss : access stack_t) return int | |
52 | is | |
53 | pragma Unreferenced (ss, oss); | |
54 | begin | |
55 | return 0; | |
56 | end sigaltstack; | |
57 | ||
d0567dc0 PMR |
58 | -------------------- |
59 | -- Get_Stack_Base -- | |
60 | -------------------- | |
61 | ||
62 | function Get_Stack_Base (thread : pthread_t) return Address is | |
3f89eb7f | 63 | pragma Unreferenced (thread); |
d0567dc0 PMR |
64 | begin |
65 | return Null_Address; | |
66 | end Get_Stack_Base; | |
67 | ||
68 | ------------------ | |
69 | -- pthread_init -- | |
70 | ------------------ | |
71 | ||
72 | procedure pthread_init is | |
73 | begin | |
74 | null; | |
75 | end pthread_init; | |
76 | ||
77 | ----------------- | |
78 | -- To_Duration -- | |
79 | ----------------- | |
80 | ||
81 | function To_Duration (TS : timespec) return Duration is | |
82 | begin | |
83 | return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9; | |
84 | end To_Duration; | |
85 | ||
86 | ------------------------ | |
87 | -- To_Target_Priority -- | |
88 | ------------------------ | |
89 | ||
90 | function To_Target_Priority | |
91 | (Prio : System.Any_Priority) return Interfaces.C.int | |
92 | is | |
93 | begin | |
94 | return Interfaces.C.int (Prio + 1); | |
95 | end To_Target_Priority; | |
96 | ||
97 | ----------------- | |
98 | -- To_Timespec -- | |
99 | ----------------- | |
100 | ||
101 | function To_Timespec (D : Duration) return timespec is | |
102 | S : time_t; | |
103 | F : Duration; | |
104 | ||
105 | begin | |
106 | S := time_t (Long_Long_Integer (D)); | |
107 | F := D - Duration (S); | |
108 | ||
109 | -- If F has negative value due to a round-up, adjust for positive F | |
110 | -- value. | |
111 | ||
112 | if F < 0.0 then | |
113 | S := S - 1; | |
114 | F := F + 1.0; | |
115 | end if; | |
116 | ||
117 | return timespec'(tv_sec => S, | |
118 | tv_nsec => long (Long_Long_Integer (F * 10#1#E9))); | |
119 | end To_Timespec; | |
120 | ||
121 | end System.OS_Interface; |