•  Back 
  •  Main 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help 
  •  Show info about hypertext 
  •  View a new file 
Topic       : The GFA-Basic Compendium
Author      : GFA Systemtechnik GmbH
Version     : GFABasic.HYP v2.98 (12/31/2023)
Subject     : Documentation/Programming
Nodes       : 899
Index Size  : 28056
HCP-Version : 3
Compiled on : Atari
@charset    : atarist
@lang       : 
@default    : Document not found
@help       : Help
@options    : +g -i -s +z
@width      : 75
@hostname   : STRNGSRV
@hostname   : CAB     
@hostname   : HIGHWIRE
@hostname   : THING   
View Ref-File/*
 * $Id: errno.h,v 1.4 2001/06/13 20:21:42 fna Exp $
 *
 * mint/errno.h -- MiNTLib.
 * Copyright (C) 1999 Guido Flohr <guido@freemint.de>
 *
 * This file is part of the MiNTLib project, and may only be used
 * modified and distributed under the terms of the MiNTLib project
 * license, COPYMINT.  By continuing to use, modify, or distribute
 * this file you indicate that you have read the license and
 * understand and accept it fully.
 */

#ifndef _MINT_ERRNO_H
# define _MINT_ERRNO_H 1         /* Allow multiple inclusion.  */

#ifndef __KERNEL__

/* for src integrity checking until all src is converted */
#error no __KERNEL__

# ifndef _FEATURES_H
#  include <features.h>
# endif

__BEGIN_DECLS

/* See below.  */
#define __KERNEL_NEG(c) c

#else /* __KERNEL__ */
  /* The kernel should actually have code like

        if (whew_we_dont_know_that)
          return -ENOSYS;

     instead of the current

        if (whew_we_dont_know_that)
          return ENOSYS;

     That seems to be a matter of taste.

     As a convenience we offer both possibilities here:
  */

# ifdef POSITIVE_ERROR_CODES
#  define __KERNEL_NEG(c) (c)
# else  /* not POSITIVE_ERROR_CODES */
#  define __KERNEL_NEG(c) (-(c))
# endif /* not POSITIVE_ERROR_CODES */

/* If you prefer to type E_OK instead of 0 ...  */
# define E_OK 0

#endif /* not __KERNEL__ */

/* The original atarierr.h defined quite a few error codes which were
   either useless or non-standard.  Important codes such as EISDIR,
   ENOTEMPTY were missing, others were simply misunderstood (for example
   the usual EINVAL would really be an ENOSYS, EINVAL is not invalid
   function number but invalid argument) and especially in MiNT
   some error codes got really overloaded, for example ENOENT serves
   as ENOENT, ESRCH and ECHILD, or EACCES and EPERM were the same.

   The codes in this file try to find the closest equivalent for
   all error codes currently in use, marks some error codes as
   deprecated and tries to be fit for the future by defining all
   error codes that may be needed for future enhancement.
*/

/*
   The explanations are mostly taken from the GNU libc manual.
   Unfortunately they don't always document the current usage in the
   MiNT system but rather how it should be.  I've marked all current
   misusage with either `KERNEL' or `FIXME'.

   We provide way too many synonyms for error codes here.  Both in
   the kernel and the libc only the `official' name (the one in the
   top row that bears the actual define) should be used.
*/

/* Where is ENOERR and E_OK?  This file is <errno.h> and not <noerror.h>,
   no error is 0, basta.  */

/* Is this really needed?  Deprecated.  */
#define EERROR          __KERNEL_NEG(1)         /* Generic error.  */

/* A system resource that can't be shared is already in use.  For example
   if you try to delete a file that is the root of a currently mounted
   filesystem, you get this error.
   This used to be EDRNRDY resp. EDRNRDY.  */
#define EBUSY           __KERNEL_NEG(2)         /* Resource busy.  */
#ifdef __LOOSE_ERRROR_CODES
# define EDRNRDY        EBUSY
# define EDRVNR         EBUSY
#endif

/* Deprecated.  */
#define EUKCMD          __KERNEL_NEG(3)         /* Unknown command.  */
#ifdef __LOOSE_ERRROR_CODES
# define EUNCMD         EUKCMD
#endif

/* Checksum error detected while reading from a block device such as
   a floppy drive.  Obviously non-standard but often used.  */
#define ECRC            __KERNEL_NEG(4)         /* CRC error.  */
#ifdef __LOOSE_ERRROR_CODES
# define E_CRC          ECRC
#endif

