source: mypx/doc/configurator.txt

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

TOPPERS/ASP 1.9.1

ファイルサイズ: 36.1 KB
 
1
2                TOPPERS/ASP¥«¡Œ¥Í¥ë
3                ¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿»ÅÍÍ
4
5                Âбþ¥Ð¡Œ¥ž¥ç¥ó: Release 1.9.2
6                ºÇœª¹¹¿·: 2013ǯ12·î31Æü
7
8€³€Î¥É¥­¥å¥á¥ó¥È€Ï¡€TOPPERS/ASP¥«¡Œ¥Í¥ë€Î¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€¬ÉžœàŪ€ËÀž
9À®€¹€Ù€­¥Õ¥¡¥€¥ë€ÎÆâÍÆ€Ë€Ä€€€Æ²òÀ‷€¿€â€Î€Ç€¢€ë¡¥¥¿¡Œ¥²¥Ã¥È°Íž€ËÀžÀ®
10€¹€ëÆâÍÆ€Ë€Ä€€€Æ€Ï¡€€³€Î¥É¥­¥å¥á¥ó¥È€ÎÈϰϳ°€Ç€¢€ë¡¥
11
12----------------------------------------------------------------------
13 TOPPERS/ASP Kernel
14     Toyohashi Open Platform for Embedded Real-Time Systems/
15     Advanced Standard Profile Kernel
16
17 Copyright (C) 2005-2013 by Embedded and Real-Time Systems Laboratory
18             Graduate School of Information Science, Nagoya Univ., JAPAN
19 
20 Ÿåµ­Ãøºîž¢ŒÔ€Ï¡€°Ê²Œ€Î(1)¡Á(4)€ÎŸò·ï€òËþ€¿€¹Ÿì¹ç€ËžÂ€ê¡€ËÜ¥œ¥Õ¥È¥Š¥§
21 ¥¢¡ÊËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò²þÊÑ€·€¿€â€Î€òŽÞ€à¡¥°Ê²ŒÆ±€ž¡Ë€ò»ÈÍÑ¡ŠÊ£Àœ¡Š²þ
22 ÊÑ¡ŠºÆÇÛÉۡʰʲŒ¡€ÍøÍрȞƀ֡ˀ¹€ë€³€È€ò̵œþ€ÇµöÂú€¹€ë¡¥
23 (1) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¥œ¡Œ¥¹¥³¡Œ¥É€Î·Á€ÇÍøÍÑ€¹€ëŸì¹ç€Ë€Ï¡€Ÿåµ­€ÎÃøºî
24     ž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äꀬ¡€€œ€Î€Þ€Þ€Î·Á€Ç¥œ¡Œ
25     ¥¹¥³¡Œ¥ÉÃæ€ËŽÞ€Þ€ì€Æ€€€ë€³€È¡¥
26 (2) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€¥é¥€¥Ö¥é¥ê·ÁŒ°€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
27     Íрǀ­€ë·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍÑ
28     ŒÔ¥Þ¥Ë¥å¥¢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃøºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­
29     €Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
30 (3) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ò¡€µ¡Žï€ËÁȀ߹þ€à€Ê€É¡€ÂŸ€Î¥œ¥Õ¥È¥Š¥§¥¢³«È¯€Ë»È
31     Íрǀ­€Ê€€·Á€ÇºÆÇÛÉÛ€¹€ëŸì¹ç€Ë€Ï¡€Œ¡€Î€€€º€ì€«€ÎŸò·ï€òËþ€¿€¹€³
32     €È¡¥
33   (a) ºÆÇÛÉÛ€ËÈŒ€Š¥É¥­¥å¥á¥ó¥È¡ÊÍøÍьԥޥ˥奢¥ë€Ê€É¡Ë€Ë¡€Ÿåµ­€ÎÃø
34       ºîž¢ÉœŒš¡€€³€ÎÍøÍÑŸò·ï€ª€è€Ó²Œµ­€Î̵ÊÝŸÚµ¬Äê€ò·ÇºÜ€¹€ë€³€È¡¥
35   (b) ºÆÇÛÉۀηÁÂÖ€ò¡€ÊÌ€ËÄê€á€ëÊýË¡€Ë€è€Ã€Æ¡€TOPPERS¥×¥í¥ž¥§¥¯¥È€Ë
36       Êó¹ð€¹€ë€³€È¡¥
37 (4) ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€ë€€€«€Ê€ë»
38     ³²€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€òÌÈÀÕ€¹€ë€³€È¡¥
39     €Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Î¥æ¡Œ¥¶€Þ€¿€Ï¥š¥ó¥É¥æ¡Œ¥¶€«€é€Î€€€«€Ê€ëÍý
40     Í³€ËŽð€Å€¯ÀÁµá€«€é€â¡€Ÿåµ­Ãøºîž¢ŒÔ€ª€è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€ò
41     ÌÈÀÕ€¹€ë€³€È¡¥
42 
43 ËÜ¥œ¥Õ¥È¥Š¥§¥¢€Ï¡€ÌµÊÝŸÚ€ÇÄó¶¡€µ€ì€Æ€€€ë€â€Î€Ç€¢€ë¡¥Ÿåµ­Ãøºîž¢ŒÔ€ª
44 €è€ÓTOPPERS¥×¥í¥ž¥§¥¯¥È€Ï¡€ËÜ¥œ¥Õ¥È¥Š¥§¥¢€ËŽØ€·€Æ¡€ÆÃÄê€Î»ÈÍÑÌÜŪ
45 €ËÂЀ¹€ëŬ¹çÀ­€âŽÞ€á€Æ¡€€€€«€Ê€ëÊÝŸÚ€â¹Ô€ï€Ê€€¡¥€Þ€¿¡€ËÜ¥œ¥Õ¥È¥Š¥§
46 ¥¢€ÎÍøÍрˀè€êÄŸÀÜŪ€Þ€¿€ÏŽÖÀÜŪ€ËÀž€ž€¿€€€«€Ê€ë»³²€ËŽØ€·€Æ€â¡€€œ
47 €ÎÀÕÇ€€òÉé€ï€Ê€€¡¥
48 
49 $Id$
50----------------------------------------------------------------------
51
52¡ûÌÜŒ¡
53
54¡ŠÀžÀ®€¹€ë¥Õ¥¡¥€¥ë€ÎŒïÎà
55¡ŠÀÅŪAPI°ìÍ÷
56¡Š¥«¡Œ¥Í¥ë¹œÀ®¡ŠœéŽü²œ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë¡Êkernel_cfg.h¡Ë
57        (1) žÇÄêÀžÀ®Éôʬ
58        (2) ¥ª¥Ö¥ž¥§¥¯¥È¿ô€ÎÄêµÁ
59        (3) ¥ª¥Ö¥ž¥§¥¯¥È€ÎIDÈÖ¹æ€ÎÄêµÁ
60¡Š¥«¡Œ¥Í¥ë¹œÀ®¡ŠœéŽü²œ¥Õ¥¡¥€¥ë¡Êkernel_cfg.c¡Ë
61        (1) žÇÄêÀžÀ®Éôʬ
62        (2) ¥«¡Œ¥Í¥ë€ÎŒïÎà€Î¥Á¥§¥Ã¥¯
63        (3) ¥€¥ó¥¯¥ë¡Œ¥É¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¡Ê#include¡Ë€ÎœèÍý
64        (4) ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
65        (5) ¥ª¥Ö¥ž¥§¥¯¥È€ÎIDÈÖ¹æ€òÊÝ»ý€¹€ëÊÑ¿ô€ÎÄêµÁ
66        (6) ³Æ¥«¡Œ¥Í¥ë¥ª¥Ö¥ž¥§¥¯¥È€ËŽØ€¹€ëÄêµÁ
67        (7) ³ä¹þ€ß€ËŽØ€¹€ëÄêµÁ
68        (8) CPUÎã³°€ËŽØ€¹€ëÄêµÁ
69        (9) È󥿥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍрΥ¹¥¿¥Ã¥¯Îΰè€ËŽØ€¹€ëÄêµÁ
70        (10) ¥¿¥€¥à¥€¥Ù¥ó¥ÈŽÉÍý€ËŽØ€¹€ëÄêµÁ
71        (11) ³Æ¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œŽØ¿ô€ÎÄêµÁ
72        (12) œéŽü²œ¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô€ÎÄêµÁ
73        (13) œªÎ»œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô€ÎÄêµÁ
74
75
76¡ûÀžÀ®€¹€ë¥Õ¥¡¥€¥ë€ÎŒïÎà
77
78ASP¥«¡Œ¥Í¥ë€Î¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€
79¥ë€òœèÍý€·€Æ¡€¥«¡Œ¥Í¥ë¹œÀ®¡ŠœéŽü²œ¥Õ¥¡¥€¥ë¡Êkernel_cfg.c¡Ë€È¹œÀ®¡ŠœéŽü
80²œ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë¡Êkernel_cfg.h¡Ë€òÀžÀ®€¹€ë¡¥€Þ€¿¡€¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€Î
81œèÍý€ÎÅÓÃæ€Ë¡€É¬Í×€ÊÃæŽÖ¥Õ¥¡¥€¥ë€òÀžÀ®€¹€ë¡¥
82
83
84¡ûÀÅŪAPI°ìÍ÷
85
86ASP¥«¡Œ¥Í¥ë€Î¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€¬œèÍý€¹€ëÀÅŪAPI€ÏŒ¡€ÎÄ̀ꡥ
87
88(1) ¥¿¥¹¥¯ŽÉÍýµ¡Çœ
89        CRE_TSK(ID tskid, { ATR tskatr, intptr_t exinf, TASK task,
90                                                                PRI itskpri, SIZE stksz, STK_T *stk })
91
92(2) ¥¿¥¹¥¯Îã³°œèÍýµ¡Çœ
93        DEF_TEX(ID tskid, { ATR texatr, TEXRTN texrtn })
94
95(3) ƱŽü¡ŠÄÌ¿®µ¡Çœ
96        CRE_SEM(ID semid, { ATR sematr, uint_t isemcnt, uint_t maxsem })
97        CRE_FLG(ID flgid, { ATR flgatr, FLGPTN iflgptn })
98        CRE_DTQ(ID dtqid, { ATR dtqatr, uint_t dtqcnt, void *dtqmb })
99        CRE_PDQ(ID pdqid, { ATR pdqatr, uint_t pdqcnt, PRI maxdpri, void *pdqmb })
100        CRE_MBX(ID mbxid, { ATR mbxatr, PRI maxmpri, void *mprihd })
101
102¢š dtqmb¡€pdqmb¡€mprihd€¬NULL€Ç€Ê€€Ÿì¹ç€Ï¥µ¥Ý¡Œ¥È€·€Ê€€¡¥
103
104(4) ¥á¥â¥ê¥×¡Œ¥ëŽÉÍýµ¡Çœ
105        CRE_MPF(ID mpfid, { ATR mpfatr, uint_t blkcnt, uint_t blksz,
106                                                                                MPF_T *mpf, void *mpfmb })
107
108¢š mpfmb€¬NULL€Ç€Ê€€Ÿì¹ç€Ï¥µ¥Ý¡Œ¥È€·€Ê€€¡¥
109
110(5) »þŽÖŽÉÍýµ¡Çœ
111        CRE_CYC(ID cycid, { ATR cycatr, intptr_t exinf, CYCHDR cychdr,
112                                                                RELTIM cyctim, RELTIM cycphs })
113        CRE_ALM(ID almid, { ATR almatr, intptr_t exinf, ALMHDR almhdr })
114
115(6) ³ä¹þ€ßŽÉÍýµ¡Çœ
116        CFG_INT(INTNO intno, { ATR intatr, PRI intpri })
117        ATT_ISR({ ATR isratr, intptr_t exinf, INTNO intno, ISR isr, PRI isrpri })
118        DEF_INH(INHNO inhno, { ATR inhatr, INTHDR inthdr })
119
120(7) CPUÎã³°ŽÉÍýµ¡Çœ
121        DEF_EXC(EXCNO excno, { ATR excatr, EXCHDR exchdr })
122
123(8) ¥·¥¹¥Æ¥à¹œÀ®ŽÉÍýµ¡Çœ
124        DEF_ICS({ SIZE istksz, STK_T *istk })
125        ATT_INI({ ATR iniatr, intptr_t exinf, INIRTN inirtn })
126        ATT_TER({ ATR teratr, intptr_t exinf, TERRTN terrtn })
127
128€³€ì€é€ÎÀÅŪAPI€Î¥Ñ¥é¥á¡Œ¥¿€ÎÆâ¡€ID·¿€Î¥Ñ¥é¥á¡Œ¥¿€Ï¥ª¥Ö¥ž¥§¥¯¥ÈŒ±ÊÌÌŸ¡€
129¥Ý¥€¥ó¥¿·¿¡Êvoid *¡€TASK¡€TEXRTN¡€CYCHDR¡€ALMHDR¡€ISR¡€INTHDR¡€EXCHDR¡€
130INIRTN¡€TERRTN¡€STK_T *¡€MPF_T *¡Ë€ª€è€Óintptr_t·¿€Î¥Ñ¥é¥á¡Œ¥¿€Ï°ìÈÌÄê
131¿ôŒ°¥Ñ¥é¥á¡Œ¥¿€È€¹€ë¡¥€œ€ÎŸ€Î¥Ñ¥é¥á¡Œ¥¿€Ï¡€À°¿ôÄê¿ôŒ°¥Ñ¥é¥á¡Œ¥¿€È€¹€ë¡¥
132
133
134¡û¥«¡Œ¥Í¥ë¹œÀ®¡ŠœéŽü²œ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë¡Êkernel_cfg.h¡Ë
135
136¥«¡Œ¥Í¥ë¹œÀ®¡ŠœéŽü²œ¥Ø¥Ã¥À¥Õ¥¡¥€¥ë¡Êkernel_cfg.h¡Ë€Ë€Ï¡€Œ¡€ÎÄêµÁ€òÀžÀ®
137€¹€ë¡¥
138
139(1) žÇÄêÀžÀ®Éôʬ
140
141kernel_cfg.h€¬Ê£¿ô²ó¥€¥ó¥¯¥ë¡Œ¥É€µ€ì€ë€Î€òËÉ€°€¿€á€Îµ­œÒ€òÀžÀ®€¹€ë¡¥¶ñ
142ÂÎŪ€Ë€Ï¡€¥Õ¥¡¥€¥ë€ÎÀèÆ¬€ËŒ¡€Î¹Ô€òÀžÀ®€¹€ë¡¥
143
144#ifndef TOPPERS_KERNEL_CFG_H
145#define TOPPERS_KERNEL_CFG_H
146
147€Þ€¿¡€¥Õ¥¡¥€¥ë€ÎËöÈø€ËŒ¡€Î¹Ô€òÀžÀ®€¹€ë¡¥
148
149#endif  /* TOPPERS_KERNEL_CFG_H */
150
151(2) ¥ª¥Ö¥ž¥§¥¯¥È¿ô€ÎÄêµÁ
152
153¥«¡Œ¥Í¥ë€¬¥µ¥Ý¡Œ¥È€¹€ë¥ª¥Ö¥ž¥§¥¯¥È€Î¿ô€ò¥Þ¥¯¥íÄêµÁ€¹€ë¥×¥ê¥×¥í¥»¥Ã¥µ¥Ç¥£
154¥ì¥¯¥Æ¥£¥Ö¡Ê#define¡Ë€òÀžÀ®€¹€ë¡¥¶ñÂÎŪ€Ë€Ï¡€Œ¡€Î€è€Š€Êµ­œÒ€òÀžÀ®€¹€ë¡¥
155
156#define TNUM_TSKID      <¥¿¥¹¥¯€Î¿ô>
157#define TNUM_SEMID      <¥»¥Þ¥Õ¥©€Î¿ô>
158#define TNUM_FLGID      <¥€¥Ù¥ó¥È¥Õ¥é¥°€Î¿ô>
159#define TNUM_DTQID      <¥Ç¡Œ¥¿¥­¥å¡Œ€Î¿ô>
160#define TNUM_PDQID      <Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€Î¿ô>
161#define TNUM_MBXID      <¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€Î¿ô>
162#define TNUM_MPFID      <žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ë€Î¿ô>
163#define TNUM_CYCID      <ŒþŽü¥Ï¥ó¥É¥é€Î¿ô>
164#define TNUM_ALMID      <¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€Î¿ô>
165
166(3) ¥ª¥Ö¥ž¥§¥¯¥È€ÎIDÈÖ¹æ€ÎÄêµÁ
167
168¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€¬IDÈÖ¹æ€ò³ä€êÉÕ€±€¿¥ª¥Ö¥ž¥§¥¯¥È€ÎÌŸÁ°€ò¡€³ä€êÉÕ€±€¿
169IDÈÖ¹æ€Ë¥Þ¥¯¥íÄêµÁ€¹€ë¥×¥ê¥×¥í¥»¥Ã¥µ¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¡Ê#define¡Ë€òÀžÀ®€¹€ë¡¥
170Î〚€Ð¡€Œ¡€Î€è€Š€Êµ­œÒ€òÀžÀ®€¹€ë¡¥
171
172#define TASK1   1
173#define TASK2   2
174#define SEM1    1
175
176
177¡û¥«¡Œ¥Í¥ë¹œÀ®¡ŠœéŽü²œ¥Õ¥¡¥€¥ë¡Êkernel_cfg.c¡Ë
178
179(1) žÇÄêÀžÀ®Éôʬ
180
181kernel_cfg.cÍрΥإåÀ¥Õ¥¡¥€¥ë€ÈIDŒ«Æ°³äÉÕ€±·ë²Ì¥Õ¥¡¥€¥ë€ò¥€¥ó¥¯¥ë¡Œ¥É
182€¹€ë¥×¥ê¥×¥í¥»¥Ã¥µ¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¡Ê#include¡Ë€òÀžÀ®€¹€ë¡¥¶ñÂÎŪ€Ë€Ï¡€Œ¡
183€Î¹Ô€òÀžÀ®€¹€ë¡¥
184
185#include "kernel/kernel_int.h"
186#include "kernel_cfg.h"
187
188(2) ¥«¡Œ¥Í¥ë€ÎŒïÎà€Î¥Á¥§¥Ã¥¯
189
190kernel_cfg.c€È¥«¡Œ¥Í¥ë€ÎŒïÎà€¬°ìÃ×€·€Æ€€€ë€«€ò¥Á¥§¥Ã¥¯€¹€ë€¿€á€Ë¡€Œ¡€Î
191¹Ô€òÀžÀ®€¹€ë¡¥
192
193#if TKERNEL_PRID != 0x07u
194#error The kernel does not match this configuration file.
195#endif
196
197(3) ¥€¥ó¥¯¥ë¡Œ¥É¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¡Ê#include¡Ë€ÎœèÍý
198
199¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŽÞ€Þ€ì€ëCžÀžì¥×¥ê¥×¥í¥»¥Ã¥µ€Î¥€
200¥ó¥¯¥ë¡Œ¥É¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¡Ê#include¡Ë€ÈƱ°ì€Î¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¡Ê#include¡Ë
201€òÀžÀ®€¹€ë¡¥Î〚€Ð¡€
202
203#include "sample1.h"
204
205€È€€€Š¥€¥ó¥¯¥ë¡Œ¥É¥Ç¥£¥ì¥¯¥Æ¥£¥Ö€ËÂЀ·€Æ¡€
206
207#include "sample1.h"
208
209€È€€€Š¥Ç¥£¥ì¥¯¥Æ¥£¥Ö€òÀžÀ®€¹€ë¡¥ÀžÀ®€¹€ë¥Ç¥£¥ì¥¯¥Æ¥£¥Ö€Îœçœø€Ï¡€¥·¥¹¥Æ
210¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ëÃæ€Ç€Î¥€¥ó¥¯¥ë¡Œ¥É¥Ç¥£¥ì¥¯¥Æ¥£¥Ö€Îœçœø
211€Ë°ìÃ×€µ€»€ë¡¥
212
213(4) ¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ
214
215kernel_cfg.c€ÎÃæ€Ç»ÈÍÑ€¹€ë¥È¥ì¡Œ¥¹¥í¥°¥Þ¥¯¥í€Î¥Ç¥Õ¥©¥ë¥ÈÄêµÁ€òÀžÀ®€¹€ë¡¥
216¶ñÂÎŪ€Ë€Ï¡€Œ¡€Î¹Ô€òÀžÀ®€¹€ë¡¥
217
218#ifndef LOG_ISR_ENTER
219#define LOG_ISR_ENTER(intno)
220#endif /* LOG_ISR_ENTER */
221
222#ifndef LOG_ISR_LEAVE
223#define LOG_ISR_LEAVE(intno)
224#endif /* LOG_ISR_LEAVE */
225
226(5) ¥ª¥Ö¥ž¥§¥¯¥È€ÎIDÈÖ¹æ€òÊÝ»ý€¹€ëÊÑ¿ô€ÎÄêµÁ
227
228¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€ËÂЀ¹€ë¥ª¥×¥·¥ç¥ó»ØÄê¡Ê--external-id¡Ë€Ë€è€ê¡€¥³¥ó¥Õ¥£
229¥®¥å¥ì¡Œ¥¿€¬ID ÈÖ¹æ€ò³ä€êÉÕ€±€¿¥ª¥Ö¥ž¥§¥¯¥È€ÎÌŸÁ°€ÎËöÈø€Ë"_id"€òÉղÀ·
230€¿ÌŸÁ°€ÎÊÑ¿ô€òÀžÀ®€¹€ë¡¥ÊÑ¿ô€Ï¡€const°À­€òÉղÀ·€¿ID·¿€ÎÊÑ¿ô€È€·¡€³ä€ê
231ÉÕ€±€¿IDÈÖ¹æ€òÃ̀Ȁ¹€ë¡¥Î〚€Ð¡€Œ¡€Î€è€Š€Êµ­œÒ€òÀžÀ®€¹€ë¡¥
232
233const ID TASK1_id = 1;
234const ID TASK2_id = 2;
235const ID SEM1_id = 1;
236
237(6) ³Æ¥«¡Œ¥Í¥ë¥ª¥Ö¥ž¥§¥¯¥È€ËŽØ€¹€ëÄêµÁ
238
239¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ëÃæ€Ë¡€¥ª¥Ö¥ž¥§¥¯¥È€òÀžÀ®€¹€ëÀÅŪ
240API¡ÖCRE_XXX¡×€¬ŽÞ€Þ€ì€ë³Æ¥«¡Œ¥Í¥ë¥ª¥Ö¥ž¥§¥¯¥È€ËŽØ€·€Æ¡€¥ª¥Ö¥ž¥§¥¯¥ÈÀž
241À®€Î€¿€á€ÎÄêµÁ€òÀžÀ®€¹€ë¡¥
242
243¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€Ï¡€Æ±€žŒïÎà€Î¥ª¥Ö¥ž¥§¥¯¥È€òÀžÀ®€¹€ëÀÅŪAPI€òœž€á¡€³Æ
244¥ª¥Ö¥ž¥§¥¯¥È€ËIDÈÖ¹æ€ò³ä€êÉÕ€±€ë¡¥IDÈÖ¹æ€Ï¡€ÂŸ€Î¥ª¥Ö¥ž¥§¥¯¥È€ÎIDÈÖ¹æ€È
245œÅÊ£€¬€Ê€¯¡€IDÈֹ怬Ϣ³€¹€ë€è€Š€Ë³ä€êÉÕ€±€ë¡¥
246
247¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€ËÂЀ¹€ë¥ª¥×¥·¥ç¥ó»ØÄê¡Ê--id-input-file¡Ë€Ë€è€ê¡€¥³¥ó
248¥Õ¥£¥®¥å¥ì¡Œ¥¿€¬¥ª¥Ö¥ž¥§¥¯¥È€Ë³ä€êÉÕ€±€ëIDÈÖ¹æ€ò»ØÄꀹ€ë€³€È€¬€Ç€­€ë¡¥
249Ʊ€žŒïÎà€Î°Û€Ê€ë¥ª¥Ö¥ž¥§¥¯¥È€ËÂЀ·€ÆÆ±€žIDÈÖ¹æ€ò»ØÄꀷ€¿€ê¡€¥³¥ó¥Õ¥£¥®¥å
250¥ì¡Œ¥¿€¬IDÈÖ¹æ€ò€Ç€­€ëžÂ€êϢ³€¹€ë€è€Š€Ë³ä€êÉÕ€±€¿€È€·€Æ€âIDÈֹ怬Ϣ³
251€·€Ê€€Ÿì¹ç€Ë€Ï¡ÊASP¥«¡Œ¥Í¥ë€Ï¡€¥ª¥Ö¥ž¥§¥¯¥È€ÎIDÈֹ怬Ϣ³€·€Æ€€€ë€³€È€ò
252²ŸÄꀷ€ÆŒÂÁõ€·€Æ€¢€ë¡Ë¡€¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€Ï¥š¥é¡Œ€òÊó¹ð€¹€ë¡¥
253
254€Þ€¿¡€¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€ËÂЀ¹€ë¥ª¥×¥·¥ç¥ó»ØÄê¡Ê--id-output-file¡Ë€Ë€è
255€ê¡€¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€¬IDÈÖ¹æ€ò³ä€êÉÕ€±€¿¥ª¥Ö¥ž¥§¥¯¥È€ÎÌŸÁ°€È³ä€êÉÕ€±
256€¿IDÈÖ¹æ€ÎÁÈ€ò¡€¥ª¥×¥·¥ç¥ó€Ç»ØÄꀷ€¿¥Õ¥¡¥€¥ë€ËœÐÎÏ€¹€ë¡¥
257
258³Æ¥«¡Œ¥Í¥ë¥ª¥Ö¥ž¥§¥¯¥È€ËŽØ€¹€ëÄêµÁ€ÎÉžœàŪ€Ê¹œÀ®€Ï¡€Œ¡€ÎÄÌ€ê€Ç€¢€ë¡¥¥ª
259¥Ö¥ž¥§¥¯¥È€Ë€è€Ã€ÆÎã³°€¬€¢€ëŸì¹ç€Ë€Ï¡€¥ª¥Ö¥ž¥§¥¯¥ÈËè€Î¹à€ÇÀâÌÀ€¹€ë¡¥
260
261(a) ºÇÂç€Î¥ª¥Ö¥ž¥§¥¯¥ÈID€ÎÊÑ¿ô€ÎÄêµÁ
262
263ºÇÂç€Î¥ª¥Ö¥ž¥§¥¯¥ÈID€ò»ý€ÄÊÑ¿ô€ÎÄêµÁ€òÀžÀ®€¹€ë¡¥¶ñÂÎŪ€Ë€Ï¡€¥ª¥Ö¥ž¥§¥¯
264¥È€ÎŸÊάµ­¹æ€ò¡ÖXXX¡¿xxx¡×€È€¹€ë€È¡€Œ¡€Î€è€Š€Ê¹Ô€òÀžÀ®€¹€ë¡¥
265
266const ID _kernel_tmax_xxxid = (TMIN_XXXID + TNUM_XXXID - 1);
267
268(b) ¥ª¥Ö¥ž¥§¥¯¥È€ËɬÍ׀ʥá¥â¥êÎΰè€ÎÄêµÁ
269
270¥ª¥Ö¥ž¥§¥¯¥È€Ë€è€Ã€Æ€Ï¡€¥ª¥Ö¥ž¥§¥¯¥È€ËɬÍ׀ʥá¥â¥êÎΰè€ÎÄêµÁ€òÀžÀ®€¹€ë¡¥
271¶ñÂÎŪ€Ë€Ï¡€¥ª¥Ö¥ž¥§¥¯¥ÈËè€Î¹à€ÇÀâÌÀ€¹€ë¡¥
272
273(c) ¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÄêµÁ
274
275¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÄêµÁ€òÀžÀ®€¹€ë¡¥¶ñÂÎŪ€Ë€Ï¡€¥ª¥Ö¥ž¥§¥¯¥È
276€ÎŸÊάµ­¹æ€ò¡ÖXXX¡¿xxx¡×€È€¹€ë€È¡€Œ¡€Î€è€Š€Ê¹Ô€òÀžÀ®€¹€ë¡¥
277
278const XXXINIB _kernel_xxxinib_table[TNUM_XXXID] = {
279        <¥ª¥Ö¥ž¥§¥¯¥ÈID€¬1€Î¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œŸðÊó>,
280        <¥ª¥Ö¥ž¥§¥¯¥ÈID€¬2€Î¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œŸðÊó>,
281                                ¡Ä¡Ä
282        <¥ª¥Ö¥ž¥§¥¯¥ÈID€¬TNUM_XXXID€Î¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œŸðÊó>
283};
284
285¥ª¥Ö¥ž¥§¥¯¥È€ÎœéŽü²œŸðÊó€Î·ÁŒ°€Ï¡€¥ª¥Ö¥ž¥§¥¯¥ÈËè€Ë°Û€Ê€ë¡¥¶ñÂÎŪ€Ë€Ï¡€
286¥ª¥Ö¥ž¥§¥¯¥ÈËè€Î¹à€ÇÀâÌÀ€¹€ë¡¥
287
288(d) ¥ª¥Ö¥ž¥§¥¯¥È€Î¥³¥ó¥È¥í¡Œ¥ë¥Ö¥í¥Ã¥¯€ÎÄêµÁ
289
290¥ª¥Ö¥ž¥§¥¯¥È€Î¥³¥ó¥È¥í¡Œ¥ë¥Ö¥í¥Ã¥¯€ÎÄêµÁ€òÀžÀ®€¹€ë¡¥¶ñÂÎŪ€Ë€Ï¡€¥ª¥Ö¥ž¥§
291¥¯¥È€ÎŸÊάµ­¹æ€ò¡ÖXXX¡¿xxx¡×€È€¹€ë€È¡€Œ¡€Î€è€Š€Ê¹Ô€òÀžÀ®€¹€ë¡¥
292
293XXXCB _kernel_xxxcb_table[TNUM_XXXID];
294
295(6-1) ¥¿¥¹¥¯€ËŽØ€¹€ëÄêµÁ
296
297ASP¥«¡Œ¥Í¥ë€Ï¡€¥¿¥¹¥¯€¬°ì€Ä€â€Ê€€¥±¡Œ¥¹€ËÂбþ€·€Æ€€€Ê€€€¿€á¡€¥¿¥¹¥¯€ËŽØ
298€¹€ëÄêµÁ€Ïɬ€ºÀžÀ®€·€Ê€±€ì€Ð€Ê€é€Ê€€¡¥
299
300¥¿¥¹¥¯€ÎŸÊάµ­¹æ€Ï¡ÖTSK¡×¡Ötsk¡×€Ç€¢€ë¡¥€¿€À€·¡€¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€Î
301¥Ç¡Œ¥¿·¿€ÏTINIB¡€€œ€ÎÊÑ¿ôÌŸ€Ï_kernel_tinib_table¡€¥¿¥¹¥¯¥³¥ó¥È¥í¡Œ¥ë¥Ö
302¥í¥Ã¥¯€Î¥Ç¡Œ¥¿·¿€ÏTCB¡€€œ€ÎÊÑ¿ôÌŸ€Ï_kernel_tcb_table €Ç€¢€ë¡Ê€€€º€ì€â
303¡ÖTSK¡¿tsk¡×€ËÂ倚€Æ¡ÖT¡¿t¡×€òÍÑ€€€Æ€€€ë¡Ë¡¥
304
305¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯€Ë€Ï¡€¡ÖCRE_TSK¡×ÀÅŪAPI€Ç»ØÄꀵ€ì€ëŸðÊó€Ë²Ã€š€Æ¡€
306¡ÖDEF_TEX¡×ÀÅŪAPI€Ç»ØÄꀵ€ì€ëŸðÊó€òŽÞ€á€ë¡¥
307
308°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅŪAPI€¬ŽÞ€Þ€ì
309€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó€Ë€Ä€€€ÆœÒ€Ù€ë¡¥
310
311CRE_TSK(tskid, { tskatr, exinf, task, itskpri, stksz, stk });
312DEF_TEX(tskid, { texatr, texrtn });
313
314(6-1-1) ¥¿¥¹¥¯€ËɬÍ׀ʥá¥â¥êÎΰè€ÎÄêµÁ
315
316¥¿¥¹¥¯€ËɬÍ׀ʥá¥â¥êÎΰè€È€·€Æ¡€¥¿¥¹¥¯€Î¥¹¥¿¥Ã¥¯Îΰ耬€¢€ë¡¥stk€¬NULL€Î
317Ÿì¹ç€Ë€Ï¡€ÀžÀ®€¹€ë¥¿¥¹¥¯Ëè€Ë¡€»ØÄꀵ€ì€¿¥µ¥€¥º€Î¥¹¥¿¥Ã¥¯Îΰè€ò³ÎÊÝ€¹€ë¡¥
318¶ñÂÎŪ€Ë€Ï¡€Ÿåµ­€ÎÀÅŪAPI€ËÂЀ·€Æ¡€Œ¡€ÎÄêµÁ€òÀžÀ®€¹€ë¡¥
319
320¡östk€¬NULL€ÎŸì¹ç€Î€ßÀžÀ®
321static STK_T _kernel_stack_<¥¿¥¹¥¯ÌŸ>[COUNT_STK_T(stksz)];
322
323(6-1-2) ¥¿¥¹¥¯€ÎœéŽü²œŸðÊó
324
325¥¿¥¹¥¯œéŽü²œ¥Ö¥í¥Ã¥¯Ãæ€ËÀžÀ®€¹€ë¥¿¥¹¥¯€ÎœéŽü²œŸðÊó€Ï¡€Œ¡€Î·ÁŒ°€È€¹€ë¡¥
326
327        { (tskatr), (intptr_t)(exinf), (task), INT_PRIORITY(itskpri),
328                                                                (stksz), (stk), (texatr), (texrtn) }
329
330€³€³€Ç¡€stk€¬NULL€ÎŸì¹ç€Ë€Ï¡€(stksz)€ËÂ倚€ÆROUND_STK_T(stksz)€ò¡€
331(stk)€ËÂ倚€Æ(_kernel_stack_<¥¿¥¹¥¯ÌŸ>)€òÀžÀ®€¹€ë¡¥CRE_TSK€ËÂбþ€¹€ë
332DEF_TEX€¬€Ê€€Ÿì¹ç€Ë€Ï¡€texatr€òTA_NULL¡€texrtn€òNULL€È€¹€ë¡¥
333
334(6-1-3) ¥¿¥¹¥¯ÀžÀ®œçœø¥Æ¡Œ¥Ö¥ë€ÎÄêµÁ
335
336¥¿¥¹¥¯€ËÂЀ·€Æ€Ï¡€ÀžÀ®€µ€ì€¿œçœø¡Ê¥¿¥¹¥¯€òÀžÀ®€¹€ëÀÅŪAPI€¬µ­œÒ€µ€ì€¿
337œçœø¡Ë€ò¥Æ¡Œ¥Ö¥ë€ËœÐÎÏ€¹€ëɬÍ×€¬€¢€ë¡¥€³€ì€Ï¡€¥¿¥¹¥¯€ÎÀžÀ®€µ€ì€¿œçœø€Ç¡€
338¥¿¥¹¥¯€ÎœéŽü²œ¡Ê€è€ê¶ñÂÎŪ€Ë€Ï¡€¥¿¥¹¥¯€Îµ¯Æ°¡Ë€ò¹Ô€ŠÉ¬Í×€¬€¢€ë€¿€á€Ç€¢
339€ë¡¥
340
341¶ñÂÎŪ€Ë€Ï¡€Œ¡€Î€è€Š€Ê¹Ô€òÀžÀ®€¹€ë¡¥
342
343const ID _kernel_torder_table[TNUM_TSKID] = {
344        <ºÇœé€ËÀžÀ®€µ€ì€¿¥¿¥¹¥¯€Î¥¿¥¹¥¯ID>,
345        <2ÈÖÌÜ€ËÀžÀ®€µ€ì€¿¥¿¥¹¥¯€Î¥¿¥¹¥¯ID>,
346                                ¡Ä¡Ä
347        <ºÇžå€ËÀžÀ®€µ€ì€¿¥¿¥¹¥¯€Î¥¿¥¹¥¯ID>
348};
349
350(6-1-4) ¥š¥é¡ŒŸò·ï
351
352¥¿¥¹¥¯€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
353
354¡ö¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿ËÜÂ΀¬ž¡œÐ€¹€ë€â€Î
355¡ŠÆ±€žtskid€ËÂЀ¹€ëCRE_TSK€¬Ê£¿ô€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
356¡ŠDEF_TEX€ËÂбþ€¹€ëCRE_TSK€¬€Ê€€Ÿì¹ç¡ÊE_NOEXS¡Ë
357¡ŠÆ±€žtskid€ËÂЀ¹€ëDEF_TEX€¬Ê£¿ô€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
358
359¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
360¡Štskatr€¬¡Ê¡ÎTA_ACT¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
361        ¢š ¥¿¡Œ¥²¥Ã¥È°ÍžÉô€Ç¥¿¥¹¥¯Â°À­€òÄɲòġÊTARGET_TSKATR¡Ë
362¡Š(TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
363¡Šstksz€¬0°Ê²Œ€«¡€¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎºÇŸ®ÃÍ¡ÊTARGET_MIN_STKSZ¡Ë€è€ê€âŸ®€µ
364¡¡€€Ÿì¹ç¡ÊE_PAR¡Ë
365¡Šstksz€¬¥¹¥¿¥Ã¥¯Îΰè€Î¥µ¥€¥º€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
366        - ¥¿¡Œ¥²¥Ã¥È°Íž€ÎÃÍ¡ÊCHECK_STKSZ_ALIGN¡Ë€ÎÇÜ¿ô€Ç€Ê€€Ÿì¹ç
367        ¢š €³€Î¥š¥é¡Œ¥Á¥§¥Ã¥¯€Ï¡€stk€¬NULL€Ç€Ê€€Ÿì¹ç€Ë€Î€ß¹Ô€Š
368¡Štexatr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
369
370¡ö¥Ñ¥¹3€Çž¡œÐ€¹€ë€â€Î
371¡Štask€Ètexrtn€¬¥×¥í¥°¥é¥à€Î³«»ÏÈÖÃπȀ·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
372        - ¥¿¡Œ¥²¥Ã¥È°Íž€ÎÃÍ¡ÊCHECK_FUNC_ALIGN¡Ë€ÎÇÜ¿ô€Ç€Ê€€Ÿì¹ç
373        - NULL€ÎŸì¹ç¡Ê¥¿¡Œ¥²¥Ã¥È°Íž¡€CHECK_FUNC_NONNULL¡Ë
374¡Šstk€¬¥¹¥¿¥Ã¥¯Îΰè€ÎÀèÆ¬ÈÖÃπȀ·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
375        - ¥¿¡Œ¥²¥Ã¥È°Íž€ÎÃÍ¡ÊCHECK_STACK_ALIGN¡Ë€ÎÇÜ¿ô€Ç€Ê€€Ÿì¹ç
376        - NULL€ÎŸì¹ç¡Ê¥¿¡Œ¥²¥Ã¥È°Íž¡€CHECK_STACK_NONNULL¡Ë
377
378(6-2) ¥»¥Þ¥Õ¥©€ËŽØ€¹€ëÄêµÁ
379
380¥»¥Þ¥Õ¥©€ÎŸÊάµ­¹æ€Ï¡ÖSEM¡¿sem¡×€Ç€¢€ë¡¥°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ
381¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅŪAPI€¬ŽÞ€Þ€ì€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó€Ë€Ä€€€ÆœÒ€Ù
382€ë¡¥€Ê€ª¡€¥»¥Þ¥Õ¥©€ËɬÍ׀ʥá¥â¥êÎΰè€Ï€Ê€€¡¥
383
384CRE_SEM(semid, { sematr, isemcnt, maxsem });
385
386(6-2-1) ¥»¥Þ¥Õ¥©€ÎœéŽü²œŸðÊó
387
388¥»¥Þ¥Õ¥©œéŽü²œ¥Ö¥í¥Ã¥¯Ãæ€ËÀžÀ®€¹€ë¥»¥Þ¥Õ¥©€ÎœéŽü²œŸðÊó€Ï¡€Œ¡€Î·ÁŒ°€È€¹
389€ë¡¥
390
391        { (sematr), (isemcnt), (maxsem) }
392
393(6-2-2) ¥š¥é¡ŒŸò·ï
394
395¥»¥Þ¥Õ¥©€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
396
397¡ö¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿ËÜÂ΀¬ž¡œÐ€¹€ë€â€Î
398¡ŠÆ±€žsemid€ËÂЀ¹€ëCRE_SEM€¬Ê£¿ô€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
399
400¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
401¡Šsematr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
402¡Š(0 <= isemcnt && isemcnt <= maxsem)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
403¡Š(1 <= maxsem && maxsem <= TMAX_MAXSEM)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
404
405(6-3) ¥€¥Ù¥ó¥È¥Õ¥é¥°€ËŽØ€¹€ëÄêµÁ
406
407¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎŸÊάµ­¹æ€Ï¡ÖFLG¡¿flg¡×€Ç€¢€ë¡¥°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£
408¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅŪAPI€¬ŽÞ€Þ€ì€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó€Ë€Ä
409€€€ÆœÒ€Ù€ë¡¥€Ê€ª¡€¥€¥Ù¥ó¥È¥Õ¥é¥°€ËɬÍ׀ʥá¥â¥êÎΰè€Ï€Ê€€¡¥
410
411CRE_FLG(flgid, { flgatr, iflgptn });
412
413(6-3-1) ¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎœéŽü²œŸðÊó
414
415¥€¥Ù¥ó¥È¥Õ¥é¥°œéŽü²œ¥Ö¥í¥Ã¥¯Ãæ€ËÀžÀ®€¹€ë¥€¥Ù¥ó¥È¥Õ¥é¥°€ÎœéŽü²œŸðÊó€Ï¡€
416Œ¡€Î·ÁŒ°€È€¹€ë¡¥
417
418        { (flgatr), (iflgptn) }
419
420(6-3-2) ¥š¥é¡ŒŸò·ï
421
422¥€¥Ù¥ó¥È¥Õ¥é¥°€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
423
424¡ö¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿ËÜÂ΀¬ž¡œÐ€¹€ë€â€Î
425¡ŠÆ±€žflgid€ËÂЀ¹€ëCRE_FLG€¬Ê£¿ô€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
426
427¡ö¥Ñ¥¹1€Çž¡œÐ€¹€ë€â€Î
428¡Šiflgptn€¬FLGPTN€Ë³ÊÇŒ€Ç€­€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
429        ¢ª iflgptn€¬uint32_t€Ë³ÊÇŒ€Ç€­€Ê€€Ÿì¹ç€Ï¡€cfg1_out.c€Î¥³¥ó¥Ñ¥€¥ë»þ
430           €Ë¥š¥é¡Œ€È€Ê€ë¡¥
431
432¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
433¡Šflgatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ã¡ÎTA_WMUL¡Ï¡Ã¡ÎTA_CLR¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
434¡Šiflgptn€¬FLGPTN€Ë³ÊÇŒ€Ç€­€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
435        ¢ª iflgptn€¬uint32_t€Ë€Ï³ÊÇŒ€Ç€­€ë€¬¡€FLGPTN€Ë³ÊÇŒ€Ç€­€Ê€€Ÿì¹ç€Ï¡€
436           ¥Ñ¥¹2€Ç¥š¥é¡Œ€òž¡œÐ€¹€ë¡¥
437
438(6-4) ¥Ç¡Œ¥¿¥­¥å¡Œ€ËŽØ€¹€ëÄêµÁ
439
440¥Ç¡Œ¥¿¥­¥å¡Œ€ÎŸÊάµ­¹æ€Ï¡ÖDTQ¡¿dtq¡×€Ç€¢€ë¡¥°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å
441¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅŪAPI€¬ŽÞ€Þ€ì€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó€Ë€Ä€€€Æ
442œÒ€Ù€ë¡¥
443
444CRE_DTQ(dtqid, { dtqatr, dtqcnt, dtqmb });
445
446(6-4-1) ¥Ç¡Œ¥¿¥­¥å¡Œ€ËɬÍ׀ʥá¥â¥êÎΰè€ÎÄêµÁ
447
448¥Ç¡Œ¥¿¥­¥å¡Œ€ËɬÍ׀ʥá¥â¥êÎΰè€È€·€Æ¡€¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎΰ耬€¢€ë¡¥ÀžÀ®
449€¹€ë¥Ç¡Œ¥¿¥­¥å¡ŒËè€Ë¡€É¬Í׀ʥµ¥€¥º€Î¥Ç¡Œ¥¿¥­¥å¡ŒŽÉÍýÎΰè€òÄêµÁ€¹€ë¡¥¶ñ
450ÂÎŪ€Ë€Ï¡€Ÿåµ­€ÎÀÅŪAPI€ËÂЀ·€Æ¡€Œ¡€ÎÄêµÁ€òÀžÀ®€¹€ë¡¥
451
452¡ödtqcnt€¬0€Ç€Ê€€Ÿì¹ç€Î€ßÀžÀ®
453static DTQMB _kernel_dtqmb_<¥Ç¡Œ¥¿¥­¥å¡ŒÌŸ>[dtqcnt];
454
455(6-4-2) ¥Ç¡Œ¥¿¥­¥å¡Œ€ÎœéŽü²œŸðÊó
456
457¥Ç¡Œ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯Ãæ€ËÀžÀ®€¹€ë¥Ç¡Œ¥¿¥­¥å¡Œ€ÎœéŽü²œŸðÊó€Ï¡€Œ¡€Î
458·ÁŒ°€È€¹€ë¡¥
459
460        { (dtqatr), (dtqcnt), (_kernel_dtqmb_<¥Ç¡Œ¥¿¥­¥å¡ŒÌŸ>) }
461
462€³€³€Ç¡€dtqcnt€¬0€ÎŸì¹ç€Ë€Ï¡€_kernel_dtqmb_<¥Ç¡Œ¥¿¥­¥å¡ŒÌŸ>€ËÂ倚€Æ¡€
463NULL€òÍÑ€€€ë¡¥
464
465(6-4-3) ¥š¥é¡ŒŸò·ï
466
467¥Ç¡Œ¥¿¥­¥å¡Œ€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
468
469¡ö¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿ËÜÂ΀¬ž¡œÐ€¹€ë€â€Î
470¡ŠÆ±€ždtqid€ËÂЀ¹€ëCRE_DTQ€¬Ê£¿ô€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
471
472¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
473¡Šdtqatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
474¡Šdtqcnt€¬Éé€ÎÃ̀Οì¹ç¡ÊE_PAR¡Ë
475¡Šdtqmb€¬NULL€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
476
477(6-5) Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€ËŽØ€¹€ëÄêµÁ
478
479Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€ÎŸÊάµ­¹æ€Ï¡ÖPDQ¡¿pdq¡×€Ç€¢€ë¡¥°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³
480¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅŪAPI€¬ŽÞ€Þ€ì€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­Ÿð
481Êó€Ë€Ä€€€ÆœÒ€Ù€ë¡¥
482
483CRE_PDQ(ID pdqid, { pdqatr, pdqcnt, maxdpri, pdqmb });
484
485(6-5-1) Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€ËɬÍ׀ʥá¥â¥êÎΰè€ÎÄêµÁ
486
487Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€ËɬÍ׀ʥá¥â¥êÎΰè€È€·€Æ¡€Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡ŒŽÉÍýÎΰè
488€¬€¢€ë¡¥ÀžÀ®€¹€ëÍ¥ÀèÅ٥ǡŒ¥¿¥­¥å¡ŒËè€Ë¡€É¬Í׀ʥµ¥€¥º€ÎÍ¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ
489ŽÉÍýÎΰè€òÄêµÁ€¹€ë¡¥¶ñÂÎŪ€Ë€Ï¡€Ÿåµ­€ÎÀÅŪAPI€ËÂЀ·€Æ¡€Œ¡€ÎÄêµÁ€òÀžÀ®€¹
490€ë¡¥
491
492¡öpdqcnt€¬0€Ç€Ê€€Ÿì¹ç€Î€ßÀžÀ®
493static PDQMB _kernel_pdqmb_<Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡ŒÌŸ>[pdqcnt];
494
495(6-5-2) Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€ÎœéŽü²œŸðÊó
496
497Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡ŒœéŽü²œ¥Ö¥í¥Ã¥¯Ãæ€ËÀžÀ®€¹€ëÍ¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€ÎœéŽü²œ
498ŸðÊó€Ï¡€Œ¡€Î·ÁŒ°€È€¹€ë¡¥
499
500        { (pdqatr), (pdqcnt), (maxdpri), (_kernel_pdqmb_<Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡ŒÌŸ>) }
501
502€³€³€Ç¡€pdqcnt€¬0€ÎŸì¹ç€Ë€Ï¡€_kernel_pdqmb_<Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡ŒÌŸ>€ËÂ倚
503€Æ¡€NULL€òÍÑ€€€ë¡¥
504
505(6-5-3) ¥š¥é¡ŒŸò·ï
506
507Í¥ÀèÅ٥ǡŒ¥¿¥­¥å¡Œ€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
508
509¡ö¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿ËÜÂ΀¬ž¡œÐ€¹€ë€â€Î
510¡ŠÆ±€žpdqid€ËÂЀ¹€ëCRE_PDQ€¬Ê£¿ô€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
511
512¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
513¡Špdqatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
514¡Špdqcnt€¬Éé€ÎÃ̀Οì¹ç¡ÊE_PAR¡Ë
515¡Š(TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
516¡Špdqmb€¬NULL€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
517
518(6-6) ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ËŽØ€¹€ëÄêµÁ
519
520¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎŸÊάµ­¹æ€Ï¡ÖMBX¡¿mbx¡×€Ç€¢€ë¡¥°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£
521¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅŪAPI€¬ŽÞ€Þ€ì€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó€Ë€Ä
522€€€ÆœÒ€Ù€ë¡¥€Ê€ª¡€¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ËɬÍ׀ʥá¥â¥êÎΰè€Ï€Ê€€¡¥
523
524CRE_MBX(mbxid, { mbxatr, maxmpri, mprihd });
525
526(6-6-1) ¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎœéŽü²œŸðÊó
527
528¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹œéŽü²œ¥Ö¥í¥Ã¥¯Ãæ€ËÀžÀ®€¹€ë¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ÎœéŽü²œŸðÊó€Ï¡€
529Œ¡€Î·ÁŒ°€È€¹€ë¡¥
530
531        { (mbxatr), (maxmpri) }
532
533(6-6-2) ¥š¥é¡ŒŸò·ï
534
535¥á¡Œ¥ë¥Ü¥Ã¥¯¥¹€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
536
537¡ö¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿ËÜÂ΀¬ž¡œÐ€¹€ë€â€Î
538¡ŠÆ±€žmbxid€ËÂЀ¹€ëCRE_MBX€¬Ê£¿ô€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
539
540¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
541¡Šmbxatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ã¡ÎTA_MPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
542¡Š(TMIN_MPRI <= maxmpri && maxmpri <= TMAX_MPRI)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
543¡Šmprihd€¬NULL€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
544
545(6-7) žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ë€ËŽØ€¹€ëÄêµÁ
546
547žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ë€ÎŸÊάµ­¹æ€Ï¡ÖMPF¡¿mpf¡×€Ç€¢€ë¡¥°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³
548¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅŪAPI€¬ŽÞ€Þ€ì€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­Ÿð
549Êó€Ë€Ä€€€ÆœÒ€Ù€ë¡¥
550
551CRE_MPF(mpfid, { mpfatr, blkcnt, blksz, mpf, mpfmb });
552
553(6-7-1) žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ë€ËɬÍ׀ʥá¥â¥êÎΰè€ÎÄêµÁ
554
555žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ë€ËɬÍ׀ʥá¥â¥êÎΰè€È€·€Æ¡€žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëÎΰè€ÈžÇ
556ÄêĹ¥á¥â¥ê¥×¡Œ¥ëŽÉÍýÎΰ耬€¢€ë¡¥ÀžÀ®€¹€ëžÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëËè€Ë¡€É¬Í×€Ê
557¥µ¥€¥º€ÎžÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëÎΰè¡Êmpf€¬NULL€ÎŸì¹ç€Î€ß¡Ë€ÈžÇÄêĹ¥á¥â¥ê¥×¡Œ
558¥ëŽÉÍýÎΰè€ò³ÎÊÝ€¹€ë¡¥¶ñÂÎŪ€Ë€Ï¡€Ÿåµ­€ÎÀÅŪAPI€ËÂЀ·€Æ¡€Œ¡€ÎÄêµÁ€òÀžÀ®
559€¹€ë¡¥
560
561¡ömpf€¬NULL€ÎŸì¹ç€Î€ßÀžÀ®
562static MPF_T _kernel_mpf_<žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëÌŸ>[(blkcnt) * COUNT_MPF_T(blksz)];
563                                                               
564¡öɬ€ºÀžÀ®
565static MPFMB _kernel_mpfmb_<žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëÌŸ>[blkcnt];
566
567(6-7-2) žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ë€ÎœéŽü²œŸðÊó
568
569žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëœéŽü²œ¥Ö¥í¥Ã¥¯Ãæ€ËÀžÀ®€¹€ëžÇÄêĹ¥á¥â¥ê¥×¡Œ¥ë€ÎœéŽü²œ
570ŸðÊó€Ï¡€Œ¡€Î·ÁŒ°€È€¹€ë¡¥
571
572        { (mpfatr), (blkcnt), ROUND_MPF_T(blksz), mpf,
573                                                (_kernel_mpfmb_<žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëÌŸ>) }
574
575€³€³€Ç¡€mpf€¬NULL€ÎŸì¹ç€Ë€Ï¡€mpf€ËÂ倚€Æ¡€_kernel_mpf_<žÇÄêĹ¥á¥â¥ê¥×¡Œ
576¥ëÌŸ>€òÍÑ€€€ë¡¥
577
578(6-7-3) ¥š¥é¡ŒŸò·ï
579
580žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ë€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
581
582¡ö¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿ËÜÂ΀¬ž¡œÐ€¹€ë€â€Î
583¡ŠÆ±€žmpfid€ËÂЀ¹€ëCRE_MPF€¬Ê£¿ô€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
584
585¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
586¡Šmpfatr€¬¡Ê¡ÎTA_TPRI¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
587¡Šblkcnt€¬0°Ê²Œ€ÎŸì¹ç¡ÊE_PAR¡Ë
588¡Šblksz€¬0°Ê²Œ€ÎŸì¹ç¡ÊE_PAR¡Ë
589¡Šmpfmb€¬NULL€Ç€Ê€€Ÿì¹ç¡ÊE_NOSPT¡Ë
590
591¡ö¥Ñ¥¹3€Çž¡œÐ€¹€ë€â€Î
592¡Šmpf€¬žÇÄêĹ¥á¥â¥ê¥×¡Œ¥ëÎΰè€ÎÀèÆ¬ÈÖÃπȀ·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
593        - ¥¿¡Œ¥²¥Ã¥È°Íž€ÎÃÍ¡ÊCHECK_MPF_ALIGN¡Ë€ÎÇÜ¿ô€Ç€Ê€€Ÿì¹ç
594        - NULL€ÎŸì¹ç¡Ê¥¿¡Œ¥²¥Ã¥È°Íž¡€CHECK_MPF_NONNULL¡Ë
595
596(6-8) ŒþŽü¥Ï¥ó¥É¥é€ËŽØ€¹€ëÄêµÁ
597
598ŒþŽü¥Ï¥ó¥É¥é€ÎŸÊάµ­¹æ€Ï¡ÖCYC¡¿cyc¡×€Ç€¢€ë¡¥°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£
599¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅŪAPI€¬ŽÞ€Þ€ì€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó€Ë€Ä
600€€€ÆœÒ€Ù€ë¡¥€Ê€ª¡€ŒþŽü¥Ï¥ó¥É¥é€ËɬÍ׀ʥá¥â¥êÎΰè€Ï€Ê€€¡¥
601
602CRE_CYC(cycid, { cycatr, exinf, cychdr, cyctim, cycphs });
603
604(6-8-1) ŒþŽü¥Ï¥ó¥É¥é€ÎœéŽü²œŸðÊó
605
606ŒþŽü¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯Ãæ€ËÀžÀ®€¹€ëŒþŽü¥Ï¥ó¥É¥é€ÎœéŽü²œŸðÊó€Ï¡€Œ¡€Î
607·ÁŒ°€È€¹€ë¡¥
608
609        { (cycatr), (intptr_t)(exinf), (cychdr), (cyctim), (cycphs) }
610
611(6-8-2) ¥š¥é¡ŒŸò·ï
612
613ŒþŽü¥Ï¥ó¥É¥é€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
614
615¡ö¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿ËÜÂ΀¬ž¡œÐ€¹€ë€â€Î
616¡ŠÆ±€žcycid€ËÂЀ¹€ëCRE_CYC€¬Ê£¿ô€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
617
618¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
619¡Šcycatr€¬¡Ê¡ÎTA_STA¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
620¡Š(0 < cyctim && cyctim <= TMAX_RELTIM)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
621¡Š(0 <= cycphs && cycphs <= TMAX_RELTIM)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
622¡Š·Ù¹ð¡§cycatr€ËTA_STA€¬ÀßÄꀵ€ì€Æ€€€Æ¡€(cycphs == 0)€ÎŸì¹ç
623
624¡ö¥Ñ¥¹3€Çž¡œÐ€¹€ë€â€Î
625¡Šcychdr€¬¥×¥í¥°¥é¥à€Î³«»ÏÈÖÃπȀ·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
626        - ¥¿¡Œ¥²¥Ã¥È°Íž€ÎÃÍ¡ÊCHECK_FUNC_ALIGN¡Ë€ÎÇÜ¿ô€Ç€Ê€€Ÿì¹ç
627        - NULL€ÎŸì¹ç¡Ê¥¿¡Œ¥²¥Ã¥È°Íž¡€CHECK_FUNC_NONNULL¡Ë
628
629(6-9) ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ËŽØ€¹€ëÄêµÁ
630
631¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎŸÊάµ­¹æ€Ï¡ÖALM¡¿alm¡×€Ç€¢€ë¡¥°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó
632¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅŪAPI€¬ŽÞ€Þ€ì€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó
633€Ë€Ä€€€ÆœÒ€Ù€ë¡¥€Ê€ª¡€¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ËɬÍ׀ʥá¥â¥êÎΰè€Ï€Ê€€¡¥
634
635CRE_ALM(ID almid, { almatr, (intptr_t)(exinf), almhdr });
636
637(6-9-1) ¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎœéŽü²œŸðÊó
638
639¥¢¥é¡Œ¥à¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯Ãæ€ËÀžÀ®€¹€ë¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ÎœéŽü²œŸðÊó
640€Ï¡€Œ¡€Î·ÁŒ°€È€¹€ë¡¥
641
642        { (almatr), (exinf), (almhdr) }
643
644(6-9-2) ¥š¥é¡ŒŸò·ï
645
646¥¢¥é¡Œ¥à¥Ï¥ó¥É¥é€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
647
648¡ö¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿ËÜÂ΀¬ž¡œÐ€¹€ë€â€Î
649¡ŠÆ±€žalmid€ËÂЀ¹€ëCRE_ALM€¬Ê£¿ô€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
650
651¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
652¡Šalmatr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
653
654¡ö¥Ñ¥¹3€Çž¡œÐ€¹€ë€â€Î
655¡Šalmhdr€¬¥×¥í¥°¥é¥à€Î³«»ÏÈÖÃπȀ·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
656        - ¥¿¡Œ¥²¥Ã¥È°Íž€ÎÃÍ¡ÊCHECK_FUNC_ALIGN¡Ë€ÎÇÜ¿ô€Ç€Ê€€Ÿì¹ç
657        - NULL€ÎŸì¹ç¡Ê¥¿¡Œ¥²¥Ã¥È°Íž¡€CHECK_FUNC_NONNULL¡Ë
658
659(7) ³ä¹þ€ß€ËŽØ€¹€ëÄêµÁ
660
661³ä¹þ€ß€ËŽØ€·€ÆÀžÀ®€¹€ëŸðÊó€Ï¡€¥¿¡Œ¥²¥Ã¥ÈËè€ËÄê€á€ë€³€È€¬€Ç€­€ë¡¥¥¿¡Œ¥²¥Ã
662¥ÈËè€ËÄê€á€Ê€€Ÿì¹ç€Ë€Ï¡€°Ê²Œ€ÇœÒ€Ù€ë¥¿¡Œ¥²¥Ã¥È€Ë°Íž€·€Ê€€ÉžœàŪ€ÊŸðÊó
663€òÀžÀ®€¹€ë¡¥¥¿¡Œ¥²¥Ã¥ÈËè€ËÄê€á€ëŸì¹ç€Ë€Ï¡€(7-1)€È(7-3)€ËœÒ€Ù€ëŸðÊó€ÏÀž
664À®€·€Ê€€¡Ê(7-2)€ËœÒ€Ù€ëŸðÊó€ÏÀžÀ®€¹€ë¡Ë¡¥
665
666(7-1) ³ä¹þ€ßÍ×µá¥é¥€¥ó€ËŽØ€¹€ëÄêµÁ
667
668³ä¹þ€ßÍ×µá¥é¥€¥ó€Î°À­€òÀßÄꀹ€ëÀÅŪAPI¡ÖCFG_INT¡×€ÇÀßÄꀷ€¿³ä¹þ€ßÍ×µá
669¥é¥€¥ó€ËŽØ€¹€ëÄêµÁ€òÀžÀ®€¹€ë¡¥¶ñÂÎŪ€Ë€ÏŒ¡€ÎÄ̀ꡥ
670
671°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅŪAPI€¬ŽÞ€Þ€ì
672€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó€Ë€Ä€€€ÆœÒ€Ù€ë¡¥
673
674CFG_INT(INTNO intno, { intatr, intpri });
675
676(7-1-1) ÀßÄꀹ€ë³ä¹þ€ßÍ×µá¥é¥€¥ó€Î¿ô
677
678ÀßÄꀹ€ë³ä¹þ€ßÍ×µá¥é¥€¥ó€Î¿ô€ò¥Þ¥¯¥íÄêµÁ€¹€ë¥×¥ê¥×¥í¥»¥Ã¥µ¥Ç¥£¥ì¥¯¥Æ¥£
679¥Ö¡Ê#define¡Ë€òÀžÀ®€¹€ë¡¥€Þ€¿¡€€œ€ÎÃÍ€ò»ý€ÄÊÑ¿ô€ÎÄêµÁ€òÀžÀ®€¹€ë¡¥¶ñÂÎŪ
680€Ë€Ï¡€Œ¡€Î€è€Š€Ê¹Ô€òÀžÀ®€¹€ë¡¥
681
682#define TNUM_INTNO <ÀßÄꀹ€ë³ä¹þ€ßÍ×µá¥é¥€¥ó€Î¿ô>
683const uint_t    _kernel_tnum_intno = TNUM_INTNO;
684
685(7-1-2) ³ä¹þ€ßÍ×µá¥é¥€¥óœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÄêµÁ
686
687³ä¹þ€ßÍ×µá¥é¥€¥óœéŽü²œ¥Ö¥í¥Ã¥¯€òÀžÀ®€¹€ë¡¥¶ñÂÎŪ€Ë€Ï¡€Œ¡€Î€è€Š€Ê¹Ô€òÀž
688À®€¹€ë¡¥
689
690const INTINIB _kernel_intinib_table[TNUM_INTNO] = {
691        <³ä¹þ€ßÍ×µá¥é¥€¥ó1€ÎœéŽü²œŸðÊó>,
692        <³ä¹þ€ßÍ×µá¥é¥€¥ó2€ÎœéŽü²œŸðÊó>,
693                                ¡Ä¡Ä
694        <³ä¹þ€ßÍ×µá¥é¥€¥óTNUM_INTNO€ÎœéŽü²œŸðÊó>
695};
696
697€³€ÎÃæ€Î³ä¹þ€ßÍ×µá¥é¥€¥ó€ÎœéŽü²œŸðÊó€Ï¡€Œ¡€Î·ÁŒ°€È€¹€ë¡¥
698
699        { (intno), (intatr), (intpri) }
700
701(7-1-3) ¥š¥é¡ŒŸò·ï
702
703³ä¹þ€ßÍ×µá¥é¥€¥ó€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
704
705¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
706¡Šintno€¬CFG_INT€ËÂЀ¹€ë³ä¹þ€ßÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
707¡Šintno€¬CFG_INT€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
708¡Šintatr€¬¡Ê¡ÎTA_ENAINT¡Ï¡Ã¡ÎTA_EDGE¡Ï¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
709        ¢š ¥¿¡Œ¥²¥Ã¥È°ÍžÉô€Ç³ä¹þ€ß°À­€òÄɲòġÊTARGET_INTATR¡Ë
710¡Š¥«¡Œ¥Í¥ëŽÉÍý€ËžÇÄꀵ€ì€Æ€€€ëintno€ËÂЀ·€Æ¡€intpri€ËTMIN_INTPRI€è€ê€â
711¡¡Ÿ®€µ€€ÃÍ€¬»ØÄꀵ€ì€¿Ÿì¹ç¡ÊE_OBJ¡Ë
712¡Š¥«¡Œ¥Í¥ëŽÉÍý³°€ËžÇÄꀵ€ì€Æ€€€ëintno€ËÂЀ·€Æ¡€intpri€ËTMIN_INTPRI€è€ê
713¡¡€âŸ®€µ€€ÃÍ€¬»ØÄꀵ€ì€Ê€«€Ã€¿Ÿì¹ç¡ÊE_OBJ¡Ë
714¡Šintpri€¬CFG_INT€ËÂЀ¹€ë³ä¹þ€ßÍ¥ÀèÅـȀ·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
715
716¡öɬÍ׀˱þ€ž€Æ¥¿¡Œ¥²¥Ã¥È°ÍžÉô€Çž¡œÐ€¹€ë€â€Î
717¡Šintatr€¬³ä¹þ€ß°À­€È€·€ÆÀßÄê€Ç€­€Ê€€Ã̀Οì¹ç¡ÊE_RSATR¡Ë
718¡Šintpri€¬³ä¹þ€ßÍ¥ÀèÅـȀ·€ÆÀßÄê€Ç€­€Ê€€Ã̀Οì¹ç¡ÊE_PAR¡Ë
719¡ŠÆ±°ì€Î³ä¹þ€ßÍ¥ÀèÅÙ€·€«ÀßÄê€Ç€­€Ê€€³ä¹þ€ßÍ×µá¥é¥€¥ó€ËÂЀ·€Æ¡€°Û€Ê€ë³ä
720¡¡¹þ€ßÍ¥ÀèÅÙ€òÀßÄꀷ€¿Ÿì¹ç¡ÊE_PAR¡Ë
721
722(7-2) ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€ËŽØ€¹€ëÄêµÁ
723
724(7-2-1) ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÀžÀ®
725
726¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ëÃæ€ËŽÞ€Þ€ì€ë³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á
727¥ó€òÄɲÀ¹€ëÀÅŪAPI¡ÖATT_ISR¡×€ËÂЀ·€Æ¡€Æ±°ì€Î³ä¹þ€ßÈÖ¹æ€ËÂЀ·€ÆÄɲÀµ
728€ì€¿³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€òœç€ËžÆ€ÓœÐ€¹ŽØ¿ô€òÀžÀ®€¹€ë¡¥
729
730¶ñÂÎŪ€Ë€Ï¡€Æ±°ì€Î³ä¹þ€ßÈÖ¹æ€ËÂЀ·€Æ³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€òÄɲÀ¹€ë
731
732ATT_ISR({ isratr_1, exinf_1, intno, isr_1, isrpri_1 });
733ATT_ISR({ isratr_2, exinf_2, intno, isr_2, isrpri_2 });
734        ¡Ä¡Ä
735ATT_ISR({ isratr_n, exinf_n, intno, isr_n, isrpri_n });
736
737€È€€€ŠÀÅŪAPI€ËÂЀ·€Æ¡€Œ¡€Î€è€Š€ÊŽØ¿ô€òÀžÀ®€¹€ë¡¥€³€³€Ç¡€isrpri_1¡€
738isrpri_2¡€¡Ä¡Ä¡€isrpri_n€Ï¡€Ã̀Ο®€µ€€œç€ËÊ€ÙÂØ€š€é€ì€Æ€€€ë€â€Î€È€¹€ë¡¥
739ÃÍ€¬Æ±€ž€â€Î€ÎŽÖ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ëÃæ€Ç€ÎÀÅŪ
740API€Îœçœø€ÎÄÌ€ê€ËÊ€ó€Ç€€€ë€â€Î€È€¹€ë¡¥
741
742static void
743_kernel_inthdr_<intno>(void)
744{
745        PRI             saved_ipm;
746
747        i_begin_int(intno);
748        saved_ipm = i_get_ipm();
749
750        LOG_ISR_ENTER(<intno>);         /* ISR1€ÎžÆœÐ€· */
751        isr_1((intptr_t)(exinf_1));
752        LOG_ISR_LEAVE(intno);
753
754        if (i_sense_lock()) {           /* ISR€ÎžÆœÐ€·Á°€ÎŸõÂÖ€ËÌ္ */
755                i_unlock_cpu();
756        }
757        i_set_ipm(saved_ipm);
758
759        LOG_ISR_ENTER(<intno>);         /* ISR2€ÎžÆœÐ€· */
760        isr_2((intptr_t)(exinf_2));
761        LOG_ISR_LEAVE(intno);
762
763        if (i_sense_lock()) {           /* ISR€ÎžÆœÐ€·Á°€ÎŸõÂÖ€ËÌ္ */
764                i_unlock_cpu();
765        }
766        i_set_ipm(saved_ipm);
767
768        ¡Ä¡Ä
769
770        LOG_ISR_ENTER(<intno>);         /* ISRn€ÎžÆœÐ€· */
771        isr_n((intptr_t)(exinf_n));
772        LOG_ISR_LEAVE(intno);
773
774        i_end_int(intno);
775}
776
777€³€³€Ç¡€ISRn€ÎžÆœÐ€·€Îžå€ËžÆœÐ€·Á°€ÎŸõÂÖ€ËÌဵ€Ê€€€Î€Ï¡€³ä¹þ€ß¥Ï¥ó¥É¥é
778€«€é€Î¥ê¥¿¡Œ¥ó€Ë€è€ê¡€¥«¡Œ¥Í¥ë€¬žµ€ÎŸõÂÖ€ËÌ္€¿€á€Ç€¢€ë¡¥
779
780Ʊ°ì€Î³ä¹þ€ßÈÖ¹æ€ËÂЀ·€ÆÄɲÀµ€ì€¿³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€¬1€Ä€Î€ß€ÎŸì¹ç
781€Ë€Ï¡€Œ¡€Î€è€Š€ÊŽØ¿ô€òÀžÀ®€¹€ë¡¥
782
783static void
784_kernel_inthdr_<intno>(void)
785{
786        i_begin_int(intno);
787        LOG_ISR_ENTER(intno);
788        isr_1((intptr_t)(exinf_1));
789        LOG_ISR_LEAVE(intno);
790        i_end_int(intno);
791}
792
793¡Ú²ÝÂê¡Û€³€³€Ç¡€LOG_ISR_ENTER¡€LOG_ISR_LEAVE€Î°ú¿ô€ò€É€Š€¹€ë€«€¬²ÝÂê€È
794€·€Æ»Ä€Ã€Æ€€€ë¡¥ATT_ISR€ÇÅÐÏ¿€µ€ì€¿ISR€ËÂЀ·€Æ€ÏISR ID€¬ÉÕÍ¿€µ€ì€Ê€€€¿
795€á¡€ID€ÇISR€ò¶èÊÌ€¹€ë€³€È€¬€Ç€­€Ê€€¡¥€ä€à€Ê€¯³ä¹þ€ßÈÖ¹æ€òÅÏ€·€Æ€€€ë€¬¡€
796³ÈÄ¥ŸðÊó¡Êexinf¡Ë€âÅÏ€¹€Ù€­€«€â€·€ì€Ê€€¡¥
797
798(7-2-2) ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎÄêµÁ€ËÁêÅö€¹€ëœèÍý
799
800Ÿå€Î€è€Š€Ë³ä¹þ€ß¥Ï¥ó¥É¥é€òÀžÀ®€·€¿Ÿì¹ç€Ë€Ï¡€Œ¡€ËÀâÌÀ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥é
801€ËŽØ€¹€ëÄêµÁ€Ë€ª€€€Æ¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ëÃæ€ËŒ¡€ÎÀÅ
802ŪAPI€¬ŽÞ€Þ€ì€Æ€€€ë€Î€ÈƱÍ̀˜èÍý€¹€ë¡¥
803
804DEF_INH(inhno, { TA_NULL, _kernel_inthdr_<intno> });
805
806€³€³€Çinhno€Ï¡€intno€ËÂбþ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€Ç€¢€ë¡¥
807
808(7-2-3) ¥š¥é¡ŒŸò·ï
809
810³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
811
812¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
813¡Šisratr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
814        ¢š ¥¿¡Œ¥²¥Ã¥È°ÍžÉô€Ç³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó°À­€òÄɲòġÊTARGET_ISRATR¡Ë
815¡Šintno€¬ATT_ISR€ËÂЀ¹€ë³ä¹þ€ßÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
816        ¢š intno€ËÂбþ€¹€ëinhno€¬€Ê€€Ÿì¹ç€òŽÞ€à
817¡Š(TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)€Ç€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
818¡Šintno€ËÂбþ€¹€ëinhno€ËÂЀ·€ÆDEF_INH€¬€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
819¡Šintno€ËÂЀ¹€ëCFG_INT€¬€Ê€€Ÿì¹ç¡ÊE_OBJ¡Ë
820¡Šintno€ËÂЀ·€ÆCFG_INT€ÇÀßÄꀵ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬TMIN_INTPRI€è€ê€âŸ®€µ€€
821¡¡Ÿì¹ç¡ÊE_OBJ¡Ë
822        ¢š ¥«¡Œ¥Í¥ëŽÉÍý³°€ÎISR€Ï¥µ¥Ý¡Œ¥È€·€Ê€€€¿€á
823
824¡ö²ÄÇœ€Ç€¢€ì€Ð¥¿¡Œ¥²¥Ã¥È°ÍžÉô€Çž¡œÐ€¹€ë€â€Î
825¡Šisr€¬¥×¥í¥°¥é¥à€Î³«»ÏÈÖÃπȀ·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
826
827(7-3) ³ä¹þ€ß¥Ï¥ó¥É¥é€ËŽØ€¹€ëÄêµÁ
828
829³ä¹þ€ß¥Ï¥ó¥É¥é€òÄêµÁ€¹€ëÀÅŪAPI¡ÖDEF_INH¡×€ÇÄêµÁ€·€¿³ä¹þ€ß¥Ï¥ó¥É¥é¡ÊŸå
830œÒ€Î³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥ó€ÎÄɲÀˀè€ê¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥¿€¬ÀžÀ®€·€¿³ä¹þ
831€ß¥Ï¥ó¥É¥é€òŽÞ€à¡Ë€ËŽØ€¹€ëÄêµÁ€òÀžÀ®€¹€ë¡¥¶ñÂÎŪ€Ë€ÏŒ¡€ÎÄ̀ꡥ
832
833°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅŪAPI€¬ŽÞ€Þ€ì
834€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó€Ë€Ä€€€ÆœÒ€Ù€ë¡¥
835
836DEF_INH(inhno, { inhatr, inthdr });
837
838(7-3-1) ÄêµÁ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥é€Î¿ô
839
840ÄêµÁ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥é€Î¿ô€ò¥Þ¥¯¥íÄêµÁ€¹€ë¥×¥ê¥×¥í¥»¥Ã¥µ¥Ç¥£¥ì¥¯¥Æ¥£¥Ö
841¡Ê#define¡Ë€òÀžÀ®€¹€ë¡¥€Þ€¿¡€€œ€ÎÃÍ€ò»ý€ÄÊÑ¿ô€ÎÄêµÁ€òÀžÀ®€¹€ë¡¥¶ñÂÎŪ
842€Ë€Ï¡€Œ¡€Î€è€Š€Ê¹Ô€òÀžÀ®€¹€ë¡¥
843
844#define TNUM_INHNO <ÄêµÁ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥é€Î¿ô>
845const uint_t    _kernel_tnum_inhno = TNUM_INHNO;
846
847(7-3-2) ³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý
848
849ÄêµÁ€¹€ë³ä¹þ€ß¥Ï¥ó¥É¥éËè€Ë¡€³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý¥ë¡Œ¥Á¥ó€òÀžÀ®€¹
850€ë¡¥¶ñÂÎŪ€Ë€Ï¡€Œ¡€Î€è€Š€Ê¹Ô€òÀžÀ®€¹€ë¡¥
851
852INTHDR_ENTRY(inhno, inhno_num, inthdr)
853
854€³€³€Çinhno_num€Ï¡€inhno¡Ê³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ¡Ë€ò¿ôÃÍ€ÇÉœžœ€·€¿€â€Î€Ç¡€
855¥¢¥»¥ó¥Ö¥êžÀžìµ­œÒ€Ë»ÈÍÑ€¹€ë€¿€á€Î€â€Î€Ç€¢€ë¡¥
856
857(7-3-3) ³ä¹þ€ß¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÄêµÁ
858
859³ä¹þ€ß¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€òÀžÀ®€¹€ë¡¥¶ñÂÎŪ€Ë€Ï¡€Œ¡€Î€è€Š€Ê¹Ô€òÀžÀ®
860€¹€ë¡¥
861
862const INHINIB _kernel_inhinib_table[TNUM_INHNO] = {
863        <³ä¹þ€ß¥Ï¥ó¥É¥é1€ÎœéŽü²œŸðÊó>,
864        <³ä¹þ€ß¥Ï¥ó¥É¥é2€ÎœéŽü²œŸðÊó>,
865                                ¡Ä¡Ä
866        <³ä¹þ€ß¥Ï¥ó¥É¥éTNUM_INHNO€ÎœéŽü²œŸðÊó>
867};
868
869€³€ÎÃæ€Î³ä¹þ€ß¥Ï¥ó¥É¥é€ÎœéŽü²œŸðÊó€Ï¡€Œ¡€Î·ÁŒ°€È€¹€ë¡¥
870
871        { (inhno), (inhatr), (FP)(INT_ENTRY(inhno, inthdr)) }
872
873(7-3-4) ¥š¥é¡ŒŸò·ï
874
875³ä¹þ€ß¥Ï¥ó¥É¥é€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
876
877¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
878¡Šinhno€¬DEF_INH€ËÂЀ¹€ë³ä¹þ€ß¥Ï¥ó¥É¥éÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
879¡Šinhno€¬DEF_INH€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
880#¡Šinhno€ËÂбþ€¹€ëintno€ËÂЀ·€ÆATT_ISR€¬€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
881#       ¢š inhno€ËÂбþ€¹€ëintno€¬€Ê€€Ÿì¹ç€Ë€Ï¡€€³€Î¥Á¥§¥Ã¥¯€ò¹Ô€ï€Ê€€
882#       ¢ª €³€Î¥Á¥§¥Ã¥¯€Ï¡€³ä¹þ€ß¥µ¡Œ¥Ó¥¹¥ë¡Œ¥Á¥óŠ€Ç¹Ô€Š
883¡Šinhatr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
884        ¢š ¥¿¡Œ¥²¥Ã¥È°ÍžÉô€Ç³ä¹þ€ß¥Ï¥ó¥É¥é°À­€òÄɲòġÊTARGET_INHATR¡Ë
885        ¢š TA_NONKERNEL€ò»È€ŠŸì¹ç€Ë€Ï¡€TARGET_INHATR€ËÀßÄꀹ€ë
886¡Š¥«¡Œ¥Í¥ëŽÉÍý€ËžÇÄꀵ€ì€Æ€€€ëinhno€ËÂЀ·€Æ¡€inhatr€ËTA_NONKERNEL€¬»ØÄê
887¡¡€µ€ì€Æ€€€ëŸì¹ç¡ÊE_RSATR¡Ë
888¡Š¥«¡Œ¥Í¥ëŽÉÍý³°€ËžÇÄꀵ€ì€Æ€€€ëinhno€ËÂЀ·€Æ¡€inhatr€ËTA_NONKERNEL€¬»Ø
889¡¡Äꀵ€ì€Æ€€€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
890¡Šinhno€ËÂбþ€¹€ëintno€ËÂЀ¹€ëCFG_INT€¬€Ê€€Ÿì¹ç¡ÊE_OBJ¡Ë
891        ¢š inhno€ËÂбþ€¹€ëintno€¬€Ê€€Ÿì¹ç€Ë€Ï¡€€³€Î¥Á¥§¥Ã¥¯€ò¹Ô€ï€Ê€€
892¡Šinhatr€ËTA_NONKERNEL€¬»ØÄꀵ€ì€Æ€ª€é€º¡€inhno€ËÂбþ€¹€ëintno€ËÂЀ·€Æ
893¡¡CFG_INT€ÇÀßÄꀵ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬TMIN_INTPRI€è€ê€âŸ®€µ€€Ÿì¹ç¡ÊE_OBJ¡Ë
894        ¢š inhno€ËÂбþ€¹€ëintno€¬€Ê€€Ÿì¹ç€Ë€Ï¡€€³€Î¥Á¥§¥Ã¥¯€ò¹Ô€ï€Ê€€
895¡Šinhatr€ËTA_NONKERNEL€¬»ØÄꀵ€ì€Æ€ª€ê¡€inhno€ËÂбþ€¹€ëintno€ËÂЀ·€Æ
896¡¡CFG_INT€ÇÀßÄꀵ€ì€¿³ä¹þ€ßÍ¥ÀèÅÙ€¬TMIN_INTPRI°ÊŸå€Ç€¢€ëŸì¹ç¡ÊE_OBJ¡Ë
897        ¢š inhno€ËÂбþ€¹€ëintno€¬€Ê€€Ÿì¹ç€Ë€Ï¡€€³€Î¥Á¥§¥Ã¥¯€ò¹Ô€ï€Ê€€
898
899¡ö²ÄÇœ€Ç€¢€ì€Ð¥¿¡Œ¥²¥Ã¥È°ÍžÉô€Çž¡œÐ€¹€ë€â€Î
900¡Šinthdr€¬¥×¥í¥°¥é¥à€Î³«»ÏÈÖÃπȀ·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
901
902(8) CPUÎã³°€ËŽØ€¹€ëÄêµÁ
903
904CPUÎã³°€ËŽØ€·€ÆÀžÀ®€¹€ëŸðÊó€Ï¡€¥¿¡Œ¥²¥Ã¥ÈËè€ËÄê€á€ë€³€È€¬€Ç€­€ë¡¥¥¿¡Œ¥²¥Ã
905¥ÈËè€ËÄê€á€Ê€€Ÿì¹ç€Ë€Ï¡€°Ê²Œ€ÇœÒ€Ù€ë¥¿¡Œ¥²¥Ã¥È€Ë°Íž€·€Ê€€ÉžœàŪ€ÊŸðÊó
906€òÀžÀ®€¹€ë¡¥¥¿¡Œ¥²¥Ã¥ÈËè€ËÄê€á€ëŸì¹ç€Ë€Ï¡€€³€ì€é€ÎŸðÊó€ÏÀžÀ®€µ€ì€Ê€€¡¥
907
908¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ëÃæ€Ë¡€CPUÎã³°¥Ï¥ó¥É¥é€òÄêµÁ€¹€ë
909ÀÅŪAPI¡ÖDEF_EXC¡×€¬ŽÞ€Þ€ì€Æ€€€ëŸì¹ç€Ë¡€CPUÎã³°¥Ï¥ó¥É¥é€ËŽØ€¹€ëÄêµÁ€ò
910ÀžÀ®€¹€ë¡¥
911
912°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅŪAPI€¬ŽÞ€Þ€ì
913€Æ€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó€Ë€Ä€€€ÆœÒ€Ù€ë¡¥
914
915DEF_EXC(excno, { excatr, exchdr });
916
917(8-1) ÄêµÁ€¹€ëCPUÎã³°¥Ï¥ó¥É¥é€Î¿ô
918
919ÄêµÁ€¹€ëCPUÎã³°¥Ï¥ó¥É¥é€Î¿ô€ò¥Þ¥¯¥íÄêµÁ€¹€ë¥×¥ê¥×¥í¥»¥Ã¥µ¥Ç¥£¥ì¥¯¥Æ¥£
920¥Ö¡Ê#define¡Ë€òÀžÀ®€¹€ë¡¥€Þ€¿¡€€œ€ÎÃÍ€ò»ý€ÄÊÑ¿ô€ÎÄêµÁ€òÀžÀ®€¹€ë¡¥¶ñÂÎ
921Ū€Ë€Ï¡€Œ¡€Î€è€Š€Ê¹Ô€òÀžÀ®€¹€ë¡¥
922
923#define TNUM_EXCNO <ÄêµÁ€¹€ëCPUÎã³°¥Ï¥ó¥É¥é€Î¿ô>
924const uint_t    _kernel_tnum_excno = TNUM_EXCNO;
925
926(8-2) CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý
927
928ÄêµÁ€¹€ëCPUÎã³°¥Ï¥ó¥É¥éËè€Ë¡€CPUÎã³°¥Ï¥ó¥É¥é€ÎœÐÆþžýœèÍý¥ë¡Œ¥Á¥ó€òÀžÀ®
929€¹€ë¡¥¶ñÂÎŪ€Ë€Ï¡€Œ¡€Î€è€Š€Ê¹Ô€òÀžÀ®€¹€ë¡¥
930
931EXCHDR_ENTRY(excno, excno_num, exchdr)
932
933€³€³€Çexcno_num€Ï¡€excno¡ÊCPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ¡Ë€ò¿ôÃÍ€ÇÉœžœ€·€¿€â€Î€Ç¡€
934¥¢¥»¥ó¥Ö¥êžÀžìµ­œÒ€Ë»ÈÍÑ€¹€ë€¿€á€Î€â€Î€Ç€¢€ë¡¥
935
936(8-3) CPUÎã³°¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€ÎÄêµÁ
937
938CPUÎã³°¥Ï¥ó¥É¥éœéŽü²œ¥Ö¥í¥Ã¥¯€òÀžÀ®€¹€ë¡¥¶ñÂÎŪ€Ë€Ï¡€Œ¡€Î€è€Š€Ê¹Ô€òÀžÀ®
939€¹€ë¡¥
940
941const EXCINIB _kernel_excinib_table[TNUM_EXCNO] = {
942        <CPUÎã³°¥Ï¥ó¥É¥é1€ÎœéŽü²œŸðÊó>,
943        <CPUÎã³°¥Ï¥ó¥É¥é2€ÎœéŽü²œŸðÊó>,
944                                ¡Ä¡Ä
945        <CPUÎã³°¥Ï¥ó¥É¥éTNUM_EXCNO€ÎœéŽü²œŸðÊó>
946};
947
948€³€ÎÃæ€ÎCPUÎã³°¥Ï¥ó¥É¥é€ÎœéŽü²œŸðÊó€Ï¡€Œ¡€Î·ÁŒ°€È€¹€ë¡¥
949
950        { (excno), (excatr), (FP)(EXC_ENTRY(excno, exchdr)) }
951
952(8-4) ¥š¥é¡ŒŸò·ï
953
954CPUÎã³°¥Ï¥ó¥É¥é€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
955
956¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
957¡Šexcno€¬DEF_EXC€ËÂЀ¹€ëCPUÎã³°¥Ï¥ó¥É¥éÈÖ¹æ€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
958¡Šexcno€¬DEF_EXC€Ë€è€Ã€ÆÀßÄêºÑ€ß€ÎŸì¹ç¡ÊE_OBJ¡Ë
959¡Šexcatr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
960        ¢š ¥¿¡Œ¥²¥Ã¥È°ÍžÉô€ÇCPUÎã³°¥Ï¥ó¥É¥é°À­€òÄɲòġÊTARGET_EXCATR¡Ë
961
962¡ö²ÄÇœ€Ç€¢€ì€Ð¥¿¡Œ¥²¥Ã¥È°ÍžÉô€Çž¡œÐ€¹€ë€â€Î
963¡Šexchdr€¬¥×¥í¥°¥é¥à€Î³«»ÏÈÖÃπȀ·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
964
965(9) È󥿥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍрΥ¹¥¿¥Ã¥¯Îΰè€ËŽØ€¹€ëÄêµÁ
966
967È󥿥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍрΥ¹¥¿¥Ã¥¯Îΰè€ËŽØ€¹€ëÄêµÁ€Ï¡€É¬€ºÀžÀ®€·€Ê€±€ì€Ð
968€Ê€é€Ê€€¡¥
969
970(9-1) DEF_ICS€¬€Ê€€Ÿì¹ç
971
972¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€Ë¡€ÀÅŪAPI¡ÖDEF_ICS¡×€¬ŽÞ€Þ€ì€Æ
973€€€Ê€€Ÿì¹ç€Ë€Ï¡€Œ¡€Î¹Ô€òÀžÀ®€¹€ë¡¥
974
975#ifdef DEFAULT_ISTK
976
977#define TOPPERS_ISTKSZ          DEFAULT_ISTKSZ
978#define TOPPERS_ISTK            DEFAULT_ISTK
979
980#else /* DEFAULT_ISTK */
981
982static STK_T                            _kernel_istack[COUNT_STK_T(DEFAULT_ISTKSZ)];
983#define TOPPERS_ISTKSZ          ROUND_STK_T(DEFAULT_ISTKSZ)
984#define TOPPERS_ISTK            _kernel_istack
985
986#endif /* DEFAULT_ISTK */
987
988(9-2) DEF_ICS€¬€¢€ëŸì¹ç
989
990°Ê²Œ€Ç€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ë€ËŒ¡€ÎÀÅŪAPI€¬ŽÞ€Þ€ì€Æ
991€€€ë»þ€ËÀžÀ®€¹€Ù€­ŸðÊó€Ë€Ä€€€ÆœÒ€Ù€ë¡¥
992
993DEF_ICS({ istksz, istk });
994
995istk€¬NULL€ÎŸì¹ç€Ë€Ï¡€»ØÄꀵ€ì€¿¥µ¥€¥º€ÎÈ󥿥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍрΥ¹¥¿¥Ã
996¥¯Îΰè€ò³ÎÊÝ€·¡€È󥿥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍрΥ¹¥¿¥Ã¥¯Îΰè€ÎœéŽü²œŸðÊó€òÀžÀ®
997€¹€ë¡¥¶ñÂÎŪ€Ë€Ï¡€Ÿåµ­€ÎÀÅŪAPI€ËÂЀ·€Æ¡€Œ¡€Î¹Ô€òÀžÀ®€¹€ë¡¥
998
999static STK_T                            _kernel_istack[COUNT_STK_T(istksz)];
1000#define TOPPERS_ISTKSZ          ROUND_STK_T(istksz)
1001#define TOPPERS_ISTK            _kernel_istack
1002
1003istk€¬NULL€Ç€Ê€€Ÿì¹ç€Ë€Ï¡€È󥿥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍрΥ¹¥¿¥Ã¥¯Îΰè€ÎœéŽü²œ
1004ŸðÊó€ò¡€Œ¡€Î·ÁŒ°€ÇÀžÀ®€¹€ë¡¥
1005
1006#define TOPPERS_ISTKSZ          (istksz)
1007#define TOPPERS_ISTK            (istk)
1008
1009(9-3) ÊÑ¿ô€ÎÀžÀ®
1010
1011DEF_ICS€Î̵ͭ€Ë€è€é€º¡€Œ¡€ÎÄêµÁ€òÀžÀ®€¹€ë¡¥
1012
1013const SIZE              _kernel_istksz = TOPPERS_ISTKSZ;
1014STK_T *const    _kernel_istk = TOPPERS_ISTK;
1015
1016#ifdef TOPPERS_ISTKPT
1017STK_T *const    _kernel_istkpt = TOPPERS_ISTKPT(TOPPERS_ISTK, TOPPERS_ISTKSZ);
1018#endif /* TOPPERS_ISTKPT */
1019
1020(9-4) ¥š¥é¡ŒŸò·ï
1021
1022È󥿥¹¥¯¥³¥ó¥Æ¥­¥¹¥ÈÍрΥ¹¥¿¥Ã¥¯Îΰè€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
1023
1024¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
1025¡ŠÀÅŪAPI¡ÖDEF_ICS¡×€¬Ê£¿ô€¢€ë¡ÊE_OBJ¡Ë
1026¡Šistksz€¬0°Ê²Œ€«¡€¥¿¡Œ¥²¥Ã¥ÈÄêµÁ€ÎºÇŸ®ÃÍ¡ÊTARGET_MIN_ISTKSZ¡Ë€è€ê€âŸ®
1027¡¡€µ€€Ÿì¹ç¡ÊE_PAR¡Ë
1028¡Šistksz€¬¥¹¥¿¥Ã¥¯Îΰè€Î¥µ¥€¥º€È€·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
1029        - ¥¿¡Œ¥²¥Ã¥È°Íž€ÎÃÍ¡ÊCHECK_STKSZ_ALIGN¡Ë€ÎÇÜ¿ô€Ç€Ê€€Ÿì¹ç
1030        ¢š €³€Î¥š¥é¡Œ¥Á¥§¥Ã¥¯€Ï¡€istk€¬NULL€Ç€Ê€€Ÿì¹ç€Ë€Î€ß¹Ô€Š
1031
1032¡ö¥Ñ¥¹3€Çž¡œÐ€¹€ë€â€Î
1033¡Šistk€¬¥¹¥¿¥Ã¥¯Îΰè€ÎÀèÆ¬ÈÖÃπȀ·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
1034        - ¥¿¡Œ¥²¥Ã¥È°Íž€ÎÃÍ¡ÊCHECK_STACK_ALIGN¡Ë€ÎÇÜ¿ô€Ç€Ê€€Ÿì¹ç
1035        - NULL€ÎŸì¹ç¡Ê¥¿¡Œ¥²¥Ã¥È°Íž¡€CHECK_STACK_NONNULL¡Ë
1036
1037(10) ¥¿¥€¥à¥€¥Ù¥ó¥ÈŽÉÍý€ËŽØ€¹€ëÄêµÁ
1038
1039¥¿¥€¥à¥€¥Ù¥ó¥ÈŽÉÍý€ËŽØÏ¢€·€Æ¡€Œ¡€ÎÄêµÁ€òÀžÀ®€¹€ë¡¥
1040
1041TMEVTN  _kernel_tmevt_heap[TNUM_TSKID + TNUM_CYCID + TNUM_ALMID];
1042
1043(11) ³Æ¥â¥ž¥å¡Œ¥ë€ÎœéŽü²œŽØ¿ô€ÎÄêµÁ
1044
1045³Æ¥«¡Œ¥Í¥ë¥ª¥Ö¥ž¥§¥¯¥È€ÎŽÉÍý¡€³ä¹þ€ßŽÉÍý¡€CPUÎã³°¥Ï¥ó¥É¥éŽÉÍý€Î³Æµ¡Çœ€ò
1046œéŽü²œŽØ¿ô€òœç€ËžÆ€ÓœÐ€¹ŽØ¿ô¡Ê_kernel_initialize_object¡Ë€òÀžÀ®€¹€ë¡¥Œ¡
1047€Î3€Ä€ÎœéŽü²œŽØ¿ô€òœü€€€Æ€Ï¡€»ÈÍÑ€·€Ê€€µ¡Çœ€ÎœéŽü²œŽØ¿ô€ÏžÆ€ÓœÐ€µ€Ê€€¡¥
1048
1049        _kernel_initialize_task
1050        _kernel_initialize_interrupt
1051        _kernel_initialize_exception
1052
1053€¹€Ù€Æ€Îµ¡Çœ€ò»È€Ã€¿Ÿì¹ç€ËÀžÀ®€µ€ì€ëŽØ¿ô€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
1054
1055void
1056_kernel_initialize_object(void)
1057{
1058        _kernel_initialize_task();
1059        _kernel_initialize_semaphore();
1060        _kernel_initialize_eventflag();
1061        _kernel_initialize_dataqueue();
1062        _kernel_initialize_pridataq();
1063        _kernel_initialize_mailbox();
1064        _kernel_initialize_mempfix();
1065        _kernel_initialize_cyclic();
1066        _kernel_initialize_alarm();
1067        _kernel_initialize_interrupt();
1068        _kernel_initialize_exception();
1069}
1070
1071(12) œéŽü²œ¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô€ÎÄêµÁ
1072
1073¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ëÃæ€ËŽÞ€Þ€ì€ëœéŽü²œ¥ë¡Œ¥Á¥ó€òÄɲÃ
1074€¹€ëÀÅŪAPI¡ÖATT_INI¡×€ËÂЀ·€Æ¡€ÄɲÀ·€¿œéŽü²œ¥ë¡Œ¥Á¥ó€òœç€ËžÆ€ÓœÐ€¹ŽØ
1075¿ô€òÀžÀ®€¹€ë¡¥¶ñÂÎŪ€Ë€Ï¡€
1076
1077ATT_INI({ iniatr, exinf, inirtn });
1078
1079€È€€€ŠÀÅŪAPI€ËÂЀ·€Æ¡€
1080
1081        (inirtn)((intptr_t)(exinf));
1082
1083€òžÆ€ÓœÐ€¹ŽØ¿ô€ò¡€_kernel_call_inirtn€È€€€ŠÌŸÁ°€ÇÀžÀ®€¹€ë¡¥œéŽü²œ¥ë¡Œ¥Á
1084¥ó€òžÆ€ÓœÐ€¹œçœø€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ëÃæ€Ç€ÎÀÅŪ
1085API€Îœçœø€Ë°ìÃ×€µ€»€ë¡¥
1086
1087Î〚€Ð¡€
1088
1089ATT_INI({ TA_NULL, 0, timer_initialize });
1090ATT_INI({ TA_NULL, CONSOLE_PORTID, serial_initialize });
1091
1092€È€€€Š2€Ä€ÎÀÅŪAPI€¬€³€Îœçœø€Çµ­œÒ€µ€ì€¿»þ€ËÀžÀ®€¹€ëŽØ¿ô€ÏŒ¡€ÎÄÌ€ê€Ç€¢
1093€ë¡¥
1094
1095void
1096_kernel_call_inirtn(void)
1097{
1098        (timer_initialize)((intptr_t)(0));
1099        (serial_initialize)((intptr_t)(CONSOLE_PORTID));
1100}
1101
1102(12-1) ¥š¥é¡ŒŸò·ï
1103
1104œéŽü²œ¥ë¡Œ¥Á¥ó€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
1105
1106¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
1107¡Šiniatr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
1108
1109¡ö²ÄÇœ€Ç€¢€ì€Ð¥¿¡Œ¥²¥Ã¥È°ÍžÉô€Çž¡œÐ€¹€ë€â€Î
1110¡Šinirtn€¬¥×¥í¥°¥é¥à€Î³«»ÏÈÖÃπȀ·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
1111
1112(13) œªÎ»œèÍý¥ë¡Œ¥Á¥ó€ÎŒÂ¹ÔŽØ¿ô€ÎÄêµÁ
1113
1114¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ëÃæ€ËŽÞ€Þ€ì€ëœªÎ»œèÍý¥ë¡Œ¥Á¥ó€òÄÉ
1115²Ã€¹€ëÀÅŪAPI¡ÖATT_TER¡×€ËÂЀ·€Æ¡€ÄɲÀ·€¿œªÎ»œèÍý¥ë¡Œ¥Á¥ó€òœç€ËžÆ€ÓœÐ
1116€¹ŽØ¿ô€òÀžÀ®€¹€ë¡¥¶ñÂÎŪ€Ë€Ï¡€
1117
1118ATT_TER({ teratr, exinf, terrtn });
1119
1120€È€€€ŠÀÅŪAPI€ËÂЀ·€Æ¡€
1121
1122        (terrtn)((intptr_t)(exinf));
1123
1124€òžÆ€ÓœÐ€¹ŽØ¿ô€ò¡€_kernel_call_terrtn€È€€€ŠÌŸÁ°€ÇÀžÀ®€¹€ë¡¥œªÎ»œèÍý¥ë¡Œ
1125¥Á¥ó€òžÆ€ÓœÐ€¹œçœø€Ï¡€¥·¥¹¥Æ¥à¥³¥ó¥Õ¥£¥®¥å¥ì¡Œ¥·¥ç¥ó¥Õ¥¡¥€¥ëÃæ€Ç€ÎÀÅŪ
1126API€ÎµÕœç€Ë°ìÃ×€µ€»€ë¡¥
1127
1128Î〚€Ð¡€
1129
1130ATT_TER({ TA_NULL, 0, timer_terminate });
1131ATT_TER({ TA_NULL, CONSOLE_PORTID, serial_terminate });
1132
1133€È€€€Š2€Ä€ÎÀÅŪAPI€¬€³€Îœçœø€Çµ­œÒ€µ€ì€¿»þ€ËÀžÀ®€¹€ëŽØ¿ô€ÏŒ¡€ÎÄÌ€ê€Ç€¢
1134€ë¡¥
1135
1136void
1137_kernel_call_terrtn(void)
1138{
1139        (serial_terminate)((intptr_t)(CONSOLE_PORTID));
1140        (timer_terminate)((intptr_t)(0));
1141}
1142
1143(13-1) ¥š¥é¡ŒŸò·ï
1144
1145œªÎ»œèÍý¥ë¡Œ¥Á¥ó€ËŽØ€¹€ë¥š¥é¡ŒŸò·ï€ÏŒ¡€ÎÄÌ€ê€Ç€¢€ë¡¥
1146
1147¡ö¥Ñ¥¹2€Çž¡œÐ€¹€ë€â€Î
1148¡Šteratr€¬¡ÊTA_NULL¡Ë€Ç€Ê€€Ÿì¹ç¡ÊE_RSATR¡Ë
1149
1150¡ö²ÄÇœ€Ç€¢€ì€Ð¥¿¡Œ¥²¥Ã¥È°ÍžÉô€Çž¡œÐ€¹€ë€â€Î
1151¡Šterrtn€¬¥×¥í¥°¥é¥à€Î³«»ÏÈÖÃπȀ·€ÆÀµ€·€¯€Ê€€Ÿì¹ç¡ÊE_PAR¡Ë
1152
1153°ÊŸå
詳しい使い方は TracBrowser を参照してください。