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