Home | History | Annotate | Download | only in utils
      1 /*
      2  * Copyright (C) 2007 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #ifndef ANDROID_ERRORS_H
     18 #define ANDROID_ERRORS_H
     19 
     20 #include <sys/types.h>
     21 #include <errno.h>
     22 
     23 namespace android {
     24 
     25 // use this type to return error codes
     26 #ifdef HAVE_MS_C_RUNTIME
     27 typedef int         status_t;
     28 #else
     29 typedef 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 
     45 enum {
     46     OK                = 0,    // Everything's swell.
     47     NO_ERROR          = 0,    // No errors.
     48 
     49     UNKNOWN_ERROR       = 0x80000000,
     50 
     51     NO_MEMORY           = -ENOMEM,
     52     INVALID_OPERATION   = -ENOSYS,
     53     BAD_VALUE           = -EINVAL,
     54     BAD_TYPE            = 0x80000001,
     55     NAME_NOT_FOUND      = -ENOENT,
     56     PERMISSION_DENIED   = -EPERM,
     57     NO_INIT             = -ENODEV,
     58     ALREADY_EXISTS      = -EEXIST,
     59     DEAD_OBJECT         = -EPIPE,
     60     FAILED_TRANSACTION  = 0x80000002,
     61     JPARKS_BROKE_IT     = -EPIPE,
     62 #if !defined(HAVE_MS_C_RUNTIME)
     63     BAD_INDEX           = -EOVERFLOW,
     64     NOT_ENOUGH_DATA     = -ENODATA,
     65     WOULD_BLOCK         = -EWOULDBLOCK,
     66     TIMED_OUT           = -ETIMEDOUT,
     67     UNKNOWN_TRANSACTION = -EBADMSG,
     68 #else
     69     BAD_INDEX           = -E2BIG,
     70     NOT_ENOUGH_DATA     = 0x80000003,
     71     WOULD_BLOCK         = 0x80000004,
     72     TIMED_OUT           = 0x80000005,
     73     UNKNOWN_TRANSACTION = 0x80000006,
     74 #endif
     75     FDS_NOT_ALLOWED     = 0x80000007,
     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