21#include 22
23namespace android {
24
25// use this type to return error codes
26#ifdef _WIN32
27typedef int status_t;
28#else
29typedef int32_t status_t;
30#endif
31
32/* the MS C runtime lacks a few error codes */
33
34/*
35 * Error codes.
36 * All error codes are negative values.
37 */
38
39// Win32 #defines NO_ERROR as well. It has the same value, so there's no
40// real conflict, though it's a bit awkward.
41#ifdef _WIN32
42# undef NO_ERROR
43#endif
44
45enum {
46 OK = 0, // Everything's swell.
47 NO_ERROR = 0, // No errors.
48
49 UNKNOWN_ERROR = (-2147483647-1), // INT32_MIN value
50
51 NO_MEMORY = -ENOMEM,
52 INVALID_OPERATION = -ENOSYS,
53 BAD_VALUE = -EINVAL,
54 BAD_TYPE = (UNKNOWN_ERROR + 1),
55 NAME_NOT_FOUND = -ENOENT,
56 PERMISSION_DENIED = -EPERM,
57 NO_INIT = -ENODEV,
58 ALREADY_EXISTS = -EEXIST,
59 DEAD_OBJECT = -EPIPE,
60 FAILED_TRANSACTION = (UNKNOWN_ERROR + 2),
61#if !defined(_WIN32)
62 BAD_INDEX = -EOVERFLOW,
63 NOT_ENOUGH_DATA = -ENODATA,
64 WOULD_BLOCK = -EWOULDBLOCK,
65 TIMED_OUT = -ETIMEDOUT,
66 UNKNOWN_TRANSACTION = -EBADMSG,
67#else
68 BAD_INDEX = -E2BIG,
69 NOT_ENOUGH_DATA = (UNKNOWN_ERROR + 3),
70 WOULD_BLOCK = (UNKNOWN_ERROR + 4),
71 TIMED_OUT = (UNKNOWN_ERROR + 5),
72 UNKNOWN_TRANSACTION = (UNKNOWN_ERROR + 6),
73#endif
74 FDS_NOT_ALLOWED = (UNKNOWN_ERROR + 7),
75 UNEXPECTED_NULL = (UNKNOWN_ERROR + 8),
76};
77
78// Restore define; enumeration is in "android" namespace, so the value defined
79// there won't work for Win32 code in a different namespace.
80#ifdef _WIN32
81# define NO_ERROR 0L
82#endif
83
84}; // namespace android
85
86// ---------------------------------------------------------------------------
87
88#endif // ANDROID_ERRORS_H
89