1 /*
2 * Copyright (C) 2021 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16
17 #ifndef MOCK_NATIVE_INCLUDE_ERRORS_H
18 #define MOCK_NATIVE_INCLUDE_ERRORS_H
19
20 #include <cerrno>
21
22 namespace OHOS {
23 /**
24 * ErrCode layout
25 *
26 * +-----+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
27 * | Bit |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10|09|08|07|06|05|04|03|02|01|00|
28 * +-----+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
29 * |Field|Reserved| Subsystem | Module | Code |
30 * +-----+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
31 */
32
33 using ErrCode = int;
34
35 enum {
36 SUBSYS_COMMON = 0,
37 SUBSYS_AAFWK = 1,
38 SUBSYS_ACCOUNT = 2,
39 SUBSYS_AI = 3,
40 SUBSYS_APPEXECFWK = 4,
41 SUBSYS_APPLICATIONS = 5,
42 SUBSYS_ARVR = 6,
43 SUBSYS_ARVRHARDWARE = 7,
44 SUBSYS_BARRIERFREE = 8,
45 SUBSYS_BIOMETRICS = 9,
46 SUBSYS_CCRUNTIME = 10,
47 SUBSYS_COMMUNICATION = 11,
48 SUBSYS_DFX = 12,
49 SUBSYS_DISTRIBUTEDDATAMNG = 13,
50 SUBSYS_DISTRIBUTEDSCHEDULE = 14,
51 SUBSYS_DRIVERS = 15,
52 SUBSYS_GLOBAL = 16,
53 SUBSYS_GRAPHIC = 17,
54 SUBSYS_HBS = 18,
55 SUBSYS_IAWARE = 19,
56 SUBSYS_IDE = 20,
57 SUBSYS_INTELLIACCESSORIES = 21,
58 SUBSYS_INTELLISPEAKER = 22,
59 SUBSYS_INTELLITV = 23,
60 SUBSYS_IOT = 24,
61 SUBSYS_IOTHARDWARE = 25,
62 SUBSYS_IVIHARDWARE = 26,
63 SUBSYS_KERNEL = 27,
64 SUBSYS_LOCATION = 28,
65 SUBSYS_MSDP = 29,
66 SUBSYS_MULTIMEDIA = 30,
67 SUBSYS_MULTIMODAINPUT = 31,
68 SUBSYS_NOTIFICATION = 32,
69 SUBSYS_POWERMNG = 33,
70 SUBSYS_ROUTER = 34,
71 SUBSYS_SECURITY = 35,
72 SUBSYS_SENSORS = 36,
73 SUBSYS_SMALLSERVICES = 37,
74 SUBSYS_SOURCECODETRANSFORMER = 38,
75 SUBSYS_STARTUP = 39,
76 SUBSYS_TELEPONY = 40,
77 SUBSYS_UPDATE = 41,
78 SUBSYS_USB = 42,
79 SUBSYS_WEARABLE = 43,
80 SUBSYS_WEARABLEHARDWARE = 44,
81 SUBSYS_IVI = 45
82 // new type
83 };
84
85 // be used to init the subsystem errorno.
ErrCodeOffset(unsigned int subsystem, unsigned int module = 0)86 constexpr ErrCode ErrCodeOffset(unsigned int subsystem, unsigned int module = 0)
87 {
88 constexpr int SUBSYSTEM_BIT_NUM = 21;
89 constexpr int MODULE_BIT_NUM = 16;
90 return (subsystem << SUBSYSTEM_BIT_NUM) | (module << MODULE_BIT_NUM);
91 }
92
93 // offset of common error, only be used in this file.
94 constexpr ErrCode BASE_ERR_OFFSET = ErrCodeOffset(SUBSYS_COMMON);
95
96 enum {
97 ERR_OK = 0,
98 ERR_NO_MEMORY = BASE_ERR_OFFSET + ENOMEM,
99 ERR_INVALID_OPERATION = BASE_ERR_OFFSET + ENOSYS,
100 ERR_INVALID_VALUE = BASE_ERR_OFFSET + EINVAL,
101 ERR_NAME_NOT_FOUND = BASE_ERR_OFFSET + ENOENT,
102 ERR_PERMISSION_DENIED = BASE_ERR_OFFSET + EPERM,
103 ERR_NO_INIT = BASE_ERR_OFFSET + ENODEV,
104 ERR_ALREADY_EXISTS = BASE_ERR_OFFSET + EEXIST,
105 ERR_DEAD_OBJECT = BASE_ERR_OFFSET + EPIPE,
106 ERR_OVERFLOW = BASE_ERR_OFFSET + EOVERFLOW,
107 ERR_ENOUGH_DATA = BASE_ERR_OFFSET + ENODATA,
108 ERR_WOULD_BLOCK = BASE_ERR_OFFSET + EWOULDBLOCK,
109 ERR_TIMED_OUT = BASE_ERR_OFFSET + ETIMEDOUT
110 };
111
112 #define SUCCEEDED(errCode) ((errCode) == ERR_OK)
113 #define FAILED(errCode) ((errCode) != ERR_OK)
114 } // namespace OHOS
115
116 #endif // MOCK_NATIVE_INCLUDE_ERRORS_H
117