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: 29160 $ 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 DESCRIPTION_INVALID_ADDRESS = 22, //!< 不正なアドレス 59 DESCRIPTION_INVALID_HANDLE = 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 DESCRIPTION_NO_DATA = 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 88 DESCRIPTION_OBSOLETE_RESULT = 1023 //!< Obsolete できるだけ早く他のエラーに修正すべき。 89 }; 90 91 NN_DEFINE_RESULT_FUNC_LM( 92 MakePermanentResult, 93 Result::LEVEL_PERMANENT, Result::MODULE_NN_FND 94 ); 95 96 NN_DEFINE_RESULT_CONST( 97 ResultNoRunnableProcessor, 98 Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_NO_RUNNABLE_PROCESSOR 99 ); 100 101 NN_DEFINE_RESULT_CONST( 102 ResultNoSession, 103 Result::LEVEL_PERMANENT, Result::SUMMARY_WOULD_BLOCK, Result::MODULE_NN_OS, DESCRIPTION_NO_SESSION 104 ); 105 106 NN_DEFINE_RESULT_CONST( 107 ResultAlreadyInitialized, 108 Result::LEVEL_INFO, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_ALREADY_INITIALIZED 109 ); 110 111 NN_DEFINE_RESULT_CONST_LM( 112 ResultInvalidTLSIndex, 113 MakePermanentResult, Result::SUMMARY_INVALID_ARGUMENT, DESCRIPTION_INVALID_TLS_INDEX 114 ); 115 116 NN_DEFINE_RESULT_CONST_LM( 117 ResultOutOfMemory, 118 MakePermanentResult, Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::DESCRIPTION_OUT_OF_MEMORY 119 ); 120 121 NN_DEFINE_RESULT_FUNC_LSM( 122 MakeResultInvalidArgument, 123 Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS 124 ); 125 126 NN_DEFINE_RESULT_FUNC_LSM( 127 MakeResultWrongArgument, 128 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS 129 ); 130 131 NN_DEFINE_RESULT_CONST( 132 ResultNotImplemented, 133 Result::LEVEL_USAGE, Result::SUMMARY_NOT_SUPPORTED, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_NOT_IMPLEMENTED 134 ); 135 136 NN_DEFINE_RESULT_CONST_LM( 137 ResultResourceLimitAlreadyAttached, 138 MakePermanentResult, Result::SUMMARY_INVALID_STATE, nn::Result::DESCRIPTION_ALREADY_INITIALIZED 139 ); 140 141 NN_DEFINE_RESULT_CONST_LM( 142 ResultMaxHandle, 143 MakePermanentResult, Result::SUMMARY_OUT_OF_RESOURCE, DESCRIPTION_MAX_HANDLE 144 ); 145 146 NN_DEFINE_RESULT_CONST_LM( 147 ResultResourceLimitNotAttached, 148 MakePermanentResult, Result::SUMMARY_INVALID_STATE, nn::Result::DESCRIPTION_NOT_INITIALIZED 149 ); 150 151 NN_DEFINE_RESULT_CONST( 152 ResultMisalignedAddress, 153 Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_MISALIGNED_ADDRESS 154 ); 155 156 NN_DEFINE_RESULT_CONST( 157 ResultMisalignedSize, 158 Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_MISALIGNED_SIZE 159 ); 160 161 NN_DEFINE_RESULT_CONST( 162 ResultInvalidAddress, 163 Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INVALID_ADDRESS 164 ); 165 166 NN_DEFINE_RESULT_CONST( 167 ResultInvalidCombination, 168 Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_INVALID_COMBINATION 169 ); 170 171 NN_DEFINE_RESULT_CONST( 172 ResultBusy, 173 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_BUSY 174 ); 175 176 NN_DEFINE_RESULT_CONST( 177 ResultTooLongName, 178 Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_TOO_LONG_NAME 179 ); 180 181 NN_DEFINE_RESULT_CONST( 182 ResultInaccessiblePage, 183 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INACCESSIBLE_PAGE 184 ); 185 186 NN_DEFINE_RESULT_CONST( 187 ResultNotFound, 188 Result::LEVEL_PERMANENT, Result::SUMMARY_NOT_FOUND, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_NOT_FOUND 189 ); 190 191 NN_DEFINE_RESULT_CONST( 192 ResultInvalidHandle, 193 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INVALID_HANDLE 194 ); 195 196 NN_DEFINE_RESULT_CONST( 197 ResultInvalidThreadId, 198 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INVALID_THREAD_ID 199 ); 200 201 NN_DEFINE_RESULT_CONST( 202 ResultNoData, 203 Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, DESCRIPTION_NO_DATA 204 ); 205 206 NN_DEFINE_RESULT_CONST( 207 ResultOutOfRange, 208 Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_OUT_OF_RANGE 209 ); 210 211 NN_DEFINE_RESULT_CONST( 212 ResultInvalidProcessId, 213 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INVALID_PROCESS_ID 214 ); 215 216 NN_DEFINE_RESULT_CONST( 217 ResultAlreadyExists, 218 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_ALREADY_EXISTS 219 ); 220 221 NN_DEFINE_RESULT_CONST( 222 ResultSessionClosed, 223 Result::LEVEL_STATUS, Result::SUMMARY_CANCELLED, Result::MODULE_NN_OS, DESCRIPTION_SESSION_CLOSED 224 ); 225 226 NN_DEFINE_RESULT_CONST( 227 ResultNotAuthorized, 228 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_NOT_AUTHORIZED 229 ); 230 231 NN_DEFINE_RESULT_CONST( 232 ResultDeliverArgNotReady, 233 Result::LEVEL_USAGE, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, DESCRIPTION_DELIVER_ARG_NOT_READY 234 ); 235 236 NN_DEFINE_RESULT_CONST( 237 ResultDeliverArgOverSize, 238 Result::LEVEL_USAGE, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, DESCRIPTION_DELIVER_ARG_OVER_SIZE 239 ); 240 241 NN_DEFINE_RESULT_CONST( 242 ResultInvalidDeliverArg, 243 Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, DESCRIPTION_INVALID_DELIVER_ARG 244 ); 245 246 NN_DEFINE_RESULT_CONST( 247 ResultIAmOwner, 248 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_I_AM_OWNER 249 ); 250 251 NN_DEFINE_RESULT_CONST( 252 ResultExceedsSharedLimit, 253 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_EXCEEDS_SHARED_LIMIT 254 ); 255 256 NN_DEFINE_RESULT_CONST( 257 ResultUnexpectedPermission, 258 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_UNEXPECTED_PERMISSION 259 ); 260 261 NN_DEFINE_RESULT_CONST( 262 ResultInvalidTag, 263 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INVALID_TAG 264 ); 265 266 NN_DEFINE_RESULT_CONST( 267 ResultInvalidFormat, 268 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INVALID_FORMAT 269 ); 270 271 NN_DEFINE_RESULT_CONST( 272 ResultOtherHandle, 273 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_OTHER_HANDLE 274 ); 275 276 277 278 279 NN_DEFINE_RESULT_CONST( 280 ResultFailedToAllocateMemory, 281 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_MEMORY 282 ); 283 284 NN_DEFINE_RESULT_CONST( 285 ResultFailedToAllocateSharedMemory, 286 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_SHARED_MEMORY 287 ); 288 289 NN_DEFINE_RESULT_CONST( 290 ResultFailedToAllocateThread, 291 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_THREAD 292 ); 293 294 NN_DEFINE_RESULT_CONST( 295 ResultFailedToAllocateMutex, 296 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_MUTEX 297 ); 298 299 NN_DEFINE_RESULT_CONST( 300 ResultFailedToAllocateSemaphore, 301 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_SEMAPHORE 302 ); 303 304 NN_DEFINE_RESULT_CONST( 305 ResultFailedToAllocateEvent, 306 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_EVENT 307 ); 308 309 NN_DEFINE_RESULT_CONST( 310 ResultFailedToAllocateTimer, 311 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_TIMER 312 ); 313 314 NN_DEFINE_RESULT_CONST( 315 ResultFailedToAllocatePort, 316 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_PORT 317 ); 318 319 NN_DEFINE_RESULT_CONST( 320 ResultFailedToAllocateSession, 321 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_SESSION 322 ); 323 324 NN_DEFINE_RESULT_CONST( 325 ResultExceedMemoryLimit, 326 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_MEMORY_LIMIT 327 ); 328 329 NN_DEFINE_RESULT_CONST( 330 ResultExceedSharedMemoryLimit, 331 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_SHARED_MEMORY_LIMIT 332 ); 333 334 NN_DEFINE_RESULT_CONST( 335 ResultExceedThreadLimit, 336 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_THREAD_LIMIT 337 ); 338 339 NN_DEFINE_RESULT_CONST( 340 ResultExceedMutexLimit, 341 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_MUTEX_LIMIT 342 ); 343 344 NN_DEFINE_RESULT_CONST( 345 ResultExceedSemaphoreLimit, 346 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_SEMAPHORE_LIMIT 347 ); 348 349 NN_DEFINE_RESULT_CONST( 350 ResultExceedEventLimit, 351 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_EVENT_LIMIT 352 ); 353 354 NN_DEFINE_RESULT_CONST( 355 ResultExceedTimerLimit, 356 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_TIMER_LIMIT 357 ); 358 359 NN_DEFINE_RESULT_CONST( 360 ResultExceedPortLimit, 361 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_PORT_LIMIT 362 ); 363 364 NN_DEFINE_RESULT_CONST( 365 ResultExceedSessionLimit, 366 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_SESSION_LIMIT 367 ); 368 369 NN_DEFINE_RESULT_CONST( 370 ResultFailedToAllocateAddressArbiter, 371 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_ADDRESS_ARBITER 372 ); 373 374 NN_DEFINE_RESULT_CONST( 375 ResultExceedAddressArbiterLimit, 376 Result::LEVEL_STATUS, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_ADDRESS_ARBITER_LIMIT 377 ); 378 }} 379 380 #endif // __cplusplus 381 382 #endif /* NN_OS_OS_RESULT_H_ */ 383