1 |
|
---|
2 | ï¼ TOPPERS/JSPã«ã¼ãã« ã¦ã¼ã¶ãºããã¥ã¢ã« ï¼
|
---|
3 | (Linux ã·ã¥ãã¬ã¼ã·ã§ã³ç°å¢)
|
---|
4 |
|
---|
5 | ï¼Release 1.4対å¿ï¼æçµæ´æ°: 1-Dec-2003ï¼
|
---|
6 |
|
---|
7 | ------------------------------------------------------------------------
|
---|
8 | TOPPERS/JSP Kernel
|
---|
9 | Toyohashi Open Platform for Embedded Real-Time Systems/
|
---|
10 | Just Standard Profile Kernel
|
---|
11 |
|
---|
12 | Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
|
---|
13 | Toyohashi Univ. of Technology, JAPAN
|
---|
14 |
|
---|
15 | ä¸è¨è使¨©è
|
---|
16 | ã¯ï¼ä»¥ä¸ã® (1)ã(4) ã®æ¡ä»¶ãï¼Free Software Foundation
|
---|
17 | ã«ãã£ã¦å
|
---|
18 | ¬è¡¨ããã¦ãã GNU General Public License ã® Version 2 ã«è¨
|
---|
19 | è¿°ããã¦ããæ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ã¢ï¼æ¬ã½ããã¦ã§ã¢
|
---|
20 | ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹å¤ã»åé
|
---|
21 | å¸ï¼ä»¥ä¸ï¼
|
---|
22 | å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼
|
---|
23 | (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½
|
---|
24 | 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼
|
---|
25 | ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼
|
---|
26 | (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
|
---|
27 | ç¨ã§ããå½¢ã§åé
|
---|
28 | å¸ããå ´åã«ã¯ï¼åé
|
---|
29 | å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨
|
---|
30 | è
|
---|
31 | ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨
|
---|
32 | ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
|
---|
33 | (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿
|
---|
34 | ç¨ã§ããªãå½¢ã§åé
|
---|
35 | å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã
|
---|
36 | ã¨ï¼
|
---|
37 | (a) åé
|
---|
38 | å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è
|
---|
39 | ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è
|
---|
40 | 使¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼
|
---|
41 | (b) åé
|
---|
42 | å¸ã®å½¢æ
|
---|
43 | ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã«
|
---|
44 | å ±åãããã¨ï¼
|
---|
45 | (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ
|
---|
46 | 害ãããï¼ä¸è¨è使¨©è
|
---|
47 | ããã³TOPPERSããã¸ã§ã¯ããå
|
---|
48 | 責ãããã¨ï¼
|
---|
49 |
|
---|
50 | æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨è使¨©è
|
---|
51 | ã
|
---|
52 | ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã
|
---|
53 | å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´
|
---|
54 | æ¥çã¾ãã¯éæ¥çã«çãããããªãæå®³ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼
|
---|
55 |
|
---|
56 | @(#) $Id: linux.txt,v 1.12 2003/12/11 09:57:01 honda Exp $
|
---|
57 | ------------------------------------------------------------------------
|
---|
58 |
|
---|
59 |
|
---|
60 | 1ï¼Linux ä¸ã§ã®åä½ç°å¢ã®æ¦è¦
|
---|
61 |
|
---|
62 | TOPPERS/JSP ã®ã·ãã¥ã¬ã¼ã·ã§ã³ç°å¢ã¨ãã¦ãLinux ä¸ã§åä½ããè¨å®ãç¨æ
|
---|
63 | ãã¦ããããã®ã·ãã¥ã¬ã¼ã·ã§ã³ç°å¢ã¯ãLinux ã® 1ã¤ã®ããã»ã¹ã®ä¸ã§è¤æ°
|
---|
64 | ã®ã¿ã¹ã¯ãåãæ¿ãã¦åä½ãããã
|
---|
65 |
|
---|
66 |
|
---|
67 | 1.1. ãµãã¼ããã¦ããªãæ©è½
|
---|
68 |
|
---|
69 | Linux ä¸ã®ã·ãã¥ã¬ã¼ã·ã§ã³ç°å¢ã§ã¯ãTOPPERS/JSP ãæã£ã¦ããæ©è½ã®å
|
---|
70 | ã
|
---|
71 | 以ä¸ã®æ©è½ã¯ãµãã¼ããã¦ããªãã
|
---|
72 |
|
---|
73 | ã»CPUä¾å¤ãã³ãã©
|
---|
74 | ã»def_int ã·ã¹ãã ã³ã¼ã«
|
---|
75 | ã»æ§è½è©ä¾¡ç¨ã·ã¹ãã æå»åç
|
---|
76 | §æ©è½
|
---|
77 |
|
---|
78 | CPUä¾å¤ãã³ãã©ã«ã¤ãã¦ã¯ï¼CPUä¾å¤ãã³ãã©èªä½ã®ç»é²ã¯å¯è½ã§ãããï¼
|
---|
79 | CPUä¾å¤ãã³ãã©å
|
---|
80 | ã§ï¼CPUä¾å¤ãçºçããã³ã³ããã¹ããç¶æ
|
---|
81 | ãåç
|
---|
82 | §ã§ãã
|
---|
83 | vxsns_XXX ã¯CPUä¾å¤ãã³ãã©ã«ã©ããã¼ããã¶ãããã¨ã§å®ç¾ã§ããã¨æã
|
---|
84 | ãããç¾å¨ã®ã¨ããã¯ãµãã¼ããã¦ããªãï¼
|
---|
85 |
|
---|
86 |
|
---|
87 | 1.2. åä½ç°å¢
|
---|
88 |
|
---|
89 | TOPPERS/JSP Linux ã®ã·ã¥ãã¬ã¼ã·ã§ã³ç°å¢ã¯ãã·ã°ãã«ã¹ã¿ãã¯ã®æ©è½ã使
|
---|
90 | ç¨ãããããæ¬¡ã®ãã¼ã¸ã§ã³ Linux ã«ã¼ãã«ã¨glibcãå¿
|
---|
91 | è¦ã¨ãªãï¼
|
---|
92 |
|
---|
93 | ã»ã«ã¼ãã« : 2.2 以ä¸
|
---|
94 | ã»glibc : 2.1 以ä¸
|
---|
95 |
|
---|
96 | 次ã®ãã£ã¹ããªãã¥ã¼ã·ã§ã³ã§ã®åä½ã確èªãã¦ãï¼
|
---|
97 |
|
---|
98 | ã»Vine Linux 2.5,2.6
|
---|
99 | ã»Debian GNU/Linux 3.0
|
---|
100 |
|
---|
101 |
|
---|
102 |
|
---|
103 | 1.3. å²è¾¼ã¿
|
---|
104 |
|
---|
105 | Linux ä¸ã®ã·ãã¥ã¬ã¼ã·ã§ã³ç°å¢ã§ã¯ãã·ã°ãã«ãå²è¾¼ã¿ã«å¯¾å¿ããï¼ã·ã°ã
|
---|
106 | ã«ãã³ãã©ã¯å²è¾¼ã¿ãã³ãã©ã¨ãã¦æ±ãããã·ã°ãã«ãã¹ã¯ãå²è¾¼ã¿ãã¹ã¯ã«
|
---|
107 | 対å¿ãããã¦ã¼ã¶ãã·ã°ãã«ãã³ãã©ãå®ç¾©ãããã¨ãå¯è½ã§ããããä¸å®ã®
|
---|
108 | ã«ã¼ã«ã«å¾ããã¨ãå¿
|
---|
109 | è¦ã§ããã
|
---|
110 |
|
---|
111 | Linux ã®ã·ã°ãã«ã®å
|
---|
112 | ãSIGUSR1 èµ·åæå¦çãã¿ã¹ã¯ãã£ã¹ãããå¦çã®ãã
|
---|
113 | ã«ç¨ãã¦ãããããã¦ã¼ã¶ãå©ç¨ãããã¨ã¯ã§ããªããã¾ããSIGALRM ã¯ã«ã¼
|
---|
114 | ãã«å
|
---|
115 | ã®ã¿ã¤ãå²è¾¼ã¿ã¨ãã¦ç¨ãã¦ããï¼è¨å®ã«ãã£ã¦ã¯ï¼SIGIO ã®ãã³ãã©
|
---|
116 | ãã«ã¼ãã«å
|
---|
117 | ã§å®ç¾©ãããï¼SIGIO ã®æ±ãã«ã¤ãã¦ã¯ï¼ç« ãåç
|
---|
118 | §ï¼ã
|
---|
119 |
|
---|
120 |
|
---|
121 |
|
---|
122 | 1.4. æé管ç
|
---|
123 |
|
---|
124 | 卿å²è¾¼ã¿ã®éé㯠10ããªç§ãæ¨æºã¨ãã¦ããããã¿ã¼ã²ããä¾åã®ã¿ã¤ã
|
---|
125 | ã¢ã¸ã¥ã¼ã«ã®ã¿ã®ä¿®æ£ã§å¤æ´ã§ãããã·ãã¥ã¬ã¼ã·ã§ã³ç°å¢å
|
---|
126 | ¨ä½ã 1ã¤ã®ãã
|
---|
127 | ã»ã¹ã¨ãã¦å®è¡ãããããï¼ã·ãã¥ã¬ã¼ã·ã§ã³ç°å¢å
|
---|
128 | ¨ä½ã«å²ãå½ã¦ããã CPU
|
---|
129 | æéã UNIX ã®ã¹ã±ã¸ã¥ã¼ã©ã«ãã£ã¦æ±ºããããããã®ãããé«ãæé精度ã
|
---|
130 | æå¾
|
---|
131 | ãããã¨ã¯ã§ããªãã
|
---|
132 |
|
---|
133 |
|
---|
134 |
|
---|
135 |
|
---|
136 | ï¼ï¼ã·ã¹ãã ã³ã¼ã«ä»æ§ã®éã
|
---|
137 |
|
---|
138 | 以ä¸ã§ã¯ï¼BSD UNIXä¸ã§ã®ã·ãã¥ã¬ã¼ã·ã§ã³ç°å¢ã§ã®ï¼åã·ã¹ãã ã³ã¼ã«ã®ä»
|
---|
139 | æ§ã®éãã«ã¤ãã¦è¿°ã¹ãï¼
|
---|
140 |
|
---|
141 | (1) loc_cpu å²è¾¼ã¿ã¨ãã£ã¹ãããã®ç¦æ¢
|
---|
142 |
|
---|
143 | ã»loc_cpu ã¯ï¼ãã¹ã¦ã®ã·ã°ãã«ããã¹ã¯ããç¶æ
|
---|
144 | ã«è¨å®ããï¼
|
---|
145 |
|
---|
146 | (2) unl_cpu å²è¾¼ã¿ã¨ãã£ã¹ãããã®è¨±å¯
|
---|
147 |
|
---|
148 | ã»unl_cpu ã¯ï¼ãã¹ã¦ã®ã·ã°ãã«ãã¹ã¯ãè§£é¤ããç¶æ
|
---|
149 | ã«è¨å®ããï¼
|
---|
150 |
|
---|
151 | (3) chg_iXX å²è¾¼ã¿ãã¹ã¯å¤æ´
|
---|
152 |
|
---|
153 | ã»å称㯠chg_ims ã¨ãã¦ãããchg_ims ããµãã¼ããããã©ãããã
|
---|
154 | SUPPRT_CHG_IMS ãå®ç¾©ãããã©ããã§å¤æ´ã§ãããchg_ims ã¯ãã·ã°ãã«ã
|
---|
155 | ã¹ã¯ãæå®ããå¤ã«è¨å®ãããã¿ã¹ã¯ã³ã³ããã¹ãã§ã¯ããã£ã¹ãããã£ãå¼
|
---|
156 | ã³åºã SIGUSR1 ã·ã°ãã«ã®ãã¹ã¯ãè¨å®ãããã¨ã¯ã§ããªãã(è¨å®ãããã¨
|
---|
157 | ãã㨠E_PAR ã¨ã©ã¼ã«ãªã)ãã¾ããéã¿ã¹ã¯ã³ã³ããã¹ãã§ã¯ SIGUSR1 ã
|
---|
158 | è§£é¤ãããã¨ã¯ã§ããªãã(è§£é¤ãããã¨ãã㨠E_PAR ã¨ã©ã¼ã«ãªã)ãã¿ã¹
|
---|
159 | ã¯ã³ã³ããã¹ãã§chg_ims ã«ããè¨å®ããå¤ã¯ãã£ã¹ããããçºçãã¦ãä»ã®
|
---|
160 | ã¿ã¹ã¯ã«å¼ãç¶ããããéã¿ã¹ã¯ã³ã³ããã¹ãã§è¨å®ããå ´åã¯ããã®éã¿ã¹
|
---|
161 | ã¯ã³ã³ããã¹ãã®ä¸ã§ã®ã¿æå¹ã§ããã
|
---|
162 |
|
---|
163 | (4) get_iXX å²è¾¼ã¿ãã¹ã¯åç
|
---|
164 | §
|
---|
165 |
|
---|
166 | ã»å称㯠get_ims ã¨ãã¦ãããref_ims ã¯ãã·ã°ãã«ãã¹ã¯ã®ç¾å¨å¤ãèªã¿
|
---|
167 | åºãã·ã¹ãã ã³ã¼ã«ã§ããã
|
---|
168 |
|
---|
169 |
|
---|
170 | (5) vget_tim æ§è½è©ä¾¡ç¨ã·ã¹ãã æå»åç
|
---|
171 | §
|
---|
172 |
|
---|
173 | ã»ãµãã¼ããã¦ããªãï¼
|
---|
174 |
|
---|
175 |
|
---|
176 |
|
---|
177 | 3ï¼ãã³ããããã³ã°I/O
|
---|
178 |
|
---|
179 | 3.1. ãã³ããããã³ã°I/O ã®å¿
|
---|
180 | è¦æ§
|
---|
181 |
|
---|
182 | TOPPERS/JSP ã®ã·ãã¥ã¬ã¼ã·ã§ã³ç°å¢å
|
---|
183 | ¨ä½ã 1ã¤ã®ããã»ã¹ã¨ãã¦åä½ãã¦ã
|
---|
184 | ããããTOPPERS/JSP ã®ã¿ã¹ã¯ãã UNIX ã«ã¼ãã«å
|
---|
185 | ã§ãããã¯ããã·ã¹ãã
|
---|
186 | ã³ã¼ã«ãå¼ã³åºããå ´åãã·ãã¥ã¬ã¼ã·ã§ã³ç°å¢å
|
---|
187 | ¨ä½ããããã¯ãããä»ã®ã¿
|
---|
188 | ã¹ã¯ãå®è¡ãããã¨ãã§ããªããªãï¼å³å¯ã«ã¯ï¼ãããã¯ä¸ã«ã·ã°ãã«ãåã
|
---|
189 | åã£ãå ´åã«ã¯ï¼ãããã¯ãè§£é¤ããã¦å®è¡ãç¶ç¶ã§ããï¼ããã®ããï¼UNIX
|
---|
190 | ã«ã¼ãã«å
|
---|
191 | ã§ã®ãããã¯ãèµ·ãããªãããã«ãä½éã® I/Oã¢ã¯ã»ã¹ã¯ããã³ã
|
---|
192 | ãããã³ã°ã¢ã¼ãã§è¡ãå¿
|
---|
193 | è¦ãããã
|
---|
194 |
|
---|
195 | Linux ã®ãã³ããããã³ã°I/Oã¢ã¼ãã§ã¯ãé常ã§ããã°ã«ã¼ãã«ä¸ã§ããã
|
---|
196 | ã¯ããããã㪠read/writeã·ã¹ãã ã³ã¼ã«ãããããã«ãªã¿ã¼ã³ãã¦ãã
|
---|
197 | ï¼ãã®æï¼ãããã®ã·ã¹ãã ã³ã¼ã«ã¯ EWOULDBLOCK ã¨ã©ã¼ãå ±åããï¼ï¼ã
|
---|
198 | ãã«éåæI/Oã¢ã¼ããä½µç¨ããã¨ããããã®ã·ã¹ãã ã³ã¼ã«ãå¼ã³åºãã¦ã
|
---|
199 | ãããã¯ãããªãç¶æ³ã«ãªã£ãæã«ãUNIXã«ã¼ãã«ã¯ SIGIO ã·ã°ãã«ã使ã£
|
---|
200 | ã¦ãã®ãã¨ãããã»ã¹ã«ç¥ãããã
|
---|
201 |
|
---|
202 |
|
---|
203 | 3.2. TOPPERS/JSP ã«ããããµãã¼ã
|
---|
204 |
|
---|
205 | Linux ã®ãã³ããããã³ã°I/O ã TOPPERS/JSP ã®ã¿ã¹ã¯ããå©ç¨ããããã«
|
---|
206 | ã¯ãSIGIO ãæã¾ããã·ã°ãã«ãã³ãã©ãå®ç¾©ããæã¾ããã·ã°ãã«ãä½ãã
|
---|
207 | ã®å½¢ã§ã¿ã¹ã¯ã«éç¥ããå¿
|
---|
208 | è¦ãããããã®ããã®ææ®µã¨ãã¦ãTOPPERS/JSP ã§
|
---|
209 | ã¯ãSIGIO ã·ã°ãã«ã®çºçã«ããå¼ã³åºãããã³ã¼ã«ããã¯é¢æ°ãç»é²ããæ©
|
---|
210 | è½ãç¨æãã¦ããã
|
---|
211 |
|
---|
212 | å
|
---|
213 | ·ä½çã«ã¯ãSIGIO ã·ã°ãã«ã«ããã³ã¼ã«ããã¯é¢æ°ãå®è¡ããããå ´åã«ã¯ã
|
---|
214 | SIGIO éç¥ã¤ãã³ããããã¯ï¼SIGIOEBï¼ãç¨æãããã® callback ãã£ã¼ã«
|
---|
215 | ãã«ã³ã¼ã«ããã¯é¢æ°ã¸ã®ãã¤ã³ã¿ãarg ãã£ã¼ã«ãã«ã³ã¼ã«ããã¯é¢æ°ã¸æ¸¡
|
---|
216 | ã弿°ãè¨å®ããeneuque_sigioeb ãç¨ã㦠SIGIO éç¥ã¤ãã³ããã¥ã¼ã«ç»
|
---|
217 | é²ãããSIGIO ã·ã°ãã«ãçºçããã¨ãç»é²ããã³ã¼ã«ããã¯é¢æ°ããã¹ã¦å¼
|
---|
218 | ã³åºããããã³ã¼ã«ããã¯é¢æ°ã 0 ãè¿ãã¨ãé¢é£ãã SIGIO éç¥ã¤ãã³ã
|
---|
219 | ãããã¯ã¯ãã¥ã¼ã«ç»é²ãããã¾ã¾ã¨ãªããç¶ã SIGIO ã·ã°ãã«ã§åã³åã
|
---|
220 | ã³ã¼ã«ããã¯é¢æ°ãå¼ã³åºããããã³ã¼ã«ããã¯é¢æ°ã 0 以å¤ãè¿ãã¨ã
|
---|
221 | SIGIO éç¥ã¤ãã³ããããã¯ã¯ãã¥ã¼ããåé¤ãããã³ã¼ã«ããã¯é¢æ°ã¯ãã
|
---|
222 | 以éå¼ã³åºãããªããªãï¼include/linux_sigio.h,systask/linux_sigio.cï¼ã
|
---|
223 | ãªããSIGIO éç¥ã¤ãã³ããã¥ã¼ã«ç»é²ãã eneuque_sigioeb ã¯ã»ããã©ã
|
---|
224 | 使ç¨ããããã«ãéã¿ã¹ã¯ã³ã³ããã¹ãããå¼ã¹ãªããããã·ã¹ãã èµ·åæã®
|
---|
225 | åæåã«ã¼ãã³çããã¯ãenqueue_sigioeb_initialize ãç¨ããã
|
---|
226 |
|
---|
227 | ãã³ããããã³ã°I/O ãµãã¼ãã¢ã¸ã¥ã¼ã«ã¯ãã³ã¼ã«ããã¯é¢æ°ãå¼ã³åºãã
|
---|
228 | ãã«ãå
|
---|
229 | é¨ã§ã¿ã¹ã¯ã 1ã¤ï¼tskid = TSK_LINUX_SIGIOï¼ã¨ãSIGIO éç¥ã¤ã
|
---|
230 | ã³ããã¥ã¼ã«å¯¾ããæä»ã¢ã¯ã»ã¹ã®ããã«ã»ããã©ã 1ã¤ï¼semid =
|
---|
231 | SEM_LINUX_SIGIOï¼ãç¨ãã¦ããããã³ããããã³ã°I/O ãµãã¼ãã¢ã¸ã¥ã¼ã«
|
---|
232 | ãç¨ããããã«ã¯ãã·ã¹ãã æ§æè¨å®ãã¡ã¤ã«ã§ãå
|
---|
233 | é¨ã§ç¨ããã¿ã¹ã¯ããã³
|
---|
234 | ã»ããã©ã使ããããã«è¨å®ããªããã°ãªããªãã
|
---|
235 |
|
---|
236 |
|
---|
237 | 3.5. çä¼¼ã·ãªã¢ã«ãã©ã¤ã
|
---|
238 |
|
---|
239 | Linux ä¸ã®ã·ãã¥ã¬ã¼ã·ã§ã³ç°å¢ãããã¤ãã£ãç°å¢ã¨ãªãã¹ãè¿ããã®ã¨ã
|
---|
240 | ãããã«ããã¤ãã£ãç°å¢ã®ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ãã¨åçã®æ©è½ã
|
---|
241 | æã¤çä¼¼ã·ãªã¢ã«ãã©ã¤ããç¨æãã¦ããï¼systask/linux_serial.cï¼ãçä¼¼
|
---|
242 | ã·ãªã¢ã«ãã©ã¤ãã¯ãä¸ã§è¿°ã¹ããã³ããããã³ã°I/O ã®æ©è½ãç¨ãã¦ãã·ãª
|
---|
243 | ã¢ã«ãã¼ãã«å¯¾ããå
|
---|
244 | ¥åºåããæ¨æºå
|
---|
245 | ¥åºåã«å¯¾ãã¦è¡ããã®ã§ããã
|
---|
246 |
|
---|
247 |
|
---|
248 | ï¼ï¼ã¤ã³ã¹ãã¼ã«ã»ãã®ä»
|
---|
249 |
|
---|
250 | 4.1. ã¤ã³ã¹ãã¼ã«
|
---|
251 |
|
---|
252 | Linux ä¸ã®ã·ãã¥ã¬ã¼ã·ã§ã³ç°å¢ãã¤ã³ã¹ãã¼ã«ããã«ã¯ãTOPPERS/JSP ã®æ¨
|
---|
253 | æºãªãªã¼ã¹ã«å«ã¾ãã以å¤ã«ã以ä¸ã®ãã¼ã«ãå¿
|
---|
254 | è¦ã§ããã
|
---|
255 |
|
---|
256 | GNU Cã³ã³ãã¤ã©
|
---|
257 | BINUTILS ã¢ã»ã³ãã©ï¼ãªã³ã«ãªã©
|
---|
258 | perl 5ï¼åä½ç¢ºèªã¯ 5.005_03ï¼
|
---|
259 | GNU Makeï¼åä½ç¢ºèªã¯ 3.78.1ï¼
|
---|
260 |
|
---|
261 |
|
---|
262 | 4.2. çä¼¼ã·ãªã¢ã«ãã©ã¤ã使ç¨ä¸ã®æ³¨æ
|
---|
263 |
|
---|
264 | çä¼¼ã·ãªã¢ã«ãã©ã¤ãã¯ãæ¨æºå
|
---|
265 | ¥åããã³ããããã³ã°ã® RAWã¢ã¼ãã«è¨å®ã
|
---|
266 | ããæ¨æºå
|
---|
267 | ¥åããã³ããããã³ã°ã® RAWã¢ã¼ãã«è¨å®ããã¾ã¾ã®ç¶æ
|
---|
268 | ã§ããã°
|
---|
269 | ã©ã ãçµäºããã¨ãã·ã§ã«ãæ£ããåä½ããªããªãããã®ããï¼TOPPERS/JSP
|
---|
270 | ãçµäºããåã«å¿
|
---|
271 | ãæ¨æºå
|
---|
272 | ¥åãå
|
---|
273 | ã®ç¶æ
|
---|
274 | ã«æ»ãå¿
|
---|
275 | è¦ãããããããã»ã¹ãçµäº
|
---|
276 | ãããã·ã°ãã«ã¯æ°å¤ãããããã®ãã¹ã¦ã«ã¯å¯¾å¦ãã¦ããªããã¾ããã¦ã¼ã¶
|
---|
277 | ããã°ã©ã ã§æã¾ãããã¨ã®ã§ããªãã·ã°ãã«ããããå®å
|
---|
278 | ¨ã«å¯¾å¦ãããã¨ã¯
|
---|
279 | ä¸å¯è½ã§ããã
|
---|
280 |
|
---|
281 |
|
---|
282 | 4.3. ãããã¬ä½¿ç¨ä¸ã®ãã³ã
|
---|
283 |
|
---|
284 | Linuxä¸ã®ã·ãã¥ã¬ã¼ã·ã§ã³ç°å¢ã¯ãUNIXä¸ã®ã·ã³ããªãã¯ãããã¬ã¨çµã¿å
|
---|
285 | ããã¦ä½¿ããã¨ã§ãTOPPERS/JSP ãç¨ããã·ã¹ãã ã®ãããã°ã«åãçºæ®ãã
|
---|
286 | ããã ãããããã¬ã¨çµã¿åããã¦ä½¿ãä¸ã§ãTOPPERS/JSP ãã¿ã¹ã¯åãæ¿ã
|
---|
287 | ã« SIGUSR1ã·ã°ãã«ã使ã£ã¦ããããã«ãã¿ã¹ã¯åãæ¿ãã®åº¦ã«ãããã¬ã«å¶
|
---|
288 | å¾¡ãæ»ã£ã¦ãã¾ãã¨ããåé¡ããããGNU ã·ã³ããªãã¯ãããã¬ï¼GDBï¼ã®å ´
|
---|
289 | åã«ã¯ã次ã®ã³ãã³ãã«ãããããã¬ã SIGUSR1 ãæã¾ããªãããã«è¨å®ã
|
---|
290 | ããã¨ãã§ããã
|
---|
291 |
|
---|
292 | (gdb) handle SIGUSR1 nostop noprint
|
---|
293 |
|
---|
294 | ãã®ã³ãã³ããã.gdbinit ã«è¨å®ãã¦ããã¨ä¾¿å©ã§ããã
|
---|
295 |
|
---|
296 | ã¾ããæ¡ä»¶ä»ãã¬ã¼ã¯ãã¤ã³ãããµãã¼ããã¦ãããããã¬ã®å ´åã¯ãç¹å®ã®
|
---|
297 | ã¿ã¹ã¯ãç¹å®ã®ã¢ãã¬ã¹ãå®è¡ããå ´åã«éã£ã¦å®è¡ã忢ããããã¨ãã§ã
|
---|
298 | ãï¼åæ¢ããã®ã¯ãã·ã¹ãã å
|
---|
299 | ¨ä½ã§ãç¹å®ã®ã¿ã¹ã¯ã ãã§ã¯ãªãï¼ãä¾ãã°ã
|
---|
300 | GDB ã®å ´åã«ã¯ã次ã®ã³ãã³ãã«ãããID ã TSKID ã®ã¿ã¹ã¯ã颿° FUNC ã
|
---|
301 | å¼ã³åºããå ´åã«ã®ã¿å®è¡ã忢ããããã¨ãã§ããï¼å³å¯ã«ã¯ããã®æå®æ¹
|
---|
302 | æ³ã§ã¯ãID ã TSKID ã®ã¿ã¹ã¯ãå®è¡ä¸ã«èµ·åãããå²è¾¼ã¿ãã³ãã©ã FUNC
|
---|
303 | ãå¼ã³åºããå ´åã«ã忢ããï¼ã
|
---|
304 |
|
---|
305 | (gdb) break FUNC if _kernel_runtsk == &_kernel_tcb_table[TSKID-1]
|
---|
306 |
|
---|
307 |
|
---|
308 |
|
---|
309 |
|
---|
310 |
|
---|
311 |
|
---|