1 |
|
---|
2 | ï¼ JSPã«ã¼ãã« ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ä»æ§ ï¼
|
---|
3 |
|
---|
4 | ï¼Release 1.4対å¿ï¼æçµæ´æ°: 20-Dec-2003ï¼
|
---|
5 |
|
---|
6 | ------------------------------------------------------------------------
|
---|
7 | TOPPERS/JSP Kernel
|
---|
8 | Toyohashi Open Platform for Embedded Real-Time Systems/
|
---|
9 | Just Standard Profile Kernel
|
---|
10 |
|
---|
11 | Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
|
---|
12 | Toyohashi Univ. of Technology, JAPAN
|
---|
13 |
|
---|
14 | ä¸è¨è使¨©è
|
---|
15 | ã¯ï¼ä»¥ä¸ã® (1)ã(4) ã®æ¡ä»¶ãï¼Free Software Foundation
|
---|
16 | ã«ãã£ã¦å
|
---|
17 | ¬è¡¨ããã¦ãã GNU General Public License ã® Version 2 ã«è¨
|
---|
18 | è¿°ããã¦ããæ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ã¢ï¼æ¬ã½ããã¦ã§ã¢
|
---|
19 | ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹å¤ã»åé
|
---|
20 | å¸ï¼ä»¥ä¸ï¼
|
---|
21 | å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼
|
---|
22 | (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½
|
---|
23 | 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼
|
---|
24 | ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼
|
---|
25 | (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
|
---|
26 | ç¨ã§ããå½¢ã§åé
|
---|
27 | å¸ããå ´åã«ã¯ï¼åé
|
---|
28 | å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨
|
---|
29 | è
|
---|
30 | ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨
|
---|
31 | ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
|
---|
32 | (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
|
---|
33 | ç¨ã§ããªãå½¢ã§åé
|
---|
34 | å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã
|
---|
35 | ã¨ï¼
|
---|
36 | (a) åé
|
---|
37 | å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è
|
---|
38 | ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è
|
---|
39 | 使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
|
---|
40 | (b) åé
|
---|
41 | å¸ã®å½¢æ
|
---|
42 | ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã«
|
---|
43 | å ±åãããã¨ï¼
|
---|
44 | (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ
|
---|
45 | 害ãããï¼ä¸è¨è使¨©è
|
---|
46 | ããã³TOPPERSããã¸ã§ã¯ããå
|
---|
47 | 責ãããã¨ï¼
|
---|
48 |
|
---|
49 | æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è
|
---|
50 | ã
|
---|
51 | ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã
|
---|
52 | å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´
|
---|
53 | æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼
|
---|
54 |
|
---|
55 | @(#) $Id: configurator.txt,v 1.20 2005/07/06 01:40:05 honda Exp $
|
---|
56 | ------------------------------------------------------------------------
|
---|
57 |
|
---|
58 |
|
---|
59 | ãã®ããã¥ã¡ã³ãã§ã¯ï¼JSPã«ã¼ãã«ã®ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ãçæãã¹ããã¡
|
---|
60 | ã¤ã«ã®å
|
---|
61 | 容ã«ã¤ãã¦è§£èª¬ããï¼
|
---|
62 |
|
---|
63 | JSPã«ã¼ãã«ã®ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã¯ï¼ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡
|
---|
64 | ã¤ã«ãå¦çãã¦ï¼ã«ã¼ãã«æ§æãã¡ã¤ã«ï¼kernel_cfg.cï¼ã¨IDèªåå²ä»ãçµæ
|
---|
65 | ãã¡ã¤ã«ï¼kernel_id.hï¼ãçæããï¼ã¾ãï¼éçAPIã®ãã©ã¡ã¼ã¿ãã§ãã¯ã«
|
---|
66 | ç¨ãããã¡ã¤ã«ï¼kernel_chk.cï¼ãçæããï¼
|
---|
67 |
|
---|
68 | IDèªåå²ä»ãçµæãã¡ã¤ã«ã¯ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ãIDçªå·ãå²ãä»ãããªã
|
---|
69 | ã¸ã§ã¯ãã®ååãï¼å²ãä»ããIDçªå·ã«å®ç¾©ãããã¡ã¤ã«ã§ããï¼
|
---|
70 |
|
---|
71 | 以ä¸ã§ã¯ï¼ã«ã¼ãã«æ§æãã¡ã¤ã«ã®å
|
---|
72 | 容ã«ã¤ãã¦è§£èª¬ããï¼
|
---|
73 |
|
---|
74 | (1) åºå®çæé¨å
|
---|
75 |
|
---|
76 | (1-1) æ¨æºã¤ã³ã¯ã«ã¼ããã¡ã¤ã«
|
---|
77 |
|
---|
78 | kernel_cfg.c ç¨ã®ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ãã¤ã³ã¯ã«ã¼ãããããªããã»ããµ
|
---|
79 | ãã£ã¬ã¯ãã£ãï¼#includeï¼ãçæããï¼å
|
---|
80 | ·ä½çã«ã¯ï¼æ¬¡ã®è¡ãçæããï¼
|
---|
81 |
|
---|
82 | #include "kernel_cfg.h"
|
---|
83 |
|
---|
84 | ã¾ãï¼å¿
|
---|
85 | è¦ã§ããã°ï¼IDèªåå²ä»ãçµæãã¡ã¤ã«ãã¤ã³ã¯ã«ã¼ãããããªãã
|
---|
86 | ã»ããµãã£ã¬ã¯ãã£ãï¼#includeï¼ãçæããï¼å
|
---|
87 | ·ä½çã«ã¯ï¼æ¬¡ã®è¡ãçæã
|
---|
88 | ãï¼
|
---|
89 |
|
---|
90 | #include "kernel_id.h"
|
---|
91 |
|
---|
92 | (1-2) ãã¯ãã®ç½®æé åºã®å¶å¾¡
|
---|
93 |
|
---|
94 | ãã¯ãã®ç½®æé åºãå¤ããããã«ï¼ä»¥ä¸ã®ãã¯ãå®ç¾©è¡ãçæããï¼
|
---|
95 |
|
---|
96 | #define CFG_INTHDR_ENTRY(inthdr) INTHDR_ENTRY(inthdr)
|
---|
97 | #define CFG_EXCHDR_ENTRY(exchdr) EXCHDR_ENTRY(exchdr)
|
---|
98 | #define CFG_INT_ENTRY(inthdr) INT_ENTRY(inthdr)
|
---|
99 | #define CFG_EXC_ENTRY(exchdr) EXC_ENTRY(exchdr)
|
---|
100 |
|
---|
101 | ãªãï¼ãããã®ãã¯ãã¯ï¼å
|
---|
102 | ã
|
---|
103 | ã¯éå»ã®ãã¼ã¸ã§ã³ã¨ã®äºææ§ãä¿ã¤ããã«å
|
---|
104 | ¥
|
---|
105 | ãããã®ã§ããï¼ãã ãï¼éå»ã®ãã¼ã¸ã§ã³ã¨ã®äºææ§ãå¿
|
---|
106 | è¦ãªãã¦ãï¼ãã¯
|
---|
107 | ãã®ç½®æé åºãå¤ããããã«å¿
|
---|
108 | è¦ã§ããï¼
|
---|
109 |
|
---|
110 | (2)ãINCLUDEãéçAPIã®å¦ç
|
---|
111 |
|
---|
112 | ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã«å«ã¾ãããINCLUDEãéçAPIã«å¯¾
|
---|
113 | å¿ããããªããã»ããµãã£ã¬ã¯ãã£ãï¼#includeï¼ãçæããï¼ä¾ãã°ï¼
|
---|
114 |
|
---|
115 | INCLUDE("\"sample1.h\"");
|
---|
116 |
|
---|
117 | ã¨ããéçAPIã«å¯¾ãã¦ï¼
|
---|
118 |
|
---|
119 | #include "sample1.h"
|
---|
120 |
|
---|
121 | ã¨ãããã£ã¬ã¯ãã£ããçæããï¼çæãããã£ã¬ã¯ãã£ãã®é åºã¯ï¼ã·ã¹ã
|
---|
122 | ã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ä¸ã§ã®éçAPIã®é åºã«ä¸è´ãããï¼
|
---|
123 |
|
---|
124 | (3) åã«ã¼ãã«ãªãã¸ã§ã¯ãã«é¢ããå®ç¾©
|
---|
125 |
|
---|
126 | ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ä¸ã«ï¼ãªãã¸ã§ã¯ããçæããéç
|
---|
127 | APIãCRE_XXXããå«ã¾ããåã«ã¼ãã«ãªãã¸ã§ã¯ãã«é¢ãã¦ï¼ãªãã¸ã§ã¯ãç
|
---|
128 | æã®ããã®å®ç¾©ãçæããï¼
|
---|
129 |
|
---|
130 | ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã¯ï¼åã種é¡ã®ãªãã¸ã§ã¯ããçæããéçAPIãéãï¼
|
---|
131 | ããããIDçªå·ã®é ã«ä¸¦ã¹æ¿ããï¼åãIDçªå·ã®ãªãã¸ã§ã¯ããçæããéç
|
---|
132 | APIãè¤æ°å«ã¾ãã¦ããå ´åã«ã¯ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ãã¨ã©ã¼ãå ±åããï¼
|
---|
133 | JSPã«ã¼ãã«ã¯ï¼ãªãã¸ã§ã¯ãã®IDçªå·ãé£ç¶ãã¦ãããã¨ãä»®å®ãã¦å®è£
|
---|
134 | ã
|
---|
135 | ã¦ããï¼IDçªå·ãé£ç¶ãã¦ããªãå ´åã«ã¯ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ãã¨ã©ã¼ãå ±
|
---|
136 | åããï¼
|
---|
137 |
|
---|
138 | ã¾ãï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã¯ï¼ãªãã¸ã§ã¯ãã®IDçªå·ã®ä»£ããã«èå¥åãè¨è¿°
|
---|
139 | ããã¦ããå ´åã«ï¼ãã®ãªãã¸ã§ã¯ãã«IDçªå·ãå²ãä»ããï¼IDçªå·ã¯ï¼ä»ã®
|
---|
140 | ãªãã¸ã§ã¯ãã®IDçªå·ã¨éè¤ããªãï¼IDçªå·ãã§ããéãé£ç¶ããããã«å²ã
|
---|
141 | ä»ããï¼ããã§ãIDçªå·ãé£ç¶ã«ãªããªãå ´åã«ã¯ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ãã¨
|
---|
142 | ã©ã¼ãå ±åããï¼
|
---|
143 |
|
---|
144 | åã«ã¼ãã«ãªãã¸ã§ã¯ãã«é¢ããå®ç¾©ã®æ¨æºçãªæ§æã¯ï¼æ¬¡ã®éãã§ããï¼ãª
|
---|
145 | ãã¸ã§ã¯ãã«ãã£ã¦ä¾å¤ãããå ´åã«ã¯ï¼ãªãã¸ã§ã¯ãæ¯ã®é
|
---|
146 | ã§èª¬æããï¼
|
---|
147 |
|
---|
148 | (a) ãªãã¸ã§ã¯ãã®æ°
|
---|
149 |
|
---|
150 | ãªãã¸ã§ã¯ãã®æ°ããã¯ãå®ç¾©ããããªããã»ããµãã£ã¬ã¯ãã£ãï¼#defineï¼
|
---|
151 | ãçæããï¼å
|
---|
152 | ·ä½çã«ã¯ï¼ãªãã¸ã§ã¯ãã®çç¥è¨å·ããXXXãã¨ããã¨ï¼æ¬¡ã®
|
---|
153 | ãããªè¡ãçæããï¼
|
---|
154 |
|
---|
155 | #define TNUM_XXXID <ãªãã¸ã§ã¯ãã®æ°>
|
---|
156 |
|
---|
157 | (b) æå¤§ã®ãªãã¸ã§ã¯ãIDã®å¤æ°ã®å®ç¾©
|
---|
158 |
|
---|
159 | æå¤§ã®ãªãã¸ã§ã¯ãIDãæã¤å¤æ°ã®å®ç¾©ãçæããï¼å
|
---|
160 | ·ä½çã«ã¯ï¼ãªãã¸ã§ã¯
|
---|
161 | ãã®çç¥è¨å·ããXXXï¼xxxãã¨ããã¨ï¼æ¬¡ã®ãããªè¡ãçæããï¼
|
---|
162 |
|
---|
163 | const ID tmax_xxxid = (TMIN_XXXID + TNUM_XXXID - 1);
|
---|
164 |
|
---|
165 | (c) ãªãã¸ã§ã¯ãã«å¿
|
---|
166 | è¦ãªã¡ã¢ãªé åã®å®ç¾©
|
---|
167 |
|
---|
168 | ãªãã¸ã§ã¯ãã«ãã£ã¦ã¯ï¼ãªãã¸ã§ã¯ãã«å¿
|
---|
169 | è¦ãªã¡ã¢ãªé åã®å®ç¾©ãçæããï¼
|
---|
170 | å
|
---|
171 | ·ä½çã«ã¯ï¼ãªãã¸ã§ã¯ãæ¯ã®é
|
---|
172 | ã§èª¬æããï¼
|
---|
173 |
|
---|
174 | (d) ãªãã¸ã§ã¯ãã®åæåãããã¯ã®å®ç¾©
|
---|
175 |
|
---|
176 | ãªãã¸ã§ã¯ãã®åæåãããã¯ã®å®ç¾©ãçæããï¼å
|
---|
177 | ·ä½çã«ã¯ï¼ãªãã¸ã§ã¯ã
|
---|
178 | ã®çç¥è¨å·ããXXXï¼xxxãã¨ããã¨ï¼æ¬¡ã®ãããªè¡ãçæããï¼
|
---|
179 |
|
---|
180 | const XXXINIB xxxinib_table[TNUM_XXXID] = {
|
---|
181 | <ãªãã¸ã§ã¯ãIDã 1 ã®ãªãã¸ã§ã¯ãã®åæåæ
|
---|
182 | å ±>,
|
---|
183 | <ãªãã¸ã§ã¯ãIDã 2 ã®ãªãã¸ã§ã¯ãã®åæåæ
|
---|
184 | å ±>,
|
---|
185 | â¦â¦
|
---|
186 | <ãªãã¸ã§ã¯ãIDã tmax_xxxid ã®ãªãã¸ã§ã¯ãã®åæåæ
|
---|
187 | å ±>
|
---|
188 | };
|
---|
189 |
|
---|
190 | ãªãã¸ã§ã¯ãã®åæåæ
|
---|
191 | å ±ã®å½¢å¼ã¯ï¼ãªãã¸ã§ã¯ãæ¯ã«ç°ãªãï¼å
|
---|
192 | ·ä½çã«ã¯ï¼
|
---|
193 | ãªãã¸ã§ã¯ãæ¯ã®é
|
---|
194 | ã§èª¬æããï¼
|
---|
195 |
|
---|
196 | (e) ãªãã¸ã§ã¯ãã®ã³ã³ããã¼ã«ãããã¯ã®å®ç¾©
|
---|
197 |
|
---|
198 | ãªãã¸ã§ã¯ãã®ã³ã³ããã¼ã«ãããã¯ã®å®ç¾©ãçæããï¼å
|
---|
199 | ·ä½çã«ã¯ï¼ãªãã¸ã§
|
---|
200 | ã¯ãã®çç¥è¨å·ããXXXï¼xxxãã¨ããã¨ï¼æ¬¡ã®ãããªè¡ãçæããï¼
|
---|
201 |
|
---|
202 | XXXCB xxxcb_table[TNUM_XXXID];
|
---|
203 |
|
---|
204 | (3-1) ã¿ã¹ã¯ã«é¢ããå®ç¾©
|
---|
205 |
|
---|
206 | JSPã«ã¼ãã«ã¯ï¼ã¿ã¹ã¯ãä¸ã¤ããªãã±ã¼ã¹ã«å¯¾å¿ãã¦ããªãããï¼ã¿ã¹ã¯ã«
|
---|
207 | é¢ããå®ç¾©ã¯å¿
|
---|
208 | ãçæããªããã°ãªããªãï¼
|
---|
209 |
|
---|
210 | ã¿ã¹ã¯ã«é¢ããå®ç¾©ã®ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«åã¨ãªãã¸ã§ã¯ãã®çç¥è¨å·ã¯æ¬¡
|
---|
211 | ã®éãã§ããï¼ãã ãï¼ã¿ã¹ã¯åæåãããã¯ã®ãã¼ã¿å㯠TINIBï¼å¤æ°åã¯
|
---|
212 | tinib_tableï¼ã¿ã¹ã¯ã³ã³ããã¼ã«ãããã¯ã®ãã¼ã¿å㯠TCBï¼å¤æ°åã¯
|
---|
213 | tcb_table ã§ããï¼ãããããTSKï¼tskãã«ä»£ãã¦ãTï¼tããç¨ãã¦ããï¼ï¼
|
---|
214 |
|
---|
215 | ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«å: task.h
|
---|
216 | ãªãã¸ã§ã¯ãã®çç¥è¨å·: TSK
|
---|
217 |
|
---|
218 | ã¿ã¹ã¯åæåãããã¯ã«ã¯ï¼ãCRE_TSKãéçAPIã§æå®ãããæ
|
---|
219 | å ±ã«å ãã¦ï¼
|
---|
220 | ãDEF_TEXãéçAPIã§æå®ãããæ
|
---|
221 | å ±ãå«ããï¼
|
---|
222 |
|
---|
223 | 以ä¸ã§ã¯ï¼ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã«æ¬¡ã®éçAPIãå«ã¾ã
|
---|
224 | ã¦ããæã«çæãã¹ãæ
|
---|
225 | å ±ã«ã¤ãã¦è¿°ã¹ãï¼
|
---|
226 |
|
---|
227 | CRE_TSK(tskid, { tskatr, exinf, task, itskpri, stksz, stack });
|
---|
228 | DEF_TEX(tskid, { texatr, texrtn });
|
---|
229 |
|
---|
230 | (3-1-1) ã¿ã¹ã¯ã«å¿
|
---|
231 | è¦ãªã¡ã¢ãªé åã®å®ç¾©
|
---|
232 |
|
---|
233 | ã¿ã¹ã¯ã«å¿
|
---|
234 | è¦ãªã¡ã¢ãªé åã¨ãã¦ï¼ã¿ã¹ã¯ã®ã¹ã¿ãã¯é åãããï¼çæããå
|
---|
235 | ã¿ã¹ã¯æ¯ã«ï¼æå®ããããµã¤ãºã®ã¹ã¿ãã¯é åãå®ç¾©ããï¼å
|
---|
236 | ·ä½çã«ã¯ï¼ä¸è¨
|
---|
237 | ã®éçAPIã«å¯¾ãã¦ï¼æ¬¡ã®å®ç¾©ãçæããï¼
|
---|
238 |
|
---|
239 | static __STK_UNIT <ã¹ã¿ãã¯é åã®å¤æ°å>[__TCOUNT_STK_UNIT(stksz)];
|
---|
240 |
|
---|
241 | ããã§ï¼<ã¹ã¿ãã¯é åã®å¤æ°å> ã¯ï¼ã¿ã¹ã¯æ¯ã«ç°ãªãèå¥åãçæãã¦ç¨
|
---|
242 | ããï¼
|
---|
243 |
|
---|
244 | (3-1-2) ã¿ã¹ã¯ã®åæåæ
|
---|
245 | å ±
|
---|
246 |
|
---|
247 | ã¿ã¹ã¯åæåãããã¯ä¸ã«çæããã¿ã¹ã¯ã®åæåæ
|
---|
248 | å ±ã¯ï¼æ¬¡ã®å½¢å¼ã¨ããï¼
|
---|
249 |
|
---|
250 | { tskatr, (VP_INT)(exinf), (FP)(task), INT_PRIORITY(itskpri),
|
---|
251 | __TROUND_UNIT_STK(stksz), <ã¹ã¿ãã¯é åã®å¤æ°å>,
|
---|
252 | texatr, (FP)(texrtn) }
|
---|
253 |
|
---|
254 | ããã§ï¼CRE_TSK ã«å¯¾å¿ãã DEF_TEX ããªãå ´åã«ã¯ï¼texatr ã TA_NULLï¼
|
---|
255 | texrtn ã NULL ã¨ããï¼
|
---|
256 |
|
---|
257 | (3-1-3) ã¿ã¹ã¯çæé åºãã¼ãã«ã®å®ç¾©
|
---|
258 |
|
---|
259 | ã¿ã¹ã¯ã«å¯¾ãã¦ã¯ï¼çæãããé åºï¼ã¿ã¹ã¯ãçæããéçAPIãè¨è¿°ããã
|
---|
260 | é åºï¼ããã¼ãã«ã«åºåããå¿
|
---|
261 | è¦ãããï¼ããã¯ï¼ã¿ã¹ã¯ã®çæãããé åºã§ï¼
|
---|
262 | ã¿ã¹ã¯ã®åæåï¼ããå
|
---|
263 | ·ä½çã«ã¯ï¼ã¿ã¹ã¯ã®èµ·åï¼ãè¡ãå¿
|
---|
264 | è¦ãããããã§ã
|
---|
265 | ãï¼
|
---|
266 |
|
---|
267 | å
|
---|
268 | ·ä½çã«ã¯ï¼æ¬¡ã®ãããªè¡ãçæããï¼
|
---|
269 |
|
---|
270 | const ID torder_table[TNUM_TSKID] = {
|
---|
271 | <æåã«çæãããã¿ã¹ã¯ã®ã¿ã¹ã¯ID>,
|
---|
272 | <2çªç®ã«çæãããã¿ã¹ã¯ã®ã¿ã¹ã¯ID>,
|
---|
273 | â¦â¦
|
---|
274 | <æå¾ã«çæãããã¿ã¹ã¯ã®ã¿ã¹ã¯ID>
|
---|
275 | };
|
---|
276 |
|
---|
277 | (3-1-4) ã¨ã©ã¼æ¡ä»¶
|
---|
278 |
|
---|
279 | ã¿ã¹ã¯ã®åæåã«é¢ããã¨ã©ã¼æ¡ä»¶ã¯æ¬¡ã®éãã§ããï¼
|
---|
280 |
|
---|
281 | ã»DEF_TEX ã«å¯¾å¿ãã CRE_TSK ããªãå ´åï¼E_NOEXSï¼
|
---|
282 | ã»(tskatr & ~(TA_ACT)) ã 0 ã§ãªãå ´åï¼E_RSATRï¼
|
---|
283 | ã»(TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI) ã§ãªãå ´åï¼E_PARï¼
|
---|
284 | ã»stack ã NULL ã§ãªãå ´åï¼E_NOSPTï¼
|
---|
285 | ã»texatr ã 0 ã§ãªãå ´åï¼E_RSATRï¼
|
---|
286 |
|
---|
287 | â» ãã®ä»ã«ï¼task ã texrtn ãããã°ã©ã ã®éå§çªå°ã¨ãã¦æ£ãããªãå ´å
|
---|
288 | ãï¼stksz ãå°ããããå ´åã«ãã¨ã©ã¼ã¨ãã¹ãã ãï¼ã¨ã©ã¼æ¡ä»¶ãã¿ã¼ã²ã
|
---|
289 | ãã«ä¾åãã¦ãã¾ãããï¼ä»å¾ã®èª²é¡ã¨ããï¼
|
---|
290 |
|
---|
291 | (3-2) ã»ããã©ã«é¢ããå®ç¾©
|
---|
292 |
|
---|
293 | ã»ããã©ã«é¢ããå®ç¾©ã®ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«åã¨ãªãã¸ã§ã¯ãã®çç¥è¨å·ã¯
|
---|
294 | 次ã®éãã§ããï¼
|
---|
295 |
|
---|
296 | ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«å: semaphore.h
|
---|
297 | ãªãã¸ã§ã¯ãã®çç¥è¨å·: SEM
|
---|
298 |
|
---|
299 | 以ä¸ã§ã¯ï¼ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã«æ¬¡ã®éçAPIãå«ã¾ã
|
---|
300 | ã¦ããæã«çæãã¹ãæ
|
---|
301 | å ±ã«ã¤ãã¦è¿°ã¹ãï¼ãªãï¼ã»ããã©ã«å¿
|
---|
302 | è¦ãªã¡ã¢ãªé
|
---|
303 | åã¯ãªãï¼
|
---|
304 |
|
---|
305 | CRE_SEM(semid, { sematr, isemcnt, maxsem });
|
---|
306 |
|
---|
307 | (3-2-1) ã»ããã©ã®åæåæ
|
---|
308 | å ±
|
---|
309 |
|
---|
310 | ã»ããã©åæåãããã¯ä¸ã«çæããã»ããã©ã®åæåæ
|
---|
311 | å ±ã¯ï¼æ¬¡ã®å½¢å¼ã¨ã
|
---|
312 | ãï¼
|
---|
313 |
|
---|
314 | { sematr, isemcnt, maxsem }
|
---|
315 |
|
---|
316 | (3-2-2) ã¨ã©ã¼æ¡ä»¶
|
---|
317 |
|
---|
318 | ã»ããã©ã®åæåã«é¢ããã¨ã©ã¼æ¡ä»¶ã¯æ¬¡ã®éãã§ããï¼
|
---|
319 |
|
---|
320 | ã»(sematr & ~(TA_TPRI)) ã 0 ã§ãªãå ´åï¼E_RSATRï¼
|
---|
321 | ã»(isemcnt > maxsem) ã®å ´åï¼E_PARï¼
|
---|
322 | ã»(1 <= maxsem && maxsem <= TMAX_MAXSEM) ã§ãªãå ´åï¼E_PARï¼
|
---|
323 |
|
---|
324 | (3-3) ã¤ãã³ããã©ã°ã«é¢ããå®ç¾©
|
---|
325 |
|
---|
326 | ã¤ãã³ããã©ã°ã«é¢ããå®ç¾©ã®ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«åã¨ãªãã¸ã§ã¯ãã®çç¥
|
---|
327 | è¨å·ã¯æ¬¡ã®éãã§ããï¼
|
---|
328 |
|
---|
329 | ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«å: eventflag.h
|
---|
330 | ãªãã¸ã§ã¯ãã®çç¥è¨å·: FLG
|
---|
331 |
|
---|
332 | 以ä¸ã§ã¯ï¼ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã«æ¬¡ã®éçAPIãå«ã¾ã
|
---|
333 | ã¦ããæã«çæãã¹ãæ
|
---|
334 | å ±ã«ã¤ãã¦è¿°ã¹ãï¼ãªãï¼ã¤ãã³ããã©ã°ã«å¿
|
---|
335 | è¦ãªã¡
|
---|
336 | ã¢ãªé åã¯ãªãï¼
|
---|
337 |
|
---|
338 | CRE_FLG(flgid, { flgatr, iflgptn });
|
---|
339 |
|
---|
340 | (3-3-1) ã¤ãã³ããã©ã°ã®åæåæ
|
---|
341 | å ±
|
---|
342 |
|
---|
343 | ã¤ãã³ããã©ã°åæåãããã¯ä¸ã«çæããã¤ãã³ããã©ã°ã®åæåæ
|
---|
344 | å ±ã¯ï¼
|
---|
345 | 次ã®å½¢å¼ã¨ããï¼
|
---|
346 |
|
---|
347 | { flgatr, iflgptn }
|
---|
348 |
|
---|
349 | (3-3-2) ã¨ã©ã¼æ¡ä»¶
|
---|
350 |
|
---|
351 | ã¤ãã³ããã©ã°ã®åæåã«é¢ããã¨ã©ã¼æ¡ä»¶ã¯æ¬¡ã®éãã§ããï¼
|
---|
352 |
|
---|
353 | ã»(flgatr & ~(TA_TPRI|TA_CLR)) ã 0 ã§ãªãå ´åï¼E_RSATRï¼
|
---|
354 |
|
---|
355 | (3-4) ãã¼ã¿ãã¥ã¼ã«é¢ããå®ç¾©
|
---|
356 |
|
---|
357 | ãã¼ã¿ãã¥ã¼ã«é¢ããå®ç¾©ã®ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«åã¨ãªãã¸ã§ã¯ãã®çç¥è¨
|
---|
358 | å·ã¯æ¬¡ã®éãã§ããï¼
|
---|
359 |
|
---|
360 | ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«å: dataqueue.h
|
---|
361 | ãªãã¸ã§ã¯ãã®çç¥è¨å·: DTQ
|
---|
362 |
|
---|
363 | 以ä¸ã§ã¯ï¼ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã«æ¬¡ã®éçAPIãå«ã¾ã
|
---|
364 | ã¦ããæã«çæãã¹ãæ
|
---|
365 | å ±ã«ã¤ãã¦è¿°ã¹ãï¼
|
---|
366 |
|
---|
367 | CRE_DTQ(dtqid, { dtqatr, dtqcnt, dtq });
|
---|
368 |
|
---|
369 | (3-4-1) ãã¼ã¿ãã¥ã¼ã«å¿
|
---|
370 | è¦ãªã¡ã¢ãªé åã®å®ç¾©
|
---|
371 |
|
---|
372 | ãã¼ã¿ãã¥ã¼ã«å¿
|
---|
373 | è¦ãªã¡ã¢ãªé åã¨ãã¦ï¼ãã¼ã¿ãã¥ã¼é åãããï¼çæãã
|
---|
374 | åãã¼ã¿ãã¥ã¼æ¯ã«ï¼å¿
|
---|
375 | è¦ãªãµã¤ãºã®ãã¼ã¿ãã¥ã¼é åãå®ç¾©ããï¼å
|
---|
376 | ·ä½çã«
|
---|
377 | ã¯ï¼ä¸è¨ã®éçAPIã«å¯¾ãã¦ï¼æ¬¡ã®å®ç¾©ãçæããï¼
|
---|
378 |
|
---|
379 | #if (dtqcnt) > 0
|
---|
380 | static VP_INT <ãã¼ã¿ãã¥ã¼é åã®å¤æ°å>[dtqcnt];
|
---|
381 | #else
|
---|
382 | #define <ãã¼ã¿ãã¥ã¼é åã®å¤æ°å> NULL
|
---|
383 | #endif
|
---|
384 |
|
---|
385 | ããã§ï¼<ãã¼ã¿ãã¥ã¼é åã®å¤æ°å> ã¯ï¼ãã¼ã¿ãã¥ã¼æ¯ã«ç°ãªãèå¥åã
|
---|
386 | çæãã¦ç¨ããï¼
|
---|
387 |
|
---|
388 | (3-4-2) ãã¼ã¿ãã¥ã¼ã®åæåæ
|
---|
389 | å ±
|
---|
390 |
|
---|
391 | ãã¼ã¿ãã¥ã¼åæåãããã¯ä¸ã«çæãããã¼ã¿ãã¥ã¼ã®åæåæ
|
---|
392 | å ±ã¯ï¼æ¬¡ã®
|
---|
393 | å½¢å¼ã¨ããï¼
|
---|
394 |
|
---|
395 | { dtqatr, dtqcnt, <ãã¼ã¿ãã¥ã¼é åã®å¤æ°å> }
|
---|
396 |
|
---|
397 | (3-4-3) ã¨ã©ã¼æ¡ä»¶
|
---|
398 |
|
---|
399 | ãã¼ã¿ãã¥ã¼ã®åæåã«é¢ããã¨ã©ã¼æ¡ä»¶ã¯æ¬¡ã®éãã§ããï¼
|
---|
400 |
|
---|
401 | ã»(dtqatr & ~(TA_TPRI)) ã 0 ã§ãªãå ´åï¼E_RSATRï¼
|
---|
402 | ã»dtq ã NULL ã§ãªãå ´åï¼E_NOSPTï¼
|
---|
403 |
|
---|
404 | (3-5) ã¡ã¼ã«ããã¯ã¹ã«é¢ããå®ç¾©
|
---|
405 |
|
---|
406 | ã¡ã¼ã«ããã¯ã¹ã«é¢ããå®ç¾©ã®ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«åã¨ãªãã¸ã§ã¯ãã®çç¥
|
---|
407 | è¨å·ã¯æ¬¡ã®éãã§ããï¼
|
---|
408 |
|
---|
409 | ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«å: mailbox.h
|
---|
410 | ãªãã¸ã§ã¯ãã®çç¥è¨å·: MBX
|
---|
411 |
|
---|
412 | 以ä¸ã§ã¯ï¼ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã«æ¬¡ã®éçAPIãå«ã¾ã
|
---|
413 | ã¦ããæã«çæãã¹ãæ
|
---|
414 | å ±ã«ã¤ãã¦è¿°ã¹ãï¼ãªãï¼ã¡ã¼ã«ããã¯ã¹ã«å¿
|
---|
415 | è¦ãªã¡
|
---|
416 | ã¢ãªé åã¯ãªãï¼
|
---|
417 |
|
---|
418 | CRE_MBX(mbxid, { mbxatr, maxmpri, mprihd });
|
---|
419 |
|
---|
420 | (3-5-1) ã¡ã¼ã«ããã¯ã¹ã®åæåæ
|
---|
421 | å ±
|
---|
422 |
|
---|
423 | ã¡ã¼ã«ããã¯ã¹åæåãããã¯ä¸ã«çæããã¡ã¼ã«ããã¯ã¹ã®åæåæ
|
---|
424 | å ±ã¯ï¼
|
---|
425 | 次ã®å½¢å¼ã¨ããï¼
|
---|
426 |
|
---|
427 | { mbxatr, maxmpri }
|
---|
428 |
|
---|
429 | (3-5-2) ã¨ã©ã¼æ¡ä»¶
|
---|
430 |
|
---|
431 | ã¡ã¼ã«ããã¯ã¹ã®åæåã«é¢ããã¨ã©ã¼æ¡ä»¶ã¯æ¬¡ã®éãã§ããï¼
|
---|
432 |
|
---|
433 | ã»(mbxatr & ~(TA_TPRI|TA_MPRI)) ã 0 ã§ãªãå ´åï¼E_RSATRï¼
|
---|
434 | ã»(TMIN_MPRI <= maxmpri && maxmpri <= TMAX_MPRI) ã§ãªãå ´åï¼E_PARï¼
|
---|
435 | ã»mprihd ã NULL ã§ãªãå ´åï¼E_NOSPTï¼
|
---|
436 |
|
---|
437 | (3-6) åºå®é·ã¡ã¢ãªãã¼ã«ã«é¢ããå®ç¾©
|
---|
438 |
|
---|
439 | åºå®é·ã¡ã¢ãªãã¼ã«ã«é¢ããå®ç¾©ã®ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«åã¨ãªãã¸ã§ã¯ãã®
|
---|
440 | çç¥è¨å·ã¯æ¬¡ã®éãã§ããï¼
|
---|
441 |
|
---|
442 | ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«å: mempfix.h
|
---|
443 | ãªãã¸ã§ã¯ãã®çç¥è¨å·: MPF
|
---|
444 |
|
---|
445 | 以ä¸ã§ã¯ï¼ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã«æ¬¡ã®éçAPIãå«ã¾ã
|
---|
446 | ã¦ããæã«çæãã¹ãæ
|
---|
447 | å ±ã«ã¤ãã¦è¿°ã¹ãï¼
|
---|
448 |
|
---|
449 | CRE_MPF(mpfid, { mpfatr, blkcnt, blksz, mpf });
|
---|
450 |
|
---|
451 | (3-6-1) åºå®é·ã¡ã¢ãªãã¼ã«ã«å¿
|
---|
452 | è¦ãªã¡ã¢ãªé åã®å®ç¾©
|
---|
453 |
|
---|
454 | åºå®é·ã¡ã¢ãªãã¼ã«ã«å¿
|
---|
455 | è¦ãªã¡ã¢ãªé åã¨ãã¦ï¼åºå®é·ã¡ã¢ãªãã¼ã«é åãã
|
---|
456 | ãï¼çæããååºå®é·ã¡ã¢ãªãã¼ã«æ¯ã«ï¼å¿
|
---|
457 | è¦ãªãµã¤ãºã®åºå®é·ã¡ã¢ãªãã¼ã«
|
---|
458 | é åãå®ç¾©ããï¼å
|
---|
459 | ·ä½çã«ã¯ï¼ä¸è¨ã®éçAPIã«å¯¾ãã¦ï¼æ¬¡ã®å®ç¾©ãçæããï¼
|
---|
460 |
|
---|
461 | static __MPF_UNIT <åºå®é·ã¡ã¢ãªãã¼ã«é åã®å¤æ°å>
|
---|
462 | [__TCOUNT_MPF_UNIT(blksz) * (blkcnt)];
|
---|
463 |
|
---|
464 | ããã§ï¼<åºå®é·ã¡ã¢ãªãã¼ã«é åã®å¤æ°å> ã¯ï¼åºå®é·ã¡ã¢ãªãã¼ã«æ¯ã«ç°
|
---|
465 | ãªãèå¥åãçæãã¦ç¨ããï¼
|
---|
466 |
|
---|
467 | (3-6-2) åºå®é·ã¡ã¢ãªãã¼ã«ã®åæåæ
|
---|
468 | å ±
|
---|
469 |
|
---|
470 | åºå®é·ã¡ã¢ãªãã¼ã«åæåãããã¯ä¸ã«çæããåºå®é·ã¡ã¢ãªãã¼ã«ã®åæå
|
---|
471 | æ
|
---|
472 | å ±ã¯ï¼æ¬¡ã®å½¢å¼ã¨ããï¼
|
---|
473 |
|
---|
474 | { mpfatr, __TROUND_MPF_UNIT(blksz), <åºå®é·ã¡ã¢ãªãã¼ã«é åã®å¤æ°å>,
|
---|
475 | (VP)(((VB *) <åºå®é·ã¡ã¢ãªãã¼ã«é åã®å¤æ°å>)
|
---|
476 | + sizeof(<åºå®é·ã¡ã¢ãªãã¼ã«é åã®å¤æ°å>)) }
|
---|
477 |
|
---|
478 | (3-6-3) ã¨ã©ã¼æ¡ä»¶
|
---|
479 |
|
---|
480 | åºå®é·ã¡ã¢ãªãã¼ã«ã®åæåã«é¢ããã¨ã©ã¼æ¡ä»¶ã¯æ¬¡ã®éãã§ããï¼
|
---|
481 |
|
---|
482 | ã»(mpfatr & ~(TA_TPRI)) ã 0 ã§ãªãå ´åï¼E_RSATRï¼
|
---|
483 | ã»blkcnt ã 0 ã®å ´åï¼E_PARï¼
|
---|
484 | ã»blksz ã 0 ã®å ´åï¼E_PARï¼
|
---|
485 | ã»mpf ã NULL ã§ãªãå ´åï¼E_NOSPTï¼
|
---|
486 |
|
---|
487 | (3-7) 卿ãã³ãã©ã«é¢ããå®ç¾©
|
---|
488 |
|
---|
489 | 卿ãã³ãã©ã«é¢ããå®ç¾©ã®ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«åã¨ãªãã¸ã§ã¯ãã®çç¥è¨
|
---|
490 | å·ã¯æ¬¡ã®éãã§ããï¼
|
---|
491 |
|
---|
492 | ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«å: cyclic.h
|
---|
493 | ãªãã¸ã§ã¯ãã®çç¥è¨å·: CYC
|
---|
494 |
|
---|
495 | 以ä¸ã§ã¯ï¼ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã«æ¬¡ã®éçAPIãå«ã¾ã
|
---|
496 | ã¦ããæã«çæãã¹ãæ
|
---|
497 | å ±ã«ã¤ãã¦è¿°ã¹ãï¼ãªãï¼å¨æãã³ãã©ã«å¿
|
---|
498 | è¦ãªã¡ã¢
|
---|
499 | ãªé åã¯ãªãï¼
|
---|
500 |
|
---|
501 | CRE_CYC(cycid, { cycatr, exinf, cychdr, cyctim, cycphs });
|
---|
502 |
|
---|
503 | (3-7-1) 卿ãã³ãã©ã®åæåæ
|
---|
504 | å ±
|
---|
505 |
|
---|
506 | 卿ãã³ãã©åæåãããã¯ä¸ã«çæãã卿ãã³ãã©ã®åæåæ
|
---|
507 | å ±ã¯ï¼æ¬¡ã®
|
---|
508 | å½¢å¼ã¨ããï¼
|
---|
509 |
|
---|
510 | { cycatr, exinf, (FP)(cychdr), cyctim, cycphs }
|
---|
511 |
|
---|
512 | (3-7-2) ã¨ã©ã¼æ¡ä»¶
|
---|
513 |
|
---|
514 | 卿ãã³ãã©ã®åæåã«é¢ããã¨ã©ã¼æ¡ä»¶ã¯æ¬¡ã®éãã§ããï¼
|
---|
515 |
|
---|
516 | ã»(cycatr & ~(TA_STA)) ã 0 ã§ãªãå ´åï¼E_RSATRï¼
|
---|
517 | ã»(cyctim > TMAX_RELTIM) ã®å ´åï¼E_PARï¼
|
---|
518 | ã»(cycphs > TMAX_RELTIM) ã®å ´åï¼E_PARï¼
|
---|
519 |
|
---|
520 | â» ãã®ä»ã«ï¼cychdr ãããã°ã©ã ã®éå§çªå°ã¨ãã¦æ£ãããªãå ´åã«ãã¨ã©ã¼
|
---|
521 | ã¨ãã¹ãã ãï¼ã¨ã©ã¼æ¡ä»¶ãã¿ã¼ã²ããã«ä¾åãã¦ãã¾ãããï¼ä»å¾ã®èª²é¡ã¨
|
---|
522 | ããï¼
|
---|
523 |
|
---|
524 | (4) å²è¾¼ã¿ãã³ãã©ã«é¢ããå®ç¾©
|
---|
525 |
|
---|
526 | ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ä¸ã«ï¼å²è¾¼ã¿ãã³ãã©ãå®ç¾©ããé
|
---|
527 | çAPIãDEF_INHããå«ã¾ãã¦ããå ´åã«ï¼å²è¾¼ã¿ãã³ãã©ã«é¢ããå®ç¾©ãçæ
|
---|
528 | ããï¼å
|
---|
529 | ·ä½çã«ã¯æ¬¡ã®éãï¼
|
---|
530 |
|
---|
531 | (4-1) å®ç¾©ããå²è¾¼ã¿ãã³ãã©ã®æ°
|
---|
532 |
|
---|
533 | å®ç¾©ããå²è¾¼ã¿ãã³ãã©ã®æ°ããã¯ãå®ç¾©ããããªããã»ããµãã£ã¬ã¯ãã£ã
|
---|
534 | ï¼#defineï¼ãçæããï¼ã¾ãï¼ãã®å¤ãæã¤å¤æ°ã®å®ç¾©ãçæããï¼å
|
---|
535 | ·ä½ç
|
---|
536 | ã«ã¯ï¼æ¬¡ã®ãããªè¡ãçæããï¼
|
---|
537 |
|
---|
538 | #define TNUM_INHNO <å®ç¾©ããå²è¾¼ã¿ãã³ãã©ã®æ°>
|
---|
539 | const UINT tnum_inhno = TNUM_INHNO;
|
---|
540 |
|
---|
541 | (4-2) å²è¾¼ã¿ãã³ãã©ã®åºå
|
---|
542 | ¥å£å¦ç
|
---|
543 |
|
---|
544 | å®ç¾©ããåå²è¾¼ã¿ãã³ãã©æ¯ã«ï¼å²è¾¼ã¿ãã³ãã©ã®åºå
|
---|
545 | ¥å£å¦çã«ã¼ãã³ãçæ
|
---|
546 | ããï¼å
|
---|
547 | ·ä½çã«ã¯ï¼
|
---|
548 |
|
---|
549 | DEF_INH(inhno, { inhatr, inthdr });
|
---|
550 |
|
---|
551 | ã¨ããéçAPIã«å¯¾ãã¦ï¼
|
---|
552 |
|
---|
553 | CFG_INTHDR_ENTRY(inthdr);
|
---|
554 |
|
---|
555 | ã¨ããè¡ãçæããï¼
|
---|
556 |
|
---|
557 | (4-3) å²è¾¼ã¿ãã³ãã©åæåãããã¯ã®å®ç¾©
|
---|
558 |
|
---|
559 | å²è¾¼ã¿ãã³ãã©åæåãããã¯ãçæããï¼å
|
---|
560 | ·ä½çã«ã¯ï¼æ¬¡ã®ãããªè¡ãçæ
|
---|
561 | ããï¼
|
---|
562 |
|
---|
563 | const INHINIB inhinib_table[TNUM_INHNO] = {
|
---|
564 | <å²è¾¼ã¿ãã³ãã© 1 ã®åæåæ
|
---|
565 | å ±>,
|
---|
566 | <å²è¾¼ã¿ãã³ãã© 2 ã®åæåæ
|
---|
567 | å ±>,
|
---|
568 | â¦â¦
|
---|
569 | <å²è¾¼ã¿ãã³ãã© TNUM_INHNO ã®åæåæ
|
---|
570 | å ±>
|
---|
571 | };
|
---|
572 |
|
---|
573 | ãã®ä¸ã®å²è¾¼ã¿ãã³ãã©ã®åæåæ
|
---|
574 | å ±ã¯ï¼æ¬¡ã®å½¢å¼ã¨ããï¼
|
---|
575 |
|
---|
576 | { inhno, inhatr, (FP)CFG_INT_ENTRY(inthdr) }
|
---|
577 |
|
---|
578 | (4-4) ã¨ã©ã¼æ¡ä»¶
|
---|
579 |
|
---|
580 | å²è¾¼ã¿ãã³ãã©ã«é¢ããã¨ã©ã¼æ¡ä»¶ã¯æ¬¡ã®éãã§ããï¼
|
---|
581 |
|
---|
582 | ã»inhatr ã 0 ã§ãªãå ´åï¼E_RSATRï¼
|
---|
583 |
|
---|
584 | â» ãã®ä»ã«ï¼inthdr ãããã°ã©ã ã®éå§çªå°ã¨ãã¦æ£ãããªãå ´åãï¼
|
---|
585 | inhno ãå²è¾¼ã¿ãã³ãã©çªå·ã¨ãã¦æ£ãããªãå ´åã«ãã¨ã©ã¼ã¨ãã¹ãã ãï¼
|
---|
586 | ã¨ã©ã¼æ¡ä»¶ãã¿ã¼ã²ããã«ä¾åãã¦ãã¾ãããï¼ä»å¾ã®èª²é¡ã¨ããï¼
|
---|
587 |
|
---|
588 | (5) CPUä¾å¤ãã³ãã©ã«é¢ããå®ç¾©
|
---|
589 |
|
---|
590 | ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ä¸ã«ï¼CPUä¾å¤ãã³ãã©ãå®ç¾©ãã
|
---|
591 | éçAPIãDEF_EXCããå«ã¾ãã¦ããå ´åã«ï¼CPUä¾å¤ãã³ãã©ã«é¢ããå®ç¾©ã
|
---|
592 | çæããï¼å
|
---|
593 | ·ä½çã«ã¯æ¬¡ã®éãï¼
|
---|
594 |
|
---|
595 | (5-1) å®ç¾©ããCPUä¾å¤ãã³ãã©ã®æ°
|
---|
596 |
|
---|
597 | å®ç¾©ããCPUä¾å¤ãã³ãã©ã®æ°ããã¯ãå®ç¾©ããããªããã»ããµãã£ã¬ã¯ãã£
|
---|
598 | ãï¼#defineï¼ãçæããï¼ã¾ãï¼ãã®å¤ãæã¤å¤æ°ã®å®ç¾©ãçæããï¼å
|
---|
599 | ·ä½
|
---|
600 | çã«ã¯ï¼æ¬¡ã®ãããªè¡ãçæããï¼
|
---|
601 |
|
---|
602 | #define TNUM_EXCNO <å®ç¾©ããCPUä¾å¤ãã³ãã©ã®æ°>
|
---|
603 | const UINT tnum_excno = TNUM_EXCNO;
|
---|
604 |
|
---|
605 | (5-2) CPUä¾å¤ãã³ãã©ã®åºå
|
---|
606 | ¥å£å¦ç
|
---|
607 |
|
---|
608 | å®ç¾©ããåCPUä¾å¤ãã³ãã©æ¯ã«ï¼CPUä¾å¤ãã³ãã©ã®åºå
|
---|
609 | ¥å£å¦çã«ã¼ãã³ãç
|
---|
610 | æããï¼å
|
---|
611 | ·ä½çã«ã¯ï¼
|
---|
612 |
|
---|
613 | DEF_EXC(excno, { excatr, exchdr });
|
---|
614 |
|
---|
615 | ã¨ããéçAPIã«å¯¾ãã¦ï¼
|
---|
616 |
|
---|
617 | CFG_EXCHDR_ENTRY(exchdr);
|
---|
618 |
|
---|
619 | ã¨ããè¡ãçæããï¼
|
---|
620 |
|
---|
621 | (5-3) CPUä¾å¤ãã³ãã©åæåãããã¯ã®å®ç¾©
|
---|
622 |
|
---|
623 | CPUä¾å¤ãã³ãã©åæåãããã¯ãçæããï¼å
|
---|
624 | ·ä½çã«ã¯ï¼æ¬¡ã®ãããªè¡ãç
|
---|
625 | æããï¼
|
---|
626 |
|
---|
627 | const EXCINIB excinib_table[TNUM_EXCNO] = {
|
---|
628 | <CPUä¾å¤ãã³ãã© 1 ã®åæåæ
|
---|
629 | å ±>,
|
---|
630 | <CPUä¾å¤ãã³ãã© 2 ã®åæåæ
|
---|
631 | å ±>,
|
---|
632 | â¦â¦
|
---|
633 | <CPUä¾å¤ãã³ãã© TNUM_EXCNO ã®åæåæ
|
---|
634 | å ±>
|
---|
635 | };
|
---|
636 |
|
---|
637 | ãã®ä¸ã®CPUä¾å¤ãã³ãã©ã®åæåæ
|
---|
638 | å ±ã¯ï¼æ¬¡ã®å½¢å¼ã¨ããï¼
|
---|
639 |
|
---|
640 | { excno, excatr, (FP)CFG_EXC_ENTRY(exchdr) }
|
---|
641 |
|
---|
642 | (5-4) ã¨ã©ã¼æ¡ä»¶
|
---|
643 |
|
---|
644 | CPUä¾å¤ãã³ãã©ã«é¢ããã¨ã©ã¼æ¡ä»¶ã¯æ¬¡ã®éãã§ããï¼
|
---|
645 |
|
---|
646 | ã»excatr ã 0 ã§ãªãå ´åï¼E_RSATRï¼
|
---|
647 |
|
---|
648 | â» ãã®ä»ã«ï¼excthdr ãããã°ã©ã ã®éå§çªå°ã¨ãã¦æ£ãããªãå ´åãï¼
|
---|
649 | excno ãCPUä¾å¤ãã³ãã©çªå·ã¨ãã¦æ£ãããªãå ´åã«ãã¨ã©ã¼ã¨ãã¹ãã ãï¼
|
---|
650 | ã¨ã©ã¼æ¡ä»¶ãã¿ã¼ã²ããã«ä¾åãã¦ãã¾ãããï¼ä»å¾ã®èª²é¡ã¨ããï¼
|
---|
651 |
|
---|
652 | (6) ã¿ã¤ã ã¤ãã³ã管çã«é¢ããå®ç¾©
|
---|
653 |
|
---|
654 | ã¿ã¤ã ã¤ãã³ã管çã«é¢é£ãã¦ï¼æ¬¡ã®å®ç¾©ãçæããï¼
|
---|
655 |
|
---|
656 | TMEVTN tmevt_heap[TNUM_TSKID + TNUM_CYCID];
|
---|
657 |
|
---|
658 | (7) åã¢ã¸ã¥ã¼ã«ã®åæå颿°ã®å®ç¾©
|
---|
659 |
|
---|
660 | åã«ã¼ãã«ãªãã¸ã§ã¯ãã®ç®¡çï¼å²è¾¼ã¿ç®¡çï¼CPUä¾å¤ãã³ãã©ç®¡çã®åæ©è½
|
---|
661 | ãåæå颿°ãé ã«å¼ã³åºã颿°ï¼object_initializeï¼ãçæããï¼ä½¿ç¨ã
|
---|
662 | ãªãæ©è½ã®åæå颿°ã¯ï¼å¼ã³åºããªãï¼
|
---|
663 |
|
---|
664 | ãã¹ã¦ã®æ©è½ã使ã£ãå ´åã«çæããã颿°ã¯æ¬¡ã®éãã§ããï¼
|
---|
665 |
|
---|
666 | void
|
---|
667 | object_initialize()
|
---|
668 | {
|
---|
669 | task_initialize();
|
---|
670 | semaphore_initialize();
|
---|
671 | eventflag_initialize();
|
---|
672 | dataqueue_initialize();
|
---|
673 | mailbox_initialize();
|
---|
674 | mempfix_initialize();
|
---|
675 | cyclic_initialize();
|
---|
676 | interrupt_initialize();
|
---|
677 | exception_initialize();
|
---|
678 | }
|
---|
679 |
|
---|
680 | (8) åæåã«ã¼ãã³ã®å®è¡é¢æ°ã®å®ç¾©
|
---|
681 |
|
---|
682 | ãATT_INIãéçAPIã§è¿½å ããåæåã«ã¼ãã³ãé ã«å¼ã³åºã颿°ãçæããï¼
|
---|
683 | å
|
---|
684 | ·ä½çã«ã¯ï¼
|
---|
685 |
|
---|
686 | ATT_INI({ iniatr, exinf, inirtn });
|
---|
687 |
|
---|
688 | ã¨ããéçAPIã«å¯¾ãã¦ï¼
|
---|
689 |
|
---|
690 | inirtn((VP_INT)(exinf));
|
---|
691 |
|
---|
692 | ãå¼ã³åºã颿°ãï¼call_inirtn ã¨ããååã§çæããï¼åæåã«ã¼ãã³ãå¼
|
---|
693 | ã³åºãé åºã¯ï¼ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ä¸ã§ã®éçAPIã®é
|
---|
694 | åºã«ä¸è´ãããï¼
|
---|
695 |
|
---|
696 | ä¾ãã°ï¼
|
---|
697 |
|
---|
698 | ATT_INI({ TA_HLNG, 0, timer_initialize });
|
---|
699 | ATT_INI({ TA_HLNG, (INT) CONSOLE_PORTID, serial_initialize });
|
---|
700 |
|
---|
701 | ã¨ããäºã¤ã®éçAPIããã®é åºã§è¨è¿°ãããæã«çæãã颿°ã¯æ¬¡ã®éãã§
|
---|
702 | ããï¼
|
---|
703 |
|
---|
704 | void
|
---|
705 | call_inirtn()
|
---|
706 | {
|
---|
707 | timer_initialize((VP_INT)(0));
|
---|
708 | serial_initialize((VP_INT)((INT) CONSOLE_PORTID));
|
---|
709 | }
|
---|
710 |
|
---|
711 | (8-1) ã¨ã©ã¼æ¡ä»¶
|
---|
712 |
|
---|
713 | åæåã«ã¼ãã³ã«é¢ããã¨ã©ã¼æ¡ä»¶ã¯æ¬¡ã®éãã§ããï¼
|
---|
714 |
|
---|
715 | ã»iniatr ã 0 ã§ãªãå ´åï¼E_RSATRï¼
|
---|
716 |
|
---|
717 | â» ãã®ä»ã«ï¼inirtn ãããã°ã©ã ã®éå§çªå°ã¨ãã¦æ£ãããªãå ´åã«ãã¨ã©ã¼
|
---|
718 | ã¨ãã¹ãã ãï¼ã¨ã©ã¼æ¡ä»¶ãã¿ã¼ã²ããã«ä¾åãã¦ãã¾ãããï¼ä»å¾ã®èª²é¡ã¨
|
---|
719 | ããï¼
|
---|
720 |
|
---|
721 | 以ä¸
|
---|
722 |
|
---|
723 |
|
---|