source: extension/dcre/kernel/check.h @ 7

このファイルの 7 以降における最終更新内容7 で kominami が 2015/09/12 9:22:12 に更新しました

TOPPERS/ASP 1.9.1

ファイルサイズ: 12.2 KB
Rev 
[7]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-2014 by Embedded and Real-Time Systems Laboratory
9 *              Graduate School of Information Science, Nagoya Univ., JAPAN
10 *
11 *  Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
12 *  ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
13 *  ÊÑ¡ŠºÆÇÛÉۡʰʲŒ¡€ÍøÍрȞƀ֡ˀ¹€ë€³€È€ò̵œþ€ÇµöÂú€¹€ë¡¥
14 *  (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
15 *      ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äꀬ¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
16 *      ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
17 *  (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
18 *      Íрǀ­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
19 *      ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
20 *      €Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
21 *  (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁȀ߹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
22 *      Íрǀ­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
23 *      €È¡¥
24 *    (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍьԥޥ˥奢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
25 *        ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
26 *    (b) ºÆÇÛÉۀηÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
27 *        Êó¹ð€¹€ë€³€È¡¥
28 *  (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€ë€€€«€Ê€ë»
29 *      ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
30 *      €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
31 *      ͳ€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
32 *      ÌÈÀÕ€¹€ë€³€È¡¥
33 *
34 *  ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
35 *  €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜŪ
36 *  €ËÂЀ¹€ëŬ¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
37 *  ¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€¿€€€«€Ê€ë»³²€ËŽØ€·€Æ€â¡€€œ
38 *  €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
39 *
40 *  @(#) $Id$
41 */
42
43/*
44 *              ¥š¥é¡Œ¥Á¥§¥Ã¥¯ÍÑ¥Þ¥¯¥í
45 */
46
47#ifndef TOPPERS_CHECK_H
48#define TOPPERS_CHECK_H
49
50/*
51 *  ÍœÌó°À­¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
52 */
53#define CHECK_RSATR(atr, valid_atr) do {                                        \
54        if (((atr) & ~(valid_atr)) != 0U) {                                             \
55                ercd = E_RSATR;                                                                         \
56                goto error_exit;                                                                        \
57        }                                                                                                               \
58} while (false)
59
60/*
61 *  Í¥ÀèÅÙ€ÎÈϰπÎÈœÄê
62 */
63#define VALID_TPRI(tpri)        (TMIN_TPRI <= (tpri) && (tpri) <= TMAX_TPRI)
64
65#define VALID_DPRI(dpri)        (TMIN_DPRI <= (dpri) && (dpri) <= TMAX_DPRI)
66
67#define VALID_MPRI(mpri)        (TMIN_MPRI <= (mpri) && (mpri) <= TMAX_MPRI)
68
69#define VALID_ISRPRI(isrpri) \
70                                (TMIN_ISRPRI <= (isrpri) && (isrpri) <= TMAX_ISRPRI)
71
72#ifndef VALID_INTPRI_CHGIPM
73#define VALID_INTPRI_CHGIPM(intpri) \
74                                (TMIN_INTPRI <= (intpri) && (intpri) <= TIPM_ENAALL)
75#endif /* VALID_INTPRI_CHGIPM */
76
77/*
78 *  ¥¿¥¹¥¯Í¥ÀèÅـΥÁ¥§¥Ã¥¯¡ÊE_PAR¡Ë
79 */
80#define CHECK_TPRI(tpri) do {                                                           \
81        if (!VALID_TPRI(tpri)) {                                                                \
82                ercd = E_PAR;                                                                           \
83                goto error_exit;                                                                        \
84        }                                                                                                               \
85} while (false)
86
87#define CHECK_TPRI_INI(tpri) do {                                                       \
88        if (!(VALID_TPRI(tpri) || (tpri) == TPRI_INI)) {                \
89                ercd = E_PAR;                                                                           \
90                goto error_exit;                                                                        \
91        }                                                                                                               \
92} while (false)
93
94#define CHECK_TPRI_SELF(tpri) do {                                                      \
95        if (!(VALID_TPRI(tpri) || (tpri) == TPRI_SELF)) {               \
96                ercd = E_PAR;                                                                           \
97                goto error_exit;                                                                        \
98        }                                                                                                               \
99} while (false)
100
101/*
102 *  ¥Ç¡Œ¥¿Í¥ÀèÅـΥÁ¥§¥Ã¥¯¡ÊE_PAR¡Ë
103 */
104#define CHECK_DPRI(dpri) do {                                                           \
105        if (!VALID_DPRI(dpri)) {                                                                \
106                ercd = E_PAR;                                                                           \
107                goto error_exit;                                                                        \
108        }                                                                                                               \
109} while (false)
110
111/*
112 *  ¥á¥Ã¥»¡Œ¥žÍ¥ÀèÅـΥÁ¥§¥Ã¥¯¡ÊE_PAR¡Ë
113 */
114#define CHECK_MPRI(mpri) do {                                                           \
115        if (!VALID_MPRI(mpri)) {                                                                \
116                ercd = E_PAR;                                                                           \
117                goto error_exit;                                                                        \
118        }                                                                                                               \
119} while (false)
120
121/*
122 *  ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óÍ¥ÀèÅـΥÁ¥§¥Ã¥¯¡ÊE_PAR¡Ë
123 */
124#define CHECK_ISRPRI(isrpri) do {                                                       \
125        if (!VALID_ISRPRI(isrpri)) {                                                    \
126                ercd = E_PAR;                                                                           \
127                goto error_exit;                                                                        \
128        }                                                                                                               \
129} while (false)
130
131/*
132 *  ¥¿¥€¥à¥¢¥Š¥È»ØÄêÃ̀ΥÁ¥§¥Ã¥¯¡ÊE_PAR¡Ë
133 */
134#define CHECK_TMOUT(tmout) do {                                                         \
135        if (!(TMO_FEVR <= (tmout))) {                                                   \
136                ercd = E_PAR;                                                                           \
137                goto error_exit;                                                                        \
138        }                                                                                                               \
139} while (false)
140
141/*
142 *  ³ä¹þ€ßÍ¥ÀèÅـΥÁ¥§¥Ã¥¯¡ÊE_PAR¡Ë
143 */
144#define CHECK_INTPRI_CHGIPM(intpri) do {                                        \
145        if (!VALID_INTPRI_CHGIPM(intpri)) {                                             \
146                ercd = E_PAR;                                                                           \
147                goto error_exit;                                                                        \
148        }                                                                                                               \
149} while (false)
150
151/*
152 *  ³ä¹þ€ßÈÖ¹æ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
153 */
154#define CHECK_INTNO_CREISR(intno) do {                                          \
155        if (!VALID_INTNO_CREISR(intno)) {                                               \
156                ercd = E_PAR;                                                                           \
157                goto error_exit;                                                                        \
158        }                                                                                                               \
159} while (false)
160
161#define CHECK_INTNO_DISINT(intno) do {                                          \
162        if (!VALID_INTNO_DISINT(intno)) {                                               \
163                ercd = E_PAR;                                                                           \
164                goto error_exit;                                                                        \
165        }                                                                                                               \
166} while (false)
167
168/*
169 *  ¥¢¥é¥€¥ó€·€Æ€€€ë€«€ÎÈœÄê
170 */
171#define ALIGNED(val, align)             ((((uintptr_t)(val)) & ((align) - 1U)) == 0U)
172
173#ifdef CHECK_FUNC_ALIGN
174#define FUNC_ALIGNED(func)              ALIGNED(func, CHECK_FUNC_ALIGN)
175#else /* CHECK_FUNC_ALIGN */
176#define FUNC_ALIGNED(func)              true
177#endif /* CHECK_FUNC_ALIGN */
178
179#ifdef CHECK_STKSZ_ALIGN
180#define STKSZ_ALIGNED(stksz)    ALIGNED(stksz, CHECK_STKSZ_ALIGN)
181#else /* CHECK_STKSZ_ALIGN */
182#define STKSZ_ALIGNED(stksz)    true
183#endif /* CHECK_STKSZ_ALIGN */
184
185#ifdef CHECK_STACK_ALIGN
186#define STACK_ALIGNED(stack)    ALIGNED(stack, CHECK_STACK_ALIGN)
187#else /* CHECK_STACK_ALIGN */
188#define STACK_ALIGNED(stack)    true
189#endif /* CHECK_STACK_ALIGN */
190
191#ifdef CHECK_MPF_ALIGN
192#define MPF_ALIGNED(mpf)                ALIGNED(mpf, CHECK_MPF_ALIGN)
193#else /* CHECK_MPF_ALIGN */
194#define MPF_ALIGNED(mpf)                true
195#endif /* CHECK_MPF_ALIGN */
196
197#ifdef CHECK_MB_ALIGN
198#define MB_ALIGNED(mb)                  ALIGNED(mb, CHECK_MB_ALIGN)
199#else /* CHECK_MB_ALIGN */
200#define MB_ALIGNED(mb)                  true
201#endif /* CHECK_MB_ALIGN */
202
203/*
204 *  NULL€Ç€Ê€€€³€È€Î¥Á¥§¥Ã¥¯
205 */
206#ifdef CHECK_FUNC_NONNULL
207#define FUNC_NONNULL(func)              ((func) != NULL)
208#else /* CHECK_FUNC_NONNULL */
209#define FUNC_NONNULL(func)              true
210#endif /* CHECK_FUNC_NONNULL */
211
212/*
213 *  ŽØ¿ô€ÎÀèÆ¬ÈÖÃπΥÁ¥§¥Ã¥¯¡ÊE_PAR¡Ë
214 */
215#define CHECK_ALIGN_FUNC(func) do {                                                     \
216        if (!FUNC_ALIGNED(func)) {                                                              \
217                ercd = E_PAR;                                                                           \
218                goto error_exit;                                                                        \
219        }                                                                                                               \
220} while (false)
221
222#define CHECK_NONNULL_FUNC(func) do {                                           \
223        if (!FUNC_NONNULL(func)) {                                                              \
224                ercd = E_PAR;                                                                           \
225                goto error_exit;                                                                        \
226        }                                                                                                               \
227} while (false)
228
229/*
230 *  ¥¹¥¿¥Ã¥¯¥µ¥€¥º€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
231 */
232#define CHECK_ALIGN_STKSZ(stksz) do {                                           \
233        if (!STKSZ_ALIGNED(stksz)) {                                                    \
234                ercd = E_PAR;                                                                           \
235                goto error_exit;                                                                        \
236        }                                                                                                               \
237} while (false)
238
239/*
240 *  ¥¹¥¿¥Ã¥¯€ÎÀèÆ¬ÈÖÃπΥÁ¥§¥Ã¥¯¡ÊE_PAR¡Ë
241 */
242#define CHECK_ALIGN_STACK(stack) do {                                           \
243        if (!STACK_ALIGNED(stack)) {                                                    \
244                ercd = E_PAR;                                                                           \
245                goto error_exit;                                                                        \
246        }                                                                                                               \
247} while (false)
248
249/*
250 *  žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëÎΰè€ÎÀèÆ¬ÈÖÃπΥÁ¥§¥Ã¥¯¡ÊE_PAR¡Ë
251 */
252#define CHECK_ALIGN_MPF(mpf) do {                                                       \
253        if (!MPF_ALIGNED(mpf)) {                                                                \
254                ercd = E_PAR;                                                                           \
255                goto error_exit;                                                                        \
256        }                                                                                                               \
257} while (false)
258
259/*
260 *  ŽÉÍýÎΰè€ÎÀèÆ¬ÈÖÃπΥÁ¥§¥Ã¥¯¡ÊE_PAR¡Ë
261 */
262#define CHECK_ALIGN_MB(mb) do {                                                         \
263        if (!MB_ALIGNED(mb)) {                                                                  \
264                ercd = E_PAR;                                                                           \
265                goto error_exit;                                                                        \
266        }                                                                                                               \
267} while (false)
268
269/*
270 *  €œ€ÎŸ€Î¥Ñ¥é¥á¡Œ¥¿¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_PAR¡Ë
271 */
272#define CHECK_PAR(exp) do {                                                                     \
273        if (!(exp)) {                                                                                   \
274                ercd = E_PAR;                                                                           \
275                goto error_exit;                                                                        \
276        }                                                                                                               \
277} while (false)
278
279/*
280 *  ¥ª¥Ö¥ž¥§¥¯¥ÈID€ÎÈϰπÎÈœÄê
281 */
282#define VALID_TSKID(tskid)      (TMIN_TSKID <= (tskid) && (tskid) <= tmax_tskid)
283#define VALID_SEMID(semid)      (TMIN_SEMID <= (semid) && (semid) <= tmax_semid)
284#define VALID_FLGID(flgid)      (TMIN_FLGID <= (flgid) && (flgid) <= tmax_flgid)
285#define VALID_DTQID(dtqid)      (TMIN_DTQID <= (dtqid) && (dtqid) <= tmax_dtqid)
286#define VALID_PDQID(pdqid)      (TMIN_PDQID <= (pdqid) && (pdqid) <= tmax_pdqid)
287#define VALID_MBXID(mbxid)      (TMIN_MBXID <= (mbxid) && (mbxid) <= tmax_mbxid)
288#define VALID_MPFID(mpfid)      (TMIN_MPFID <= (mpfid) && (mpfid) <= tmax_mpfid)
289#define VALID_CYCID(cycid)      (TMIN_CYCID <= (cycid) && (cycid) <= tmax_cycid)
290#define VALID_ALMID(almid)      (TMIN_ALMID <= (almid) && (almid) <= tmax_almid)
291#define VALID_ISRID(isrid)      (TMIN_ISRID <= (isrid) && (isrid) <= tmax_isrid)
292
293/*
294 *  ¥ª¥Ö¥ž¥§¥¯¥ÈID€Î¥Á¥§¥Ã¥¯¡ÊE_ID¡Ë
295 */
296#define CHECK_TSKID(tskid) do {                                                         \
297        if (!VALID_TSKID(tskid)) {                                                              \
298                ercd = E_ID;                                                                            \
299                goto error_exit;                                                                        \
300        }                                                                                                               \
301} while (false)
302
303#define CHECK_TSKID_SELF(tskid) do {                                            \
304        if (!(VALID_TSKID(tskid) || (tskid) == TSK_SELF)) {             \
305                ercd = E_ID;                                                                            \
306                goto error_exit;                                                                        \
307        }                                                                                                               \
308} while (false)
309
310#define CHECK_SEMID(semid) do {                                                         \
311        if (!VALID_SEMID(semid)) {                                                              \
312                ercd = E_ID;                                                                            \
313                goto error_exit;                                                                        \
314        }                                                                                                               \
315} while (false)
316
317#define CHECK_FLGID(flgid) do {                                                         \
318        if (!VALID_FLGID(flgid)) {                                                              \
319                ercd = E_ID;                                                                            \
320                goto error_exit;                                                                        \
321        }                                                                                                               \
322} while (false)
323
324#define CHECK_DTQID(dtqid) do {                                                         \
325        if (!VALID_DTQID(dtqid)) {                                                              \
326                ercd = E_ID;                                                                            \
327                goto error_exit;                                                                        \
328        }                                                                                                               \
329} while (false)
330
331#define CHECK_PDQID(pdqid) do {                                                         \
332        if (!VALID_PDQID(pdqid)) {                                                              \
333                ercd = E_ID;                                                                            \
334                goto error_exit;                                                                        \
335        }                                                                                                               \
336} while (false)
337
338#define CHECK_MBXID(mbxid) do {                                                         \
339        if (!VALID_MBXID(mbxid)) {                                                              \
340                ercd = E_ID;                                                                            \
341                goto error_exit;                                                                        \
342        }                                                                                                               \
343} while (false)
344
345#define CHECK_MPFID(mpfid) do {                                                         \
346        if (!VALID_MPFID(mpfid)) {                                                              \
347                ercd = E_ID;                                                                            \
348                goto error_exit;                                                                        \
349        }                                                                                                               \
350} while (false)
351
352#define CHECK_CYCID(cycid) do {                                                         \
353        if (!VALID_CYCID(cycid)) {                                                              \
354                ercd = E_ID;                                                                            \
355                goto error_exit;                                                                        \
356        }                                                                                                               \
357} while (false)
358
359#define CHECK_ALMID(almid) do {                                                         \
360        if (!VALID_ALMID(almid)) {                                                              \
361                ercd = E_ID;                                                                            \
362                goto error_exit;                                                                        \
363        }                                                                                                               \
364} while (false)
365
366#define CHECK_ISRID(isrid) do {                                                         \
367        if (!VALID_ISRID(isrid)) {                                                              \
368                ercd = E_ID;                                                                            \
369                goto error_exit;                                                                        \
370        }                                                                                                               \
371} while (false)
372
373/*
374 *  žÆœÐ€·¥³¥ó¥Æ¥­¥¹¥È€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
375 */
376#define CHECK_TSKCTX() do {                                                                     \
377        if (sense_context()) {                                                                  \
378                ercd = E_CTX;                                                                           \
379                goto error_exit;                                                                        \
380        }                                                                                                               \
381} while (false)
382
383#define CHECK_INTCTX() do {                                                                     \
384        if (!sense_context()) {                                                                 \
385                ercd = E_CTX;                                                                           \
386                goto error_exit;                                                                        \
387        }                                                                                                               \
388} while (false)
389
390/*
391 *  žÆœÐ€·¥³¥ó¥Æ¥­¥¹¥È€ÈCPU¥í¥Ã¥¯ŸõÂրΥÁ¥§¥Ã¥¯¡ÊE_CTX¡Ë
392 */
393#define CHECK_TSKCTX_UNL() do {                                                         \
394        if (sense_context() || t_sense_lock()) {                                \
395                ercd = E_CTX;                                                                           \
396                goto error_exit;                                                                        \
397        }                                                                                                               \
398} while (false)
399
400#define CHECK_INTCTX_UNL() do {                                                         \
401        if (!sense_context() || i_sense_lock()) {                               \
402                ercd = E_CTX;                                                                           \
403                goto error_exit;                                                                        \
404        }                                                                                                               \
405} while (false)
406
407/*
408 *  ¥Ç¥£¥¹¥Ñ¥Ã¥ÁÊÝαŸõÂրǀʀ€€«€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
409 */
410#define CHECK_DISPATCH() do {                                                           \
411        if (sense_context() || t_sense_lock() || !dspflg) {             \
412                ercd = E_CTX;                                                                           \
413                goto error_exit;                                                                        \
414        }                                                                                                               \
415} while (false)
416
417/*
418 *  €œ€ÎŸ€Î¥³¥ó¥Æ¥­¥¹¥È¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_CTX¡Ë
419 */
420#define CHECK_CTX(exp) do {                                                                     \
421        if (!(exp)) {                                                                                   \
422                ercd = E_CTX;                                                                           \
423                goto error_exit;                                                                        \
424        }                                                                                                               \
425} while (false)
426
427/*
428 *  Œ«¥¿¥¹¥¯€ò»ØÄꀷ€Æ€€€Ê€€€«€Î¥Á¥§¥Ã¥¯¡ÊE_ILUSE¡Ë
429 */
430#define CHECK_NONSELF(p_tcb) do {                                                       \
431        if ((p_tcb) == p_runtsk) {                                                              \
432                ercd = E_ILUSE;                                                                         \
433                goto error_exit;                                                                        \
434        }                                                                                                               \
435} while (false)
436
437/*
438 *  €œ€ÎŸ€ÎÉÔÀµ»ÈÍÑ¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_ILUSE¡Ë
439 */
440#define CHECK_ILUSE(exp) do {                                                           \
441        if (!(exp)) {                                                                                   \
442                ercd = E_ILUSE;                                                                         \
443                goto error_exit;                                                                        \
444        }                                                                                                               \
445} while (false)
446
447/*
448 *  Ì€¥µ¥Ý¡Œ¥Èµ¡Çœ¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_NOSPT¡Ë
449 */
450#define CHECK_NOSPT(exp) do {                                                           \
451        if (!(exp)) {                                                                                   \
452                ercd = E_NOSPT;                                                                         \
453                goto error_exit;                                                                        \
454        }                                                                                                               \
455} while (false)
456
457/*
458 *  ÀÅŪ€Ê¥ª¥Ö¥ž¥§¥¯¥ÈŸõÂÖ¥š¥é¡Œ€Î¥Á¥§¥Ã¥¯¡ÊE_OBJ¡Ë
459 */
460#define CHECK_OBJ(exp) do {                                                                     \
461        if (!(exp)) {                                                                                   \
462                ercd = E_OBJ;                                                                           \
463                goto error_exit;                                                                        \
464        }                                                                                                               \
465} while (false)
466
467#endif /* TOPPERS_CHECK_H */
詳しい使い方は TracBrowser を参照してください。