Hurd specific structs.
authordrepper <drepper>
Sat, 21 Jun 1997 02:41:39 +0000 (02:41 +0000)
committerdrepper <drepper>
Sat, 21 Jun 1997 02:41:39 +0000 (02:41 +0000)
sysdeps/mach/hurd/bits/errno.h [new file with mode: 0644]
sysdeps/mach/hurd/bits/fcntl.h [new file with mode: 0644]
sysdeps/mach/hurd/bits/ioctls.h [new file with mode: 0644]
sysdeps/mach/hurd/bits/local_lim.h [new file with mode: 0644]
sysdeps/mach/hurd/bits/posix_opt.h [new file with mode: 0644]
sysdeps/mach/hurd/bits/stat.h [new file with mode: 0644]

diff --git a/sysdeps/mach/hurd/bits/errno.h b/sysdeps/mach/hurd/bits/errno.h
new file mode 100644 (file)
index 0000000..beb35ec
--- /dev/null
@@ -0,0 +1,316 @@
+/* This file generated by errnos.awk.  */
+
+/* The Hurd uses Mach error system 0x10, currently only subsystem 0. */
+#ifndef _HURD_ERRNO
+#define _HURD_ERRNO(n) ((0x10 << 26) | ((n) & 0x3fff))
+#endif
+
+#ifdef _ERRNO_H
+
+enum __error_t_codes
+{
+#undef EDOM
+#undef ERANGE
+       EPERM           = _HURD_ERRNO (1),
+#define        EPERM           _HURD_ERRNO (1) /* Operation not permitted */
+       ENOENT          = _HURD_ERRNO (2),
+#define        ENOENT          _HURD_ERRNO (2) /* No such file or directory */
+       ESRCH           = _HURD_ERRNO (3),
+#define        ESRCH           _HURD_ERRNO (3) /* No such process */
+       EINTR           = _HURD_ERRNO (4),
+#define        EINTR           _HURD_ERRNO (4) /* Interrupted system call */
+       EIO             = _HURD_ERRNO (5),
+#define        EIO             _HURD_ERRNO (5) /* Input/output error */
+       ENXIO           = _HURD_ERRNO (6),
+#define        ENXIO           _HURD_ERRNO (6) /* Device not configured */
+       E2BIG           = _HURD_ERRNO (7),
+#define        E2BIG           _HURD_ERRNO (7) /* Argument list too long */
+       ENOEXEC         = _HURD_ERRNO (8),
+#define        ENOEXEC         _HURD_ERRNO (8) /* Exec format error */
+       EBADF           = _HURD_ERRNO (9),
+#define        EBADF           _HURD_ERRNO (9) /* Bad file descriptor */
+       ECHILD          = _HURD_ERRNO (10),
+#define        ECHILD          _HURD_ERRNO (10)/* No child processes */
+       EDEADLK         = _HURD_ERRNO (11),
+#define        EDEADLK         _HURD_ERRNO (11)/* Resource deadlock avoided */
+       ENOMEM          = _HURD_ERRNO (12),
+#define        ENOMEM          _HURD_ERRNO (12)/* Cannot allocate memory */
+       EACCES          = _HURD_ERRNO (13),
+#define        EACCES          _HURD_ERRNO (13)/* Permission denied */
+       EFAULT          = _HURD_ERRNO (14),
+#define        EFAULT          _HURD_ERRNO (14)/* Bad address */
+       ENOTBLK         = _HURD_ERRNO (15),
+#define        ENOTBLK         _HURD_ERRNO (15)/* Block device required */
+       EBUSY           = _HURD_ERRNO (16),
+#define        EBUSY           _HURD_ERRNO (16)/* Device or resource busy */
+       EEXIST          = _HURD_ERRNO (17),
+#define        EEXIST          _HURD_ERRNO (17)/* File exists */
+       EXDEV           = _HURD_ERRNO (18),
+#define        EXDEV           _HURD_ERRNO (18)/* Invalid cross-device link */
+       ENODEV          = _HURD_ERRNO (19),
+#define        ENODEV          _HURD_ERRNO (19)/* Operation not supported by device */
+       ENOTDIR         = _HURD_ERRNO (20),
+#define        ENOTDIR         _HURD_ERRNO (20)/* Not a directory */
+       EISDIR          = _HURD_ERRNO (21),
+#define        EISDIR          _HURD_ERRNO (21)/* Is a directory */
+       EINVAL          = _HURD_ERRNO (22),
+#define        EINVAL          _HURD_ERRNO (22)/* Invalid argument */
+       EMFILE          = _HURD_ERRNO (24),
+#define        EMFILE          _HURD_ERRNO (24)/* Too many open files */
+       ENFILE          = _HURD_ERRNO (23),
+#define        ENFILE          _HURD_ERRNO (23)/* Too many open files in system */
+       ENOTTY          = _HURD_ERRNO (25),
+#define        ENOTTY          _HURD_ERRNO (25)/* Inappropriate ioctl for device */
+       ETXTBSY         = _HURD_ERRNO (26),
+#define        ETXTBSY         _HURD_ERRNO (26)/* Text file busy */
+       EFBIG           = _HURD_ERRNO (27),
+#define        EFBIG           _HURD_ERRNO (27)/* File too large */
+       ENOSPC          = _HURD_ERRNO (28),
+#define        ENOSPC          _HURD_ERRNO (28)/* No space left on device */
+       ESPIPE          = _HURD_ERRNO (29),
+#define        ESPIPE          _HURD_ERRNO (29)/* Illegal seek */
+       EROFS           = _HURD_ERRNO (30),
+#define        EROFS           _HURD_ERRNO (30)/* Read-only file system */
+       EMLINK          = _HURD_ERRNO (31),
+#define        EMLINK          _HURD_ERRNO (31)/* Too many links */
+       EPIPE           = _HURD_ERRNO (32),
+#define        EPIPE           _HURD_ERRNO (32)/* Broken pipe */
+       EDOM            = _HURD_ERRNO (33),
+#define        EDOM            _HURD_ERRNO (33)/* Numerical argument out of domain */
+       ERANGE          = _HURD_ERRNO (34),
+#define        ERANGE          _HURD_ERRNO (34)/* Numerical result out of range */
+       EAGAIN          = _HURD_ERRNO (35),
+#define        EAGAIN          _HURD_ERRNO (35)/* Resource temporarily unavailable */
+#define EWOULDBLOCK EAGAIN /* Operation would block */
+       EINPROGRESS     = _HURD_ERRNO (36),
+#define        EINPROGRESS     _HURD_ERRNO (36)/* Operation now in progress */
+       EALREADY        = _HURD_ERRNO (37),
+#define        EALREADY        _HURD_ERRNO (37)/* Operation already in progress */
+       ENOTSOCK        = _HURD_ERRNO (38),
+#define        ENOTSOCK        _HURD_ERRNO (38)/* Socket operation on non-socket */
+       EMSGSIZE        = _HURD_ERRNO (40),
+#define        EMSGSIZE        _HURD_ERRNO (40)/* Message too long */
+       EPROTOTYPE      = _HURD_ERRNO (41),
+#define        EPROTOTYPE      _HURD_ERRNO (41)/* Protocol wrong type for socket */
+       ENOPROTOOPT     = _HURD_ERRNO (42),
+#define        ENOPROTOOPT     _HURD_ERRNO (42)/* Protocol not available */
+       EPROTONOSUPPORT = _HURD_ERRNO (43),
+#define        EPROTONOSUPPORT _HURD_ERRNO (43)/* Protocol not supported */
+       ESOCKTNOSUPPORT = _HURD_ERRNO (44),
+#define        ESOCKTNOSUPPORT _HURD_ERRNO (44)/* Socket type not supported */
+       EOPNOTSUPP      = _HURD_ERRNO (45),
+#define        EOPNOTSUPP      _HURD_ERRNO (45)/* Operation not supported */
+       EPFNOSUPPORT    = _HURD_ERRNO (46),
+#define        EPFNOSUPPORT    _HURD_ERRNO (46)/* Protocol family not supported */
+       EAFNOSUPPORT    = _HURD_ERRNO (47),
+#define        EAFNOSUPPORT    _HURD_ERRNO (47)/* Address family not supported by protocol */
+       EADDRINUSE      = _HURD_ERRNO (48),
+#define        EADDRINUSE      _HURD_ERRNO (48)/* Address already in use */
+       EADDRNOTAVAIL   = _HURD_ERRNO (49),
+#define        EADDRNOTAVAIL   _HURD_ERRNO (49)/* Cannot assign requested address */
+       ENETDOWN        = _HURD_ERRNO (50),
+#define        ENETDOWN        _HURD_ERRNO (50)/* Network is down */
+       ENETUNREACH     = _HURD_ERRNO (51),
+#define        ENETUNREACH     _HURD_ERRNO (51)/* Network is unreachable */
+       ENETRESET       = _HURD_ERRNO (52),
+#define        ENETRESET       _HURD_ERRNO (52)/* Network dropped connection on reset */
+       ECONNABORTED    = _HURD_ERRNO (53),
+#define        ECONNABORTED    _HURD_ERRNO (53)/* Software caused connection abort */
+       ECONNRESET      = _HURD_ERRNO (54),
+#define        ECONNRESET      _HURD_ERRNO (54)/* Connection reset by peer */
+       ENOBUFS         = _HURD_ERRNO (55),
+#define        ENOBUFS         _HURD_ERRNO (55)/* No buffer space available */
+       EISCONN         = _HURD_ERRNO (56),
+#define        EISCONN         _HURD_ERRNO (56)/* Transport endpoint is already connected */
+       ENOTCONN        = _HURD_ERRNO (57),
+#define        ENOTCONN        _HURD_ERRNO (57)/* Transport endpoint is not connected */
+       EDESTADDRREQ    = _HURD_ERRNO (39),
+#define        EDESTADDRREQ    _HURD_ERRNO (39)/* Destination address required */
+       ESHUTDOWN       = _HURD_ERRNO (58),
+#define        ESHUTDOWN       _HURD_ERRNO (58)/* Cannot send after transport endpoint shutdown */
+       ETOOMANYREFS    = _HURD_ERRNO (59),
+#define        ETOOMANYREFS    _HURD_ERRNO (59)/* Too many references: cannot splice */
+       ETIMEDOUT       = _HURD_ERRNO (60),
+#define        ETIMEDOUT       _HURD_ERRNO (60)/* Connection timed out */
+       ECONNREFUSED    = _HURD_ERRNO (61),
+#define        ECONNREFUSED    _HURD_ERRNO (61)/* Connection refused */
+       ELOOP           = _HURD_ERRNO (62),
+#define        ELOOP           _HURD_ERRNO (62)/* Too many levels of symbolic links */
+       ENAMETOOLONG    = _HURD_ERRNO (63),
+#define        ENAMETOOLONG    _HURD_ERRNO (63)/* File name too long */
+       EHOSTDOWN       = _HURD_ERRNO (64),
+#define        EHOSTDOWN       _HURD_ERRNO (64)/* Host is down */
+       EHOSTUNREACH    = _HURD_ERRNO (65),
+#define        EHOSTUNREACH    _HURD_ERRNO (65)/* No route to host */
+       ENOTEMPTY       = _HURD_ERRNO (66),
+#define        ENOTEMPTY       _HURD_ERRNO (66)/* Directory not empty */
+       EPROCLIM        = _HURD_ERRNO (67),
+#define        EPROCLIM        _HURD_ERRNO (67)/* Too many processes */
+       EUSERS          = _HURD_ERRNO (68),
+#define        EUSERS          _HURD_ERRNO (68)/* Too many users */
+       EDQUOT          = _HURD_ERRNO (69),
+#define        EDQUOT          _HURD_ERRNO (69)/* Disc quota exceeded */
+       ESTALE          = _HURD_ERRNO (70),
+#define        ESTALE          _HURD_ERRNO (70)/* Stale NFS file handle */
+       EREMOTE         = _HURD_ERRNO (71),
+#define        EREMOTE         _HURD_ERRNO (71)/* Object is remote */
+       EBADRPC         = _HURD_ERRNO (72),
+#define        EBADRPC         _HURD_ERRNO (72)/* RPC struct is bad */
+       ERPCMISMATCH    = _HURD_ERRNO (73),
+#define        ERPCMISMATCH    _HURD_ERRNO (73)/* RPC version wrong */
+       EPROGUNAVAIL    = _HURD_ERRNO (74),
+#define        EPROGUNAVAIL    _HURD_ERRNO (74)/* RPC program not available */
+       EPROGMISMATCH   = _HURD_ERRNO (75),
+#define        EPROGMISMATCH   _HURD_ERRNO (75)/* RPC program version wrong */
+       EPROCUNAVAIL    = _HURD_ERRNO (76),
+#define        EPROCUNAVAIL    _HURD_ERRNO (76)/* RPC bad procedure for program */
+       ENOLCK          = _HURD_ERRNO (77),
+#define        ENOLCK          _HURD_ERRNO (77)/* No locks available */
+       EFTYPE          = _HURD_ERRNO (79),
+#define        EFTYPE          _HURD_ERRNO (79)/* Inappropriate file type or format */
+       EAUTH           = _HURD_ERRNO (80),
+#define        EAUTH           _HURD_ERRNO (80)/* Authentication error */
+       ENEEDAUTH       = _HURD_ERRNO (81),
+#define        ENEEDAUTH       _HURD_ERRNO (81)/* Need authenticator */
+       ENOSYS          = _HURD_ERRNO (78),
+#define        ENOSYS          _HURD_ERRNO (78)/* Function not implemented */
+       EILSEQ          = _HURD_ERRNO (106),
+#define        EILSEQ          _HURD_ERRNO (106)/* Invalid or incomplete multibyte or wide character */
+       EBACKGROUND     = _HURD_ERRNO (100),
+#define        EBACKGROUND     _HURD_ERRNO (100)/* Inappropriate operation for background process */
+       EDIED           = _HURD_ERRNO (101),
+#define        EDIED           _HURD_ERRNO (101)/* Translator died */
+       ED              = _HURD_ERRNO (102),
+#define        ED              _HURD_ERRNO (102)/* ? */
+       EGREGIOUS       = _HURD_ERRNO (103),
+#define        EGREGIOUS       _HURD_ERRNO (103)/* You really blew it this time */
+       EIEIO           = _HURD_ERRNO (104),
+#define        EIEIO           _HURD_ERRNO (104)/* Computer bought the farm */
+       EGRATUITOUS     = _HURD_ERRNO (105),
+#define        EGRATUITOUS     _HURD_ERRNO (105)/* Gratuitous error */
+       EBADMSG         = _HURD_ERRNO (107),
+#define        EBADMSG         _HURD_ERRNO (107)/* Bad message */
+       EIDRM           = _HURD_ERRNO (108),
+#define        EIDRM           _HURD_ERRNO (108)/* Identifier removed */
+       EMULTIHOP       = _HURD_ERRNO (109),
+#define        EMULTIHOP       _HURD_ERRNO (109)/* Multihop attempted */
+       ENODATA         = _HURD_ERRNO (110),
+#define        ENODATA         _HURD_ERRNO (110)/* No data available */
+       ENOLINK         = _HURD_ERRNO (111),
+#define        ENOLINK         _HURD_ERRNO (111)/* Link has been severed */
+       ENOMSG          = _HURD_ERRNO (112),
+#define        ENOMSG          _HURD_ERRNO (112)/* No message of desired type */
+       ENOSR           = _HURD_ERRNO (113),
+#define        ENOSR           _HURD_ERRNO (113)/* Out of streams resources */
+       ENOSTR          = _HURD_ERRNO (114),
+#define        ENOSTR          _HURD_ERRNO (114)/* Device not a stream */
+       EOVERFLOW       = _HURD_ERRNO (115),
+#define        EOVERFLOW       _HURD_ERRNO (115)/* Value too large for defined data type */
+       EPROTO          = _HURD_ERRNO (116),
+#define        EPROTO          _HURD_ERRNO (116)/* Protocol error */
+       ETIME           = _HURD_ERRNO (117),
+#define        ETIME           _HURD_ERRNO (117)/* Timer expired */
+
+       /* Errors from <mach/message.h>.  */
+       EMACH_SEND_IN_PROGRESS          = 0x10000001,
+       EMACH_SEND_INVALID_DATA         = 0x10000002,
+       EMACH_SEND_INVALID_DEST         = 0x10000003,
+       EMACH_SEND_TIMED_OUT            = 0x10000004,
+       EMACH_SEND_WILL_NOTIFY          = 0x10000005,
+       EMACH_SEND_NOTIFY_IN_PROGRESS   = 0x10000006,
+       EMACH_SEND_INTERRUPTED          = 0x10000007,
+       EMACH_SEND_MSG_TOO_SMALL        = 0x10000008,
+       EMACH_SEND_INVALID_REPLY        = 0x10000009,
+       EMACH_SEND_INVALID_RIGHT        = 0x1000000a,
+       EMACH_SEND_INVALID_NOTIFY       = 0x1000000b,
+       EMACH_SEND_INVALID_MEMORY       = 0x1000000c,
+       EMACH_SEND_NO_BUFFER            = 0x1000000d,
+       EMACH_SEND_NO_NOTIFY            = 0x1000000e,
+       EMACH_SEND_INVALID_TYPE         = 0x1000000f,
+       EMACH_SEND_INVALID_HEADER       = 0x10000010,
+       EMACH_RCV_IN_PROGRESS           = 0x10004001,
+       EMACH_RCV_INVALID_NAME          = 0x10004002,
+       EMACH_RCV_TIMED_OUT             = 0x10004003,
+       EMACH_RCV_TOO_LARGE             = 0x10004004,
+       EMACH_RCV_INTERRUPTED           = 0x10004005,
+       EMACH_RCV_PORT_CHANGED          = 0x10004006,
+       EMACH_RCV_INVALID_NOTIFY        = 0x10004007,
+       EMACH_RCV_INVALID_DATA          = 0x10004008,
+       EMACH_RCV_PORT_DIED             = 0x10004009,
+       EMACH_RCV_IN_SET                = 0x1000400a,
+       EMACH_RCV_HEADER_ERROR          = 0x1000400b,
+       EMACH_RCV_BODY_ERROR            = 0x1000400c,
+
+       /* Errors from <mach/kern_return.h>.  */
+       EKERN_INVALID_ADDRESS           = 1,
+       EKERN_PROTECTION_FAILURE        = 2,
+       EKERN_NO_SPACE                  = 3,
+       EKERN_INVALID_ARGUMENT          = 4,
+       EKERN_FAILURE                   = 5,
+       EKERN_RESOURCE_SHORTAGE         = 6,
+       EKERN_NOT_RECEIVER              = 7,
+       EKERN_NO_ACCESS                 = 8,
+       EKERN_MEMORY_FAILURE            = 9,
+       EKERN_MEMORY_ERROR              = 10,
+       EKERN_NOT_IN_SET                = 12,
+       EKERN_NAME_EXISTS               = 13,
+       EKERN_ABORTED                   = 14,
+       EKERN_INVALID_NAME              = 15,
+       EKERN_INVALID_TASK              = 16,
+       EKERN_INVALID_RIGHT             = 17,
+       EKERN_INVALID_VALUE             = 18,
+       EKERN_UREFS_OVERFLOW            = 19,
+       EKERN_INVALID_CAPABILITY        = 20,
+       EKERN_RIGHT_EXISTS              = 21,
+       EKERN_INVALID_HOST              = 22,
+       EKERN_MEMORY_PRESENT            = 23,
+       EKERN_WRITE_PROTECTION_FAILURE  = 24,
+       EKERN_TERMINATED                = 26,
+
+       /* Errors from <mach/mig_errors.h>.  */
+       EMIG_TYPE_ERROR         = -300, /* client type check failure */
+       EMIG_REPLY_MISMATCH     = -301, /* wrong reply message ID */
+       EMIG_REMOTE_ERROR       = -302, /* server detected error */
+       EMIG_BAD_ID             = -303, /* bad request message ID */
+       EMIG_BAD_ARGUMENTS      = -304, /* server type check failure */
+       EMIG_NO_REPLY           = -305, /* no reply should be sent */
+       EMIG_EXCEPTION          = -306, /* server raised exception */
+       EMIG_ARRAY_TOO_LARGE    = -307, /* array not large enough */
+       EMIG_SERVER_DIED        = -308, /* server died */
+       EMIG_DESTROY_REQUEST    = -309, /* destroy request with no reply */
+
+       /* Errors from <device/device_types.h>.  */
+       ED_IO_ERROR             = 2500, /* hardware IO error */
+       ED_WOULD_BLOCK          = 2501, /* would block, but D_NOWAIT set */
+       ED_NO_SUCH_DEVICE       = 2502, /* no such device */
+       ED_ALREADY_OPEN         = 2503, /* exclusive-use device already open */
+       ED_DEVICE_DOWN          = 2504, /* device has been shut down */
+       ED_INVALID_OPERATION    = 2505, /* bad operation for device */
+       ED_INVALID_RECNUM       = 2506, /* invalid record (block) number */
+       ED_INVALID_SIZE         = 2507, /* invalid IO size */
+       ED_NO_MEMORY            = 2508, /* memory allocation failure */
+       ED_READ_ONLY            = 2509, /* device cannot be written to */
+
+};
+
+#define        _HURD_ERRNOS    118
+
+/* User-visible type of error codes.  It is ok to use `int' or
+   `kern_return_t' for these, but with `error_t' the debugger prints
+   symbolic values.  */
+#ifdef __USE_GNU
+typedef enum __error_t_codes error_t;
+#define __error_t_defined      1
+#endif
+
+/* errno is a per-thread variable.  */
+#include <hurd/threadvar.h>
+#define errno  (*__hurd_errno_location ())
+#define __set_errno(val) errno = (val)
+
+#endif /* <errno.h> included.  */
+
+#if !defined (_ERRNO_H) && defined (__need_Emath)
+#define        EDOM            _HURD_ERRNO (33)/* Numerical argument out of domain */
+#define        ERANGE          _HURD_ERRNO (34)/* Numerical result out of range */
+#endif /* <errno.h> not included and need math error codes.  */
diff --git a/sysdeps/mach/hurd/bits/fcntl.h b/sysdeps/mach/hurd/bits/fcntl.h
new file mode 100644 (file)
index 0000000..4983b33
--- /dev/null
@@ -0,0 +1,175 @@
+/* O_*, F_*, FD_* bit values for GNU.
+   Copyright (C) 1993, 1994, 1996, 1997 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#ifndef _FCNTL_H
+#error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
+#endif
+
+/* File access modes.  These are understood by io servers; they can be
+   passed in `dir_lookup', and are returned by `io_get_openmodes'.
+   Consequently they can be passed to `open', `hurd_file_name_lookup', and
+   `file_name_lookup'; and are returned by `fcntl' with the F_GETFL
+   command.  */
+
+/* In GNU, read and write are bits (unlike BSD).  */
+#ifdef __USE_GNU
+#define        O_READ          O_RDONLY /* Open for reading.  */
+#define O_WRITE                O_WRONLY /* Open for writing.  */
+#define        O_EXEC          0x0004  /* Open for execution.  */
+#define O_NORW         0       /* Open without R/W access.  */
+#endif
+/* POSIX.1 standard names.  */
+#define        O_RDONLY        0x0001  /* Open read-only.  */
+#define        O_WRONLY        0x0002  /* Open write-only.  */
+#define        O_RDWR          (O_RDONLY|O_WRONLY) /* Open for reading and writing. */
+#define        O_ACCMODE       O_RDWR  /* Mask for file access modes.  */
+
+
+
+/* File name translation flags.  These are understood by io servers;
+   they can be passed in `dir_lookup', and consequently to `open',
+   `hurd_file_name_lookup', and `file_name_lookup'.  */
+
+#define        O_CREAT         0x0010  /* Create file if it doesn't exist.  */
+#define        O_EXCL          0x0020  /* Fail if file already exists.  */
+#ifdef __USE_GNU
+#define        O_NOLINK        0x0040  /* No name mappings on final component.  */
+#define        O_NOTRANS       0x0080  /* No translator on final component. */
+#endif
+
+
+/* I/O operating modes.  These are understood by io servers; they can be
+   passed in `dir_lookup' and set or fetched with `io_*_openmodes'.
+   Consequently they can be passed to `open', `hurd_file_name_lookup',
+   `file_name_lookup', and `fcntl' with the F_SETFL command; and are
+   returned by `fcntl' with the F_GETFL command.  */
+
+#define        O_APPEND        0x0100  /* Writes always append to the file.  */
+#ifdef __USE_BSD
+#define        O_ASYNC         0x0200  /* Send SIGIO to owner when data is ready.  */
+#define        O_FSYNC         0x0400  /* Synchronous writes.  */
+#define        O_SYNC          O_FSYNC
+#endif
+#ifdef __USE_GNU
+#define        O_NOATIME       0x0800  /* Don't set access time on read (owner).  */
+#endif
+#ifdef __USE_MISC
+#define        O_SHLOCK        0x00020000 /* Open with shared file lock.  */
+#define        O_EXLOCK        0x00040000 /* Open with exclusive file lock.  */
+#endif
+
+
+/* The name O_NONBLOCK is unfortunately overloaded; it is both a file name
+   translation flag and an I/O operating mode.  O_NDELAY is the deprecated
+   BSD name for the same flag, overloaded in the same way.
+
+   When used in `dir_lookup' (and consequently `open', `hurd_file_name_lookup',
+   or `file_name_lookup'), O_NONBLOCK says the open should return immediately
+   instead of blocking for any significant length of time (e.g., to wait
+   for carrier detect on a serial line).  It is also saved as an I/O
+   operating mode, and after open has the following meaning.
+
+   When used in `io_*_openmodes' (and consequently `fcntl' with the F_SETFL
+   command), the O_NONBLOCK flag means to do nonblocking i/o: any i/o
+   operation that would block for any significant length of time will instead
+   fail with EAGAIN.  */
+
+#define        O_NONBLOCK      0x0008  /* Non-blocking open or non-blocking I/O.  */
+#ifdef __USE_BSD
+#define        O_NDELAY        O_NONBLOCK /* Deprecated.  */
+#endif
+
+
+#ifdef __USE_GNU
+/* Mask of bits which are understood by io servers.  */
+#define O_HURD         (0xffff | O_EXLOCK | O_SHLOCK)
+#endif
+
+
+/* Open-time action flags.  These are understood by `hurd_file_name_lookup'
+   and consequently by `open' and `file_name_lookup'.  They are not preserved
+   once the file has been opened.  */
+
+#define        O_TRUNC         0x00010000 /* Truncate file to zero length.  */
+
+
+/* Controlling terminal flags.  These are understood only by `open',
+   and are not preserved once the file has been opened.  */
+
+#ifdef __USE_GNU
+#define        O_IGNORE_CTTY   0x00080000 /* Don't do any ctty magic at all.  */
+#endif
+/* `open' never assigns a controlling terminal in GNU.  */
+#define        O_NOCTTY        0       /* Don't assign a controlling terminal.  */
+
+
+#ifdef __USE_BSD
+/* Bits in the file status flags returned by F_GETFL.  */
+#define FREAD          O_RDONLY
+#define        FWRITE          O_WRONLY
+
+/* Traditional BSD names the O_* bits.  */
+#define FASYNC         O_ASYNC
+#define FCREAT         O_CREAT
+#define FEXCL          O_EXCL
+#define FTRUNC         O_TRUNC
+#define FNOCTTY                O_NOCTTY
+#define FFSYNC         O_FSYNC
+#define FSYNC          O_SYNC
+#define FAPPEND                O_APPEND
+#define FNONBLOCK      O_NONBLOCK
+#define FNDELAY                O_NDELAY
+#endif
+
+
+/* Values for the second argument to `fcntl'.  */
+#define        F_DUPFD         0       /* Duplicate file descriptor.  */
+#define        F_GETFD         1       /* Get file descriptor flags.  */
+#define        F_SETFD         2       /* Set file descriptor flags.  */
+#define        F_GETFL         3       /* Get file status flags.  */
+#define        F_SETFL         4       /* Set file status flags.  */
+#ifdef __USE_BSD
+#define        F_GETOWN        5       /* Get owner (receiver of SIGIO).  */
+#define        F_SETOWN        6       /* Set owner (receiver of SIGIO).  */
+#endif
+#define        F_GETLK         7       /* Get record locking info.  */
+#define        F_SETLK         8       /* Set record locking info (non-blocking).  */
+#define        F_SETLKW        9       /* Set record locking info (blocking).  */
+
+/* File descriptor flags used with F_GETFD and F_SETFD.  */
+#define        FD_CLOEXEC      1       /* Close on exec.  */
+
+
+#include <gnu/types.h>
+
+/* The structure describing an advisory lock.  This is the type of the third
+   argument to `fcntl' for the F_GETLK, F_SETLK, and F_SETLKW requests.  */
+struct flock
+  {
+    int l_type;                /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.  */
+    int l_whence;      /* Where `l_start' is relative to (like `lseek').  */
+    __off_t l_start;   /* Offset where the lock begins.  */
+    __off_t l_len;     /* Size of the locked area; zero means until EOF.  */
+    __pid_t l_pid;     /* Process holding the lock.  */
+  };
+
+/* Values for the `l_type' field of a `struct flock'.  */
+#define        F_RDLCK 1       /* Read lock.  */
+#define        F_WRLCK 2       /* Write lock.  */
+#define        F_UNLCK 3       /* Remove lock.  */
diff --git a/sysdeps/mach/hurd/bits/ioctls.h b/sysdeps/mach/hurd/bits/ioctls.h
new file mode 100644 (file)
index 0000000..b04438b
--- /dev/null
@@ -0,0 +1,353 @@
+/* Copyright (C) 1992, 1993, 1996, 1997 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/*
+ * Never include this file directly; use <sys/ioctl.h> instead.
+ */
+
+#ifndef        _BITS_IOCTLS_H
+#define        _BITS_IOCTLS_H  1
+
+/* These macros are also defined in <bits/termios.h> (with numerically
+   identical values) but this serves to shut up cpp's complaining. */
+#ifdef MDMBUF
+#undef MDMBUF
+#endif
+#ifdef ECHO
+#undef ECHO
+#endif
+#ifdef TOSTOP
+#undef TOSTOP
+#endif
+#ifdef FLUSHO
+#undef FLUSHO
+#endif
+#ifdef PENDIN
+#undef PENDIN
+#endif
+#ifdef NOFLSH
+#undef NOFLSH
+#endif
+
+/* Hurd ioctl request are made up of several fields:
+
+    10987654321098765432109876543210
+    IOt0t1t2cc0c0cc1c1cc2ggggccccccc
+
+     bits [31,30]: inout direction (enum __ioctl_dir)
+     bits [29,11]: type encoding as follows; zero count indicates omitted datum
+         [29,28]: datum #0 type (enum __ioctl_datum)
+         [27,26]: datum #1 type (enum __ioctl_datum)
+         [24,25]: datum #2 type (enum __ioctl_datum)
+         [23,19]: datum #0 count       [0,31]
+         [18,14]: datum #1 count [0,31]
+         [13,11]: datum #2 count [0,3]
+     bits [07,10]: group (letter - 'f': ['f','v'])
+     bits [00,06]: command     [0,127]
+
+   The following macros construct and dissect these fields.  */
+
+enum __ioctl_dir
+  {
+    IOC_VOID = 0,              /* No parameters.  */
+    IOC_OUT = 1,               /* Data is written into the user's buffer.  */
+    IOC_IN = 2,                        /* Data is read from the user's buffer.  */
+    IOC_INOUT = (IOC_IN|IOC_OUT)
+  };
+
+enum __ioctl_datum { IOC_8, IOC_16, IOC_32, IOC_64 };
+
+/* Construct an ioctl from constructed type plus other fields.  */
+#define        _IOC(inout, group, num, type) \
+  ((num) | ((((group) - 'f') | ((type) | (inout) << 19) << 4) << 7))
+
+/* Dissect an ioctl into its component fields.  */
+#define _IOC_INOUT(request)    (((unsigned int) (request) >> 30) & IOC_INOUT)
+#define _IOC_GROUP(request)    ('f' + (((unsigned int) (request) >> 7) & 0xf))
+#define _IOC_COMMAND(request)  ((unsigned int) (request) & 0x7f)
+#define _IOC_TYPE(request)     (((unsigned int) (request) >> 11) & 0x7ffff)
+#define _IOC_NOTYPE(request)   ((unsigned int) (request) & 0x3ff)
+
+/* Construct a type information field from
+   the broken-out type and count fields.  */
+#define        _IOT(t0, c0, t1, c1, t2, c2) \
+  ((c2) | (((c1) | ((c0) | ((t2) | ((t1) | (t0) << 2) << 2) << 5) << 5) << 3))
+
+/* Dissect a type information field into the type and count fields.  */
+#define        _IOT_TYPE0(type)        (((unsigned int) (type) >> 17) & 3)
+#define        _IOT_TYPE1(type)        (((unsigned int) (type) >> 15) & 3)
+#define        _IOT_TYPE2(type)        (((unsigned int) (type) >> 13) & 3)
+#define        _IOT_COUNT0(type)       (((unsigned int) (type) >> 8) & 0x1f)
+#define        _IOT_COUNT1(type)       (((unsigned int) (type) >> 3) & 0x1f)
+#define        _IOT_COUNT2(type)       (((unsigned int) (type) >> 0) & 7)
+
+/* Construct an ioctl from all the broken-out fields.  */
+#define        _IOCT(inout, group, num, t0, c0, t1, c1, t2, c2)                      \
+  _IOC ((inout), (group), (num), _IOT ((t0), (c0), (t1), (c1), (t2), (c2)))
+
+/* Standard flavors of ioctls.
+   _IOT_foobar is defined either in this file,
+   or where struct foobar is defined.  */
+#define        _IO(g, n)       _IOC (IOC_VOID, (g), (n), 0)
+#define        _IOR(g, n, t)   _IOC (IOC_OUT, (g), (n), _IOT_##t)
+#define        _IOW(g, n, t)   _IOC (IOC_IN, (g), (n), _IOT_##t)
+#define        _IOWR(g, n, t)  _IOC (IOC_INOUT, (g), (n), _IOT_##t)
+
+/* Construct an individual type field for TYPE.  */
+#define _IOTS(type)    \
+  (sizeof (type) == 8 ? IOC_64 : (sizeof (type) >> 1))
+
+/* Construct a type information field for
+   a single argument of the scalar TYPE.  */
+#define        _IOT_SIMPLE(type)       _IOT (_IOTS (type), 1, 0, 0, 0, 0)
+
+/* Basic C types.  */
+#define        _IOT_int                _IOT_SIMPLE (int)
+#define        _IOT_char               _IOT_SIMPLE (char)
+#define        _IOT_short              _IOT_SIMPLE (short)
+
+
+/* ioctls verbatim from 4.4 <sys/ioctl.h>, with `struct' keywords removed.  */
+
+#define        TIOCMODG        _IOR('t', 3, int)       /* get modem control state */
+#define        TIOCMODS        _IOW('t', 4, int)       /* set modem control state */
+#define                TIOCM_LE        0001            /* line enable */
+#define                TIOCM_DTR       0002            /* data terminal ready */
+#define                TIOCM_RTS       0004            /* request to send */
+#define                TIOCM_ST        0010            /* secondary transmit */
+#define                TIOCM_SR        0020            /* secondary receive */
+#define                TIOCM_CTS       0040            /* clear to send */
+#define                TIOCM_CAR       0100            /* carrier detect */
+#define                TIOCM_CD        TIOCM_CAR
+#define                TIOCM_RNG       0200            /* ring */
+#define                TIOCM_RI        TIOCM_RNG
+#define                TIOCM_DSR       0400            /* data set ready */
+                                               /* 8-10 compat */
+#define        TIOCEXCL        _IO('t', 13)            /* set exclusive use of tty */
+#define        TIOCNXCL        _IO('t', 14)            /* reset exclusive use of tty */
+                                               /* 15 unused */
+#define        TIOCFLUSH       _IOW('t', 16, int)      /* flush buffers */
+                                               /* 17-18 compat */
+#define        TIOCGETA        _IOR('t', 19, termios) /* get termios struct */
+#define        TIOCSETA        _IOW('t', 20, termios) /* set termios struct */
+#define        TIOCSETAW       _IOW('t', 21, termios) /* drain output, set */
+#define        TIOCSETAF       _IOW('t', 22, termios) /* drn out, fls in, set */
+#define        TIOCGETD        _IOR('t', 26, int)      /* get line discipline */
+#define        TIOCSETD        _IOW('t', 27, int)      /* set line discipline */
+                                               /* 127-124 compat */
+#define        TIOCSBRK        _IO('t', 123)           /* set break bit */
+#define        TIOCCBRK        _IO('t', 122)           /* clear break bit */
+#define        TIOCSDTR        _IO('t', 121)           /* set data terminal ready */
+#define        TIOCCDTR        _IO('t', 120)           /* clear data terminal ready */
+#define        TIOCGPGRP       _IOR('t', 119, int)     /* get pgrp of tty */
+#define        TIOCSPGRP       _IOW('t', 118, int)     /* set pgrp of tty */
+                                               /* 117-116 compat */
+#define        TIOCOUTQ        _IOR('t', 115, int)     /* output queue size */
+#define        TIOCSTI         _IOW('t', 114, char)    /* simulate terminal input */
+#define        TIOCNOTTY       _IO('t', 113)           /* void tty association */
+#define        TIOCPKT         _IOW('t', 112, int)     /* pty: set/clear packet mode */
+#define                TIOCPKT_DATA            0x00    /* data packet */
+#define                TIOCPKT_FLUSHREAD       0x01    /* flush packet */
+#define                TIOCPKT_FLUSHWRITE      0x02    /* flush packet */
+#define                TIOCPKT_STOP            0x04    /* stop output */
+#define                TIOCPKT_START           0x08    /* start output */
+#define                TIOCPKT_NOSTOP          0x10    /* no more ^S, ^Q */
+#define                TIOCPKT_DOSTOP          0x20    /* now do ^S ^Q */
+#define                TIOCPKT_IOCTL           0x40    /* state change of pty driver */
+#define        TIOCSTOP        _IO('t', 111)           /* stop output, like ^S */
+#define        TIOCSTART       _IO('t', 110)           /* start output, like ^Q */
+#define        TIOCMSET        _IOW('t', 109, int)     /* set all modem bits */
+#define        TIOCMBIS        _IOW('t', 108, int)     /* bis modem bits */
+#define        TIOCMBIC        _IOW('t', 107, int)     /* bic modem bits */
+#define        TIOCMGET        _IOR('t', 106, int)     /* get all modem bits */
+#define        TIOCREMOTE      _IOW('t', 105, int)     /* remote input editing */
+#define        TIOCGWINSZ      _IOR('t', 104, winsize) /* get window size */
+#define        TIOCSWINSZ      _IOW('t', 103, winsize) /* set window size */
+#define        TIOCUCNTL       _IOW('t', 102, int)     /* pty: set/clr usr cntl mode */
+#define                UIOCCMD(n)      _IO('u', n)             /* usr cntl op "n" */
+#define        TIOCCONS        _IOW('t', 98, int)              /* become virtual console */
+#define        TIOCSCTTY       _IO('t', 97)            /* become controlling tty */
+#define        TIOCEXT         _IOW('t', 96, int)      /* pty: external processing */
+#define        TIOCSIG         _IO('t', 95)            /* pty: generate signal */
+#define TIOCDRAIN      _IO('t', 94)            /* wait till output drained */
+
+#define TTYDISC                0               /* termios tty line discipline */
+#define        TABLDISC        3               /* tablet discipline */
+#define        SLIPDISC        4               /* serial IP discipline */
+
+
+#define        FIOCLEX         _IO('f', 1)             /* set close on exec on fd */
+#define        FIONCLEX        _IO('f', 2)             /* remove close on exec */
+#define        FIONREAD        _IOR('f', 127, int)     /* get # bytes to read */
+#define        FIONBIO         _IOW('f', 126, int)     /* set/clear non-blocking i/o */
+#define        FIOASYNC        _IOW('f', 125, int)     /* set/clear async i/o */
+#define        FIOSETOWN       _IOW('f', 124, int)     /* set owner */
+#define        FIOGETOWN       _IOR('f', 123, int)     /* get owner */
+
+/* socket i/o controls */
+#define        SIOCSHIWAT      _IOW('s',  0, int)              /* set high watermark */
+#define        SIOCGHIWAT      _IOR('s',  1, int)              /* get high watermark */
+#define        SIOCSLOWAT      _IOW('s',  2, int)              /* set low watermark */
+#define        SIOCGLOWAT      _IOR('s',  3, int)              /* get low watermark */
+#define        SIOCATMARK      _IOR('s',  7, int)              /* at oob mark? */
+#define        SIOCSPGRP       _IOW('s',  8, int)              /* set process group */
+#define        SIOCGPGRP       _IOR('s',  9, int)              /* get process group */
+
+#define        SIOCADDRT       _IOW('r', 10, ortentry) /* add route */
+#define        SIOCDELRT       _IOW('r', 11, ortentry) /* delete route */
+
+#define        SIOCSIFADDR     _IOW('i', 12, ifreq)    /* set ifnet address */
+#define        OSIOCGIFADDR    _IOWR('i',13, ifreq)    /* get ifnet address */
+#define        SIOCGIFADDR     _IOWR('i',33, ifreq)    /* get ifnet address */
+#define        SIOCSIFDSTADDR  _IOW('i', 14, ifreq)    /* set p-p address */
+#define        OSIOCGIFDSTADDR _IOWR('i',15, ifreq)    /* get p-p address */
+#define        SIOCGIFDSTADDR  _IOWR('i',34, ifreq)    /* get p-p address */
+#define        SIOCSIFFLAGS    _IOW('i', 16, ifreq)    /* set ifnet flags */
+#define        SIOCGIFFLAGS    _IOWR('i',17, ifreq)    /* get ifnet flags */
+#define        OSIOCGIFBRDADDR _IOWR('i',18, ifreq)    /* get broadcast addr */
+#define        SIOCGIFBRDADDR  _IOWR('i',35, ifreq)    /* get broadcast addr */
+#define        SIOCSIFBRDADDR  _IOW('i',19, ifreq)     /* set broadcast addr */
+#define        OSIOCGIFCONF    _IOWR('i',20, ifconf)   /* get ifnet list */
+#define        SIOCGIFCONF     _IOWR('i',36, ifconf)   /* get ifnet list */
+#define        OSIOCGIFNETMASK _IOWR('i',21, ifreq)    /* get net addr mask */
+#define        SIOCGIFNETMASK  _IOWR('i',37, ifreq)    /* get net addr mask */
+#define        SIOCSIFNETMASK  _IOW('i',22, ifreq)     /* set net addr mask */
+#define        SIOCGIFMETRIC   _IOWR('i',23, ifreq)    /* get IF metric */
+#define        SIOCSIFMETRIC   _IOW('i',24, ifreq)     /* set IF metric */
+#define        SIOCDIFADDR     _IOW('i',25, ifreq)     /* delete IF addr */
+#define        SIOCAIFADDR     _IOW('i',26, ifaliasreq)        /* add/chg IF alias */
+
+#define        SIOCSARP        _IOW('i', 30, arpreq)   /* set arp entry */
+#define        OSIOCGARP       _IOWR('i',31, arpreq)   /* get arp entry */
+#define        SIOCGARP        _IOWR('i',38, arpreq)   /* get arp entry */
+#define        SIOCDARP        _IOW('i', 32, arpreq)   /* delete arp entry */
+
+
+/* Compatibility with 4.3 BSD terminal driver.
+   From 4.4 <sys/ioctl_compat.h>.  */
+
+#ifdef USE_OLD_TTY
+# undef  TIOCGETD
+# define TIOCGETD      _IOR('t', 0, int)       /* get line discipline */
+# undef  TIOCSETD
+# define TIOCSETD      _IOW('t', 1, int)       /* set line discipline */
+#else
+# define OTIOCGETD     _IOR('t', 0, int)       /* get line discipline */
+# define OTIOCSETD     _IOW('t', 1, int)       /* set line discipline */
+#endif
+#define        TIOCHPCL        _IO('t', 2)             /* hang up on last close */
+#define        TIOCGETP        _IOR('t', 8,sgttyb)/* get parameters -- gtty */
+#define        TIOCSETP        _IOW('t', 9,sgttyb)/* set parameters -- stty */
+#define        TIOCSETN        _IOW('t',10,sgttyb)/* as above, but no flushtty*/
+#define        TIOCSETC        _IOW('t',17,tchars)/* set special characters */
+#define        TIOCGETC        _IOR('t',18,tchars)/* get special characters */
+#define                TANDEM          0x00000001      /* send stopc on out q full */
+#define                CBREAK          0x00000002      /* half-cooked mode */
+#define                LCASE           0x00000004      /* simulate lower case */
+#define                ECHO            0x00000008      /* echo input */
+#define                CRMOD           0x00000010      /* map \r to \r\n on output */
+#define                RAW             0x00000020      /* no i/o processing */
+#define                ODDP            0x00000040      /* get/send odd parity */
+#define                EVENP           0x00000080      /* get/send even parity */
+#define                ANYP            0x000000c0      /* get any parity/send none */
+#define                NLDELAY         0x00000300      /* \n delay */
+#define                        NL0     0x00000000
+#define                        NL1     0x00000100      /* tty 37 */
+#define                        NL2     0x00000200      /* vt05 */
+#define                        NL3     0x00000300
+#define                TBDELAY         0x00000c00      /* horizontal tab delay */
+#define                        TAB0    0x00000000
+#define                        TAB1    0x00000400      /* tty 37 */
+#define                        TAB2    0x00000800
+#define                XTABS           0x00000c00      /* expand tabs on output */
+#define                CRDELAY         0x00003000      /* \r delay */
+#define                        CR0     0x00000000
+#define                        CR1     0x00001000      /* tn 300 */
+#define                        CR2     0x00002000      /* tty 37 */
+#define                        CR3     0x00003000      /* concept 100 */
+#define                VTDELAY         0x00004000      /* vertical tab delay */
+#define                        FF0     0x00000000
+#define                        FF1     0x00004000      /* tty 37 */
+#define                BSDELAY         0x00008000      /* \b delay */
+#define                        BS0     0x00000000
+#define                        BS1     0x00008000
+#define                ALLDELAY        (NLDELAY|TBDELAY|CRDELAY|VTDELAY|BSDELAY)
+#define                CRTBS           0x00010000      /* do backspacing for crt */
+#define                PRTERA          0x00020000      /* \ ... / erase */
+#define                CRTERA          0x00040000      /* " \b " to wipe out char */
+#define                TILDE           0x00080000      /* hazeltine tilde kludge */
+#define                MDMBUF          0x00100000      /*start/stop output on carrier*/
+#define                LITOUT          0x00200000      /* literal output */
+#define                TOSTOP          0x00400000      /*SIGSTOP on background output*/
+#define                FLUSHO          0x00800000      /* flush output to terminal */
+#define                NOHANG          0x01000000      /* (no-op) was no SIGHUP on carrier drop */
+#define                L001000         0x02000000
+#define                CRTKIL          0x04000000      /* kill line with " \b " */
+#define                PASS8           0x08000000
+#define                CTLECH          0x10000000      /* echo control chars as ^X */
+#define                PENDIN          0x20000000      /* tp->t_rawq needs reread */
+#define                DECCTQ          0x40000000      /* only ^Q starts after ^S */
+#define                NOFLSH          0x80000000      /* no output flush on signal */
+#define        TIOCLBIS        _IOW('t', 127, int)     /* bis local mode bits */
+#define        TIOCLBIC        _IOW('t', 126, int)     /* bic local mode bits */
+#define        TIOCLSET        _IOW('t', 125, int)     /* set entire local mode word */
+#define        TIOCLGET        _IOR('t', 124, int)     /* get local modes */
+#define                LCRTBS          (CRTBS>>16)
+#define                LPRTERA         (PRTERA>>16)
+#define                LCRTERA         (CRTERA>>16)
+#define                LTILDE          (TILDE>>16)
+#define                LMDMBUF         (MDMBUF>>16)
+#define                LLITOUT         (LITOUT>>16)
+#define                LTOSTOP         (TOSTOP>>16)
+#define                LFLUSHO         (FLUSHO>>16)
+#define                LNOHANG         (NOHANG>>16)
+#define                LCRTKIL         (CRTKIL>>16)
+#define                LPASS8          (PASS8>>16)
+#define                LCTLECH         (CTLECH>>16)
+#define                LPENDIN         (PENDIN>>16)
+#define                LDECCTQ         (DECCTQ>>16)
+#define                LNOFLSH         (NOFLSH>>16)
+#define        TIOCSLTC        _IOW('t',117,ltchars)/* set local special chars*/
+#define        TIOCGLTC        _IOR('t',116,ltchars)/* get local special chars*/
+#define OTIOCCONS      _IO('t', 98)    /* for hp300 -- sans int arg */
+#define        OTTYDISC        0
+#define        NETLDISC        1
+#define        NTTYDISC        2
+
+/* From 4.4 <sys/ttydev.h>.   */
+#ifdef USE_OLD_TTY
+#define B0     0
+#define B50    1
+#define B75    2
+#define B110   3
+#define B134   4
+#define B150   5
+#define B200   6
+#define B300   7
+#define B600   8
+#define B1200  9
+#define        B1800   10
+#define B2400  11
+#define B4800  12
+#define B9600  13
+#define EXTA   14
+#define EXTB   15
+#endif /* USE_OLD_TTY */
+
+
+#endif /* bits/ioctls.h */
diff --git a/sysdeps/mach/hurd/bits/local_lim.h b/sysdeps/mach/hurd/bits/local_lim.h
new file mode 100644 (file)
index 0000000..e26aa24
--- /dev/null
@@ -0,0 +1,39 @@
+/* Minimum guaranteed maximum values for system limits.  Hurd version.
+   Copyright (C) 1993, 1994, 1996 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/* GNU has no arbitrary fixed limits on these things, so we don't
+   define the macros.  Some things are unlimited.  Some are in fact
+   limited but the limit is run-time dependent and fetched with
+   `sysconf' or `pathconf'.
+
+   POSIX.1 requires that we define NGROUPS_MAX (though none of the others
+   is required).  GNU allows any number of supplementary groups,
+   dynamically allocated.  So we pick a number which seems vaguely
+   suitable, and `sysconf' will return a number at least as large.  */
+
+#define NGROUPS_MAX    256
+
+/* The maximum number of symbolic links that are allowed in a single file
+   name resolution.  When a further link is encountered, the call returns
+   ELOOP.  This name is a GNU extension; POSIX.1 has no such limit, and BSD
+   calls it MAXSYMLINKS in <sys/param.h>.  */
+
+#ifdef __USE_GNU               /* 1003.1a defines this */
+#define        SYMLOOP_MAX     8
+#endif
diff --git a/sysdeps/mach/hurd/bits/posix_opt.h b/sysdeps/mach/hurd/bits/posix_opt.h
new file mode 100644 (file)
index 0000000..045b4b6
--- /dev/null
@@ -0,0 +1,21 @@
+/* Posix options supported by the GNU Hurd port of GNU libc. */
+
+#define _POSIX_JOB_CONTROL     1
+#define _POSIX_SAVED_IDS       1
+#define _POSIX_VDISABLE                ((unsigned char) -1)
+
+/* Different Hurd filesystems might do these differently. */
+#undef _POSIX_CHOWN_RESTRICTED
+#undef _POSIX_NO_TRUNC
+/* Posix options supported by the GNU Hurd port of GNU libc. */ 
+
+#define _POSIX_JOB_CONTROL     1
+#define _POSIX_SAVED_IDS       1
+#define _POSIX_VDISABLE                ((unsigned char) -1)
+
+/* Different Hurd filesystems might do these differently. */
+#undef _POSIX_CHOWN_RESTRICTED
+#undef _POSIX_NO_TRUNC
+
+
+
diff --git a/sysdeps/mach/hurd/bits/stat.h b/sysdeps/mach/hurd/bits/stat.h
new file mode 100644 (file)
index 0000000..2110a73
--- /dev/null
@@ -0,0 +1,136 @@
+/* Copyright (C) 1992, 1993, 1994, 1996, 1997 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+/*
+ * Never include this file directly; use <sys/stat.h> instead.
+ */
+
+#ifndef        _BITS_STAT_H
+#define        _BITS_STAT_H    1
+
+#include <bits/types.h>
+
+/* NOTE: The size of this structure (32 ints) is known in
+   <hurd/hurd_types.defs>, since it is used in the `io_stat' RPC.  MiG
+   does not cope at all well with the passed C structure not being of
+   the expected size.  There are some filler words at the end to allow
+   for future expansion.  To increase the size of the structure used
+   in the RPC and retain binary compatibility, we would need to assign
+   a new message number.  */
+
+struct stat
+  {
+    int st_fstype;             /* File system type.  */
+    __fsid_t st_fsid;          /* File system ID.  */
+#define        st_dev  st_fsid
+
+    __ino_t st_ino;            /* File number.  */
+    unsigned int st_gen;       /* To detect reuse of file numbers.  */
+    __dev_t st_rdev;           /* Device if special file.  */
+    __mode_t st_mode;          /* File mode.  */
+    __nlink_t st_nlink;                /* Number of links.  */
+
+    __uid_t st_uid;            /* Owner.  */
+    __gid_t st_gid;            /* Owning group.  */
+
+    __off_t st_size;           /* Size in bytes.  */
+
+    __time_t st_atime;         /* Access time, seconds */
+    unsigned long int st_atime_usec; /* and microseconds.  */
+    __time_t st_mtime;         /* Modification time, seconds */
+    unsigned long int st_mtime_usec; /* and microseconds.  */
+    __time_t st_ctime;         /* Status change time, seconds */
+    unsigned long int st_ctime_usec; /* and microseconds.  */
+
+    unsigned int st_blksize;   /* Optimal size for I/O.  */
+
+#define        _STATBUF_ST_BLKSIZE     /* Tell code we have this member.  */
+
+    unsigned int st_blocks;    /* Number of 512-byte blocks allocated.
+                                  Not related to `st_blksize'.  */
+
+    __uid_t st_author;         /* File author.  */
+
+    unsigned int st_flags;     /* User-defined flags.
+                                  High 16 bits can be set only by root.  */
+
+#define _SPARE_SIZE    ((sizeof (__fsid_t) == sizeof (int)) ? 12 : 11)
+    int st_spare[_SPARE_SIZE]; /* Room for future expansion.  */
+#undef _SPARE_SIZE
+  };
+
+/* Encoding of the file mode.  */
+
+#define        __S_IFMT        0170000 /* These bits determine file type.  */
+
+/* File types.  */
+#define        __S_IFDIR       0040000 /* Directory.  */
+#define        __S_IFCHR       0020000 /* Character device.  */
+#define        __S_IFBLK       0060000 /* Block device.  */
+#define        __S_IFREG       0100000 /* Regular file.  */
+#define        __S_IFLNK       0120000 /* Symbolic link.  */
+#define        __S_IFSOCK      0140000 /* Socket.  */
+#define        __S_IFIFO       0010000 /* FIFO.  */
+
+/* Protection bits.  */
+
+#define        __S_ISUID       04000   /* Set user ID on execution.  */
+#define        __S_ISGID       02000   /* Set group ID on execution.  */
+#define        __S_ISVTX       01000   /* Save swapped text after use (sticky).  */
+#define        __S_IREAD       00400   /* Read by owner.  */
+#define        __S_IWRITE      00200   /* Write by owner.  */
+#define        __S_IEXEC       00100   /* Execute by owner.  */
+
+
+#ifdef __USE_GNU
+/* If set, there is no benefit in caching the contents of this file.  */
+#define S_INOCACHE     000000200000
+
+/* If the S_IUSEUNK bit is set, then the S_IUNKNOWN bits (see below)
+   control access for unknown users.  If S_IUSEUNK is clear, then unknown
+   users are treated as "others" for purposes of access control.  */
+#define S_IUSEUNK      000000400000
+/* Mask of protection bits for unknown users (no effective IDs at all).  */
+#define S_IUNKNOWN      000007000000
+/* Shift S_IREAD, S_IWRITE, S_IEXEC left this many bits to produce the
+   protection bits for unknown users.  */
+#define S_IUNKSHIFT    12
+
+/* Read only bits: */
+
+/* There is a passive translator set for this file */
+#define S_IPTRANS      000010000000
+/* There is an active translator running on this file */
+#define S_IATRANS      000020000000
+/* This is the root of a filesystem (or single node translator) */
+#define S_IROOT                000040000000
+/* All the bits relevant to translators */
+#define S_ITRANS       000070000000
+
+/* ALL the unused bits.  */
+#define        S_ISPARE        (~(S_IFMT|S_ITRANS|S_INOCACHE|    \
+                          S_IUSEUNK|S_IUNKNOWN|07777))
+#endif
+
+/* Default file creation mask (umask).  */
+#ifdef __USE_BSD
+#define        CMASK           0022
+#endif
+
+
+#endif /* bits/stat.h */