/* Bad request.  */
#define EBADR           __KERNEL_NEG(5)         /* Bad request.  */
#ifdef __LOOSE_ERRROR_CODES
# define EBADREQ        EBADR
# define EBADRQ         EBADR
#endif

/* Invalid seek operation (such as on a pipe).  */
/* KERNEL: The pipe file system currently returns 0 for seek on a pipe!  */
#define ESPIPE          __KERNEL_NEG(6)         /* Illegal seek.  */
#ifdef __LOOSE_ERRROR_CODES
# define ESEEK          ESPIPE
# define E_SEEK         ESPIPE
#endif

/* Wrong medium type.  */
#define EMEDIUMTYPE     __KERNEL_NEG(7)         /* Wrong medium type.  */
#ifdef __LOOSE_ERRROR_CODES
# define EUKMEDIA       EMEDIUMTYPE
# define EMEDIA         EMEDIUMTYPE
#endif

/* A sector that does not exist was addressed in the call to a bock
   device function.  */
#define ESECTOR         __KERNEL_NEG(8)         /* Sector not found.  */
#ifdef __LOOSE_ERRROR_CODES
# define ESECNF         ESECTOR
#endif

/* No paper.  No, not at the conveniences, in the printer.  */
#define EPAPER          __KERNEL_NEG(9)         /* No paper.  */

/* Read and write faults.  Deprecated, be more specific instead.  */
#define EWRITE          __KERNEL_NEG(10)                /* Write fault.  */
#ifdef __LOOSE_ERRROR_CODES
# define EWRITEF        EWRITE
#endif
#define EREAD           __KERNEL_NEG(11)                /* Read fault. */
#ifdef __LOOSE_ERRROR_CODES
# define EREADF         EREAD
#endif

/* Another generic error.  Who can tell the difference to EERROR?  */
#define EGENERIC        __KERNEL_NEG(12)                /* General mishap.  */

/* An attempt was made to modify something on a read-only file
   file system.  */
#define EROFS           __KERNEL_NEG(13)                /* Write protect.  */

/* A removable medium was exchanged before the operation could finish.  */
#define ECHMEDIA        __KERNEL_NEG(14)                /* Media change.  */
#ifdef __LOOSE_ERRROR_CODES
# define E_CHNG         ECHMEDIA
#endif

/* The wrong type of device was given to a function that expects a
   particular sort of device.  */
#define ENODEV          __KERNEL_NEG(15)                /* No such device.  */
#ifdef __LOOSE_ERRROR_CODES
# define EUKDEV         ENODEV
# define EUNDEV         ENODEV
#endif

/* Bad sectors on block device medium found.  Uhm, if the driver found
   them, mark them as bad and don't bother the user with that.
   Deprecated.  */
#define EBADSEC         __KERNEL_NEG(16)                /* Bad sectors found.  */
#ifdef __LOOSE_ERRROR_CODES
# define EBADSF         EBADSEC
#endif

/* A device with a removable media (such as a floppy) is empty.  */
#define ENOMEDIUM       __KERNEL_NEG(17)                /* No medium found.  */
#ifdef __LOOSE_ERRROR_CODES
# define EIDISK         ENOMEDIUM
# define EOTHER         ENOMEDIUM
#endif

/* MetaDOS error (deprecated).  */
#define EINSERT         __KERNEL_NEG(18)                /* Insert media.  */

/* MetaDOS error (deprecated).  */
#define EDRVNRSP        __KERNEL_NEG(19)                /* Drive not responding.  */

/* No process matches the specified process ID.

   KERNEL: This is a new error code.  Currently ENOENT is returned instead.  */
#define ESRCH           __KERNEL_NEG(20)                /* No such process.  */

/* There are no child processes.  This error happens on operations
   that are supposed to manipulate child processes, when there aren't
   any processes to manipulate.

   KERNEL: This is a new error code.  Currently ENOENT is returned instead.  */
#define ECHILD          __KERNEL_NEG(21)                /* No child processes.  */

/* Deadlock avoided; allocating a system resource would have resulted
   in a deadlock situation.  The system does not guarantee that it
   will notice all such situations.  This error means you got lucky
   and the system noticed; it might just hang.

   KERNEL: This is a new error code.  The kernel currently never returns
   it.  But that doesn't mean that there are no deadlock situations in
   the kernel.  */
