/*---------------------------------------------------------------------------* Project: Horizon File: os_Result.h Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Rev: 23765 $ *---------------------------------------------------------------------------*/ /*! @file :include nn/os.h */ #ifndef NN_OS_OS_RESULT_H_ #define NN_OS_OS_RESULT_H_ #ifdef __cplusplus #include namespace nn { namespace os { /*! @enum Description @brief エラーの詳細を示します。 */ enum Description { DESCRIPTION_FAILED_TO_ALLOCATE_MEMORY = 1, //!< 物理メモリの上限に達した DESCRIPTION_FAILED_TO_ALLOCATE_SHARED_MEMORY = 2, //!< 共有メモリの上限に達した DESCRIPTION_FAILED_TO_ALLOCATE_THREAD = 3, //!< スレッドの上限に達した DESCRIPTION_FAILED_TO_ALLOCATE_MUTEX = 4, //!< Mutex の上限に達した DESCRIPTION_FAILED_TO_ALLOCATE_SEMAPHORE = 5, //!< セマフォの上限に達した DESCRIPTION_FAILED_TO_ALLOCATE_EVENT = 6, //!< イベントの上限に達した DESCRIPTION_FAILED_TO_ALLOCATE_TIMER = 7, //!< タイマの上限に達した DESCRIPTION_FAILED_TO_ALLOCATE_PORT = 8, //!< ポートの上限に達した DESCRIPTION_FAILED_TO_ALLOCATE_SESSION = 9, //!< セッションの上限に達した DESCRIPTION_EXCEED_MEMORY_LIMIT = 10, //!< 物理メモリの割り当て制限に達した DESCRIPTION_EXCEED_SHARED_MEMORY_LIMIT = 11, //!< 共有メモリの割り当て制限に達した DESCRIPTION_EXCEED_THREAD_LIMIT = 12, //!< スレッドの割り当て制限に達した DESCRIPTION_EXCEED_MUTEX_LIMIT = 13, //!< Mutex の割り当て制限に達した DESCRIPTION_EXCEED_SEMAPHORE_LIMIT = 14, //!< セマフォの割り当て制限に達した DESCRIPTION_EXCEED_EVENT_LIMIT = 15, //!< イベントの割り当て制限に達した DESCRIPTION_EXCEED_TIMER_LIMIT = 16, //!< タイマの割り当て制限に達した DESCRIPTION_EXCEED_PORT_LIMIT = 17, //!< ポートの割り当て制限に達した DESCRIPTION_EXCEED_SESSION_LIMIT = 18, //!< セッションの割り当て制限に達した DESCRIPTION_MAX_HANDLE = 19, //!< ハンドルの最大数に達した DESCRIPTION_INACCESSIBLE_PAGE = 20, //!< アクセスできないページが含まれている DESCRIPTION_ABANDONED = 21, //!< オブジェクトが放棄された DESCRIPTION_INVALID_ADDRESS = 22, //!< 不正なアドレス DESCRIPTION_INVALID_HANDLE = 23, //!< 不正なハンドル DESCRIPTION_INVALID_PROCESS_ID = 24, //!< 正しくないプロセス ID DESCRIPTION_INVALID_THREAD_ID = 25, //!< 正しくないスレッド ID DESCRIPTION_SESSION_CLOSED = 26, //!< セッションが閉じられた DESCRIPTION_INVALID_MESSAGE = 28, //!< 正しくないメッセージ DESCRIPTION_MANUAL_RESET_EVENT_REQUIRED = 29, //!< 手動リセットイベントが必要 DESCRIPTION_TOO_LONG_NAME = 30, //!< 名前が長すぎる DESCRIPTION_NOT_OWNED = 31, //!< 自身が所有していない Mutex DESCRIPTION_PROCESS_TERMINATED = 32, //!< 指定したプロセスは既に終了している DESCRIPTION_INVALID_TLS_INDEX = 33, //!< 確保していない TLS のインデックスが指定された DESCRIPTION_NO_RUNNABLE_PROCESSOR = 34, //!< アフィニティマスクが全てのプロセッサでの動作を禁止している。 DESCRIPTION_NO_SESSION = 35, //!< 新たに接続したセッションではない。 DESCRIPTION_USING_REGION = 36, //!< 利用中の領域 DESCRIPTION_ALREADY_RECEIVED = 37, //!< 既に受信している DESCRIPTION_CANCEL_REQUESTD = 38, // DESCRIPTION_NOT_RECEIVED = 39, // DESCRIPTION_NO_DATA = 40, // DESCRIPTION_DELIVER_ARG_NOT_READY = 41, // DESCRIPTION_DELIVER_ARG_OVER_SIZE = 42, // DESCRIPTION_INVALID_DELIVER_ARG = 43, // DESCRIPTION_I_AM_OWNER = 44, // DESCRIPTION_EXCEEDS_SHARED_LIMIT = 45, DESCRIPTION_UNEXPECTED_PERMISSION = 46, DESCRIPTION_OBSOLETE_RESULT = 1023 //!< Obsolete できるだけ早く他のエラーに修正すべき。 }; NN_DEFINE_RESULT_FUNC_LM( MakePermanentResult, Result::LEVEL_PERMANENT, Result::MODULE_NN_FND ); NN_DEFINE_RESULT_CONST( ResultNoRunnableProcessor, Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_NO_RUNNABLE_PROCESSOR ); NN_DEFINE_RESULT_CONST( ResultNoSession, Result::LEVEL_PERMANENT, Result::SUMMARY_WOULD_BLOCK, Result::MODULE_NN_OS, DESCRIPTION_NO_SESSION ); NN_DEFINE_RESULT_CONST( ResultAlreadyInitialized, Result::LEVEL_INFO, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_ALREADY_INITIALIZED ); NN_DEFINE_RESULT_CONST_LM( ResultInvalidTLSIndex, MakePermanentResult, Result::SUMMARY_INVALID_ARGUMENT, DESCRIPTION_INVALID_TLS_INDEX ); NN_DEFINE_RESULT_CONST_LM( ResultOutOfMemory, MakePermanentResult, Result::SUMMARY_OUT_OF_RESOURCE, nn::Result::DESCRIPTION_OUT_OF_MEMORY ); NN_DEFINE_RESULT_FUNC_LSM( MakeResultInvalidArgument, Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS ); NN_DEFINE_RESULT_FUNC_LSM( MakeResultWrongArgument, Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS ); NN_DEFINE_RESULT_CONST( ResultNotImplemented, Result::LEVEL_USAGE, Result::SUMMARY_NOT_SUPPORTED, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_NOT_IMPLEMENTED ); NN_DEFINE_RESULT_CONST_LM( ResultResourceLimitAlreadyAttached, MakePermanentResult, Result::SUMMARY_INVALID_STATE, nn::Result::DESCRIPTION_ALREADY_INITIALIZED ); NN_DEFINE_RESULT_CONST_LM( ResultMaxHandle, MakePermanentResult, Result::SUMMARY_OUT_OF_RESOURCE, DESCRIPTION_MAX_HANDLE ); NN_DEFINE_RESULT_CONST_LM( ResultResourceLimitNotAttached, MakePermanentResult, Result::SUMMARY_INVALID_STATE, nn::Result::DESCRIPTION_NOT_INITIALIZED ); NN_DEFINE_RESULT_CONST( ResultMisalignedAddress, Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_MISALIGNED_ADDRESS ); NN_DEFINE_RESULT_CONST( ResultMisalignedSize, Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_MISALIGNED_SIZE ); NN_DEFINE_RESULT_CONST( ResultFailedToAllocateMemory, Result::LEVEL_PERMANENT, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_MEMORY ); NN_DEFINE_RESULT_CONST( ResultExceedMemoryLimit, Result::LEVEL_PERMANENT, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_MEMORY_LIMIT ); NN_DEFINE_RESULT_CONST( ResultExceedSharedMemoryLimit, Result::LEVEL_PERMANENT, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_SHARED_MEMORY_LIMIT ); NN_DEFINE_RESULT_CONST( ResultExceedThreadLimit, Result::LEVEL_PERMANENT, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_EXCEED_THREAD_LIMIT ); NN_DEFINE_RESULT_CONST( ResultFailedToAllocateThread, Result::LEVEL_PERMANENT, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_THREAD ); NN_DEFINE_RESULT_CONST( ResultFailedToAllocateSession, Result::LEVEL_PERMANENT, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_OS, DESCRIPTION_FAILED_TO_ALLOCATE_SESSION ); NN_DEFINE_RESULT_CONST( ResultInvalidAddress, Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INVALID_ADDRESS ); NN_DEFINE_RESULT_CONST( ResultInvalidCombination, Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_INVALID_COMBINATION ); NN_DEFINE_RESULT_CONST( ResultBusy, Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_BUSY ); NN_DEFINE_RESULT_CONST( ResultTooLongName, Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_TOO_LONG_NAME ); NN_DEFINE_RESULT_CONST( ResultInaccessiblePage, Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INACCESSIBLE_PAGE ); NN_DEFINE_RESULT_CONST( ResultNotFound, Result::LEVEL_PERMANENT, Result::SUMMARY_NOT_FOUND, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_NOT_FOUND ); NN_DEFINE_RESULT_CONST( ResultInvalidHandle, Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INVALID_HANDLE ); NN_DEFINE_RESULT_CONST( ResultInvalidThreadId, Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INVALID_THREAD_ID ); NN_DEFINE_RESULT_CONST( ResultNoData, Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, DESCRIPTION_NO_DATA ); NN_DEFINE_RESULT_CONST( ResultOutOfRange, Result::LEVEL_USAGE, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_OUT_OF_RANGE ); NN_DEFINE_RESULT_CONST( ResultInvalidProcessId, Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_INVALID_PROCESS_ID ); NN_DEFINE_RESULT_CONST( ResultAlreadyExists, Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_ALREADY_EXISTS ); NN_DEFINE_RESULT_CONST( ResultSessionClosed, Result::LEVEL_STATUS, Result::SUMMARY_CANCELLED, Result::MODULE_NN_OS, DESCRIPTION_SESSION_CLOSED ); NN_DEFINE_RESULT_CONST( ResultNotAuthorized, Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, nn::Result::DESCRIPTION_NOT_AUTHORIZED ); NN_DEFINE_RESULT_CONST( ResultDeliverArgNotReady, Result::LEVEL_USAGE, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, DESCRIPTION_DELIVER_ARG_NOT_READY ); NN_DEFINE_RESULT_CONST( ResultDeliverArgOverSize, Result::LEVEL_USAGE, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, DESCRIPTION_DELIVER_ARG_OVER_SIZE ); NN_DEFINE_RESULT_CONST( ResultInvalidDeliverArg, Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_OS, DESCRIPTION_INVALID_DELIVER_ARG ); NN_DEFINE_RESULT_CONST( ResultIAmOwner, Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_I_AM_OWNER ); NN_DEFINE_RESULT_CONST( ResultExceedsSharedLimit, Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_EXCEEDS_SHARED_LIMIT ); NN_DEFINE_RESULT_CONST( ResultUnexpectedPermission, Result::LEVEL_PERMANENT, Result::SUMMARY_WRONG_ARGUMENT, Result::MODULE_NN_OS, DESCRIPTION_UNEXPECTED_PERMISSION ); }} #endif // __cplusplus #endif /* NN_OS_OS_RESULT_H_ */