summaryrefslogtreecommitdiff
path: root/sysdeps/mach/hurd/bits
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/mach/hurd/bits')
-rw-r--r--sysdeps/mach/hurd/bits/errno.h705
-rw-r--r--sysdeps/mach/hurd/bits/fcntl.h4
-rw-r--r--sysdeps/mach/hurd/bits/ioctls.h2
-rw-r--r--sysdeps/mach/hurd/bits/local_lim.h11
-rw-r--r--sysdeps/mach/hurd/bits/param.h4
-rw-r--r--sysdeps/mach/hurd/bits/posix_opt.h54
-rw-r--r--sysdeps/mach/hurd/bits/socket.h41
-rw-r--r--sysdeps/mach/hurd/bits/stat.h7
-rw-r--r--sysdeps/mach/hurd/bits/statfs.h18
-rw-r--r--sysdeps/mach/hurd/bits/statvfs.h18
-rw-r--r--sysdeps/mach/hurd/bits/sysmacros.h60
-rw-r--r--sysdeps/mach/hurd/bits/types/error_t.h29
-rw-r--r--sysdeps/mach/hurd/bits/typesizes.h2
13 files changed, 583 insertions, 372 deletions
diff --git a/sysdeps/mach/hurd/bits/errno.h b/sysdeps/mach/hurd/bits/errno.h
index d20ffe654a..8096fb9c05 100644
--- a/sysdeps/mach/hurd/bits/errno.h
+++ b/sysdeps/mach/hurd/bits/errno.h
@@ -1,329 +1,414 @@
-/* This file generated by errnos.awk. */
+/* This file generated by errnos.awk from
+ errno.texi
+ mach/message.h
+ mach/kern_return.h
+ mach/mig_errors.h
+ device/device_types.h
+ Do not edit this file; edit errnos.awk and regenerate it. */
-/* The Hurd uses Mach error system 0x10, currently only subsystem 0. */
-#ifndef _HURD_ERRNO
-#define _HURD_ERRNO(n) ((0x10 << 26) | ((n) & 0x3fff))
+#ifndef _BITS_ERRNO_H
+#define _BITS_ERRNO_H 1
+
+#if !defined _ERRNO_H
+# error "Never include <bits/errno.h> directly; use <errno.h> instead."
#endif
-#ifdef _ERRNO_H
+#ifndef __ASSEMBLER__
enum __error_t_codes
{
- /* The value zero always means success and it is perfectly fine for
- code to use 0 explicitly (or implicitly, e.g. via Boolean coercion).
- Having an enum entry for zero both makes the debugger print the name
- for error_t-typed zero values, and prevents the compiler from
- issuing warnings about 'case 0:' in a switch on an error_t-typed
- value. */
- ESUCCESS = 0,
+ /* The value zero always means success and it is perfectly fine
+ for code to use 0 explicitly (or implicitly, e.g. via Boolean
+ coercion.) Having an enum entry for zero both makes the
+ debugger print the name for error_t-typed zero values, and
+ prevents the compiler from issuing warnings about 'case 0:'
+ in a switch on an error_t-typed value. */
+ ESUCCESS = 0,
-#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) /* No such device or address */
- 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)/* No such 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)/* Disk quota exceeded */
- ESTALE = _HURD_ERRNO (70),
-#define ESTALE _HURD_ERRNO (70)/* Stale 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 */
- ENOTSUP = _HURD_ERRNO (118),
-#define ENOTSUP _HURD_ERRNO (118)/* Not supported */
- 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 */
- ECANCELED = _HURD_ERRNO (119),
-#define ECANCELED _HURD_ERRNO (119)/* Operation canceled */
+ /* The Hurd uses Mach error system 0x10, subsystem 0. */
+ EPERM = 0x40000001, /* Operation not permitted */
+ ENOENT = 0x40000002, /* No such file or directory */
+ ESRCH = 0x40000003, /* No such process */
+ EINTR = 0x40000004, /* Interrupted system call */
+ EIO = 0x40000005, /* Input/output error */
+ ENXIO = 0x40000006, /* No such device or address */
+ E2BIG = 0x40000007, /* Argument list too long */
+ ENOEXEC = 0x40000008, /* Exec format error */
+ EBADF = 0x40000009, /* Bad file descriptor */
+ ECHILD = 0x4000000a, /* No child processes */
+ EDEADLK = 0x4000000b, /* Resource deadlock avoided */
+ ENOMEM = 0x4000000c, /* Cannot allocate memory */
+ EACCES = 0x4000000d, /* Permission denied */
+ EFAULT = 0x4000000e, /* Bad address */
+ ENOTBLK = 0x4000000f, /* Block device required */
+ EBUSY = 0x40000010, /* Device or resource busy */
+ EEXIST = 0x40000011, /* File exists */
+ EXDEV = 0x40000012, /* Invalid cross-device link */
+ ENODEV = 0x40000013, /* No such device */
+ ENOTDIR = 0x40000014, /* Not a directory */
+ EISDIR = 0x40000015, /* Is a directory */
+ EINVAL = 0x40000016, /* Invalid argument */
+ EMFILE = 0x40000018, /* Too many open files */
+ ENFILE = 0x40000017, /* Too many open files in system */
+ ENOTTY = 0x40000019, /* Inappropriate ioctl for device */
+ ETXTBSY = 0x4000001a, /* Text file busy */
+ EFBIG = 0x4000001b, /* File too large */
+ ENOSPC = 0x4000001c, /* No space left on device */
+ ESPIPE = 0x4000001d, /* Illegal seek */
+ EROFS = 0x4000001e, /* Read-only file system */
+ EMLINK = 0x4000001f, /* Too many links */
+ EPIPE = 0x40000020, /* Broken pipe */
+ EDOM = 0x40000021, /* Numerical argument out of domain */
+ ERANGE = 0x40000022, /* Numerical result out of range */
+ EAGAIN = 0x40000023, /* Resource temporarily unavailable */
+ EINPROGRESS = 0x40000024, /* Operation now in progress */
+ EALREADY = 0x40000025, /* Operation already in progress */
+ ENOTSOCK = 0x40000026, /* Socket operation on non-socket */
+ EMSGSIZE = 0x40000028, /* Message too long */
+ EPROTOTYPE = 0x40000029, /* Protocol wrong type for socket */
+ ENOPROTOOPT = 0x4000002a, /* Protocol not available */
+ EPROTONOSUPPORT = 0x4000002b, /* Protocol not supported */
+ ESOCKTNOSUPPORT = 0x4000002c, /* Socket type not supported */
+ EOPNOTSUPP = 0x4000002d, /* Operation not supported */
+ EPFNOSUPPORT = 0x4000002e, /* Protocol family not supported */
+ EAFNOSUPPORT = 0x4000002f, /* Address family not supported by protocol */
+ EADDRINUSE = 0x40000030, /* Address already in use */
+ EADDRNOTAVAIL = 0x40000031, /* Cannot assign requested address */
+ ENETDOWN = 0x40000032, /* Network is down */
+ ENETUNREACH = 0x40000033, /* Network is unreachable */
+ ENETRESET = 0x40000034, /* Network dropped connection on reset */
+ ECONNABORTED = 0x40000035, /* Software caused connection abort */
+ ECONNRESET = 0x40000036, /* Connection reset by peer */
+ ENOBUFS = 0x40000037, /* No buffer space available */
+ EISCONN = 0x40000038, /* Transport endpoint is already connected */
+ ENOTCONN = 0x40000039, /* Transport endpoint is not connected */
+ EDESTADDRREQ = 0x40000027, /* Destination address required */
+ ESHUTDOWN = 0x4000003a, /* Cannot send after transport endpoint shutdown */
+ ETOOMANYREFS = 0x4000003b, /* Too many references: cannot splice */
+ ETIMEDOUT = 0x4000003c, /* Connection timed out */
+ ECONNREFUSED = 0x4000003d, /* Connection refused */
+ ELOOP = 0x4000003e, /* Too many levels of symbolic links */
+ ENAMETOOLONG = 0x4000003f, /* File name too long */
+ EHOSTDOWN = 0x40000040, /* Host is down */
+ EHOSTUNREACH = 0x40000041, /* No route to host */
+ ENOTEMPTY = 0x40000042, /* Directory not empty */
+ EPROCLIM = 0x40000043, /* Too many processes */
+ EUSERS = 0x40000044, /* Too many users */
+ EDQUOT = 0x40000045, /* Disk quota exceeded */
+ ESTALE = 0x40000046, /* Stale file handle */
+ EREMOTE = 0x40000047, /* Object is remote */
+ EBADRPC = 0x40000048, /* RPC struct is bad */
+ ERPCMISMATCH = 0x40000049, /* RPC version wrong */
+ EPROGUNAVAIL = 0x4000004a, /* RPC program not available */
+ EPROGMISMATCH = 0x4000004b, /* RPC program version wrong */
+ EPROCUNAVAIL = 0x4000004c, /* RPC bad procedure for program */
+ ENOLCK = 0x4000004d, /* No locks available */
+ EFTYPE = 0x4000004f, /* Inappropriate file type or format */
+ EAUTH = 0x40000050, /* Authentication error */
+ ENEEDAUTH = 0x40000051, /* Need authenticator */
+ ENOSYS = 0x4000004e, /* Function not implemented */
+ ENOTSUP = 0x40000076, /* Not supported */
+ EILSEQ = 0x4000006a, /* Invalid or incomplete multibyte or wide character */
+ EBACKGROUND = 0x40000064, /* Inappropriate operation for background process */
+ EDIED = 0x40000065, /* Translator died */
+ ED = 0x40000066, /* ? */
+ EGREGIOUS = 0x40000067, /* You really blew it this time */
+ EIEIO = 0x40000068, /* Computer bought the farm */
+ EGRATUITOUS = 0x40000069, /* Gratuitous error */
+ EBADMSG = 0x4000006b, /* Bad message */
+ EIDRM = 0x4000006c, /* Identifier removed */
+ EMULTIHOP = 0x4000006d, /* Multihop attempted */
+ ENODATA = 0x4000006e, /* No data available */
+ ENOLINK = 0x4000006f, /* Link has been severed */
+ ENOMSG = 0x40000070, /* No message of desired type */
+ ENOSR = 0x40000071, /* Out of streams resources */
+ ENOSTR = 0x40000072, /* Device not a stream */
+ EOVERFLOW = 0x40000073, /* Value too large for defined data type */
+ EPROTO = 0x40000074, /* Protocol error */
+ ETIME = 0x40000075, /* Timer expired */
+ ECANCELED = 0x40000077, /* Operation canceled */
+ EOWNERDEAD = 0x40000078, /* Owner died */
+ ENOTRECOVERABLE = 0x40000079, /* State not recoverable */
- /* 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/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/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,
+ EKERN_TIMEDOUT = 27,
+ EKERN_INTERRUPTED = 28,
- /* 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 <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 */
+/* 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 */
+ /* Because the C standard requires that errno have type 'int',
+ this enumeration must be a signed type. */
+ __FORCE_ERROR_T_CODES_SIGNED = -1
};
-#define _HURD_ERRNOS 120
+#endif /* not __ASSEMBLER__ */
-/* 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
+/* The C standard requires that all of the E-constants be
+ defined as macros. */
+
+#define EPERM 0x40000001
+#define ENOENT 0x40000002
+#define ESRCH 0x40000003
+#define EINTR 0x40000004
+#define EIO 0x40000005
+#define ENXIO 0x40000006
+#define E2BIG 0x40000007
+#define ENOEXEC 0x40000008
+#define EBADF 0x40000009
+#define ECHILD 0x4000000a
+#define EDEADLK 0x4000000b
+#define ENOMEM 0x4000000c
+#define EACCES 0x4000000d
+#define EFAULT 0x4000000e
+#define ENOTBLK 0x4000000f
+#define EBUSY 0x40000010
+#define EEXIST 0x40000011
+#define EXDEV 0x40000012
+#define ENODEV 0x40000013
+#define ENOTDIR 0x40000014
+#define EISDIR 0x40000015
+#define EINVAL 0x40000016
+#define EMFILE 0x40000018
+#define ENFILE 0x40000017
+#define ENOTTY 0x40000019
+#define ETXTBSY 0x4000001a
+#define EFBIG 0x4000001b
+#define ENOSPC 0x4000001c
+#define ESPIPE 0x4000001d
+#define EROFS 0x4000001e
+#define EMLINK 0x4000001f
+#define EPIPE 0x40000020
+#define EDOM 0x40000021
+#define ERANGE 0x40000022
+#define EAGAIN 0x40000023
+#define EWOULDBLOCK EAGAIN
+#define EINPROGRESS 0x40000024
+#define EALREADY 0x40000025
+#define ENOTSOCK 0x40000026
+#define EMSGSIZE 0x40000028
+#define EPROTOTYPE 0x40000029
+#define ENOPROTOOPT 0x4000002a
+#define EPROTONOSUPPORT 0x4000002b
+#define ESOCKTNOSUPPORT 0x4000002c
+#define EOPNOTSUPP 0x4000002d
+#define EPFNOSUPPORT 0x4000002e
+#define EAFNOSUPPORT 0x4000002f
+#define EADDRINUSE 0x40000030
+#define EADDRNOTAVAIL 0x40000031
+#define ENETDOWN 0x40000032
+#define ENETUNREACH 0x40000033
+#define ENETRESET 0x40000034
+#define ECONNABORTED 0x40000035
+#define ECONNRESET 0x40000036
+#define ENOBUFS 0x40000037
+#define EISCONN 0x40000038
+#define ENOTCONN 0x40000039
+#define EDESTADDRREQ 0x40000027
+#define ESHUTDOWN 0x4000003a
+#define ETOOMANYREFS 0x4000003b
+#define ETIMEDOUT 0x4000003c
+#define ECONNREFUSED 0x4000003d
+#define ELOOP 0x4000003e
+#define ENAMETOOLONG 0x4000003f
+#define EHOSTDOWN 0x40000040
+#define EHOSTUNREACH 0x40000041
+#define ENOTEMPTY 0x40000042
+#define EPROCLIM 0x40000043
+#define EUSERS 0x40000044
+#define EDQUOT 0x40000045
+#define ESTALE 0x40000046
+#define EREMOTE 0x40000047
+#define EBADRPC 0x40000048
+#define ERPCMISMATCH 0x40000049
+#define EPROGUNAVAIL 0x4000004a
+#define EPROGMISMATCH 0x4000004b
+#define EPROCUNAVAIL 0x4000004c
+#define ENOLCK 0x4000004d
+#define EFTYPE 0x4000004f
+#define EAUTH 0x40000050
+#define ENEEDAUTH 0x40000051
+#define ENOSYS 0x4000004e
+#define ENOTSUP 0x40000076
+#define EILSEQ 0x4000006a
+#define EBACKGROUND 0x40000064
+#define EDIED 0x40000065
+#define ED 0x40000066
+#define EGREGIOUS 0x40000067
+#define EIEIO 0x40000068
+#define EGRATUITOUS 0x40000069
+#define EBADMSG 0x4000006b
+#define EIDRM 0x4000006c
+#define EMULTIHOP 0x4000006d
+#define ENODATA 0x4000006e
+#define ENOLINK 0x4000006f
+#define ENOMSG 0x40000070
+#define ENOSR 0x40000071
+#define ENOSTR 0x40000072
+#define EOVERFLOW 0x40000073
+#define EPROTO 0x40000074
+#define ETIME 0x40000075
+#define ECANCELED 0x40000077
+#define EOWNERDEAD 0x40000078
+#define ENOTRECOVERABLE 0x40000079
+
+/* Errors from <mach/message.h>. */
+#define EMACH_SEND_IN_PROGRESS 0x10000001
+#define EMACH_SEND_INVALID_DATA 0x10000002
+#define EMACH_SEND_INVALID_DEST 0x10000003
+#define EMACH_SEND_TIMED_OUT 0x10000004
+#define EMACH_SEND_WILL_NOTIFY 0x10000005
+#define EMACH_SEND_NOTIFY_IN_PROGRESS 0x10000006
+#define EMACH_SEND_INTERRUPTED 0x10000007
+#define EMACH_SEND_MSG_TOO_SMALL 0x10000008
+#define EMACH_SEND_INVALID_REPLY 0x10000009
+#define EMACH_SEND_INVALID_RIGHT 0x1000000a
+#define EMACH_SEND_INVALID_NOTIFY 0x1000000b
+#define EMACH_SEND_INVALID_MEMORY 0x1000000c
+#define EMACH_SEND_NO_BUFFER 0x1000000d
+#define EMACH_SEND_NO_NOTIFY 0x1000000e
+#define EMACH_SEND_INVALID_TYPE 0x1000000f
+#define EMACH_SEND_INVALID_HEADER 0x10000010
+#define EMACH_RCV_IN_PROGRESS 0x10004001
+#define EMACH_RCV_INVALID_NAME 0x10004002
+#define EMACH_RCV_TIMED_OUT 0x10004003
+#define EMACH_RCV_TOO_LARGE 0x10004004
+#define EMACH_RCV_INTERRUPTED 0x10004005
+#define EMACH_RCV_PORT_CHANGED 0x10004006
+#define EMACH_RCV_INVALID_NOTIFY 0x10004007
+#define EMACH_RCV_INVALID_DATA 0x10004008
+#define EMACH_RCV_PORT_DIED 0x10004009
+#define EMACH_RCV_IN_SET 0x1000400a
+#define EMACH_RCV_HEADER_ERROR 0x1000400b
+#define EMACH_RCV_BODY_ERROR 0x1000400c
+
+/* Errors from <mach/kern_return.h>. */
+#define EKERN_INVALID_ADDRESS 1
+#define EKERN_PROTECTION_FAILURE 2
+#define EKERN_NO_SPACE 3
+#define EKERN_INVALID_ARGUMENT 4
+#define EKERN_FAILURE 5
+#define EKERN_RESOURCE_SHORTAGE 6
+#define EKERN_NOT_RECEIVER 7
+#define EKERN_NO_ACCESS 8
+#define EKERN_MEMORY_FAILURE 9
+#define EKERN_MEMORY_ERROR 10
+#define EKERN_NOT_IN_SET 12
+#define EKERN_NAME_EXISTS 13
+#define EKERN_ABORTED 14
+#define EKERN_INVALID_NAME 15
+#define EKERN_INVALID_TASK 16
+#define EKERN_INVALID_RIGHT 17
+#define EKERN_INVALID_VALUE 18
+#define EKERN_UREFS_OVERFLOW 19
+#define EKERN_INVALID_CAPABILITY 20
+#define EKERN_RIGHT_EXISTS 21
+#define EKERN_INVALID_HOST 22
+#define EKERN_MEMORY_PRESENT 23
+#define EKERN_WRITE_PROTECTION_FAILURE 24
+#define EKERN_TERMINATED 26
+#define EKERN_TIMEDOUT 27
+#define EKERN_INTERRUPTED 28
-/* Return the current thread's location for `errno'.
- The syntax of this function allows redeclarations like `int errno'. */
-extern int *__errno_location (void) __THROW __attribute__ ((__const__));
+/* Errors from <mach/mig_errors.h>. */
+#define EMIG_TYPE_ERROR -300
+#define EMIG_REPLY_MISMATCH -301
+#define EMIG_REMOTE_ERROR -302
+#define EMIG_BAD_ID -303
+#define EMIG_BAD_ARGUMENTS -304
+#define EMIG_NO_REPLY -305
+#define EMIG_EXCEPTION -306
+#define EMIG_ARRAY_TOO_LARGE -307
+#define EMIG_SERVER_DIED -308
+#define EMIG_DESTROY_REQUEST -309
-#define errno (*__errno_location ())
+/* Errors from <device/device_types.h>. */
+#define ED_IO_ERROR 2500
+#define ED_WOULD_BLOCK 2501
+#define ED_NO_SUCH_DEVICE 2502
+#define ED_ALREADY_OPEN 2503
+#define ED_DEVICE_DOWN 2504
+#define ED_INVALID_OPERATION 2505
+#define ED_INVALID_RECNUM 2506
+#define ED_INVALID_SIZE 2507
+#define ED_NO_MEMORY 2508
+#define ED_READ_ONLY 2509
-#endif /* <errno.h> included. */
+#define _HURD_ERRNOS 122
-#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. */
+#endif /* bits/errno.h. */
diff --git a/sysdeps/mach/hurd/bits/fcntl.h b/sysdeps/mach/hurd/bits/fcntl.h
index fbd0b0abae..2cfaa872a5 100644
--- a/sysdeps/mach/hurd/bits/fcntl.h
+++ b/sysdeps/mach/hurd/bits/fcntl.h
@@ -1,5 +1,5 @@
/* O_*, F_*, FD_* bit values for GNU.
- Copyright (C) 1993-2016 Free Software Foundation, Inc.
+ Copyright (C) 1993-2018 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
@@ -135,7 +135,7 @@
#ifdef __USE_MISC
-/* Bits in the file status flags returned by F_GETFL. */
+/* Flags for TIOCFLUSH. */
# define FREAD O_RDONLY
# define FWRITE O_WRONLY
diff --git a/sysdeps/mach/hurd/bits/ioctls.h b/sysdeps/mach/hurd/bits/ioctls.h
index 7a5a28d52c..91a15b5083 100644
--- a/sysdeps/mach/hurd/bits/ioctls.h
+++ b/sysdeps/mach/hurd/bits/ioctls.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2018 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
diff --git a/sysdeps/mach/hurd/bits/local_lim.h b/sysdeps/mach/hurd/bits/local_lim.h
index a7760eeb1d..97f87ad5d2 100644
--- a/sysdeps/mach/hurd/bits/local_lim.h
+++ b/sysdeps/mach/hurd/bits/local_lim.h
@@ -1,5 +1,5 @@
/* Minimum guaranteed maximum values for system limits. Hurd version.
- Copyright (C) 1993-2016 Free Software Foundation, Inc.
+ Copyright (C) 1993-2018 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
@@ -32,3 +32,12 @@
suitable, and `sysconf' will return a number at least as large. */
#define NGROUPS_MAX 256
+
+/* The number of data keys per process. */
+#define _POSIX_THREAD_KEYS_MAX 128
+
+/* Controlling the iterations of destructors for thread-specific data. */
+#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
+
+/* The number of threads per process. */
+#define _POSIX_THREAD_THREADS_MAX 64
diff --git a/sysdeps/mach/hurd/bits/param.h b/sysdeps/mach/hurd/bits/param.h
index 84cbf5acca..5d4faf793f 100644
--- a/sysdeps/mach/hurd/bits/param.h
+++ b/sysdeps/mach/hurd/bits/param.h
@@ -1,5 +1,5 @@
/* Old-style Unix parameters and limits. Hurd version.
- Copyright (C) 1993-2016 Free Software Foundation, Inc.
+ Copyright (C) 1993-2018 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
@@ -20,6 +20,8 @@
# error "Never use <bits/param.h> directly; include <sys/param.h> instead."
#endif
+#include <bits/mach/param.h>
+
/* This file is deprecated and is provided only for compatibility with
Unix systems. It is unwise to include this file on programs which
are intended only for GNU systems.
diff --git a/sysdeps/mach/hurd/bits/posix_opt.h b/sysdeps/mach/hurd/bits/posix_opt.h
index 5a578f0c1f..dfb0ba46ec 100644
--- a/sysdeps/mach/hurd/bits/posix_opt.h
+++ b/sysdeps/mach/hurd/bits/posix_opt.h
@@ -1,5 +1,5 @@
/* Define POSIX options for GNU/Hurd.
- Copyright (C) 1998-2016 Free Software Foundation, Inc.
+ Copyright (C) 1998-2018 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
@@ -42,8 +42,8 @@
/* Mapping of files to memory is supported. */
#define _POSIX_MAPPED_FILES 200809L
-/* Locking of all memory could be supported in future. */
-#define _POSIX_MEMLOCK 0
+/* Locking of all memory is supported. */
+#define _POSIX_MEMLOCK 200809L
/* Locking of ranges of memory is supported. */
#define _POSIX_MEMLOCK_RANGE 200809L
@@ -53,13 +53,13 @@
/* Elements of the `c_cc' member of `struct termios' structure
can be disabled by using the value _POSIX_VDISABLE. */
-#define _POSIX_VDISABLE ((unsigned char) -1)
+#define _POSIX_VDISABLE '\0'
/* Different Hurd filesystems might do these differently.
You must query the particular file with `pathconf' or `fpathconf'. */
-#undef _POSIX_CHOWN_RESTRICTED /* Only root can change owner of file? */
-#undef _POSIX_NO_TRUNC /* Overlong file names get error? */
+#define _POSIX_CHOWN_RESTRICTED 0 /* Only root can change owner of file? */
+#define _POSIX_NO_TRUNC 0 /* Overlong file names get error? */
#undef _POSIX_SYNC_IO /* File supports O_SYNC et al? */
/* X/Open realtime support is not supported. */
@@ -71,24 +71,38 @@
/* XPG4.2 shared memory is not supported. */
#undef _XOPEN_SHM
-/* We do not have the POSIX threads interface. */
-#define _POSIX_THREADS -1
+/* Tell we have POSIX threads. */
+#define _POSIX_THREADS 200809L
/* We have the reentrant functions described in POSIX. */
#define _POSIX_REENTRANT_FUNCTIONS 1
#define _POSIX_THREAD_SAFE_FUNCTIONS 200809L
-/* These are all things that won't be supported when _POSIX_THREADS is not. */
+/* We do not provide priority scheduling for threads. */
#define _POSIX_THREAD_PRIORITY_SCHEDULING -1
-#define _POSIX_THREAD_ATTR_STACKSIZE -1
-#define _POSIX_THREAD_ATTR_STACKADDR -1
+
+/* We support user-defined stack sizes. */
+#define _POSIX_THREAD_ATTR_STACKSIZE 200809L
+
+/* We support user-defined stacks. */
+#define _POSIX_THREAD_ATTR_STACKADDR 200809L
+
+/* We do not support priority inheritence. */
#define _POSIX_THREAD_PRIO_INHERIT -1
+
+/* We do not support priority protection. */
#define _POSIX_THREAD_PRIO_PROTECT -1
+
#ifdef __USE_XOPEN2K8
+/* We do not support priority inheritence for robust mutexes. */
# define _POSIX_THREAD_ROBUST_PRIO_INHERIT -1
+
+/* We do not support priority protection for robust mutexes. */
# define _POSIX_THREAD_ROBUST_PRIO_PROTECT -1
#endif
-#define _POSIX_SEMAPHORES -1
+
+/* We support POSIX.1b semaphores. */
+#define _POSIX_SEMAPHORES 200809L
/* Real-time signals are not yet supported. */
#define _POSIX_REALTIME_SIGNALS -1
@@ -121,17 +135,17 @@
/* GNU libc provides regular expression handling. */
#define _POSIX_REGEXP 1
-/* Reader/Writer locks are not available. */
-#define _POSIX_READER_WRITER_LOCKS -1
+/* Reader/Writer locks are available. */
+#define _POSIX_READER_WRITER_LOCKS 200809L
/* We have a POSIX shell. */
#define _POSIX_SHELL 1
-/* We cannot support the Timeouts option without _POSIX_THREADS. */
-#define _POSIX_TIMEOUTS -1
+/* We support the Timeouts option. */
+#define _POSIX_TIMEOUTS 200809L
-/* We do not support spinlocks. */
-#define _POSIX_SPIN_LOCKS -1
+/* We support spinlocks. */
+#define _POSIX_SPIN_LOCKS 200809L
/* The `spawn' function family is supported. */
#define _POSIX_SPAWN 200809L
@@ -139,8 +153,8 @@
/* We do not have POSIX timers, but could in future without ABI change. */
#define _POSIX_TIMERS 0
-/* The barrier functions are not available. */
-#define _POSIX_BARRIERS -1
+/* The barrier functions are available. */
+#define _POSIX_BARRIERS 200809L
/* POSIX message queues could be available in future. */
#define _POSIX_MESSAGE_PASSING 0
diff --git a/sysdeps/mach/hurd/bits/socket.h b/sysdeps/mach/hurd/bits/socket.h
index 02c5dac032..18959139dc 100644
--- a/sysdeps/mach/hurd/bits/socket.h
+++ b/sysdeps/mach/hurd/bits/socket.h
@@ -1,5 +1,5 @@
/* System-specific socket constants and types. Hurd version.
- Copyright (C) 1991-2016 Free Software Foundation, Inc.
+ Copyright (C) 1991-2018 Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -25,11 +25,10 @@
#endif
#define __need_size_t
-#define __need_NULL
#include <stddef.h>
-#include <limits.h> /* XXX Is this allowed? */
-#include <bits/types.h>
+#include <bits/wordsize.h>
+#include <sys/types.h>
/* Type for length arguments in socket calls. */
#ifndef __socklen_t_defined
@@ -131,13 +130,19 @@ enum __socket_type
#define AF_APPLETALK PF_APPLETALK
#define AF_ROUTE PF_ROUTE
#define AF_LINK PF_LINK
-#define pseudo_AF_XTP PF_XTP
+#ifdef __USE_MISC
+# define pseudo_AF_XTP PF_XTP
+#endif
#define AF_COIP PF_COIP
#define AF_CNT PF_CNT
-#define pseudo_AF_RTIP PF_RTIP
+#ifdef __USE_MISC
+# define pseudo_AF_RTIP PF_RTIP
+#endif
#define AF_IPX PF_IPX
#define AF_SIP PF_SIP
-#define pseudo_AF_PIP PF_PIP
+#ifdef __USE_MISC
+# define pseudo_AF_PIP PF_PIP
+#endif
#define AF_INET6 PF_INET6
#define AF_MAX PF_MAX
@@ -156,20 +161,20 @@ struct sockaddr
/* Structure large enough to hold any socket address (with the historical
- exception of AF_UNIX). We reserve 128 bytes. */
-#if ULONG_MAX > 0xffffffff
+ exception of AF_UNIX). */
+#if __WORDSIZE == 64
# define __ss_aligntype __uint64_t
#else
# define __ss_aligntype __uint32_t
#endif
-#define _SS_SIZE 128
-#define _SS_PADSIZE (_SS_SIZE - (2 * sizeof (__ss_aligntype)))
+#define _SS_PADSIZE \
+ (_SS_SIZE - __SOCKADDR_COMMON_SIZE - sizeof (__ss_aligntype))
struct sockaddr_storage
{
__SOCKADDR_COMMON (ss_); /* Address family, etc. */
- __ss_aligntype __ss_align; /* Force desired alignment. */
char __ss_padding[_SS_PADSIZE];
+ __ss_aligntype __ss_align; /* Force desired alignment. */
};
@@ -220,13 +225,13 @@ struct cmsghdr
of cmsghdr structure. */
int cmsg_level; /* Originating protocol. */
int cmsg_type; /* Protocol specific type. */
-#if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L
+#if __glibc_c99_flexarr_available
__extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data. */
#endif
};
/* Ancillary data object manipulation macros. */
-#if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L
+#if __glibc_c99_flexarr_available
# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data)
#else
# define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1))
@@ -236,7 +241,7 @@ struct cmsghdr
#define CMSG_FIRSTHDR(mhdr) \
((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \
- ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL)
+ ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) 0)
#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \
& (size_t) ~(sizeof (size_t) - 1))
@@ -255,7 +260,7 @@ __NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg))
{
if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
/* The kernel header does this so there may be a reason. */
- return NULL;
+ return (struct cmsghdr *) 0;
__cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
+ CMSG_ALIGN (__cmsg->cmsg_len));
@@ -264,7 +269,7 @@ __NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg))
|| ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)
> ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))
/* No more entries. */
- return NULL;
+ return (struct cmsghdr *) 0;
return __cmsg;
}
#endif /* Use `extern inline'. */
@@ -280,6 +285,7 @@ enum
#define SCM_CREDS SCM_CREDS
};
+#ifdef __USE_MISC
/* Unfortunately, BSD practice dictates this structure be of fixed size.
If there are more than CMGROUP_MAX groups, the list is truncated.
(On GNU systems, the `cmcred_euid' field is just the first in the
@@ -300,6 +306,7 @@ struct cmsgcred
int cmcred_ngroups;
__gid_t cmcred_groups[CMGROUP_MAX];
};
+#endif
/* Protocol number used to manipulate socket-level options
with `getsockopt' and `setsockopt'. */
diff --git a/sysdeps/mach/hurd/bits/stat.h b/sysdeps/mach/hurd/bits/stat.h
index 3e4a7d247b..cb8680e000 100644
--- a/sysdeps/mach/hurd/bits/stat.h
+++ b/sysdeps/mach/hurd/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2018 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
@@ -255,4 +255,9 @@ extern int fchflags (int __fd, unsigned long int __flags) __THROW;
__END_DECLS
#endif
+#ifdef __USE_ATFILE
+# define UTIME_NOW -1 /* corresponds to the current time */
+# define UTIME_OMIT -2 /* target time is omitted */
+#endif
+
#endif /* bits/stat.h */
diff --git a/sysdeps/mach/hurd/bits/statfs.h b/sysdeps/mach/hurd/bits/statfs.h
index ab37e5a51f..82e570b222 100644
--- a/sysdeps/mach/hurd/bits/statfs.h
+++ b/sysdeps/mach/hurd/bits/statfs.h
@@ -1,5 +1,5 @@
/* Definition of `struct statfs', information about a filesystem.
- Copyright (C) 1996-2016 Free Software Foundation, Inc.
+ Copyright (C) 1996-2018 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
@@ -37,7 +37,7 @@
struct statfs
{
unsigned int f_type;
- unsigned int f_bsize;
+ unsigned long int f_bsize;
#ifndef __USE_FILE_OFFSET64
__fsblkcnt_t f_blocks;
__fsblkcnt_t f_bfree;
@@ -52,14 +52,14 @@ struct statfs
__fsblkcnt64_t f_ffree;
#endif
__fsid_t f_fsid;
- unsigned int f_namelen;
+ unsigned long int f_namelen;
#ifndef __USE_FILE_OFFSET64
__fsfilcnt_t f_favail;
#else
__fsfilcnt64_t f_favail;
#endif
- unsigned int f_frsize;
- unsigned int f_flag;
+ unsigned long int f_frsize;
+ unsigned long int f_flag;
unsigned int f_spare[3];
};
@@ -67,17 +67,17 @@ struct statfs
struct statfs64
{
unsigned int f_type;
- unsigned int f_bsize;
+ unsigned long int f_bsize;
__fsblkcnt64_t f_blocks;
__fsblkcnt64_t f_bfree;
__fsblkcnt64_t f_bavail;
__fsblkcnt64_t f_files;
__fsblkcnt64_t f_ffree;
__fsid_t f_fsid;
- unsigned int f_namelen;
+ unsigned long int f_namelen;
__fsfilcnt64_t f_favail;
- unsigned int f_frsize;
- unsigned int f_flag;
+ unsigned long int f_frsize;
+ unsigned long int f_flag;
unsigned int f_spare[3];
};
#endif
diff --git a/sysdeps/mach/hurd/bits/statvfs.h b/sysdeps/mach/hurd/bits/statvfs.h
index 98d622b366..9880b2c9c7 100644
--- a/sysdeps/mach/hurd/bits/statvfs.h
+++ b/sysdeps/mach/hurd/bits/statvfs.h
@@ -1,5 +1,5 @@
/* Definition of `struct statvfs', information about a filesystem.
- Copyright (C) 1998-2016 Free Software Foundation, Inc.
+ Copyright (C) 1998-2018 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
@@ -30,7 +30,7 @@
struct statvfs
{
unsigned int __f_type;
- unsigned int f_bsize;
+ unsigned long int f_bsize;
#ifndef __USE_FILE_OFFSET64
__fsblkcnt_t f_blocks;
__fsblkcnt_t f_bfree;
@@ -45,14 +45,14 @@ struct statvfs
__fsfilcnt64_t f_ffree;
#endif
__fsid_t f_fsid;
- unsigned int f_namemax; /* NOTE: f_namelen in `struct statfs'. */
+ unsigned long int f_namemax; /* NOTE: f_namelen in `struct statfs'. */
#ifndef __USE_FILE_OFFSET64
__fsfilcnt_t f_favail;
#else
__fsfilcnt64_t f_favail;
#endif
- unsigned int f_frsize;
- unsigned int f_flag;
+ unsigned long int f_frsize;
+ unsigned long int f_flag;
unsigned int f_spare[3];
};
@@ -60,17 +60,17 @@ struct statvfs
struct statvfs64
{
unsigned int __f_type;
- unsigned int f_bsize;
+ unsigned long int f_bsize;
__fsblkcnt64_t f_blocks;
__fsblkcnt64_t f_bfree;
__fsblkcnt64_t f_bavail;
__fsfilcnt64_t f_files;
__fsfilcnt64_t f_ffree;
__fsid_t f_fsid;
- unsigned int f_namemax;
+ unsigned long int f_namemax;
__fsfilcnt64_t f_favail;
- unsigned int f_frsize;
- unsigned int f_flag;
+ unsigned long int f_frsize;
+ unsigned long int f_flag;
unsigned int f_spare[3];
};
#endif
diff --git a/sysdeps/mach/hurd/bits/sysmacros.h b/sysdeps/mach/hurd/bits/sysmacros.h
new file mode 100644
index 0000000000..b75a329d04
--- /dev/null
+++ b/sysdeps/mach/hurd/bits/sysmacros.h
@@ -0,0 +1,60 @@
+/* Definitions of macros to access `dev_t' values. Hurd version.
+ Copyright (C) 1996-2018 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#ifndef _BITS_SYSMACROS_H
+#define _BITS_SYSMACROS_H 1
+
+#ifndef _SYS_SYSMACROS_H
+# error "Never include <bits/sysmacros.h> directly; use <sys/sysmacros.h> instead."
+#endif
+
+/* The Hurd version of dev_t in glibc is a 32-bit quantity, with 8-bit
+ major and 24-bit minor numbers. The encoding is mmmmMMmm, where M is a
+ hex digit of the major number and m is a hex digit of the minor number. */
+
+#define __SYSMACROS_DECLARE_MAJOR(DECL_TEMPL) \
+ DECL_TEMPL(unsigned int, major, (__dev_t __dev))
+
+#define __SYSMACROS_DEFINE_MAJOR(DECL_TEMPL) \
+ __SYSMACROS_DECLARE_MAJOR (DECL_TEMPL) \
+ { \
+ return ((__dev & (__dev_t) 0x0000ff00u) >> 8); \
+ }
+
+#define __SYSMACROS_DECLARE_MINOR(DECL_TEMPL) \
+ DECL_TEMPL(unsigned int, minor, (__dev_t __dev))
+
+#define __SYSMACROS_DEFINE_MINOR(DECL_TEMPL) \
+ __SYSMACROS_DECLARE_MINOR (DECL_TEMPL) \
+ { \
+ return (__dev & (__dev_t) 0xffff00ff); \
+ }
+
+#define __SYSMACROS_DECLARE_MAKEDEV(DECL_TEMPL) \
+ DECL_TEMPL(__dev_t, makedev, (unsigned int __major, unsigned int __minor))
+
+#define __SYSMACROS_DEFINE_MAKEDEV(DECL_TEMPL) \
+ __SYSMACROS_DECLARE_MAKEDEV (DECL_TEMPL) \
+ { \
+ __dev_t __dev; \
+ __dev = (((__dev_t) (__major & 0x000000ffu)) << 8); \
+ __dev |= (((__dev_t) (__minor & 0xffff00ffu)) << 0); \
+ return __dev; \
+ }
+
+#endif /* bits/sysmacros.h */
diff --git a/sysdeps/mach/hurd/bits/types/error_t.h b/sysdeps/mach/hurd/bits/types/error_t.h
new file mode 100644
index 0000000000..286e5fdc6a
--- /dev/null
+++ b/sysdeps/mach/hurd/bits/types/error_t.h
@@ -0,0 +1,29 @@
+/* Define error_t.
+ Copyright (C) 1991-2018 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 Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 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
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <bits/errno.h>
+
+/* 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. */
+#ifndef __error_t_defined
+# define __error_t_defined 1
+
+typedef enum __error_t_codes error_t;
+
+#endif
diff --git a/sysdeps/mach/hurd/bits/typesizes.h b/sysdeps/mach/hurd/bits/typesizes.h
index a33fb7fe8b..d3026ba66e 100644
--- a/sysdeps/mach/hurd/bits/typesizes.h
+++ b/sysdeps/mach/hurd/bits/typesizes.h
@@ -1,5 +1,5 @@
/* bits/typesizes.h -- underlying types for *_t. Hurd version.
- Copyright (C) 2002-2016 Free Software Foundation, Inc.
+ Copyright (C) 2002-2018 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