File : g-socthi-vxworks.ads


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