#define EDEADLK         __KERNEL_NEG(22)                /* Resource deadlock would occur.  */
#define EDEADLOCK       EDEADLK

/* A file that isn't a block special file was given in a situation
   that requires one.  For example, trying to mount an ordinary file
   as a file system in Unix gives this error.  New code.  */
#define ENOTBLK         __KERNEL_NEG(23)                /* Block device required.  */

/* File is a directory; you cannot open a directory for writing, or
   create or remove hard links to it.

   KERNEL: This is a new error code.  Flink() should be fixed.  */
#define EISDIR          __KERNEL_NEG(24)        /* Is a directory.  */

/* Invalid argument.  This is used to indicate various kinds of
   problems with passing the wrong argument to a library function.

   FIXME: This used to be the same as `ENOSYS'.  In fact that should
   be two distinct error codes.  For example, the `fchmod' function
   should return `EINVAL' if the file descriptor passed as an
   argument corresponds to a pipe or socket, not an ordinary file.
   But since `fchmod' is a function that is currently only supported
   under MiNT the same error would be reported if the operating
   system does not support the call at all.  It is common practice
   to cache such failures because in the case of `ENOSYS' there
   is no chance that succeeding calls will proceed.  So how do
   you want to distinguish between these cases?  */
#define EINVAL          __KERNEL_NEG(25)                /* Invalid argument.  */

/* Inappropriate file type or format.  The file was the wrong type
   for the operation, or a data file had the wrong format.

   On some systems `chmod' returns this error if you try to set the
   sticky bit on a non-directory file.  */
#define EFTYPE          __KERNEL_NEG(26)                /* Inappropriate file type or format.  */

/* While decoding a multibyte character the function came along an
   invalid or an incomplete sequence of bytes or the given wide
   character is invalid.  */
#define EILSEQ          __KERNEL_NEG(27)                /* Illegal byte sequence.  */

/* 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 your request them and they are
   not supported.

   KERNEL: This was usually called EINVFN (invalid function number) and
   that's why it was probably mixed up with EINVAL (invalid argument).

   FIXME: Grep thru the MiNTLib sources for EINVAL and replace it with
   the correct ENOSYS.  Same for the kernel.  */
#define ENOSYS          __KERNEL_NEG(32)                /* Function not implemented.  */

/* This is a "file doesn't exist" error for ordinary files that are
   referenced in contexts where they are expected to already exist.

   KERNEL/FIXME: This used to be the same as ESRCH and and ECHILD,
   in the kernel it was usually called EFILNF.  Fix the wrong usage
   of ESRCH and ECHILD and replace EFILNF with ENOENT.  */
#define ENOENT          __KERNEL_NEG(33)                /* No such file or directory.  */

/* A file that isn't a directory was specified when a directory is
   required.  The usage of the synonyme EPATH is deprecated!  */
#define ENOTDIR         __KERNEL_NEG(34)                /* Not a directory.  */
#ifdef __LOOSE_ERRROR_CODES
# define EPATH          ENOTDIR
#endif

/* The current process has too many files open and can't open any
   more.  Duplicate descriptors do count toward this limit.

   In BSD and GNU, the number of open files is controlled by a
   resource limit that can usually be increased.  If you get this
   error, you might want to increase the `RLIMIT_NOFILE' limit
   or make it unlimited.

   Under MiNT we currently have to live without such luxury.  */
#define EMFILE          __KERNEL_NEG(35)                /* Too many open files.  */

/* Permission denied; the file permissions do not allow the
   attempted operation.

   KERNEL: This used to be mixed up with EPERM (operation not permitted).  */
#define EACCES          __KERNEL_NEG(36)                /* Permission denied.  */
#ifdef __LOOSE_ERRROR_CODES
# define EACCESS                EACCES
#endif

/* Bad file descriptor; for example, I/O on a descriptor that has been
   closed or reading from a descriptor open only for writing (or vice
   versa).  */
#define EBADF           __KERNEL_NEG(37)                /* Bad file descriptor.  */

/* Operation not permitted; only the owner of the file (or other
   resource) or processes with special privileges can perform the
   operation.

   This is a new error code (used to be a synonyme for EACCES).  As
   a general rule you can say, whenever you want to disallow something
   take EACCES.  Only if you positively know that EPERM should be
   used, then take this one.

   FIXME: Some kernel functions should return EPERM, for example
   Tsettimeofday, Tsetdate, Tsettime, Setdate ... */
