diff --git a/ChangeLog b/ChangeLog index 4821686f1e..14486c5b81 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +1999-01-22 Roland McGrath + + * sysdeps/mach/hurd/Makefile: Fix errnos.h -> bits/errno.h in rules. + + * manual/errno.texi (Error Codes): Fix ENOSYS description. + Add ENOTSUP. + 1999-01-21 Ulrich Drepper * version.h (VERSION): Bump to 2.0.111. diff --git a/manual/errno.texi b/manual/errno.texi index a68f3bdbae..3782e48c6a 100644 --- a/manual/errno.texi +++ b/manual/errno.texi @@ -831,9 +831,29 @@ sticky bit on a non-directory file; @pxref{Setting Permissions}. @comment POSIX.1: Function not implemented @deftypevr Macro int ENOSYS @comment errno 78 @c DO NOT REMOVE -Function not implemented. Some functions have commands or options defined -that might not be supported in all implementations, and this is the kind -of error you get if you request them and they are not supported. +Function not implemented. This indicates that the function called is +not implemented at all, either in the C library itself or in the +operating system. When you get this error, you can be sure that this +particular function will always fail with @code{ENOSYS} unless you +install a new version of the C library or the operating system. +@end deftypevr + +@comment errno.h +@comment POSIX.1: Not supported +@deftypevr Macro int ENOTSUP +@comment errno 118 @c DO NOT REMOVE +Not supported. A function returns this error when certain parameter +values are valid, but the functionality they request is not available. +This can mean that the function does not implement a particular command +or option value or flag bit at all. For functions that operate on some +object given in a parameter, such as a file descriptor or a port, it +might instead mean that only @emph{that specific object} (file +descriptor, port, etc.) is unable to support the other parameters given; +different file descriptors might support different ranges of parameter +values. + +If the entire function is not available at all in the implementation, +it returns @code{ENOSYS} instead. @end deftypevr @comment errno.h diff --git a/sysdeps/mach/hurd/Makefile b/sysdeps/mach/hurd/Makefile index c88110ea1d..14cc102e00 100644 --- a/sysdeps/mach/hurd/Makefile +++ b/sysdeps/mach/hurd/Makefile @@ -1,4 +1,4 @@ -# Copyright (C) 1993, 94, 95, 96, 97, 98 Free Software Foundation, Inc. +# Copyright (C) 1993, 94, 95, 96, 97, 98, 99 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 @@ -58,7 +58,7 @@ $(common-objpfx)hurd/../mach/RPC_task_get_sampled_pcs.c: endif -# Generate errnos.h from the section of the manual that lists all the errno +# Generate bits/errno.h from the section of the manual that lists all the errno # codes. errno.texinfo = $(..)manual/errno.texi @@ -85,16 +85,16 @@ $(common-objpfx)errnos.d: $(mach-errnos-deps) -e 's,\.\./,$(..),g' > $@t mv -f $@t $@ -$(hurd)/errnos.h: $(common-objpfx)stamp-errnos ; +$(hurd)/bits/errno.h: $(common-objpfx)stamp-errnos ; $(common-objpfx)stamp-errnos: $(hurd)/errnos.awk $(errno.texinfo) \ $(mach-errnos-deps) - $(AWK) -f $^ > $(hurd)/errnos.h-tmp + $(AWK) -f $^ > $(hurd)/bits/errno.h-tmp # Make it unwritable so noone will edit it by mistake. - -chmod a-w $(hurd)/errnos.h-tmp - $(move-if-change) $(hurd)/errnos.h-tmp $(hurd)/errnos.h + -chmod a-w $(hurd)/bits/errno.h-tmp + $(move-if-change) $(hurd)/bits/errno.h-tmp $(hurd)/bits/errno.h ifeq ($(with-cvs),yes) test ! -d $(hurd)/CVS || \ - (cd $(hurd) && cvs commit -m'Regenerated from $^' errnos.h) + (cd $(hurd) && cvs commit -m'Regenerated from $^' bits/errno.h) endif touch $@ diff --git a/sysdeps/mach/hurd/bits/errno.h b/sysdeps/mach/hurd/bits/errno.h index c17130d6fd..9caa0ec1d1 100644 --- a/sysdeps/mach/hurd/bits/errno.h +++ b/sysdeps/mach/hurd/bits/errno.h @@ -2,7 +2,7 @@ /* The Hurd uses Mach error system 0x10, currently only subsystem 0. */ #ifndef _HURD_ERRNO -# define _HURD_ERRNO(n) ((0x10 << 26) | ((n) & 0x3fff)) +#define _HURD_ERRNO(n) ((0x10 << 26) | ((n) & 0x3fff)) #endif #ifdef _ERRNO_H @@ -48,7 +48,7 @@ enum __error_t_codes 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 */ +#define ENODEV _HURD_ERRNO (19)/* No such device */ ENOTDIR = _HURD_ERRNO (20), #define ENOTDIR _HURD_ERRNO (20)/* Not a directory */ EISDIR = _HURD_ERRNO (21), @@ -149,7 +149,7 @@ enum __error_t_codes EUSERS = _HURD_ERRNO (68), #define EUSERS _HURD_ERRNO (68)/* Too many users */ EDQUOT = _HURD_ERRNO (69), -#define EDQUOT _HURD_ERRNO (69)/* Disc quota exceeded */ +#define EDQUOT _HURD_ERRNO (69)/* Disk quota exceeded */ ESTALE = _HURD_ERRNO (70), #define ESTALE _HURD_ERRNO (70)/* Stale NFS file handle */ EREMOTE = _HURD_ERRNO (71), @@ -174,6 +174,8 @@ enum __error_t_codes #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), @@ -211,107 +213,26 @@ enum __error_t_codes ETIME = _HURD_ERRNO (117), #define ETIME _HURD_ERRNO (117)/* Timer expired */ - /* Errors from . */ - 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 . */ - 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 . */ - 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 . */ - 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 +#define _HURD_ERRNOS 119 /* 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 +#ifdef __USE_GNU typedef enum __error_t_codes error_t; -# define __error_t_defined 1 -# endif +#define __error_t_defined 1 +#endif /* errno is a per-thread variable. */ -# include -# define errno (*__hurd_errno_location ()) -# define __set_errno(val) errno = (val) +#include +#define errno (*__hurd_errno_location ()) +#define __set_errno(val) errno = (val) #endif /* included. */ -#if !defined _ERRNO_H && defined __need_Emath -# define EDOM _HURD_ERRNO (33)/* Numerical argument out of domain */ -# define EILSEQ _HURD_ERRNO (106)/* Invalid or incomplete multibyte or wide character */ -# define ERANGE _HURD_ERRNO (34)/* Numerical result out of range */ +#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 /* not included and need math error codes. */