source: asp_ewarm/asp-1.7.0/extension/mutex/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: 8.1 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 1965 2010-11-20 07:22:43Z 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_MTXID(mtxid) (TMIN_MTXID <= (mtxid) && (mtxid) <= tmax_mtxid)
138#define VALID_MPFID(mpfid) (TMIN_MPFID <= (mpfid) && (mpfid) <= tmax_mpfid)
139#define VALID_CYCID(cycid) (TMIN_CYCID <= (cycid) && (cycid) <= tmax_cycid)
140#define VALID_ALMID(almid) (TMIN_ALMID <= (almid) && (almid) <= tmax_almid)
141
142/*
143 * ƒIƒuƒWƒFƒNƒgID‚̃`ƒFƒbƒNiE_IDj
144 */
145#define CHECK_TSKID(tskid) { \
146 if (!VALID_TSKID(tskid)) { \
147 ercd = E_ID; \
148 goto error_exit; \
149 } \
150}
151
152#define CHECK_TSKID_SELF(tskid) { \
153 if (!(VALID_TSKID(tskid) || (tskid) == TSK_SELF)) { \
154 ercd = E_ID; \
155 goto error_exit; \
156 } \
157}
158
159#define CHECK_SEMID(semid) { \
160 if (!VALID_SEMID(semid)) { \
161 ercd = E_ID; \
162 goto error_exit; \
163 } \
164}
165
166#define CHECK_FLGID(flgid) { \
167 if (!VALID_FLGID(flgid)) { \
168 ercd = E_ID; \
169 goto error_exit; \
170 } \
171}
172
173#define CHECK_DTQID(dtqid) { \
174 if (!VALID_DTQID(dtqid)) { \
175 ercd = E_ID; \
176 goto error_exit; \
177 } \
178}
179
180#define CHECK_PDQID(pdqid) { \
181 if (!VALID_PDQID(pdqid)) { \
182 ercd = E_ID; \
183 goto error_exit; \
184 } \
185}
186
187#define CHECK_MBXID(mbxid) { \
188 if (!VALID_MBXID(mbxid)) { \
189 ercd = E_ID; \
190 goto error_exit; \
191 } \
192}
193
194#define CHECK_MTXID(mtxid) { \
195 if (!VALID_MTXID(mtxid)) { \
196 ercd = E_ID; \
197 goto error_exit; \
198 } \
199}
200
201#define CHECK_MPFID(mpfid) { \
202 if (!VALID_MPFID(mpfid)) { \
203 ercd = E_ID; \
204 goto error_exit; \
205 } \
206}
207
208#define CHECK_CYCID(cycid) { \
209 if (!VALID_CYCID(cycid)) { \
210 ercd = E_ID; \
211 goto error_exit; \
212 } \
213}
214
215#define CHECK_ALMID(almid) { \
216 if (!VALID_ALMID(almid)) { \
217 ercd = E_ID; \
218 goto error_exit; \
219 } \
220}
221
222/*
223 * ŒÄo‚µƒRƒ“ƒeƒLƒXƒg‚̃`ƒFƒbƒNiE_CTXj
224 */
225#define CHECK_TSKCTX() { \
226 if (sense_context()) { \
227 ercd = E_CTX; \
228 goto error_exit; \
229 } \
230}
231
232#define CHECK_INTCTX() { \
233 if (!sense_context()) { \
234 ercd = E_CTX; \
235 goto error_exit; \
236 } \
237}
238
239/*
240 * ŒÄo‚µƒRƒ“ƒeƒLƒXƒg‚ÆCPUƒƒbƒNó‘Ԃ̃`ƒFƒbƒNiE_CTXj
241 */
242#define CHECK_TSKCTX_UNL() { \
243 if (sense_context() || t_sense_lock()) { \
244 ercd = E_CTX; \
245 goto error_exit; \
246 } \
247}
248
249#define CHECK_INTCTX_UNL() { \
250 if (!sense_context() || i_sense_lock()) { \
251 ercd = E_CTX; \
252 goto error_exit; \
253 } \
254}
255
256/*
257 * ƒfƒBƒXƒpƒbƒ`•Û—¯ó‘Ô‚Å‚È‚¢‚©‚̃`ƒFƒbƒNiE_CTXj
258 */
259#define CHECK_DISPATCH() { \
260 if (sense_context() || t_sense_lock() || !dspflg) { \
261 ercd = E_CTX; \
262 goto error_exit; \
263 } \
264}
265
266/*
267 * ‚»‚Ì‘¼‚̃Rƒ“ƒeƒLƒXƒgƒGƒ‰[‚̃`ƒFƒbƒNiE_CTXj
268 */
269#define CHECK_CTX(exp) { \
270 if (!(exp)) { \
271 ercd = E_CTX; \
272 goto error_exit; \
273 } \
274}
275
276/*
277 * Ž©ƒ^ƒXƒN‚ðŽw’肵‚Ä‚¢‚È‚¢‚©‚̃`ƒFƒbƒNiE_ILUSEj
278 */
279#define CHECK_NONSELF(p_tcb) { \
280 if ((p_tcb) == p_runtsk) { \
281 ercd = E_ILUSE; \
282 goto error_exit; \
283 } \
284}
285
286/*
287 * ‚»‚Ì‘¼‚Ì•s³Žg—pƒGƒ‰[‚̃`ƒFƒbƒNiE_ILUSEj
288 */
289#define CHECK_ILUSE(exp) { \
290 if (!(exp)) { \
291 ercd = E_ILUSE; \
292 goto error_exit; \
293 } \
294}
295
296#endif /* TOPPERS_CHECK_H */
Note: See TracBrowser for help on using the repository browser.