------------------------------------------------------------------------------
--                                                                          --
--                         GNAT COMPILER COMPONENTS                         --
--                                                                          --
--                  S Y S T E M . O S _ C O N S T A N T S                   --
--                                                                          --
--                                 S p e c                                  --
--                                                                          --
--          Copyright (C) 2000-2009, Free Software Foundation, Inc.         --
--                                                                          --
-- GNAT is free software;  you can  redistribute it  and/or modify it under --
-- terms of the  GNU General Public License as published  by the Free Soft- --
-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
--                                                                          --
-- As a special exception under Section 7 of GPL version 3, you are granted --
-- additional permissions described in the GCC Runtime Library Exception,   --
-- version 3.1, as published by the Free Software Foundation.               --
--                                                                          --
-- You should have received a copy of the GNU General Public License and    --
-- a copy of the GCC Runtime Library Exception along with this program;     --
-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
-- <http://www.gnu.org/licenses/>.                                          --
--                                                                          --
-- GNAT was originally developed  by the GNAT team at  New York University. --
-- Extensive contributions were provided by Ada Core Technologies Inc.      --
--                                                                          --
------------------------------------------------------------------------------

pragma Style_Checks ("M32766");
--  Allow long lines

--  This package provides target dependent definitions of constant for use
--  by the GNAT runtime library. This package should not be directly with'd
--  by an application program.

--  This file is generated automatically, do not modify it by hand! Instead,
--  make changes to s-oscons-tmplt.c and rebuild the GNAT runtime library.
--  This is the version for i386-aux-freebsd8.0