#define EPERM           __KERNEL_NEG(38)                /* Operation not permitted.  */

/* No memory available.  The system cannot allocate more virtual
   memory because its capacity is full.  */
#define ENOMEM          __KERNEL_NEG(39)                /* Cannot allocate memory.  */

/* Bad address; an invalid pointer was detected.  In the GNU system,
   this error never happens; you get a signal instead.  In the MiNT
   system this error often happens, and you get angry mails and flames
   on the usenet.  */
#define EFAULT          __KERNEL_NEG(40)                /* Bad address.  */

/* No such device or address.  The system tried to use the device
   represented by a file you specified, and it couldn't find the
   device.  This can mean that the device file was installed
   incorrectly, or that the physical device is missing or not
   correctly attached to the computer.

   Under MiNT this can also happen if a pathname starts with a
   drive letter followed by a colon (e. g. `x:/dont/exist').  This
   was called `invalid drive specification' or `invalid drive id'.  */
#define ENXIO           __KERNEL_NEG(46)                /* No such device or address.  */

/* An attempt to make an improper link across file systems was
   detected.  This happens not only when you use `link' (for
   hard links) but also when you rename a file with `rename'.  */
#define EXDEV           __KERNEL_NEG(48)                /* Cross-device link.  */

/* No more matching file names, only used by Fsnext(2).  Don't mix
   that up with ENFILE.  */
#define ENMFILES        __KERNEL_NEG(49)                /* No more matching file names.  */
#ifdef __LOOSE_ERRROR_CODES
# define ENMFIL         ENMFILES
#endif

/* There are too many distinct file openings in the entire system.
   Note that any number of linked channels count as just one file
   opening.  This error never occurs in the GNU system, and it probably
   never occurs in the MiNT system, too.  */
#define ENFILE          __KERNEL_NEG(50)                /* File table overflow.  */

/* Locking conflict.  Deprecated.

   KERNEL: If the LOCK_NB flag was selected EWOULDBLOCK should be used
   instead.  Otherwise the process should be blocked until the lock
   is available?  */
#define ELOCKED         __KERNEL_NEG(58)                /* Locking conflict.  */

/* Deprecated, should only happen with Dlock().  */
#define ENSLOCK         __KERNEL_NEG(59)                /* No such lock.  */

/* Bad argument, used to be `range error/context unknown'.  Deprecated.  */
#define EBADARG         __KERNEL_NEG(64)                /* Bad argument.  */

/* Another spurious error, deprecated.  */
#define EINTERNAL       __KERNEL_NEG(65)                /* Internal error.  */
#ifdef __LOOSE_ERRROR_CODES
# define EINTRN         EINTERNAL
#endif

/* Invalid executable file format.  This condition is detected by the
   `exec' functions.  */
#define ENOEXEC         __KERNEL_NEG(66)                /* Invalid executable file format.  */
#ifdef __LOOSE_ERRROR_CODES
# define EPLFMT         ENOEXEC
#endif

/* Can't grow block, deprecated.  At least within the library this should
   be handled with ENOMEM.  */
#define ESBLOCK         __KERNEL_NEG(67)                /* Memory block growth failure.  */
#ifdef __LOOSE_ERRROR_CODES
# define EGSBF          ESBLOCK
#endif

/* Terminated with CTRL-C (Kaos, MagiC, BigDOS).  Nonsense.  */
#define EBREAK          __KERNEL_NEG(68)                /* Aborted by user.  */

/* This looks like a joke but it isn't.  Who has introduced that
   in the kernel?  */
#define EXCPT           __KERNEL_NEG(69)                /* Terminated with bombs.  */

/* An attempt to execute a file that is currently open for writing, or
   write to a file that is currently being executed.  Often using a
   debugger to run a program is considered having it open for writing
   and will cause this error.  (The name stands for "text file
   busys".)  This is not an error in the GNU system; the text is
   copied as necessary.  In the MiNT system this error currently cannot
   occur.  */
#define ETXTBSY         __KERNEL_NEG(70)                /* Text file busy.  */

/* File too big; the size of a file would be larger than allowed by
   the system.

   KERNEL: This is a new code.  If this error condition can occur,
   then the correct code should be returned.  */
#define EFBIG           __KERNEL_NEG(71)                /* File too big.  */

