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: 32433 $ 14 *---------------------------------------------------------------------------*/ 15 /*! 16 @file 17 18 :include nn/os.h 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 /*! 31 @enum Description 32 33 @brief エラーの詳細を示します。 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, //!< Mutex の上限に達した 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, //!< Mutex の割り当て制限に達した 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 廃止 59 // 23 廃止 60 DESCRIPTION_INVALID_PROCESS_ID = 24, //!< 正しくないプロセス ID 61 DESCRIPTION_INVALID_THREAD_ID = 25, //!< 正しくないスレッド ID 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, //!< 自身が所有していない Mutex 67 DESCRIPTION_PROCESS_TERMINATED = 32, //!< 指定したプロセスは既に終了している 68 DESCRIPTION_INVALID_TLS_INDEX = 33, //!< 確保していない TLS のインデックスが指定された 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 廃止 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 //!< Obsolete できるだけ早く他のエラーに修正すべき。 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