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-- -- 9-- Copyright (C) 2002-2012, 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-- 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 38with Interfaces.C.Strings; 39 40with GNAT.OS_Lib; 41with GNAT.Sockets.Thin_Common; 42 43with System; 44with System.CRTL; 45 46package GNAT.Sockets.Thin is 47 48 use Thin_Common; 49 50 package C renames Interfaces.C; 51 52 use type System.CRTL.ssize_t; 53 54 function Socket_Errno return Integer renames GNAT.OS_Lib.Errno; 55 -- Returns last socket error number 56 57 procedure Set_Socket_Errno (Errno : Integer) renames GNAT.OS_Lib.Set_Errno; 58 -- Set last socket error number 59 60 function Socket_Error_Message (Errno : Integer) return C.Strings.chars_ptr; 61 -- Returns the error message string for the error number Errno. If Errno is 62 -- not known, returns "Unknown system error". 63 64 function Host_Errno return Integer; 65 pragma Import (C, Host_Errno, "__gnat_get_h_errno"); 66 -- Returns last host error number 67 68 package Host_Error_Messages is 69 70 function Host_Error_Message 71 (H_Errno : Integer) return C.Strings.chars_ptr; 72 -- Returns the error message string for the host error number H_Errno. 73 -- If H_Errno is not known, returns "Unknown system error". 74 75 end Host_Error_Messages; 76 77 -------------------------------- 78 -- Standard library functions -- 79 -------------------------------- 80 81 function C_Accept 82 (S : C.int; 83 Addr : System.Address; 84 Addrlen : not null access C.int) return C.int; 85 86 function C_Bind 87 (S : C.int; 88 Name : System.Address; 89 Namelen : C.int) return C.int; 90 91 function C_Close 92 (Fd : C.int) return C.int; 93 94 function C_Connect 95 (S : C.int; 96 Name : System.Address; 97 Namelen : C.int) return C.int; 98 99 function C_Gethostname 100 (Name : System.Address; 101 Namelen : C.int) return C.int; 102 103 function C_Getpeername 104 (S : C.int; 105 Name : System.Address; 106 Namelen : not null access C.int) return C.int; 107 108 function C_Getsockname 109 (S : C.int; 110 Name : System.Address; 111 Namelen : not null access C.int) return C.int; 112 113 function C_Getsockopt 114 (S : C.int; 115 Level : C.int; 116 Optname : C.int; 117 Optval : System.Address; 118 Optlen : not null access C.int) return C.int; 119 120 function Socket_Ioctl 121 (S : C.int; 122 Req : SOSC.IOCTL_Req_T; 123 Arg : access C.int) return C.int; 124 125 function C_Listen 126 (S : C.int; 127 Backlog : C.int) return C.int; 128 129 function C_Recv 130 (S : C.int; 131 Msg : System.Address; 132 Len : C.int; 133 Flags : C.int) return C.int; 134 135 function C_Recvfrom 136 (S : C.int; 137 Msg : System.Address; 138 Len : C.int; 139 Flags : C.int; 140 From : System.Address; 141 Fromlen : not null access C.int) return C.int; 142 143 function C_Recvmsg 144 (S : C.int; 145 Msg : System.Address; 146 Flags : C.int) return System.CRTL.ssize_t; 147 148 function C_Select 149 (Nfds : C.int; 150 Readfds : access Fd_Set; 151 Writefds : access Fd_Set; 152 Exceptfds : access Fd_Set; 153 Timeout : Timeval_Access) return C.int; 154 155 function C_Sendmsg 156 (S : C.int; 157 Msg : System.Address; 158 Flags : C.int) return System.CRTL.ssize_t; 159 160 function C_Sendto 161 (S : C.int; 162 Msg : System.Address; 163 Len : C.int; 164 Flags : C.int; 165 To : System.Address; 166 Tolen : C.int) return C.int; 167 168 function C_Setsockopt 169 (S : C.int; 170 Level : C.int; 171 Optname : C.int; 172 Optval : System.Address; 173 Optlen : C.int) return C.int; 174 175 function C_Shutdown 176 (S : C.int; 177 How : C.int) return C.int; 178 179 function C_Socket 180 (Domain : C.int; 181 Typ : C.int; 182 Protocol : C.int) return C.int; 183 184 function C_System 185 (Command : System.Address) return C.int; 186 187 ------------------------------------------------------- 188 -- Signalling file descriptors for selector abortion -- 189 ------------------------------------------------------- 190 191 package Signalling_Fds is 192 193 function Create (Fds : not null access Fd_Pair) return C.int; 194 pragma Convention (C, Create); 195 -- Create a pair of connected descriptors suitable for use with C_Select 196 -- (used for signalling in Selector objects). 197 198 function Read (Rsig : C.int) return C.int; 199 pragma Convention (C, Read); 200 -- Read one byte of data from rsig, the read end of a pair of signalling 201 -- fds created by Create_Signalling_Fds. 202 203 function Write (Wsig : C.int) return C.int; 204 pragma Convention (C, Write); 205 -- Write one byte of data to wsig, the write end of a pair of signalling 206 -- fds created by Create_Signalling_Fds. 207 208 procedure Close (Sig : C.int); 209 pragma Convention (C, Close); 210 -- Close one end of a pair of signalling fds (ignoring any error) 211 212 end Signalling_Fds; 213 214 procedure Initialize; 215 procedure Finalize; 216 217private 218 pragma Import (C, C_Bind, "bind"); 219 pragma Import (C, C_Close, "close"); 220 pragma Import (C, C_Gethostname, "gethostname"); 221 pragma Import (C, C_Getpeername, "getpeername"); 222 pragma Import (C, C_Getsockname, "getsockname"); 223 pragma Import (C, C_Getsockopt, "getsockopt"); 224 pragma Import (C, C_Listen, "listen"); 225 pragma Import (C, C_Select, "select"); 226 pragma Import (C, C_Setsockopt, "setsockopt"); 227 pragma Import (C, C_Shutdown, "shutdown"); 228 pragma Import (C, C_System, "system"); 229end GNAT.Sockets.Thin; 230