/* Too many levels of symbolic links were encountered in looking up a
   file name.  This often indicates a cycle of symbolic links.

   KERNEL: There was no difference between EMLINK (too many links and
   ELOOP (too many symbolic links).  The more common meaning of this
   error code is preserved, but whenenver EMLINK should be used, this
   has to be fixed in the kernel.  */
#define ELOOP           __KERNEL_NEG(80)                /* Too many symbolic links.  */

/* Broken pipe; there is no process reading from the other end of a
   pipe.  Every function that returns this error code also generates
   a `SIGPIPE' signal; this signal terminates the program if not
   handled or blocked.  Thus, your program will never actually see
   `EPIPE' unless it has handled or blocked `SIGPIPE'.  */
#define EPIPE           __KERNEL_NEG(81)                /* Broken pipe.  */

/* Too many links; the link count of a single file would become too
   large.  `rename' can cause this error if the file being renamed
   already has as many links as it can take.

   KERNEL: This is a new error code.  See the note for ELOOP.  */
#define EMLINK          __KERNEL_NEG(82)                /* Too many links.  */

/* Directory not empty, where an empty directory was expected.  Typically
   this error occurs when you are trying to delete a directory.

   KERNEL: New error code, for the case of non-empty directories
   EEXIST was returned.  The new behavior could cause compatibility
   problems since inproper implementations of recursive rm commands
   could rely on the old error code (85) being returned.

   Which error is more probable?  */
#define ENOTEMPTY       __KERNEL_NEG(83)                /* Directory not empty.  */

/* File exists; an existing file was specified in a context where it
   only makes sense to specify a new file.  */
#define EEXIST          __KERNEL_NEG(85)                /* File exists.  */

/* Filename too long (longer than `PATH_MAX') or host name too long
   (in `gethostname' or `sethostname').  */
#define ENAMETOOLONG    __KERNEL_NEG(86)                /* Name too long.  */

/* Inappropriate I/O control operation, such as trying to set terminal
   modes on ordinary files.  */
#define ENOTTY          __KERNEL_NEG(87)                /* Not a tty.  */

/* Range error; used by mathematical functions when the result value
   is not representable because of overflow or underflow.

   The string to number conversion functions (`strtol', `strtoul',
   `strtod', etc. can also return this error.  */
#define ERANGE          __KERNEL_NEG(88)                /* Range error.  */

/* Domain error; used by mathematical functions when an argument
   value does not fall into the domain over which the function is
   defined.  */
#define EDOM            __KERNEL_NEG(89)                /* Domain error.  */

/* Input/output error; usually used for physical read or write errors.  */
#define EIO             __KERNEL_NEG(90)                /* I/O error */

/* No space left on device; write operation on a file failed because
   the disk is full.  */
#define ENOSPC          __KERNEL_NEG(91)                /* No space left on device.  */

/* Error number 92-99 reserved for TraPatch.  */

/* This means that the per-user limit on new process would be
   exceeded by an attempted `fork'.  */
#define EPROCLIM        __KERNEL_NEG(100)               /* Too many processes for user.  */

/* This file quota system is confused because there are too many users.  */
#define EUSERS          __KERNEL_NEG(101)               /* Too many users.  */

/* The user's disk quota was exceeded.  */
#define EDQUOT          __KERNEL_NEG(102)               /* Quota exceeded.  */

/* Stale NFS handle.  This indicates an internal confusion in
   the NFS system which is due to file system rearrangements on the
   server host.  Reparing this condition usually requires unmounting
   and remounting the NFS file system on the local host.  */
#define ESTALE          __KERNEL_NEG(103)               /* Stale NFS file handle.  */

/* An attempt was made to NFS-mount a remote file system with a file
   name that already specifies an NFS-mounted file.  (This is an
   error on some operating systems, but we expect it to work properly
   on the GNU system, making this error code impossible).  */
#define EREMOTE         __KERNEL_NEG(104)               /* Object is remote.  */

/* ??? */
#define EBADRPC         __KERNEL_NEG(105)       /* RPC struct is bad.  */
#define ERPCMISMATCH    __KERNEL_NEG(106)       /* RPC version wrong.  */
#define EPROGUNAVAIL    __KERNEL_NEG(107)       /* RPC program not available.  */
#define EPROGMISMATCH   __KERNEL_NEG(108)       /* RPC program version wrong.  */
#define EPROCUNAVAIL    __KERNEL_NEG(109)       /* RPC bad procedure for program.  */

