source: asp_ewarm/asp-1.7.0/kernel/check.h@ 61

Last change on this file since 61 was 61, checked in by ertl-honda, 11 years ago

ASP for EWARM のコミット.

File size: 7.8 KB
Line 
1/*
2 * TOPPERS/ASP Kernel
3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Advanced Standard Profile Kernel
5 *
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
10 *
11 * ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
12 * ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
13 * •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
14 * (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
15 * Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
16 * ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
17 * (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
18 * —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ…
19ƒƒ“ƒgi—˜—p
20 * ŽÒƒ}ƒjƒ…
21ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
22 * ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
23 * (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
24 * —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
25 * ‚ƁD
26 * (a) Ä”z•z‚É”º‚¤ƒhƒLƒ…
27ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ…
28ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
29 * ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
30 * (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
31 * •ñ‚·‚邱‚ƁD
32 * (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
33 * ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
34 * ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
35 * —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
36 * –Ɛӂ·‚邱‚ƁD
37 *
38 * –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
39 * ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
40 * ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
41 * ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
42 * ‚̐ӔC‚𕉂í‚È‚¢D
43 *
44 * @(#) $Id: check.h 1940 2010-10-03 15:09:34Z ertl-hiro $
45 */
46
47/*
48 * ƒGƒ‰[ƒ`ƒFƒbƒN—pƒ}ƒNƒ
49 */
50
51#ifndef TOPPERS_CHECK_H
52#define TOPPERS_CHECK_H
53
54/*
55 * —Dæ“x‚͈̔͂̔»’è
56 */
57#define VALID_TPRI(tpri) (TMIN_TPRI <= (tpri) && (tpri) <= TMAX_TPRI)
58
59#ifndef VALID_INTPRI_CHGIPM
60#define VALID_INTPRI_CHGIPM(intpri) \
61 (TMIN_INTPRI <= (intpri) && (intpri) <= TIPM_ENAALL)
62#endif /* VALID_INTPRI_CHGIPM */
63
64/*
65 * ƒ^ƒXƒN—Dæ“x‚̃`ƒFƒbƒNiE_PARj
66 */
67#define CHECK_TPRI(tpri) { \
68 if (!VALID_TPRI(tpri)) { \
69 ercd = E_PAR; \
70 goto error_exit; \
71 } \
72}
73
74#define CHECK_TPRI_INI(tpri) { \
75 if (!(VALID_TPRI(tpri) || (tpri) == TPRI_INI)) { \
76 ercd = E_PAR; \
77 goto error_exit; \
78 } \
79}
80
81#define CHECK_TPRI_SELF(tpri) { \
82 if (!(VALID_TPRI(tpri) || (tpri) == TPRI_SELF)) { \
83 ercd = E_PAR; \
84 goto error_exit; \
85 } \
86}
87
88/*
89 * ƒ^ƒCƒ€ƒAƒEƒgŽw’è’l‚̃`ƒFƒbƒNiE_PARj
90 */
91#define CHECK_TMOUT(tmout) { \
92 if (!(TMO_FEVR <= (tmout))) { \
93 ercd = E_PAR; \
94 goto error_exit; \
95 } \
96}
97
98/*
99 * Š„ž‚Ý—Dæ“x‚̃`ƒFƒbƒNiE_PARj
100 */
101#define CHECK_INTPRI_CHGIPM(intpri) { \
102 if (!VALID_INTPRI_CHGIPM(intpri)) { \
103 ercd = E_PAR; \
104 goto error_exit; \
105 } \
106}
107
108/*
109 * Š„ž‚ݔԍ†‚̃`ƒFƒbƒNiE_PARj
110 */
111#define CHECK_INTNO_DISINT(intno) { \
112 if (!VALID_INTNO_DISINT(intno)) { \
113 ercd = E_PAR; \
114 goto error_exit; \
115 } \
116}
117
118/*
119 * ‚»‚Ì‘¼‚̃pƒ‰ƒ[ƒ^ƒGƒ‰[‚̃`ƒFƒbƒNiE_PARj
120 */
121#define CHECK_PAR(exp) { \
122 if (!(exp)) { \
123 ercd = E_PAR; \
124 goto error_exit; \
125 } \
126}
127
128/*
129 * ƒIƒuƒWƒFƒNƒgID‚͈̔͂̔»’è
130 */
131#define VALID_TSKID(tskid) (TMIN_TSKID <= (tskid) && (tskid) <= tmax_tskid)
132#define VALID_SEMID(semid) (TMIN_SEMID <= (semid) && (semid) <= tmax_semid)
133#define VALID_FLGID(flgid) (TMIN_FLGID <= (flgid) && (flgid) <= tmax_flgid)
134#define VALID_DTQID(dtqid) (TMIN_DTQID <= (dtqid) && (dtqid) <= tmax_dtqid)
135#define VALID_PDQID(pdqid) (TMIN_PDQID <= (pdqid) && (pdqid) <= tmax_pdqid)
136#define VALID_MBXID(mbxid) (TMIN_MBXID <= (mbxid) && (mbxid) <= tmax_mbxid)
137#define VALID_MPFID(mpfid) (TMIN_MPFID <= (mpfid) && (mpfid) <= tmax_mpfid)
138#define VALID_CYCID(cycid) (TMIN_CYCID <= (cycid) && (cycid) <= tmax_cycid)
139#define VALID_ALMID(almid) (TMIN_ALMID <= (almid) && (almid) <= tmax_almid)
140
141/*
142 * ƒIƒuƒWƒFƒNƒgID‚̃`ƒFƒbƒNiE_IDj
143 */
144#define CHECK_TSKID(tskid) { \
145 if (!VALID_TSKID(tskid)) { \
146 ercd = E_ID; \
147 goto error_exit; \
148 } \
149}
150
151#define CHECK_TSKID_SELF(tskid) { \
152 if (!(VALID_TSKID(tskid) || (tskid) == TSK_SELF)) { \
153 ercd = E_ID; \
154 goto error_exit; \
155 } \
156}
157
158#define CHECK_SEMID(semid) { \
159 if (!VALID_SEMID(semid)) { \
160 ercd = E_ID; \
161 goto error_exit; \
162 } \
163}
164
165#define CHECK_FLGID(flgid) { \
166 if (!VALID_FLGID(flgid)) { \
167 ercd = E_ID; \
168 goto error_exit; \
169 } \
170}
171
172#define CHECK_DTQID(dtqid) { \
173 if (!VALID_DTQID(dtqid)) { \
174 ercd = E_ID; \
175 goto error_exit; \
176 } \
177}
178
179#define CHECK_PDQID(pdqid) { \
180 if (!VALID_PDQID(pdqid)) { \
181 ercd = E_ID; \
182 goto error_exit; \
183 } \
184}
185
186#define CHECK_MBXID(mbxid) { \
187 if (!VALID_MBXID(mbxid)) { \
188 ercd = E_ID; \
189 goto error_exit; \
190 } \
191}
192
193#define CHECK_MPFID(mpfid) { \
194 if (!VALID_MPFID(mpfid)) { \
195 ercd = E_ID; \
196 goto error_exit; \
197 } \
198}
199
200#define CHECK_CYCID(cycid) { \
201 if (!VALID_CYCID(cycid)) { \
202 ercd = E_ID; \
203 goto error_exit; \
204 } \
205}
206
207#define CHECK_ALMID(almid) { \
208 if (!VALID_ALMID(almid)) { \
209 ercd = E_ID; \
210 goto error_exit; \
211 } \
212}
213
214/*
215 * ŒÄo‚µƒRƒ“ƒeƒLƒXƒg‚̃`ƒFƒbƒNiE_CTXj
216 */
217#define CHECK_TSKCTX() { \
218 if (sense_context()) { \
219 ercd = E_CTX; \
220 goto error_exit; \
221 } \
222}
223
224#define CHECK_INTCTX() { \
225 if (!sense_context()) { \
226 ercd = E_CTX; \
227 goto error_exit; \
228 } \
229}
230
231/*
232 * ŒÄo‚µƒRƒ“ƒeƒLƒXƒg‚ÆCPUƒƒbƒNó‘Ԃ̃`ƒFƒbƒNiE_CTXj
233 */
234#define CHECK_TSKCTX_UNL() { \
235 if (sense_context() || t_sense_lock()) { \
236 ercd = E_CTX; \
237 goto error_exit; \
238 } \
239}
240
241#define CHECK_INTCTX_UNL() { \
242 if (!sense_context() || i_sense_lock()) { \
243 ercd = E_CTX; \
244 goto error_exit; \
245 } \
246}
247
248/*
249 * ƒfƒBƒXƒpƒbƒ`•Û—¯ó‘Ô‚Å‚È‚¢‚©‚̃`ƒFƒbƒNiE_CTXj
250 */
251#define CHECK_DISPATCH() { \
252 if (sense_context() || t_sense_lock() || !dspflg) { \
253 ercd = E_CTX; \
254 goto error_exit; \
255 } \
256}
257
258/*
259 * ‚»‚Ì‘¼‚̃Rƒ“ƒeƒLƒXƒgƒGƒ‰[‚̃`ƒFƒbƒNiE_CTXj
260 */
261#define CHECK_CTX(exp) { \
262 if (!(exp)) { \
263 ercd = E_CTX; \
264 goto error_exit; \
265 } \
266}
267
268/*
269 * Ž©ƒ^ƒXƒN‚ðŽw’肵‚Ä‚¢‚È‚¢‚©‚̃`ƒFƒbƒNiE_ILUSEj
270 */
271#define CHECK_NONSELF(p_tcb) { \
272 if ((p_tcb) == p_runtsk) { \
273 ercd = E_ILUSE; \
274 goto error_exit; \
275 } \
276}
277
278/*
279 * ‚»‚Ì‘¼‚Ì•s³Žg—pƒGƒ‰[‚̃`ƒFƒbƒNiE_ILUSEj
280 */
281#define CHECK_ILUSE(exp) { \
282 if (!(exp)) { \
283 ercd = E_ILUSE; \
284 goto error_exit; \
285 } \
286}
287
288#endif /* TOPPERS_CHECK_H */
Note: See TracBrowser for help on using the repository browser.