with Interfaces.C;
package System.OS_Constants is

   pragma Pure;

   -----------------------------
   -- Platform identification --
   -----------------------------

   type OS_Type is (Windows, VMS, Other_OS);
   Target_OS             : constant OS_Type := Other_OS;
   Target_Name           : constant String  := "i386-aux-freebsd8.0";

   -------------------
   -- System limits --
   -------------------

   IOV_MAX               : constant := 1024;        --  Maximum writev iovcnt

   ---------------------
   -- File open modes --
   ---------------------

   O_RDWR                : constant := 2;           --  Read/write
   O_NOCTTY              : constant := 32768;       --  Don't change ctrl tty
   O_NDELAY              : constant := 4;           --  Nonblocking

   ----------------------
   -- Fcntl operations --
   ----------------------

   F_GETFL               : constant := 3;           --  Get flags
   F_SETFL               : constant := 4;           --  Set flags

   -----------------
   -- Fcntl flags --
   -----------------

   FNDELAY               : constant := 4;           --  Nonblocking

   ----------------------
   -- Ioctl operations --
   ----------------------

   FIONBIO               : constant := -2147195266; --  Set/clear non-blocking io
   FIONREAD              : constant := 1074030207;  --  How many bytes to read

   ------------------
   -- Errno values --
   ------------------

   --  The following constants are defined from <errno.h>

   EAGAIN                : constant := 35;          --  Try again
   ENOENT                : constant := 2;           --  File not found
   ENOMEM                : constant := 12;          --  Out of memory
   EACCES                : constant := 13;          --  Permission denied
   EADDRINUSE            : constant := 48;          --  Address already in use
   EADDRNOTAVAIL         : constant := 49;          --  Cannot assign address
   EAFNOSUPPORT          : constant := 47;          --  Addr family not supported
   EALREADY              : constant := 37;          --  Operation in progress
   EBADF                 : constant := 9;           --  Bad file descriptor
   ECONNABORTED          : constant := 53;          --  Connection aborted
   ECONNREFUSED          : constant := 61;          --  Connection refused
   ECONNRESET            : constant := 54;          --  Connection reset by peer
   EDESTADDRREQ          : constant := 39;          --  Destination addr required
   EFAULT                : constant := 14;          --  Bad address
   EHOSTDOWN             : constant := 64;          --  Host is down
   EHOSTUNREACH          : constant := 65;          --  No route to host
   EINPROGRESS           : constant := 36;          --  Operation now in progress
   EINTR                 : constant := 4;           --  Interrupted system call
   EINVAL                : constant := 22;          --  Invalid argument
   EIO                   : constant := 5;           --  Input output error
   EISCONN               : constant := 56;          --  Socket already connected
   ELOOP                 : constant := 62;          --  Too many symbolic links
   EMFILE                : constant := 24;          --  Too many open files
   EMSGSIZE              : constant := 40;          --  Message too long
   ENAMETOOLONG          : constant := 63;          --  Name too long
   ENETDOWN              : constant := 50;          --  Network is down
   ENETRESET             : constant := 52;          --  Disconn. on network reset
   ENETUNREACH           : constant := 51;          --  Network is unreachable
   ENOBUFS               : constant := 55;          --  No buffer space available
   ENOPROTOOPT           : constant := 42;          --  Protocol not available
   ENOTCONN              : constant := 57;          --  Socket not connected
   ENOTSOCK              : constant := 38;          --  Operation on non socket
   EOPNOTSUPP            : constant := 45;          --  Operation not supported
   EPIPE                 : constant := 32;          --  Broken pipe
   EPFNOSUPPORT          : constant := 46;          --  Unknown protocol family
   EPROTONOSUPPORT       : constant := 43;          --  Unknown protocol
   EPROTOTYPE            : constant := 41;          --  Unknown protocol type
   ERANGE                : constant := 34;          --  Result too large
   ESHUTDOWN             : constant := 58;          --  Cannot send once shutdown
   ESOCKTNOSUPPORT       : constant := 44;          --  Socket type not supported
   ETIMEDOUT             : constant := 60;          --  Connection timed out
   ETOOMANYREFS          : constant := 59;          --  Too many references
   EWOULDBLOCK           : constant := 35;          --  Operation would block

   ----------------------
   -- Terminal control --
   ----------------------

   TCSANOW               : constant := 0;           --  Immediate
   TCIFLUSH              : constant := 1;           --  Flush input
   CLOCAL                : constant := 32768;       --  Local
   CRTSCTS               : constant := 196608;      --  Hardware flow control
   CREAD                 : constant := 2048;        --  Read
   CS5                   : constant := 0;           --  5 data bits
   CS6                   : constant := 256;         --  6 data bits
   CS7                   : constant := 512;         --  7 data bits
   CS8                   : constant := 768;         --  8 data bits
   CSTOPB                : constant := 1024;        --  2 stop bits
   PARENB                : constant := 4096;        --  Parity enable
   PARODD                : constant := 8192;        --  Parity odd
   B0                    : constant := 0;           --  0 bps
   B50                   : constant := 50;          --  50 bps
   B75                   : constant := 75;          --  75 bps
   B110                  : constant := 110;         --  110 bps
   B134                  : constant := 134;         --  134 bps
   B150                  : constant := 150;         --  150 bps
   B200                  : constant := 200;         --  200 bps
   B300                  : constant := 300;         --  300 bps
   B600                  : constant := 600;         --  600 bps
   B1200                 : constant := 1200;        --  1200 bps
   B1800                 : constant := 1800;        --  1800 bps
   B2400                 : constant := 2400;        --  2400 bps
   B4800                 : constant := 4800;        --  4800 bps
   B9600                 : constant := 9600;        --  9600 bps
   B19200                : constant := 19200;       --  19200 bps
   B38400                : constant := 38400;       --  38400 bps
   B57600                : constant := 57600;       --  57600 bps
   B115200               : constant := 115200;      --  115200 bps
   B230400               : constant := 230400;      --  230400 bps
   B460800               : constant := 460800;      --  460800 bps
   B500000               : constant := -1;          --  500000 bps
   B576000               : constant := -1;          --  576000 bps
   B921600               : constant := 921600;      --  921600 bps
   B1000000              : constant := -1;          --  1000000 bps
   B1152000              : constant := -1;          --  1152000 bps
   B1500000              : constant := -1;          --  1500000 bps
   B2000000              : constant := -1;          --  2000000 bps
   B2500000              : constant := -1;          --  2500000 bps
   B3000000              : constant := -1;          --  3000000 bps
   B3500000              : constant := -1;          --  3500000 bps
   B4000000              : constant := -1;          --  4000000 bps

   ---------------------------------
   -- Terminal control characters --
   ---------------------------------

   VINTR                 : constant := 8;           --  Interrupt
   VQUIT                 : constant := 9;           --  Quit
   VERASE                : constant := 3;           --  Erase
   VKILL                 : constant := 5;           --  Kill
   VEOF                  : constant := 0;           --  EOF
   VTIME                 : constant := 17;          --  Read timeout
   VMIN                  : constant := 16;          --  Read min chars
   VSWTC                 : constant := -1;          --  Switch
   VSTART                : constant := 12;          --  Flow control start
   VSTOP                 : constant := 13;          --  Flow control stop
   VSUSP                 : constant := 10;          --  Suspend
   VEOL                  : constant := 1;           --  EOL
   VREPRINT              : constant := 6;           --  Reprint unread
   VDISCARD              : constant := 15;          --  Discard pending
   VWERASE               : constant := 4;           --  Word erase
   VLNEXT                : constant := 14;          --  Literal next
   VEOL2                 : constant := 2;           --  Alternative EOL

   --------------
   -- Families --
   --------------

   AF_INET               : constant := 2;           --  IPv4 address family
   AF_INET6              : constant := 28;          --  IPv6 address family

   ------------------
   -- Socket modes --
   ------------------

   SOCK_STREAM           : constant := 1;           --  Stream socket
   SOCK_DGRAM            : constant := 2;           --  Datagram socket

   -----------------
   -- Host errors --
   -----------------

   HOST_NOT_FOUND        : constant := 1;           --  Unknown host
   TRY_AGAIN             : constant := 2;           --  Host name lookup failure
   NO_DATA               : constant := 4;           --  No data record for name
   NO_RECOVERY           : constant := 3;           --  Non recoverable errors

   --------------------
   -- Shutdown modes --
   --------------------

   SHUT_RD               : constant := 0;           --  No more recv
   SHUT_WR               : constant := 1;           --  No more send
   SHUT_RDWR             : constant := 2;           --  No more recv/send

   ---------------------
   -- Protocol levels --
   ---------------------

   SOL_SOCKET            : constant := 65535;       --  Options for socket level
   IPPROTO_IP            : constant := 0;           --  Dummy protocol for IP
   IPPROTO_UDP           : constant := 17;          --  UDP
   IPPROTO_TCP           : constant := 6;           --  TCP

   -------------------
   -- Request flags --
   -------------------

   MSG_OOB               : constant := 1;           --  Process out-of-band data
   MSG_PEEK              : constant := 2;           --  Peek at incoming data
   MSG_EOR               : constant := 8;           --  Send end of record
   MSG_WAITALL           : constant := 64;          --  Wait for full reception
   MSG_NOSIGNAL          : constant := 131072;      --  No SIGPIPE on send
   MSG_Forced_Flags      : constant := 0;
   --  Flags set on all send(2) calls

   --------------------
   -- Socket options --
   --------------------

   TCP_NODELAY           : constant := 1;           --  Do not coalesce packets
   SO_REUSEADDR          : constant := 4;           --  Bind reuse local address
   SO_REUSEPORT          : constant := 512;         --  Bind reuse port number
   SO_KEEPALIVE          : constant := 8;           --  Enable keep-alive msgs
   SO_LINGER             : constant := 128;         --  Defer close to flush data
   SO_BROADCAST          : constant := 32;          --  Can send broadcast msgs
   SO_SNDBUF             : constant := 4097;        --  Set/get send buffer size
   SO_RCVBUF             : constant := 4098;        --  Set/get recv buffer size
   SO_SNDTIMEO           : constant := 4101;        --  Emission timeout
   SO_RCVTIMEO           : constant := 4102;        --  Reception timeout
   SO_ERROR              : constant := 4103;        --  Get/clear error status
   IP_MULTICAST_IF       : constant := 9;           --  Set/get mcast interface
   IP_MULTICAST_TTL      : constant := 10;          --  Set/get multicast TTL
   IP_MULTICAST_LOOP     : constant := 11;          --  Set/get mcast loopback
   IP_ADD_MEMBERSHIP     : constant := 12;          --  Join a multicast group
   IP_DROP_MEMBERSHIP    : constant := 13;          --  Leave a multicast group
   IP_PKTINFO            : constant := -1;          --  Get datagram info

   ----------------------
   -- Type definitions --
   ----------------------

   --  Sizes (in bytes) of the components of struct timeval
   SIZEOF_tv_sec         : constant := 4;           --  tv_sec
   SIZEOF_tv_usec        : constant := 4;           --  tv_usec

   --  Sizes of various data types
   SIZEOF_sockaddr_in    : constant := 16;          --  struct sockaddr_in
   SIZEOF_sockaddr_in6   : constant := 28;          --  struct sockaddr_in6
   SIZEOF_fd_set         : constant := 128;         --  fd_set
   SIZEOF_struct_hostent : constant := 20;          --  struct hostent
   SIZEOF_struct_servent : constant := 16;          --  struct servent

   --  Fields of struct msghdr
   subtype Msg_Iovlen_T is Interfaces.C.size_t;

   ----------------------------------------
   -- Properties of supported interfaces --
   ----------------------------------------

   Need_Netdb_Buffer     : constant := 0;           --  Need buffer for Netdb ops
   Need_Netdb_Lock       : constant := 0;           --  Need lock for Netdb ops
   Has_Sockaddr_Len      : constant := 1;           --  Sockaddr has sa_len field
   Thread_Blocking_IO    : constant Boolean := True;
   --  Set False for contexts where socket i/o are process blocking

   Inet_Pton_Linkname    : constant String  := "inet_pton";

end System.OS_Constants;