/* No locks available.  This is used by the file locking facilities;
   This error is never generated by the GNU system, but it can result
   from an operation to an NFS server running another operating system.  */
#define ENOLCK          __KERNEL_NEG(110)       /* No locks available.  */

/* ??? */
#define EAUTH           __KERNEL_NEG(111)       /* Authentication error.  */
#define ENEEDAUTH       __KERNEL_NEG(112)       /* Need authenticator.  */

/* In the GNU system, servers supporting the `term' protocol return
   this error for certain operations when the caller is not in the
   foreground process group of the terminal.  Users do not usually
   see this error because functions such as `read' and `write'
   translate it into a `SIGTTIN' or `SIGTTOU' signal.  */
#define EBACKGROUND     __KERNEL_NEG(113)               /* Inappropriate operation for background process.  */

/* ??? */
#define EBADMSG         __KERNEL_NEG(114)               /* Not a data message.  */
#define EIDRM           __KERNEL_NEG(115)               /* Identifier removed.  */
#define EMULTIHOP       __KERNEL_NEG(116)               /* Multihop attempted.  */
#define ENODATA         __KERNEL_NEG(117)               /* No data available.  */
#define ENOLINK         __KERNEL_NEG(118)               /* Link has been severed.  */
#define ENOMSG          __KERNEL_NEG(119)               /* No message of desired type.  */
#define ENOSR           __KERNEL_NEG(120)               /* Out of streams resources.  */
#define ENOSTR          __KERNEL_NEG(121)               /* Device not a stream.  */
#define EOVERFLOW       __KERNEL_NEG(122)               /* Value too large for defined data type.  */
#define EPROTO          __KERNEL_NEG(123)               /* Protocol error.  */
#define ETIME           __KERNEL_NEG(124)               /* Timer expired.  */

/* Argument list too long; used when the arguments passed to a new
   program being executed with one of the `exec' functions occupy
   too much memory space.  This condition never arises in the
   MiNT system.  */
#define E2BIG           __KERNEL_NEG(125)               /* Argument list too long.  */

/* The following error codes are defined by the Linux/i386 kernel.
   Some of them are probably useful for MiNT, too.  */
#define ERESTART        __KERNEL_NEG(126)               /* Interrupted system call should be
                                           restarted.  */
#define ECHRNG          __KERNEL_NEG(127)               /* Channel number out of range.  */

/* Interrupted function call; an asynchronous signal occured and
   prevented completion of the call.  When this happens, you should
   try the call again.

   On other systems you can choose to have functions resume after a
   signal handled, rather than failing with `EINTR'.  */
#define EINTR           __KERNEL_NEG(128)               /* Interrupted function call.  */

/* Falcon XBIOS errors.  */
#define ESNDLOCKED      __KERNEL_NEG(129)               /* Sound system is already locked.  */
#define ESNDNOTLOCK     __KERNEL_NEG(130)               /* Sound system is not locked.  */

#define EL2NSYNC        __KERNEL_NEG(131)               /* Level 2 not synchronized.  */
#define EL3HLT          __KERNEL_NEG(132)               /* Level 3 halted.  */
#define EL3RST          __KERNEL_NEG(133)               /* Level 3 reset.  */
#define ELNRNG          __KERNEL_NEG(134)               /* Link number out of range.  */
#define EUNATCH         __KERNEL_NEG(135)               /* Protocol driver not attached.  */
#define ENOCSI          __KERNEL_NEG(136)               /* No CSI structure available.  */
#define EL2HLT          __KERNEL_NEG(137)               /* Level 2 halted.  */
#define EBADE           __KERNEL_NEG(138)               /* Invalid exchange.  */
#define EXFULL          __KERNEL_NEG(139)               /* Exchange full.  */
#define ENOANO          __KERNEL_NEG(140)               /* No anode.  */
#define EBADRQC         __KERNEL_NEG(141)               /* Invalid request code.  */
#define EBADSLT         __KERNEL_NEG(142)               /* Invalid slot.  */
#define EBFONT          __KERNEL_NEG(143)               /* Bad font file format.  */
#define ENONET          __KERNEL_NEG(144)               /* Machine is not on the network.  */
#define ENOPKG          __KERNEL_NEG(145)               /* Package is not installed.  */
#define EADV            __KERNEL_NEG(146)               /* Advertise error.  */
#define ESRMNT          __KERNEL_NEG(147)               /* Srmount error.  */
#define ECOMM           __KERNEL_NEG(148)               /* Communication error on send.  */
#define EDOTDOT         __KERNEL_NEG(149)               /* RFS specific error.  */
#define ELIBACC         __KERNEL_NEG(150)               /* Cannot access a needed shared library. */
#define ELIBBAD         __KERNEL_NEG(151)               /* Accessing a corrupted shared library.  */
#define ELIBSCN         __KERNEL_NEG(152)               /* .lib section in a.out corrupted.  */
#define ELIBMAX         __KERNEL_NEG(153)               /* Attempting to link too many shared
                                                           libraries.  */
