1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
/*
* Copyright (c) 1995 The University of Utah and
* the Computer Systems Laboratory at the University of Utah (CSL).
* All rights reserved.
*
* Permission to use, copy, modify and distribute this software is hereby
* granted provided that (1) source code retains these copyright, permission,
* and disclaimer notices, and (2) redistributions including binaries
* reproduce the notices in supporting documentation, and (3) all advertising
* materials mentioning features or use of this software display the following
* acknowledgement: ``This product includes software developed by the
* Computer Systems Laboratory at the University of Utah.''
*
* THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS
* IS" CONDITION. THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF
* ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
*
* CSL requests users of this software to return to csl-dist@cs.utah.edu any
* improvements that they make and grant CSL redistribution rights.
*
* Author: Bryan Ford, University of Utah CSL
*/
/*
* This header file defines a set of POSIX errno values
* that fits consistently into the Mach error code "space" -
* i.e. these error code values can be mixed with kern_return_t's
* and mach_msg_return_t's and such without conflict.
* Higher-level services are not required to use these values
* (or, for that matter, any of the mach/sa header files),
* but if they use other values of their own choosing,
* those values may conflict with values in the Mach error code space,
* making it necessary to keep the different types of error codes separate.
*
* (For example, Lites uses BSD's errno values,
* which conflict with Mach's kern_return_t values,
* and therefore must carefully distinguish between BSD and Mach error codes
* and never return one type when the other is expected, etc. -
* we've found this to be a frequent source of bugs.)
*
* One (probably the main) disadvantage of using these error codes
* is that, since they don't start from around 0 like typical Unix errno values,
* it's impossible to provide a conventional Unix-style sys_errlist table for them.
* However, they are compatible with the POSIX-blessed strerror and perror routines.
*/
#ifndef _MACH_SA_ERRNO_H_
#define _MACH_SA_ERRNO_H_
extern int errno; /* global error number */
/* ISO/ANSI C-1990 errors */
#define EDOM 0xc001 /* Numerical argument out of domain */
#define ERANGE 0xc002 /* Result too large */
/* POSIX-1990 errors */
#define E2BIG 0xc003 /* Argument list too long */
#define EACCES 0xc004 /* Permission denied */
#define EAGAIN 0xc005 /* Resource temporarily unavailable */
#define EBADF 0xc006 /* Bad file descriptor */
#define EBUSY 0xc007 /* Device busy */
#define ECHILD 0xc008 /* No child processes */
#define EDEADLK 0xc009 /* Resource deadlock avoided */
#define EEXIST 0xc00a /* File exists */
#define EFAULT 0xc00b /* Bad address */
#define EFBIG 0xc00c /* File too large */
#define EINTR 0xc00d /* Interrupted system call */
#define EINVAL 0xc00e /* Invalid argument */
#define EIO 0xc00f /* Input/output error */
#define EISDIR 0xc010 /* Is a directory */
#define EMFILE 0xc011 /* Too many open files */
#define EMLINK 0xc012 /* Too many links */
#define ENAMETOOLONG 0xc013 /* File name too long */
#define ENFILE 0xc014 /* Too many open files in system */
#define ENODEV 0xc015 /* Operation not supported by device */
#define ENOENT 0xc016 /* No such file or directory */
#define ENOEXEC 0xc017 /* Exec format error */
#define ENOLCK 0xc018 /* No locks available */
#define ENOMEM 0xc019 /* Cannot allocate memory */
#define ENOSPC 0xc01a /* No space left on device */
#define ENOSYS 0xc01b /* Function not implemented */
#define ENOTDIR 0xc01c /* Not a directory */
#define ENOTEMPTY 0xc01d /* Directory not empty */
#define ENOTTY 0xc01e /* Inappropriate ioctl for device */
#define ENXIO 0xc01f /* Device not configured */
#define EPERM 0xc020 /* Operation not permitted */
#define EPIPE 0xc021 /* Broken pipe */
#define EROFS 0xc022 /* Read-only file system */
#define ESPIPE 0xc023 /* Illegal seek */
#define ESRCH 0xc024 /* No such process */
#define EXDEV 0xc025 /* Cross-device link */
/* POSIX-1993 errors */
#define EBADMSG 0xc026
#define ECANCELED 0xc027
#define EINPROGRESS 0xc028
#define EMSGSIZE 0xc029
#define ENOTSUP 0xc02a
#endif _MACH_SA_ERRNO_H_
|