1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     os_Types.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: 29093 $
14  *---------------------------------------------------------------------------*/
15 /*
16     @file
17 
18     :include nn/os.h
19  */
20 
21 #ifndef NN_OS_OS_TYPES_H_
22 #define NN_OS_OS_TYPES_H_
23 
24 #ifdef  __cplusplus
25 
26 namespace nn {
27 namespace os {
28 
29 /*
30     @enum      LimitableResource
31 
32     @brief     リソース制限の種別を表します。
33 */
34 enum LimitableResource
35 {
36     LIMITABLE_RESOURCE_MAX_PRIORITY,    //!< スレッド優先度の制限
37     LIMITABLE_RESOURCE_MAX_COMMIT,      //!< 消費する物理メモリの制限
38     LIMITABLE_RESOURCE_MAX_THREAD,      //!< スレッド数の制限
39     LIMITABLE_RESOURCE_MAX_EVENT,
40     LIMITABLE_RESOURCE_MAX_MUTEX,
41     LIMITABLE_RESOURCE_MAX_SEMAPHORE,
42     LIMITABLE_RESOURCE_MAX_TIMER,
43     LIMITABLE_RESOURCE_MAX_SHAREDMEMORY,
44     LIMITABLE_RESOURCE_MAX_ADDRESSARBITER,
45     LIMITABLE_RESOURCE_END,
46 
47     LIMITABLE_RESOURCE_MAX_BIT  = (1u << 31)
48 };
49 
50 /*
51     @enum      SystemInfoType
52 
53     @brief     システム全体にわたる情報の種別を表します。
54 */
55 enum SystemInfoType
56 {
57     SYSTEM_INFO_TYPE_USING_PHYSICAL_MEMORY_SIZE,            //!< 使用物理メモリサイズ
58     SYSTEM_INFO_TYPE_MAX_USING_PHYSICAL_MEMORY_SIZE,        //!< 最大使用物理メモリサイズ
59     SYSTEM_INFO_TYPE_KERNEL_USING_PHYSICAL_MEMORY_SIZE,     //!< カーネル使用物理メモリサイズ
60     SYSTEM_INFO_TYPE_MAX_KERNEL_USING_PHYSICAL_MEMORY_SIZE, //!< カーネル最大使用物理メモリサイズ
61     SYSTEM_INFO_TYPE_CPU_LOAD,                              //!< CPU ロード回数
62     SYSTEM_INFO_TYPE_CPU_TIME_INTERRUPTS,                   //!< 割り込み CPU 時間
63     SYSTEM_INFO_TYPE_CPU_TIME_SYSTEM,                       //!< システム CPU 時間
64     SYSTEM_INFO_TYPE_CPU_TIME_USER,                         //!< ユーザー CPU 時間
65     SYSTEM_INFO_TYPE_CPU_TIME_IDLE,                         //!< CPU 時間
66     SYSTEM_INFO_TYPE_NUM_SOFTWARE_INTERRUPTS,               //!< ソフトウェア割り込み数
67     SYSTEM_INFO_TYPE_NUM_HARDWARE_INTERRUPTS,               //!< ハードウェア割り込み数
68     SYSTEM_INFO_TYPE_NUM_INTERRUPTS,                        //!< 割り込み数
69     SYSTEM_INFO_TYPE_NUM_EXCEPTIONS,                        //!< 例外数
70     SYSTEM_INFO_TYPE_NUM_RUNNABLE_THREADS,                  //!< 実行可能スレッド数
71     SYSTEM_INFO_TYPE_NUM_PAGE_CLEAR,                        //!< ページクリア回数
72     SYSTEM_INFO_TYPE_NUM_THREAD_SWITCH,                     //!< スレッドスイッチ回数
73     SYSTEM_INFO_TYPE_NUM_FPU_SWITCH,                        //!< FPU スイッチ回数
74     SYSTEM_INFO_TYPE_NUM_PROCESS_SWITCH,                    //!< プロセススイッチ回数
75     SYSTEM_INFO_TYPE_NUM_SYSTEM_CALL,                       //!< システムコール回数
76     SYSTEM_INFO_TYPE_NUM_IPC,                               //!< プロセス間通信回数
77     SYSTEM_INFO_TYPE_NUM_CREATED_THREADS,                   //!< 作成したスレッド数
78     SYSTEM_INFO_TYPE_NUM_CREATED_PROCESSES,                 //!< 作成したプロセス数
79     SYSTEM_INFO_TYPE_NUM_THREADS,                           //!< スレッド数
80     SYSTEM_INFO_TYPE_NUM_PROCESSES,                         //!< プロセス数
81     SYSTEM_INFO_TYPE_MAX_NUM_THREADS,                       //!< 最大スレッド数
82     SYSTEM_INFO_TYPE_MAX_NUM_PROCESSES,                     //!< 最大プロセス数
83     SYSTEM_INFO_TYPE_NUM_INITIAL_PROCESSES,                 //!< 初期プロセス数
84 
85     SYSTEM_INFO_TYPE_MAX_BIT = (1u << 31)
86 };
87 
88 /*
89     @enum      ProcessInfoType
90 
91     @brief     プロセス情報の種別を表します。
92 */
93 enum ProcessInfoType
94 {
95     PROCESS_INFO_TYPE_USING_PHYSICAL_MEMORY_SIZE,           //!< 使用物理メモリサイズ
96     PROCESS_INFO_TYPE_MAX_USING_PHYSICAL_MEMORY_SIZE,       //!< 最大使用物理メモリサイズ
97     PROCESS_INFO_TYPE_PRIVATE_PHYSICAL_MEMORY_SIZE,         //!< プライベート物理メモリサイズ
98     PROCESS_INFO_TYPE_MAX_RPIVATE_PHYSICAL_MEMORY_SIZE,     //!< 最大プライベート物理メモリサイズ
99     PROCESS_INFO_TYPE_NUM_HANDLES,                          //!< ハンドル数
100     PROCESS_INFO_TYPE_MAX_NUM_HANDLES,                      //!< 最大ハンドル数
101     PROCESS_INFO_TYPE_NUM_CREATED_THREADS,                  //!< 作成したスレッド数
102     PROCESS_INFO_TYPE_NUM_THREADS,                          //!< スレッド数
103     PROCESS_INFO_TYPE_MAX_NUM_THREADS,                      //!< 最大スレッド数
104     PROCESS_INFO_TYPE_CPU_TIME_SYSTEM,                      //!< システム CPU 時間
105     PROCESS_INFO_TYPE_CPU_TIME_USER,                        //!< ユーザー CPU 時間
106     PROCESS_INFO_TYPE_CPU_TIME,                             //!< CPU 時間
107     PROCESS_INFO_TYPE_NUM_THREAD_SWITCH,                    //!< スレッドスイッチ回数
108     PROCESS_INFO_TYPE_NUM_FPU_SWITCH,                       //!< FPU スイッチ回数
109     PROCESS_INFO_TYPE_NUM_PROCESS_SWITCH,                   //!< プロセススイッチ回数
110     PROCESS_INFO_TYPE_NUM_SYSTEM_CALL,                      //!< システムコール回数
111     PROCESS_INFO_TYPE_NUM_IPC,                              //!< プロセス間通信回数
112     PROCESS_INFO_TYPE_UPTIME,                               //!< 稼働時間
113     PROCESS_INFO_TYPE_NAME,
114 
115     PROCESS_INFO_TYPE_MAX_BIT = (1u << 31)
116 };
117 
118 /*
119     @enum      ThreadInfoType
120 
121     @brief     スレッド情報の種別を表します。
122 */
123 enum ThreadInfoType
124 {
125     THREAD_INFO_TYPE_CPU_TIME_SYSTEM,                       //!< システム CPU 時間
126     THREAD_INFO_TYPE_CPU_TIME_USER,                         //!< ユーザー CPU 時間
127     THREAD_INFO_TYPE_CPU_TIME,                              //!< CPU 時間
128     THREAD_INFO_TYPE_NUM_THREAD_SWITCH,                     //!< スレッドスイッチ回数
129     THREAD_INFO_TYPE_NUM_FPU_SWITCH,                        //!< FPU スイッチ回数
130     THREAD_INFO_TYPE_NUM_SYSTEM_CALL,                       //!< システムコール回数
131     THREAD_INFO_TYPE_NUM_IPC,                               //!< プロセス間通信回数
132     THREAD_INFO_TYPE_UPTIME,                                //!< 稼働時間
133 
134     THREAD_INFO_TYPE_MAX_BIT = (1u << 31)
135 };
136 
137 /*
138     @enum      HandleInfoType
139 
140     @brief     ハンドル情報の種別を表します。
141 */
142 enum HandleInfoType
143 {
144     HANDLE_INFO_TYPE_CREATION_TIME,                         //!< 作成時間
145     HANDLE_INFO_TYPE_REFERENCE_COUNT,                       //!< 参照カウント
146     HANDLE_INFO_TYPE_PARENT_PROCESS_ID,                     //!< 親プロセス ID
147 
148     HANDLE_INFO_TYPE_MAX_BIT  = (1u << 31)
149 };
150 
151 /*
152     @enum      ArbitrationType
153 
154     @brief     同期オブジェクトへの操作種別を表します。
155 */
156 enum ArbitrationType
157 {
158     ARBITRATION_TYPE_SIGNAL,
159     ARBITRATION_TYPE_WAIT_IF_LESS_THAN,
160     ARBITRATION_TYPE_DECREMENT_AND_WAIT_IF_LESS_THAN,
161 
162     ARBITRATION_TYPE_MAX_BIT = (1u << 31)
163 };
164 
165 
166 enum ResetType
167 {
168     RESET_TYPE_ONESHOT,
169     RESET_TYPE_STICKY,
170     RESET_TYPE_PULSE,
171 
172     RESET_TYPE_MAX_BIT = (1u << 31)
173 };
174 
175 
176 }	// end of namespace os
177 }	// end of namespace nn
178 
179 #endif // __cplusplus
180 
181 #endif  // ifndef NN_OS_OS_TYPES_H_
182