#define ELIBEXEC        __KERNEL_NEG(154)               /* Cannot exec a shared library directly. */
#define ESTRPIPE        __KERNEL_NEG(155)               /* Streams pipe error.  */
#define EUCLEAN         __KERNEL_NEG(156)               /* Structure needs cleaning.  */
#define ENOTNAM         __KERNEL_NEG(157)               /* Not a XENIX named type file.  */
#define ENAVAIL         __KERNEL_NEG(158)               /* NO XENIX semaphores available.  */
#define EREMOTEIO       __KERNEL_NEG(159)               /* Remote I/O error.  */

#ifdef __KERNEL__
/* This is not really an error but a dummy error code used within the kernel
   to indicate that a mount point may have been crossed.  */
#define EMOUNT          __KERNEL_NEG(200)
#endif

/* There used to be a distinction between MiNTNet errors and ordinary
   MiNT errors.  This macro is provided for backwards compatibility.  */
#define _NE_BASE 300

/* A file that isn't a socket was specified when a socket is required.  */
#define ENOTSOCK        __KERNEL_NEG(300)               /* Socket operation on non-socket.  */

/* No default destination address was set for the socket.  You get
   this error when you try to transmit data over a connectionless
   socket, without first specifying a destination for the data with
   `connect'.  */
#define EDESTADDRREQ    __KERNEL_NEG(301)               /* Destination address required.  */

/* The size of a message sent on a socket was larger than the
   supported maximum size.  */
#define EMSGSIZE        __KERNEL_NEG(302)               /* Message too long.  */

/* The socket type does not support the requested communications
   protocol.  */
#define EPROTOTYPE      __KERNEL_NEG(303)               /* Protocol wrong type for socket.  */

/* You specified a socket option that doesn't make sense for the
   particular protocol being used by the socket.  */
#define ENOPROTOOPT     __KERNEL_NEG(304)               /* Protocol not available.  */

/* The socket domain does not support the requested communications
   protocol (perhaps because the requested protocol is completely
   invalid).  */
#define EPROTONOSUPPORT __KERNEL_NEG(305)               /* Protocol not supported.  */

/* The socket type is not supported.  */
#define ESOCKTNOSUPPORT __KERNEL_NEG(306)               /* Socket type not supported.  */

/* The operation you requested is not supported.  Some socket
   functions don't make sense for all type of sockets, and others
   may not be implemented for all communications prototcols.  In the
   GNU system, this error can happen for many calls when the object
   does not support the particular operation; it is a generic
   indication that the server knows nothing to do for that
   cal.  */
#define EOPNOTSUPP      __KERNEL_NEG(307)               /* Operation not supported.  */

/* The socket communications protocol family you requested is not
   supported.  */
#define EPFNOSUPPORT    __KERNEL_NEG(308)               /* Protocol family not supported.  */

/* The address family specified for a socket is not supported; it is
   inconsistent with the protocol being used on the socket.  */
#define EAFNOSUPPORT    __KERNEL_NEG(309)               /* Address family not supported
                                           by protocol. */

/* The requested socket address is already in use.  */
#define EADDRINUSE      __KERNEL_NEG(310)               /* Address already in use */

/* The requested socket address is not available; for example, you
   tried to give a socket a name that doesn't match the local host
   name.  */
#define EADDRNOTAVAIL   __KERNEL_NEG(311)               /* Cannot assign requested address.  */

/* A socket operation failed because the network was down.  */
#define ENETDOWN        __KERNEL_NEG(312)               /* Network is down.  */

/* A socket operation failed because the subnet containing the remote
   host was unreachable.  */
#define ENETUNREACH     __KERNEL_NEG(313)               /* Network is unreachable.  */

