| /**************************************************************************** |
| * include/errno.h |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. The |
| * ASF licenses this file to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance with the |
| * License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations |
| * under the License. |
| * |
| ****************************************************************************/ |
| |
| #ifndef __INCLUDE_ERRNO_H |
| #define __INCLUDE_ERRNO_H |
| |
| /**************************************************************************** |
| * Included Files |
| ****************************************************************************/ |
| |
| #include <nuttx/compiler.h> |
| |
| /**************************************************************************** |
| * Pre-processor Definitions |
| ****************************************************************************/ |
| |
| /* Convenience/compatibility definition. If the errno is accessed from the |
| * internal OS code, then the OS code should use the set_errno() and |
| * get_errno(). Currently, those are just placeholders but would be needed |
| * in the KERNEL mode build in order to instantiate the process address |
| * environment as necessary to access the TLS-based errno variable. |
| */ |
| |
| #define errno *__errno() |
| #define set_errno(e) \ |
| do \ |
| { \ |
| errno = (int)(e); \ |
| } \ |
| while (0) |
| #define get_errno() errno |
| |
| /* Definitions of error numbers and the string that would be |
| * returned by strerror(). |
| */ |
| |
| /* Sync with linux/include/asm-generic/errno-base.h */ |
| |
| #define EPERM 1 |
| #define EPERM_STR "Operation not permitted" |
| #define ENOENT 2 |
| #define ENOENT_STR "No such file or directory" |
| #define ESRCH 3 |
| #define ESRCH_STR "No such process" |
| #define EINTR 4 |
| #define EINTR_STR "Interrupted system call" |
| #define EIO 5 |
| #define EIO_STR "I/O error" |
| #define ENXIO 6 |
| #define ENXIO_STR "No such device or address" |
| #define E2BIG 7 |
| #define E2BIG_STR "Arg list too long" |
| #define ENOEXEC 8 |
| #define ENOEXEC_STR "Exec format error" |
| #define EBADF 9 |
| #define EBADF_STR "Bad file number" |
| #define ECHILD 10 |
| #define ECHILD_STR "No child processes" |
| #define EAGAIN 11 |
| #define EAGAIN_STR "Try again" |
| #define ENOMEM 12 |
| #define ENOMEM_STR "Out of memory" |
| #define EACCES 13 |
| #define EACCES_STR "Permission denied" |
| #define EFAULT 14 /* Linux errno extension */ |
| #define EFAULT_STR "Bad address" |
| #define ENOTBLK 15 |
| #define ENOTBLK_STR "Block device required" |
| #define EBUSY 16 |
| #define EBUSY_STR "Device or resource busy" |
| #define EEXIST 17 |
| #define EEXIST_STR "File exists" |
| #define EXDEV 18 |
| #define EXDEV_STR "Cross-device link" |
| #define ENODEV 19 |
| #define ENODEV_STR "No such device" |
| #define ENOTDIR 20 |
| #define ENOTDIR_STR "Not a directory" |
| #define EISDIR 21 |
| #define EISDIR_STR "Is a directory" |
| #define EINVAL 22 |
| #define EINVAL_STR "Invalid argument" |
| #define ENFILE 23 |
| #define ENFILE_STR "File table overflow" |
| #define EMFILE 24 |
| #define EMFILE_STR "Too many open files" |
| #define ENOTTY 25 |
| #define ENOTTY_STR "Not a typewriter" |
| #define ETXTBSY 26 |
| #define ETXTBSY_STR "Text file busy" |
| #define EFBIG 27 |
| #define EFBIG_STR "File too large" |
| #define ENOSPC 28 |
| #define ENOSPC_STR "No space left on device" |
| #define ESPIPE 29 |
| #define ESPIPE_STR "Illegal seek" |
| #define EROFS 30 |
| #define EROFS_STR "Read-only file system" |
| #define EMLINK 31 |
| #define EMLINK_STR "Too many links" |
| #define EPIPE 32 |
| #define EPIPE_STR "Broken pipe" |
| #define EDOM 33 |
| #define EDOM_STR "Math argument out of domain of func" |
| #define ERANGE 34 |
| #define ERANGE_STR "Math result not representable" |
| |
| /* Sync with linux/include/asm-generic/errno.h */ |
| |
| #define EDEADLK 35 |
| #define EDEADLK_STR "Resource deadlock would occur" |
| #define ENAMETOOLONG 36 |
| #define ENAMETOOLONG_STR "File name too long" |
| #define ENOLCK 37 |
| #define ENOLCK_STR "No record locks available" |
| #define ENOSYS 38 |
| #define ENOSYS_STR "Invalid system call number" |
| #define ENOTEMPTY 39 |
| #define ENOTEMPTY_STR "Directory not empty" |
| #define ELOOP 40 |
| #define ELOOP_STR "Too many symbolic links encountered" |
| #define EWOULDBLOCK EAGAIN |
| #define EWOULDBLOCK_STR "Operation would block" |
| #define ENOMSG 42 |
| #define ENOMSG_STR "No message of desired type" |
| #define EIDRM 43 |
| #define EIDRM_STR "Identifier removed" |
| #define ECHRNG 44 /* Linux errno extension */ |
| #define ECHRNG_STR "Channel number out of range" |
| #define EL2NSYNC 45 /* Linux errno extension */ |
| #define EL2NSYNC_STR "Level 2 not synchronized" |
| #define EL3HLT 46 /* Linux errno extension */ |
| #define EL3HLT_STR "Level 3 halted" |
| #define EL3RST 47 /* Linux errno extension */ |
| #define EL3RST_STR "Level 3 reset" |
| #define ELNRNG 48 /* Linux errno extension */ |
| #define ELNRNG_STR "Link number out of range" |
| #define EUNATCH 49 /* Linux errno extension */ |
| #define EUNATCH_STR "Protocol driver not attached" |
| #define ENOCSI 50 /* Linux errno extension */ |
| #define ENOCSI_STR "No CSI structure available" |
| #define EL2HLT 51 /* Linux errno extension */ |
| #define EL2HLT_STR "Level 2 halted" |
| #define EBADE 52 /* Linux errno extension */ |
| #define EBADE_STR "Invalid exchange" |
| #define EBADR 53 /* Linux errno extension */ |
| #define EBADR_STR "Invalid request descriptor" |
| #define EXFULL 54 /* Linux errno extension */ |
| #define EXFULL_STR "Exchange full" |
| #define ENOANO 55 /* Linux errno extension */ |
| #define ENOANO_STR "No anode" |
| #define EBADRQC 56 /* Linux errno extension */ |
| #define EBADRQC_STR "Invalid request code" |
| #define EBADSLT 57 /* Linux errno extension */ |
| #define EBADSLT_STR "Invalid slot" |
| #define EDEADLOCK EDEADLK /* Linux errno extension */ |
| #define EDEADLOCK_STR "File locking deadlock error" |
| #define EBFONT 59 /* Linux errno extension */ |
| #define EBFONT_STR "Bad font file format" |
| #define ENOSTR 60 |
| #define ENOSTR_STR "Device not a stream" |
| #define ENODATA 61 |
| #define ENODATA_STR "No data available" |
| #define ETIME 62 |
| #define ETIME_STR "Timer expired" |
| #define ENOSR 63 |
| #define ENOSR_STR "Out of streams resources" |
| #define ENONET 64 /* Linux errno extension */ |
| #define ENONET_STR "Machine is not on the network" |
| #define ENOPKG 65 /* Linux errno extension */ |
| #define ENOPKG_STR "Package not installed" |
| #define EREMOTE 66 /* Linux errno extension */ |
| #define EREMOTE_STR "Object is remote" |
| #define ENOLINK 67 |
| #define ENOLINK_STR "Link has been severed" |
| #define EADV 68 /* Linux errno extension */ |
| #define EADV_STR "Advertise error" |
| #define ESRMNT 69 /* Linux errno extension */ |
| #define ESRMNT_STR "Srmount error" |
| #define ECOMM 70 /* Linux errno extension */ |
| #define ECOMM_STR "Communication error on send" |
| #define EPROTO 71 |
| #define EPROTO_STR "Protocol error" |
| #define EMULTIHOP 72 |
| #define EMULTIHOP_STR "Multihop attempted" |
| #define EDOTDOT 73 /* Linux errno extension */ |
| #define EDOTDOT_STR "RFS specific error" |
| #define EBADMSG 74 |
| #define EBADMSG_STR "Not a data message" |
| #define EOVERFLOW 75 |
| #define EOVERFLOW_STR "Value too large for defined data type" |
| #define ENOTUNIQ 76 /* Linux errno extension */ |
| #define ENOTUNIQ_STR "Name not unique on network" |
| #define EBADFD 77 /* Linux errno extension */ |
| #define EBADFD_STR "File descriptor in bad state" |
| #define EREMCHG 78 /* Linux errno extension */ |
| #define EREMCHG_STR "Remote address changed" |
| #define ELIBACC 79 /* Linux errno extension */ |
| #define ELIBACC_STR "Can not access a needed shared library" |
| #define ELIBBAD 80 /* Linux errno extension */ |
| #define ELIBBAD_STR "Accessing a corrupted shared library" |
| #define ELIBSCN 81 /* Linux errno extension */ |
| #define ELIBSCN_STR ".lib section in a.out corrupted" |
| #define ELIBMAX 82 /* Linux errno extension */ |
| #define ELIBMAX_STR "Attempting to link in too many shared libraries" |
| #define ELIBEXEC 83 /* Linux errno extension */ |
| #define ELIBEXEC_STR "Cannot exec a shared library directly" |
| #define EILSEQ 84 |
| #define EILSEQ_STR "Illegal byte sequence" |
| #define ERESTART 85 |
| #define ERESTART_STR "Interrupted system call should be restarted" |
| #define ESTRPIPE 86 /* Linux errno extension */ |
| #define ESTRPIPE_STR "Streams pipe error" |
| #define EUSERS 87 |
| #define EUSERS_STR "Too many users" |
| #define ENOTSOCK 88 |
| #define ENOTSOCK_STR "Socket operation on non-socket" |
| #define EDESTADDRREQ 89 |
| #define EDESTADDRREQ_STR "Destination address required" |
| #define EMSGSIZE 90 |
| #define EMSGSIZE_STR "Message too long" |
| #define EPROTOTYPE 91 |
| #define EPROTOTYPE_STR "Protocol wrong type for socket" |
| #define ENOPROTOOPT 92 |
| #define ENOPROTOOPT_STR "Protocol not available" |
| #define EPROTONOSUPPORT 93 |
| #define EPROTONOSUPPORT_STR "Protocol not supported" |
| #define ESOCKTNOSUPPORT 94 /* Linux errno extension */ |
| #define ESOCKTNOSUPPORT_STR "Socket type not supported" |
| #define EOPNOTSUPP 95 |
| #define EOPNOTSUPP_STR "Operation not supported on transport endpoint" |
| #define EPFNOSUPPORT 96 |
| #define EPFNOSUPPORT_STR "Protocol family not supported" |
| #define EAFNOSUPPORT 97 |
| #define EAFNOSUPPORT_STR "Address family not supported by protocol" |
| #define EADDRINUSE 98 |
| #define EADDRINUSE_STR "Address already in use" |
| #define EADDRNOTAVAIL 99 |
| #define EADDRNOTAVAIL_STR "Cannot assign requested address" |
| #define ENETDOWN 100 |
| #define ENETDOWN_STR "Network is down" |
| #define ENETUNREACH 101 |
| #define ENETUNREACH_STR "Network is unreachable" |
| #define ENETRESET 102 |
| #define ENETRESET_STR "Network dropped connection because of reset" |
| #define ECONNABORTED 103 |
| #define ECONNABORTED_STR "Software caused connection abort" |
| #define ECONNRESET 104 |
| #define ECONNRESET_STR "Connection reset by peer" |
| #define ENOBUFS 105 |
| #define ENOBUFS_STR "No buffer space available" |
| #define EISCONN 106 |
| #define EISCONN_STR "Transport endpoint is already connected" |
| #define ENOTCONN 107 |
| #define ENOTCONN_STR "Transport endpoint is not connected" |
| #define ESHUTDOWN 108 /* Linux errno extension */ |
| #define ESHUTDOWN_STR "Cannot send after transport endpoint shutdown" |
| #define ETOOMANYREFS 109 |
| #define ETOOMANYREFS_STR "Too many references: cannot splice" |
| #define ETIMEDOUT 110 |
| #define ETIMEDOUT_STR "Connection timed out" |
| #define ECONNREFUSED 111 |
| #define ECONNREFUSED_STR "Connection refused" |
| #define EHOSTDOWN 112 |
| #define EHOSTDOWN_STR "Host is down" |
| #define EHOSTUNREACH 113 |
| #define EHOSTUNREACH_STR "No route to host" |
| #define EALREADY 114 |
| #define EALREADY_STR "Operation already in progress" |
| #define EINPROGRESS 115 |
| #define EINPROGRESS_STR "Operation now in progress" |
| #define ESTALE 116 |
| #define ESTALE_STR "Stale file handle" |
| #define EUCLEAN 117 |
| #define EUCLEAN_STR "Structure needs cleaning" |
| #define ENOTNAM 118 |
| #define ENOTNAM_STR "Not a XENIX named type file" |
| #define ENAVAIL 119 |
| #define ENAVAIL_STR "No XENIX semaphores available" |
| #define EISNAM 120 |
| #define EISNAM_STR "Is a named type file" |
| #define EREMOTEIO 121 |
| #define EREMOTEIO_STR "Remote I/O error" |
| #define EDQUOT 122 |
| #define EDQUOT_STR "Quota exceeded" |
| #define ENOMEDIUM 123 /* Linux errno extension */ |
| #define ENOMEDIUM_STR "No medium found" |
| #define EMEDIUMTYPE 124 |
| #define EMEDIUMTYPE_STR "Wrong medium type" |
| #define ECANCELED 125 |
| #define ECANCELED_STR "Operation cancelled" |
| #define ENOKEY 126 |
| #define ENOKEY_STR "Required key not available" |
| #define EKEYEXPIRED 127 |
| #define EKEYEXPIRED_STR "Key has expired" |
| #define EKEYREVOKED 128 |
| #define EKEYREVOKED_STR "Key has been revoked" |
| #define EKEYREJECTED 129 |
| #define EKEYREJECTED_STR "Key was rejected by service" |
| #define EOWNERDEAD 130 |
| #define EOWNERDEAD_STR "Previous owner died" |
| #define ENOTRECOVERABLE 131 |
| #define ENOTRECOVERABLE_STR "State not recoverable" |
| #define ERFKILL 132 |
| #define ERFKILL_STR "Operation not possible due to RF-kill" |
| #define EHWPOISON 133 |
| #define EHWPOISON_STR "Memory page has hardware error" |
| |
| /* NuttX additional error codes */ |
| |
| #define ELBIN 134 /* Linux errno extension */ |
| #define ELBIN_STR "Inode is remote" |
| #define EFTYPE 135 |
| #define EFTYPE_STR "Inappropriate file type or format" |
| #define ENMFILE 136 /* Cygwin */ |
| #define ENMFILE_STR "No more files" |
| #define EPROCLIM 137 |
| #define EPROCLIM_STR "Limit would be exceeded by attempted fork" |
| #define ENOTSUP 138 |
| #define ENOTSUP_STR "Not supported" |
| #define ENOSHARE 139 /* Cygwin */ |
| #define ENOSHARE_STR "No such host or network path" |
| #define ECASECLASH 140 /* Cygwin */ |
| #define ECASECLASH_STR "Filename exists with different case" |
| |
| #define __ELASTERROR 2000 /* Users can add values starting here */ |
| |
| /**************************************************************************** |
| * Public Type Definitions |
| ****************************************************************************/ |
| |
| /**************************************************************************** |
| * Public Function Prototypes |
| ****************************************************************************/ |
| |
| #undef EXTERN |
| #if defined(__cplusplus) |
| #define EXTERN extern "C" |
| extern "C" |
| { |
| #else |
| #define EXTERN extern |
| #endif |
| |
| /* Return a pointer to the thread specific errno. */ |
| |
| FAR int *__errno(void); |
| |
| #undef EXTERN |
| #if defined(__cplusplus) |
| } |
| #endif |
| |
| #endif /* __INCLUDE_ERRNO_H */ |