source: anotherchoice/tags/jsp-1.4.4-full-UTF8/kernel/check.h@ 26

Last change on this file since 26 was 26, checked in by ykominami, 12 years ago

initial

File size: 6.6 KB
Line 
1/*
2 * TOPPERS/JSP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
5 *
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 *
9 * 上記著作権者
10は,以下の (1)〜(4) の条件か,Free Software Foundation
11 * によってå…
12¬è¡¨ã•ã‚Œã¦ã„ã‚‹ GNU General Public License の Version 2 に記
13 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
14 * を改変したものを含む.以下同じ)を使用・複製・改変・再é…
15å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
16 * 利用と呼ぶ)することを無償で許諾する.
17 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
18 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
19 * スコード中に含まれていること.
20 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
21 * 用できる形で再é…
22å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é…
23å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
24 * 者
25マニュアルなど)に,上記の著作権表示,この利用条件および下記
26 * の無保証規定を掲載すること.
27 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
28 * 用できない形で再é…
29å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
30 * と.
31 * (a) 再é…
32å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€…
33マニュアルなど)に,上記の著
34 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
35 * (b) 再é…
36å¸ƒã®å½¢æ…
37‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
38 * 報告すること.
39 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
40 * 害からも,上記著作権者
41およびTOPPERSプロジェクトをå…
42è²¬ã™ã‚‹ã“と.
43 *
44 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者
45お
46 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
47 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
48 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
49 *
50 * @(#) $Id: check.h,v 1.7 2003/06/04 01:46:16 hiro Exp $
51 */
52
53/*
54 * エラーチェック用マクロ
55 */
56
57#ifndef _CHECK_H_
58#define _CHECK_H_
59
60/*
61 * 優å…
62ˆåº¦ã®ç¯„囲の判定
63 */
64#define VALID_TPRI(tpri) \
65 (TMIN_TPRI <= (tpri) && (tpri) <= TMAX_TPRI)
66
67/*
68 * タスク優å…
69ˆåº¦ã®ãƒã‚§ãƒƒã‚¯ï¼ˆE_PAR)
70 */
71#define CHECK_TPRI(tpri) { \
72 if (!VALID_TPRI(tpri)) { \
73 ercd = E_PAR; \
74 goto exit; \
75 } \
76}
77
78#define CHECK_TPRI_INI(tpri) { \
79 if (!(VALID_TPRI(tpri) || (tpri) == TPRI_INI)) { \
80 ercd = E_PAR; \
81 goto exit; \
82 } \
83}
84
85#define CHECK_TPRI_SELF(tpri) { \
86 if (!(VALID_TPRI(tpri) || (tpri) == TPRI_SELF)) { \
87 ercd = E_PAR; \
88 goto exit; \
89 } \
90}
91
92/*
93 * タイムアウト指定値のチェック(E_PAR)
94 */
95#define CHECK_TMOUT(tmout) { \
96 if (!(TMO_FEVR <= (tmout))) { \
97 ercd = E_PAR; \
98 goto exit; \
99 } \
100}
101
102/*
103 * その他のパラメータエラーのチェック(E_PAR)
104 */
105#define CHECK_PAR(exp) { \
106 if (!(exp)) { \
107 ercd = E_PAR; \
108 goto exit; \
109 } \
110}
111
112/*
113 * オブジェクトIDの範囲の判定
114 */
115#define VALID_TSKID(tskid) \
116 (TMIN_TSKID <= (tskid) && (tskid) <= tmax_tskid)
117
118#define VALID_SEMID(semid) \
119 (TMIN_SEMID <= (semid) && (semid) <= tmax_semid)
120
121#define VALID_FLGID(flgid) \
122 (TMIN_FLGID <= (flgid) && (flgid) <= tmax_flgid)
123
124#define VALID_DTQID(dtqid) \
125 (TMIN_DTQID <= (dtqid) && (dtqid) <= tmax_dtqid)
126
127#define VALID_MBXID(mbxid) \
128 (TMIN_MBXID <= (mbxid) && (mbxid) <= tmax_mbxid)
129
130#define VALID_MPFID(mpfid) \
131 (TMIN_MPFID <= (mpfid) && (mpfid) <= tmax_mpfid)
132
133#define VALID_CYCID(cycid) \
134 (TMIN_CYCID <= (cycid) && (cycid) <= tmax_cycid)
135
136/*
137 * オブジェクトIDのチェック(E_ID)
138 */
139#define CHECK_TSKID(tskid) { \
140 if (!VALID_TSKID(tskid)) { \
141 ercd = E_ID; \
142 goto exit; \
143 } \
144}
145
146#define CHECK_TSKID_SELF(tskid) { \
147 if (!(VALID_TSKID(tskid) || (tskid) == TSK_SELF)) { \
148 ercd = E_ID; \
149 goto exit; \
150 } \
151}
152
153#define CHECK_SEMID(semid) { \
154 if (!VALID_SEMID(semid)) { \
155 ercd = E_ID; \
156 goto exit; \
157 } \
158}
159
160#define CHECK_FLGID(flgid) { \
161 if (!VALID_FLGID(flgid)) { \
162 ercd = E_ID; \
163 goto exit; \
164 } \
165}
166
167#define CHECK_DTQID(dtqid) { \
168 if (!VALID_DTQID(dtqid)) { \
169 ercd = E_ID; \
170 goto exit; \
171 } \
172}
173
174#define CHECK_MBXID(mbxid) { \
175 if (!VALID_MBXID(mbxid)) { \
176 ercd = E_ID; \
177 goto exit; \
178 } \
179}
180
181#define CHECK_MPFID(mpfid) { \
182 if (!VALID_MPFID(mpfid)) { \
183 ercd = E_ID; \
184 goto exit; \
185 } \
186}
187
188#define CHECK_CYCID(cycid) { \
189 if (!VALID_CYCID(cycid)) { \
190 ercd = E_ID; \
191 goto exit; \
192 } \
193}
194
195/*
196 * 呼出しコンテキストのチェック(E_CTX)
197 */
198#define CHECK_TSKCTX() { \
199 if (sense_context()) { \
200 ercd = E_CTX; \
201 goto exit; \
202 } \
203}
204
205#define CHECK_INTCTX() { \
206 if (!sense_context()) { \
207 ercd = E_CTX; \
208 goto exit; \
209 } \
210}
211
212/*
213 * 呼出しコンテキストとCPUロック状æ…
214‹ã®ãƒã‚§ãƒƒã‚¯ï¼ˆE_CTX)
215 */
216#define CHECK_TSKCTX_UNL() { \
217 if (sense_context() || t_sense_lock()) { \
218 ercd = E_CTX; \
219 goto exit; \
220 } \
221}
222
223#define CHECK_INTCTX_UNL() { \
224 if (!sense_context() || i_sense_lock()) { \
225 ercd = E_CTX; \
226 goto exit; \
227 } \
228}
229
230/*
231 * ディスパッチ保留状æ…
232‹ã§ãªã„かのチェック(E_CTX)
233 */
234#define CHECK_DISPATCH() { \
235 if (sense_context() || t_sense_lock() || !(enadsp)) { \
236 ercd = E_CTX; \
237 goto exit; \
238 } \
239}
240
241/*
242 * その他のコンテキストエラーのチェック(E_CTX)
243 */
244#define CHECK_CTX(exp) { \
245 if (!(exp)) { \
246 ercd = E_CTX; \
247 goto exit; \
248 } \
249}
250
251/*
252 * 自タスクを指定していないかのチェック(E_ILUSE)
253 */
254#define CHECK_NONSELF(tcb) { \
255 if ((tcb) == runtsk) { \
256 ercd = E_ILUSE; \
257 goto exit; \
258 } \
259}
260
261/*
262 * その他の不正使用エラーのチェック(E_ILUSE)
263 */
264#define CHECK_ILUSE(exp) { \
265 if (!(exp)) { \
266 ercd = E_ILUSE; \
267 goto exit; \
268 } \
269}
270
271#endif /* _CHECK_H_ */
Note: See TracBrowser for help on using the repository browser.