/* A network connection was reset because the remote host crashed.  */
#define ENETRESET       __KERNEL_NEG(314)               /* Network dropped conn. because of
                                           reset.  */

/* A network connnection was aborted locally.  */
#define ECONNABORTED    __KERNEL_NEG(315)               /* Software caused connection abort.  */

/* A network connection was closed for reasons outside the control of
   the local host, such as by the remote machine rebooting or an
   unrecoverable protocol violation.  */
#define ECONNRESET      __KERNEL_NEG(316)               /* Connection reset by peer.  */

/* You tried to connect a socket that is already connected.  */
#define EISCONN         __KERNEL_NEG(317)               /* Socket is already connected.  */

/* The socket is not connected to anything.  You get this error when
   you try to transmit data over the socket, without first specifying
   a destination for the data.  For a connectionless socket (for
   datagram protocols, such as UDP), you get `EDESTADDRREQ' instead.  */
#define ENOTCONN        __KERNEL_NEG(318)               /* Socket is not connected.  */

/* The socket has already been shut down.  */
#define ESHUTDOWN       __KERNEL_NEG(319)               /* Cannot send after shutdown.  */

/* A socket operation with a specified timeout received nor response
   during the timeout period.  */
#define ETIMEDOUT       __KERNEL_NEG(320)               /* Connection timed out.  */

/* A remote host refused to allow the network connection (typically
   because it is not running the requested service).  */
#define ECONNREFUSED    __KERNEL_NEG(321)               /* Connection refused.  */

/* The remote host for a requested network connection is down.  */
#define EHOSTDOWN       __KERNEL_NEG(322)               /* Host is down.  */

/* The remote host for a requested network connection is not
   reachable.  */
#define EHOSTUNREACH    __KERNEL_NEG(323)               /* No route to host.  */

/* An operation is already in progress on an object that has
   non-blocking mode selected.  */
#define EALREADY        __KERNEL_NEG(324)               /* Operation already in progress.  */

/* An operation that cannot complete immediately was initiated on an
   object that has non-blocking mode selected.  Some functions that
   must always block (such as `connect') never return `EAGAIN'.  Instead
   they return `EINPROGRESS' to indicate that the operation has begun and
   will take some time.  Attempts to manipulate the object before the
   call completes return `EALREADY'.  You can use the `select' function
   to find out when the pending operation has completed.  */
#define EINPROGRESS     __KERNEL_NEG(325)               /* Operation now in progress.  */

/* Resource temporarily unavailable; the call might work if you try
   again later.  The macro `EWOULDBLOCK' is another name for `EAGAIN';
   they are always the same in the MiNT system.

   This error can happen in a few different situations:

        * An operation that would block was attempted on an object that
          has non-blocking mode selected.  Trying the same operation
          again will block until some external condition makes it
          possible to read, write or connect (whatever the operation).
          You can use `select' to find out when the operation will be
          possible.

          Portability Note: In many older Unix systems, this condition
          was indicated by `EWOULDBLOCK', which was a distinct error
          code different from `EAGAIN'.  To make your program portable,
          you should check for both codes and treat them the same.
          In C programs you should not use a case statement for that
          because that will trigger a compile-time error for systems
          where `EWOULDBLOCK' and `EAGAIN' expand to the same numerical
          value.  You should either handle treat it with preprocessor
          macros (test if they are equal or not) or use an if conditional.

        * A temporary resource shortage made an operation impossible.
          `fork' can return this error.  It indicates that the shortage
          is expected to pass, so your program can try the call again
          later and it may succeed.  It is probably a good idea to
          delay for a few seconds before trying it again, to allow time
          for other processes to release scarce resources.  Such
          shortages are usually fairly serious and affect the whole
          system, so usually an interactive program should report the
          error to the user and return to its command loop.  */
#define EAGAIN          __KERNEL_NEG(326)               /* Operation would block.  */
#define EWOULDBLOCK     EAGAIN

/* The kernel's buffer for I/O operations are all in use.  In GNU,
   this error is always synonymous with `ENOMEM'; you may get one or
   the other from network operations.  */
#define ENOBUFS         __KERNEL_NEG(327)               /* No buffer space available.  */

/* Too many references: cannot splice.  */
#define ETOOMANYREFS    __KERNEL_NEG(328)               /* Too many references.  */

#define _NE_MAX         ETOOMANYREFS

#ifndef __KERNEL__

__END_DECLS

#endif

#endif /* _MINT_ERRNO_H */