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