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: 23765 $ 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 83 DESCRIPTION_OBSOLETE_RESULT = 1023 //!< Obsolete できるだけ早く他のエラーに修正すべき。 84 }; 85 86 NN_DEFINE_RESULT_FUNC_LM( 87 MakePermanentResult, 88 Result::LEVEL_PERMANENT, Result::MODULE_NN_FND 89 ); 90 91 NN_DEFINE_RESULT_CONST( 92 ResultNoRunnableProcessor, 93 Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_NO_RUNNABLE_PROCESSOR 94 ); 95 96 NN_DEFINE_RESULT_CONST( 97 ResultNoSession, 98 Result::LEVEL_PERMANENT, Result::SUMMARY_WOULD_BLOCK, Result::MODULE_NN_OS, DESCRIPTION_NO_SESSION 99 ); 100 101 NN_DEFINE_RESULT_CONST( 102 ResultAlreadyInitialized, 103 Result::LEVEL_INFO, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_ALREADY_INITIALIZED 104 ); 105 106 NN_DEFINE_RESULT_CONST_LM( 107 ResultInvalidTLSIndex, 108 MakePermanentResult, Result::SUMMARY_INVALID_ARGUMENT, DESCRIPTION_INVALID_TLS_INDEX 109 ); 110 111 NN_DEFINE_RESULT_CONST_LM( 112 ResultOutOfMemory, 113 MakePermanentResult, Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::DESCRIPTION_OUT_OF_MEMORY 114 ); 115 116 NN_DEFINE_RESULT_FUNC_LSM( 117 MakeResultInvalidArgument, 118 Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS 119 ); 120 121 NN_DEFINE_RESULT_FUNC_LSM( 122 MakeResultWrongArgument, 123 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS 124 ); 125 126 NN_DEFINE_RESULT_CONST( 127 ResultNotImplemented, 128 Result::LEVEL_USAGE, Result::SUMMARY_NOT_SUPPORTED, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_NOT_IMPLEMENTED 129 ); 130 131 NN_DEFINE_RESULT_CONST_LM( 132 ResultResourceLimitAlreadyAttached, 133 MakePermanentResult, Result::SUMMARY_INVALID_STATE, nn::Result::DESCRIPTION_ALREADY_INITIALIZED 134 ); 135 136 NN_DEFINE_RESULT_CONST_LM( 137 ResultMaxHandle, 138 MakePermanentResult, Result::SUMMARY_OUT_OF_RESOURCE, DESCRIPTION_MAX_HANDLE 139 ); 140 141 NN_DEFINE_RESULT_CONST_LM( 142 ResultResourceLimitNotAttached, 143 MakePermanentResult, Result::SUMMARY_INVALID_STATE, nn::Result::DESCRIPTION_NOT_INITIALIZED 144 ); 145 146 NN_DEFINE_RESULT_CONST( 147 ResultMisalignedAddress, 148 Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_MISALIGNED_ADDRESS 149 ); 150 151 NN_DEFINE_RESULT_CONST( 152 ResultMisalignedSize, 153 Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_MISALIGNED_SIZE 154 ); 155 156 NN_DEFINE_RESULT_CONST( 157 ResultFailedToAllocateMemory, 158 Result::LEVEL_PERMANENT, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_MEMORY 159 ); 160 161 NN_DEFINE_RESULT_CONST( 162 ResultExceedMemoryLimit, 163 Result::LEVEL_PERMANENT, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_MEMORY_LIMIT 164 ); 165 166 NN_DEFINE_RESULT_CONST( 167 ResultExceedSharedMemoryLimit, 168 Result::LEVEL_PERMANENT, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_SHARED_MEMORY_LIMIT 169 ); 170 171 NN_DEFINE_RESULT_CONST( 172 ResultExceedThreadLimit, 173 Result::LEVEL_PERMANENT, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_THREAD_LIMIT 174 ); 175 176 NN_DEFINE_RESULT_CONST( 177 ResultFailedToAllocateThread, 178 Result::LEVEL_PERMANENT, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_THREAD 179 ); 180 181 NN_DEFINE_RESULT_CONST( 182 ResultFailedToAllocateSession, 183 Result::LEVEL_PERMANENT, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_SESSION 184 ); 185 186 NN_DEFINE_RESULT_CONST( 187 ResultInvalidAddress, 188 Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INVALID_ADDRESS 189 ); 190 191 NN_DEFINE_RESULT_CONST( 192 ResultInvalidCombination, 193 Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_INVALID_COMBINATION 194 ); 195 196 NN_DEFINE_RESULT_CONST( 197 ResultBusy, 198 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_BUSY 199 ); 200 201 NN_DEFINE_RESULT_CONST( 202 ResultTooLongName, 203 Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_TOO_LONG_NAME 204 ); 205 206 NN_DEFINE_RESULT_CONST( 207 ResultInaccessiblePage, 208 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INACCESSIBLE_PAGE 209 ); 210 211 NN_DEFINE_RESULT_CONST( 212 ResultNotFound, 213 Result::LEVEL_PERMANENT, Result::SUMMARY_NOT_FOUND, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_NOT_FOUND 214 ); 215 216 NN_DEFINE_RESULT_CONST( 217 ResultInvalidHandle, 218 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INVALID_HANDLE 219 ); 220 221 NN_DEFINE_RESULT_CONST( 222 ResultInvalidThreadId, 223 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INVALID_THREAD_ID 224 ); 225 226 NN_DEFINE_RESULT_CONST( 227 ResultNoData, 228 Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, DESCRIPTION_NO_DATA 229 ); 230 231 NN_DEFINE_RESULT_CONST( 232 ResultOutOfRange, 233 Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_OUT_OF_RANGE 234 ); 235 236 NN_DEFINE_RESULT_CONST( 237 ResultInvalidProcessId, 238 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INVALID_PROCESS_ID 239 ); 240 241 NN_DEFINE_RESULT_CONST( 242 ResultAlreadyExists, 243 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_ALREADY_EXISTS 244 ); 245 246 NN_DEFINE_RESULT_CONST( 247 ResultSessionClosed, 248 Result::LEVEL_STATUS, Result::SUMMARY_CANCELLED, Result::MODULE_NN_OS, DESCRIPTION_SESSION_CLOSED 249 ); 250 251 NN_DEFINE_RESULT_CONST( 252 ResultNotAuthorized, 253 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_NOT_AUTHORIZED 254 ); 255 256 NN_DEFINE_RESULT_CONST( 257 ResultDeliverArgNotReady, 258 Result::LEVEL_USAGE, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, DESCRIPTION_DELIVER_ARG_NOT_READY 259 ); 260 261 NN_DEFINE_RESULT_CONST( 262 ResultDeliverArgOverSize, 263 Result::LEVEL_USAGE, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, DESCRIPTION_DELIVER_ARG_OVER_SIZE 264 ); 265 266 NN_DEFINE_RESULT_CONST( 267 ResultInvalidDeliverArg, 268 Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, DESCRIPTION_INVALID_DELIVER_ARG 269 ); 270 271 NN_DEFINE_RESULT_CONST( 272 ResultIAmOwner, 273 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_I_AM_OWNER 274 ); 275 276 NN_DEFINE_RESULT_CONST( 277 ResultExceedsSharedLimit, 278 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_EXCEEDS_SHARED_LIMIT 279 ); 280 281 NN_DEFINE_RESULT_CONST( 282 ResultUnexpectedPermission, 283 Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_UNEXPECTED_PERMISSION 284 ); 285 }} 286 287 #endif // __cplusplus 288 289 #endif /* NN_OS_OS_RESULT_H_ */ 290