]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/ada/libgnat/g-socthi__vxworks.ads
[Ada] Bump copyright year
[thirdparty/gcc.git] / gcc / ada / libgnat / g-socthi__vxworks.ads
CommitLineData
fbf5a39b
AC
1------------------------------------------------------------------------------
2-- --
3-- GNAT COMPILER COMPONENTS --
4-- --
5-- G N A T . S O C K E T S . T H I N --
6-- --
7-- S p e c --
8-- --
4b490c1e 9-- Copyright (C) 2002-2020, AdaCore --
fbf5a39b
AC
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- --
607d0635 13-- ware Foundation; either version 3, or (at your option) any later ver- --
fbf5a39b
AC
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 --
607d0635
AC
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/>. --
fbf5a39b
AC
26-- --
27-- GNAT was originally developed by the GNAT team at New York University. --
28-- Extensive contributions were provided by Ada Core Technologies Inc. --
29-- --
30------------------------------------------------------------------------------
31
32-- This package provides a target dependent thin interface to the sockets
33-- layer for use by the GNAT.Sockets package (g-socket.ads). This package
34-- should not be directly with'ed by an applications program.
35
36-- This is the version for VxWorks
37
47752af2 38with Interfaces.C;
fbf5a39b 39
fbf5a39b 40with GNAT.OS_Lib;
1b686dc4 41with GNAT.Sockets.Thin_Common;
fbf5a39b
AC
42
43with System;
b29def53 44with System.CRTL;
fbf5a39b
AC
45
46package GNAT.Sockets.Thin is
47
1b686dc4 48 use Thin_Common;
fbf5a39b 49
1b686dc4 50 package C renames Interfaces.C;
fbf5a39b
AC
51
52 function Socket_Errno return Integer renames GNAT.OS_Lib.Errno;
a2cb348e 53 -- Returns last socket error number
fbf5a39b 54
3d3bf932
TQ
55 procedure Set_Socket_Errno (Errno : Integer) renames GNAT.OS_Lib.Set_Errno;
56 -- Set last socket error number
57
3e5b1f32 58 function Socket_Error_Message (Errno : Integer) return String;
a2cb348e 59 -- Returns the error message string for the error number Errno. If Errno is
47a5501d 60 -- not known, returns "Unknown system error".
fbf5a39b 61
3e1fd98f
TQ
62 function Host_Errno return Integer;
63 pragma Import (C, Host_Errno, "__gnat_get_h_errno");
64 -- Returns last host error number
65
47a5501d
TQ
66 package Host_Error_Messages is
67
47752af2 68 function Host_Error_Message (H_Errno : Integer) return String;
47a5501d
TQ
69 -- Returns the error message string for the host error number H_Errno.
70 -- If H_Errno is not known, returns "Unknown system error".
71
72 end Host_Error_Messages;
73
47a5501d
TQ
74 --------------------------------
75 -- Standard library functions --
76 --------------------------------
77
fbf5a39b
AC
78 function C_Accept
79 (S : C.int;
80 Addr : System.Address;
3d3bf932 81 Addrlen : not null access C.int) return C.int;
fbf5a39b
AC
82
83 function C_Bind
84 (S : C.int;
85 Name : System.Address;
3e1fd98f 86 Namelen : C.int) return C.int;
fbf5a39b
AC
87
88 function C_Close
3e1fd98f 89 (Fd : C.int) return C.int;
fbf5a39b
AC
90
91 function C_Connect
92 (S : C.int;
93 Name : System.Address;
3e1fd98f 94 Namelen : C.int) return C.int;
fbf5a39b 95
fbf5a39b
AC
96 function C_Gethostname
97 (Name : System.Address;
3e1fd98f 98 Namelen : C.int) return C.int;
fbf5a39b
AC
99
100 function C_Getpeername
101 (S : C.int;
102 Name : System.Address;
3d3bf932 103 Namelen : not null access C.int) return C.int;
fbf5a39b 104
fbf5a39b
AC
105 function C_Getsockname
106 (S : C.int;
107 Name : System.Address;
3d3bf932 108 Namelen : not null access C.int) return C.int;
fbf5a39b
AC
109
110 function C_Getsockopt
111 (S : C.int;
112 Level : C.int;
113 Optname : C.int;
114 Optval : System.Address;
3d3bf932 115 Optlen : not null access C.int) return C.int;
fbf5a39b 116
f26d5cd3
AC
117 function Socket_Ioctl
118 (S : C.int;
6db566c3 119 Req : SOSC.IOCTL_Req_T;
f26d5cd3 120 Arg : access C.int) return C.int;
fbf5a39b 121
3d3bf932
TQ
122 function C_Listen
123 (S : C.int;
124 Backlog : C.int) return C.int;
fbf5a39b 125
fbf5a39b
AC
126 function C_Recv
127 (S : C.int;
128 Msg : System.Address;
129 Len : C.int;
3e1fd98f 130 Flags : C.int) return C.int;
fbf5a39b
AC
131
132 function C_Recvfrom
133 (S : C.int;
134 Msg : System.Address;
135 Len : C.int;
136 Flags : C.int;
3743d5bd 137 From : System.Address;
3d3bf932 138 Fromlen : not null access C.int) return C.int;
fbf5a39b 139
ac72c9c5
AC
140 function C_Recvmsg
141 (S : C.int;
142 Msg : System.Address;
b29def53 143 Flags : C.int) return System.CRTL.ssize_t;
ac72c9c5 144
fbf5a39b
AC
145 function C_Select
146 (Nfds : C.int;
3dd9959c
AC
147 Readfds : access Fd_Set;
148 Writefds : access Fd_Set;
149 Exceptfds : access Fd_Set;
3e1fd98f 150 Timeout : Timeval_Access) return C.int;
fbf5a39b 151
ac72c9c5
AC
152 function C_Sendmsg
153 (S : C.int;
154 Msg : System.Address;
b29def53 155 Flags : C.int) return System.CRTL.ssize_t;
ac72c9c5 156
fbf5a39b
AC
157 function C_Sendto
158 (S : C.int;
159 Msg : System.Address;
160 Len : C.int;
161 Flags : C.int;
3743d5bd 162 To : System.Address;
3e1fd98f 163 Tolen : C.int) return C.int;
fbf5a39b
AC
164
165 function C_Setsockopt
166 (S : C.int;
167 Level : C.int;
168 Optname : C.int;
169 Optval : System.Address;
3e1fd98f 170 Optlen : C.int) return C.int;
fbf5a39b
AC
171
172 function C_Shutdown
3e1fd98f
TQ
173 (S : C.int;
174 How : C.int) return C.int;
fbf5a39b
AC
175
176 function C_Socket
177 (Domain : C.int;
178 Typ : C.int;
3e1fd98f 179 Protocol : C.int) return C.int;
fbf5a39b 180
fd0d7b4e
DA
181 Default_Socket_Pair_Family : constant := SOSC.AF_INET;
182 -- VxWorks has not socketpair system call, and C_Socketpair below is
183 -- implemented on loopback connected network sockets.
184
185 function C_Socketpair
186 (Domain : C.int;
187 Typ : C.int;
188 Protocol : C.int;
189 Fds : not null access Fd_Pair) return C.int;
190 -- Creates pair of connected sockets
191
fbf5a39b 192 function C_System
3e1fd98f 193 (Command : System.Address) return C.int;
fbf5a39b 194
47a5501d
TQ
195 -------------------------------------------------------
196 -- Signalling file descriptors for selector abortion --
197 -------------------------------------------------------
198
3d3bf932
TQ
199 package Signalling_Fds is
200
201 function Create (Fds : not null access Fd_Pair) return C.int;
202 pragma Convention (C, Create);
203 -- Create a pair of connected descriptors suitable for use with C_Select
204 -- (used for signalling in Selector objects).
205
206 function Read (Rsig : C.int) return C.int;
207 pragma Convention (C, Read);
208 -- Read one byte of data from rsig, the read end of a pair of signalling
209 -- fds created by Create_Signalling_Fds.
210
211 function Write (Wsig : C.int) return C.int;
212 pragma Convention (C, Write);
213 -- Write one byte of data to wsig, the write end of a pair of signalling
214 -- fds created by Create_Signalling_Fds.
215
47a5501d
TQ
216 procedure Close (Sig : C.int);
217 pragma Convention (C, Close);
218 -- Close one end of a pair of signalling fds (ignoring any error)
219
3d3bf932
TQ
220 end Signalling_Fds;
221
47a5501d 222 procedure Initialize;
fbf5a39b 223 procedure Finalize;
fbf5a39b
AC
224
225private
fbf5a39b
AC
226 pragma Import (C, C_Bind, "bind");
227 pragma Import (C, C_Close, "close");
228 pragma Import (C, C_Gethostname, "gethostname");
229 pragma Import (C, C_Getpeername, "getpeername");
230 pragma Import (C, C_Getsockname, "getsockname");
231 pragma Import (C, C_Getsockopt, "getsockopt");
fbf5a39b 232 pragma Import (C, C_Listen, "listen");
fbf5a39b
AC
233 pragma Import (C, C_Select, "select");
234 pragma Import (C, C_Setsockopt, "setsockopt");
235 pragma Import (C, C_Shutdown, "shutdown");
fbf5a39b 236 pragma Import (C, C_System, "system");
fbf5a39b 237end GNAT.Sockets.Thin;