1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     os_Result.h
4   Copyright (C)2009 Nintendo Co., Ltd.  All rights reserved.
5   These coded instructions, statements, and computer programs contain
6   proprietary information of Nintendo of America Inc. and/or Nintendo
7   Company Ltd., and are protected by Federal copyright law. They may
8   not be disclosed to third parties or copied or duplicated in any form,
9   in whole or in part, without the prior written consent of Nintendo.
10   $Rev: 32444 $
11  *---------------------------------------------------------------------------
12 
13 
14 */
15 /* Please see man pages for details
16 
17 
18 
19 */
20 
21 #ifndef NN_OS_OS_RESULT_H_
22 #define NN_OS_OS_RESULT_H_
23 
24 #ifdef __cplusplus
25 
26 #include <nn/Result.h>
27 
28 namespace nn { namespace os {
29 
30     /* Please see man pages for details
31 
32 
33 
34 */
35     enum Description
36     {
37         DESCRIPTION_FAILED_TO_ALLOCATE_MEMORY           = 1,        //
38         DESCRIPTION_FAILED_TO_ALLOCATE_SHARED_MEMORY    = 2,        //
39         DESCRIPTION_FAILED_TO_ALLOCATE_THREAD           = 3,        //
40         DESCRIPTION_FAILED_TO_ALLOCATE_MUTEX            = 4,        //
41         DESCRIPTION_FAILED_TO_ALLOCATE_SEMAPHORE        = 5,        //
42         DESCRIPTION_FAILED_TO_ALLOCATE_EVENT            = 6,        //
43         DESCRIPTION_FAILED_TO_ALLOCATE_TIMER            = 7,        //
44         DESCRIPTION_FAILED_TO_ALLOCATE_PORT             = 8,        //
45         DESCRIPTION_FAILED_TO_ALLOCATE_SESSION          = 9,        //
46         DESCRIPTION_EXCEED_MEMORY_LIMIT                 = 10,       //
47         DESCRIPTION_EXCEED_SHARED_MEMORY_LIMIT          = 11,       //
48         DESCRIPTION_EXCEED_THREAD_LIMIT                 = 12,       //
49         DESCRIPTION_EXCEED_MUTEX_LIMIT                  = 13,       //
50         DESCRIPTION_EXCEED_SEMAPHORE_LIMIT              = 14,       //
51         DESCRIPTION_EXCEED_EVENT_LIMIT                  = 15,       //
52         DESCRIPTION_EXCEED_TIMER_LIMIT                  = 16,       //
53         DESCRIPTION_EXCEED_PORT_LIMIT                   = 17,       //
54         DESCRIPTION_EXCEED_SESSION_LIMIT                = 18,       //
55         DESCRIPTION_MAX_HANDLE                          = 19,       //
56         DESCRIPTION_INACCESSIBLE_PAGE                   = 20,       //
57         DESCRIPTION_ABANDONED                           = 21,       //
58         // 22 Eliminated
59         // 23 Eliminated
60         DESCRIPTION_INVALID_PROCESS_ID                  = 24,       //
61         DESCRIPTION_INVALID_THREAD_ID                   = 25,       //
62         DESCRIPTION_SESSION_CLOSED                      = 26,       //
63         DESCRIPTION_INVALID_MESSAGE                     = 28,       //
64         DESCRIPTION_MANUAL_RESET_EVENT_REQUIRED         = 29,       //
65         DESCRIPTION_TOO_LONG_NAME                       = 30,       //
66         DESCRIPTION_NOT_OWNED                           = 31,       //
67         DESCRIPTION_PROCESS_TERMINATED                  = 32,       //
68         DESCRIPTION_INVALID_TLS_INDEX                   = 33,       //
69         DESCRIPTION_NO_RUNNABLE_PROCESSOR               = 34,       //
70         DESCRIPTION_NO_SESSION                          = 35,       //
71         DESCRIPTION_USING_REGION                        = 36,       //
72         DESCRIPTION_ALREADY_RECEIVED                    = 37,       //
73         DESCRIPTION_CANCEL_REQUESTD                     = 38,       //
74         DESCRIPTION_NOT_RECEIVED                        = 39,       //
75         // 40 Eliminated
76         DESCRIPTION_DELIVER_ARG_NOT_READY               = 41,       //
77         DESCRIPTION_DELIVER_ARG_OVER_SIZE               = 42,       //
78         DESCRIPTION_INVALID_DELIVER_ARG                 = 43,       //
79         DESCRIPTION_I_AM_OWNER                          = 44,       //
80         DESCRIPTION_EXCEEDS_SHARED_LIMIT                = 45,
81         DESCRIPTION_UNEXPECTED_PERMISSION               = 46,
82         DESCRIPTION_INVALID_TAG                         = 47,
83         DESCRIPTION_INVALID_FORMAT                      = 48,
84         DESCRIPTION_OTHER_HANDLE                        = 49,
85         DESCRIPTION_FAILED_TO_ALLOCATE_ADDRESS_ARBITER  = 50,
86         DESCRIPTION_EXCEED_ADDRESS_ARBITER_LIMIT        = 51,
87         DESCRIPTION_OVER_PORT_CAPACITY                  = 52,
88         DESCRIPTION_NOT_MAPPED                          = 53,
89 
90         DESCRIPTION_OBSOLETE_RESULT                     = 1023      //
91     };
92 
93     NN_DEFINE_RESULT_FUNC_LM(
94         MakePermanentResult,
95         Result::LEVEL_PERMANENT, Result::MODULE_NN_FND
96     );
97 
98     NN_DEFINE_RESULT_CONST(
99         ResultNoRunnableProcessor,
100         Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_NO_RUNNABLE_PROCESSOR
101     );
102 
103     NN_DEFINE_RESULT_CONST(
104         ResultNoSession,
105         Result::LEVEL_PERMANENT, Result::SUMMARY_WOULD_BLOCK, Result::MODULE_NN_OS, DESCRIPTION_NO_SESSION
106     );
107 
108     NN_DEFINE_RESULT_CONST(
109         ResultAlreadyInitialized,
110         Result::LEVEL_INFO, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_ALREADY_INITIALIZED
111     );
112 
113     NN_DEFINE_RESULT_CONST_LM(
114         ResultInvalidTLSIndex,
115         MakePermanentResult, Result::SUMMARY_INVALID_ARGUMENT, DESCRIPTION_INVALID_TLS_INDEX
116     );
117 
118     NN_DEFINE_RESULT_CONST_LM(
119         ResultOutOfMemory,
120         MakePermanentResult, Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::DESCRIPTION_OUT_OF_MEMORY
121     );
122 
123     NN_DEFINE_RESULT_FUNC_LSM(
124         MakeResultInvalidArgument,
125         Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS
126     );
127 
128     NN_DEFINE_RESULT_FUNC_LSM(
129         MakeResultWrongArgument,
130         Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS
131     );
132 
133     NN_DEFINE_RESULT_CONST(
134         ResultNotImplemented,
135         Result::LEVEL_USAGE, Result::SUMMARY_NOT_SUPPORTED, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_NOT_IMPLEMENTED
136     );
137 
138     NN_DEFINE_RESULT_CONST_LM(
139         ResultResourceLimitAlreadyAttached,
140         MakePermanentResult, Result::SUMMARY_INVALID_STATE, nn::Result::DESCRIPTION_ALREADY_INITIALIZED
141     );
142 
143     NN_DEFINE_RESULT_CONST_LM(
144         ResultMaxHandle,
145         MakePermanentResult, Result::SUMMARY_OUT_OF_RESOURCE, DESCRIPTION_MAX_HANDLE
146     );
147 
148     NN_DEFINE_RESULT_CONST_LM(
149         ResultResourceLimitNotAttached,
150         MakePermanentResult, Result::SUMMARY_INVALID_STATE, nn::Result::DESCRIPTION_NOT_INITIALIZED
151     );
152 
153     NN_DEFINE_RESULT_CONST(
154         ResultMisalignedAddress,
155         Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_MISALIGNED_ADDRESS
156     );
157 
158     NN_DEFINE_RESULT_CONST(
159         ResultMisalignedSize,
160         Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_MISALIGNED_SIZE
161     );
162 
163     NN_DEFINE_RESULT_CONST(
164         ResultInvalidAddress,
165         Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_INVALID_ADDRESS
166     );
167 
168     NN_DEFINE_RESULT_CONST(
169         ResultInvalidCombination,
170         Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_INVALID_COMBINATION
171     );
172 
173     NN_DEFINE_RESULT_CONST(
174         ResultBusy,
175         Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_BUSY
176     );
177 
178     NN_DEFINE_RESULT_CONST(
179         ResultTooLongName,
180         Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_TOO_LONG_NAME
181     );
182 
183     NN_DEFINE_RESULT_CONST(
184         ResultInaccessiblePage,
185         Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INACCESSIBLE_PAGE
186     );
187 
188     NN_DEFINE_RESULT_CONST(
189         ResultNotFound,
190         Result::LEVEL_PERMANENT, Result::SUMMARY_NOT_FOUND, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_NOT_FOUND
191     );
192 
193     NN_DEFINE_RESULT_CONST(
194         ResultInvalidHandle,
195         Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_INVALID_HANDLE
196     );
197 
198     NN_DEFINE_RESULT_CONST(
199         ResultInvalidThreadId,
200         Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INVALID_THREAD_ID
201     );
202 
203     NN_DEFINE_RESULT_CONST(
204         ResultNoData,
205         Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_NO_DATA
206     );
207 
208     NN_DEFINE_RESULT_CONST(
209         ResultOutOfRange,
210         Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_OUT_OF_RANGE
211     );
212 
213     NN_DEFINE_RESULT_CONST(
214         ResultInvalidProcessId,
215         Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INVALID_PROCESS_ID
216     );
217 
218     NN_DEFINE_RESULT_CONST(
219         ResultAlreadyExists,
220         Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_ALREADY_EXISTS
221     );
222 
223     NN_DEFINE_RESULT_CONST(
224         ResultSessionClosed,
225         Result::LEVEL_STATUS, Result::SUMMARY_CANCELLED, Result::MODULE_NN_OS, DESCRIPTION_SESSION_CLOSED
226     );
227 
228     NN_DEFINE_RESULT_CONST(
229         ResultNotAuthorized,
230         Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_NOT_AUTHORIZED
231     );
232 
233     NN_DEFINE_RESULT_CONST(
234         ResultDeliverArgNotReady,
235         Result::LEVEL_USAGE, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, DESCRIPTION_DELIVER_ARG_NOT_READY
236     );
237 
238     NN_DEFINE_RESULT_CONST(
239         ResultDeliverArgOverSize,
240         Result::LEVEL_USAGE, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, DESCRIPTION_DELIVER_ARG_OVER_SIZE
241     );
242 
243     NN_DEFINE_RESULT_CONST(
244         ResultInvalidDeliverArg,
245         Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, DESCRIPTION_INVALID_DELIVER_ARG
246     );
247 
248     NN_DEFINE_RESULT_CONST(
249         ResultIAmOwner,
250         Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_I_AM_OWNER
251     );
252 
253     NN_DEFINE_RESULT_CONST(
254         ResultExceedsSharedLimit,
255         Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_EXCEEDS_SHARED_LIMIT
256     );
257 
258     NN_DEFINE_RESULT_CONST(
259         ResultUnexpectedPermission,
260         Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_UNEXPECTED_PERMISSION
261     );
262 
263     NN_DEFINE_RESULT_CONST(
264         ResultInvalidTag,
265         Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INVALID_TAG
266     );
267 
268     NN_DEFINE_RESULT_CONST(
269         ResultInvalidFormat,
270         Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INVALID_FORMAT
271     );
272 
273     NN_DEFINE_RESULT_CONST(
274         ResultOtherHandle,
275         Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_OTHER_HANDLE
276     );
277 
278 
279 
280 
281     NN_DEFINE_RESULT_CONST(
282         ResultFailedToAllocateMemory,
283         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_MEMORY
284     );
285 
286     NN_DEFINE_RESULT_CONST(
287         ResultFailedToAllocateSharedMemory,
288         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_SHARED_MEMORY
289     );
290 
291     NN_DEFINE_RESULT_CONST(
292         ResultFailedToAllocateThread,
293         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_THREAD
294     );
295 
296     NN_DEFINE_RESULT_CONST(
297         ResultFailedToAllocateMutex,
298         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_MUTEX
299     );
300 
301     NN_DEFINE_RESULT_CONST(
302         ResultFailedToAllocateSemaphore,
303         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_SEMAPHORE
304     );
305 
306     NN_DEFINE_RESULT_CONST(
307         ResultFailedToAllocateEvent,
308         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_EVENT
309     );
310 
311     NN_DEFINE_RESULT_CONST(
312         ResultFailedToAllocateTimer,
313         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_TIMER
314     );
315 
316     NN_DEFINE_RESULT_CONST(
317         ResultFailedToAllocatePort,
318         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_PORT
319     );
320 
321     NN_DEFINE_RESULT_CONST(
322         ResultFailedToAllocateSession,
323         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_SESSION
324     );
325 
326     NN_DEFINE_RESULT_CONST(
327         ResultExceedMemoryLimit,
328         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_MEMORY_LIMIT
329     );
330 
331     NN_DEFINE_RESULT_CONST(
332         ResultExceedSharedMemoryLimit,
333         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_SHARED_MEMORY_LIMIT
334     );
335 
336     NN_DEFINE_RESULT_CONST(
337         ResultExceedThreadLimit,
338         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_THREAD_LIMIT
339     );
340 
341     NN_DEFINE_RESULT_CONST(
342         ResultExceedMutexLimit,
343         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_MUTEX_LIMIT
344     );
345 
346     NN_DEFINE_RESULT_CONST(
347         ResultExceedSemaphoreLimit,
348         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_SEMAPHORE_LIMIT
349     );
350 
351     NN_DEFINE_RESULT_CONST(
352         ResultExceedEventLimit,
353         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_EVENT_LIMIT
354     );
355 
356     NN_DEFINE_RESULT_CONST(
357         ResultExceedTimerLimit,
358         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_TIMER_LIMIT
359     );
360 
361     NN_DEFINE_RESULT_CONST(
362         ResultExceedPortLimit,
363         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_PORT_LIMIT
364     );
365 
366     NN_DEFINE_RESULT_CONST(
367         ResultExceedSessionLimit,
368         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_SESSION_LIMIT
369     );
370 
371     NN_DEFINE_RESULT_CONST(
372         ResultFailedToAllocateAddressArbiter,
373         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_ADDRESS_ARBITER
374     );
375 
376     NN_DEFINE_RESULT_CONST(
377         ResultExceedAddressArbiterLimit,
378         Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_ADDRESS_ARBITER_LIMIT
379     );
380 
381     NN_DEFINE_RESULT_CONST(
382         ResultOverPortCapacity,
383         Result::LEVEL_TEMPORARY, Result::SUMMARY_WOULD_BLOCK, Result::MODULE_NN_OS, DESCRIPTION_OVER_PORT_CAPACITY
384     );
385 
386     NN_DEFINE_RESULT_CONST(
387         ResultInvalidAddressState,
388         Result::LEVEL_USAGE, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_INVALID_ADDRESS
389     );
390 
391     NN_DEFINE_RESULT_CONST(
392         ResultNotMapped,
393         Result::LEVEL_USAGE, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, DESCRIPTION_NOT_MAPPED
394     );
395 }}
396 
397 #endif // __cplusplus
398 
399 #endif /* NN_OS_OS_RESULT_H_ */
400