Changeset 315 for rubycfg_asp/trunk/asp_dcre/doc/user.txt
- Timestamp:
- Jul 23, 2017, 2:29:40 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
rubycfg_asp/trunk/asp_dcre/doc/user.txt
-
Property svn:mime-type
changed from
text/plain
totext/plane; charset=UTF-8
r313 r315 1 1 2 TOPPERS/ASPã«ã¼ãã« 3 ã¦ã¼ã¶ã¼ãºããã¥ã¢ã« 4 5 対å¿ãã¼ã¸ã§ã³: Release 1.9.3 6 æçµæ´æ°: 2017å¹´4æ29æ¥ 7 8 ãã®ããã¥ã¡ã³ãã¯ï¼TOPPERS/ASPã«ã¼ãã«ã使ç¨ããããã«å¿ 9 è¦ãªäºé 10 ã説æ 11 ãããã®ã§ããï¼ 2 TOPPERS/ASPカーネル 3 ユーザーズマニュアル 4 5 対応バージョン: Release 1.9.3 6 最終更新: 2017年4月29日 7 8 このドキュメントは,TOPPERS/ASPカーネルを使用するために必要な事項を説明 9 するものである. 12 10 13 11 ---------------------------------------------------------------------- … … 19 17 Graduate School of Information Science, Nagoya Univ., JAPAN 20 18 21 ä¸è¨èä½æ¨©è 22 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 23 ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 24 å¤ã»åé 25 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 26 (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 27 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 28 ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 29 (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 30 ç¨ã§ããå½¢ã§åé 31 å¸ããå ´åã«ã¯ï¼åé 32 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 33 è 34 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 35 ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 36 (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 37 ç¨ã§ããªãå½¢ã§åé 38 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 39 ã¨ï¼ 40 (a) åé 41 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 42 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 43 ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 44 (b) åé 45 å¸ã®å½¢æ 46 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 47 å ±åãããã¨ï¼ 48 (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 49 害ãããï¼ä¸è¨èä½æ¨©è 50 ããã³TOPPERSããã¸ã§ã¯ããå 51 責ãããã¨ï¼ 52 ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 53 ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 54 ããã³TOPPERSããã¸ã§ã¯ãã 55 å 56 責ãããã¨ï¼ 19 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 20 ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 21 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 22 (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 23 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 24 スコード中に含まれていること. 25 (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 26 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 27 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 28 の無保証規定を掲載すること. 29 (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 30 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 31 と. 32 (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 33 作権表示,この利用条件および下記の無保証規定を掲載すること. 34 (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 35 報告すること. 36 (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 37 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 38 また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 39 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 40 免責すること. 57 41 58 æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 59 ã 60 ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 61 ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 62 ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 63 ã®è²¬ä»»ãè² ããªãï¼ 42 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 43 よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 44 に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 45 アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 46 の責任を負わない. 64 47 65 48 $Id$ 66 49 ---------------------------------------------------------------------- 67 50 68 âç®æ¬¡ 69 70 ï¼ï¼TOPPERS/ASPã«ã¼ãã«ã®æ¦è¦ 71 1.1 TOPPERS/ASPã«ã¼ãã«ã®ä½ç½®ä»ã 72 1.2 TOPPERS/ASPã«ã¼ãã«ã®ä»æ§ 73 1.3 ãã¤ã°ã¬ã¼ã·ã§ã³ã¬ã¤ã 74 1.4 æ©è½æ¡å¼µã»ãã¥ã¼ãã³ã°ã¬ã¤ã 75 1.5 æ¢ç¥ã®åé¡ 76 1.6 Cygwinç°å¢ã«ããã注æäºé 77 78 ï¼ï¼ã¿ã¼ã²ããä¾åé¨ 79 2.1 ã¿ã¼ã²ããä¾åé¨ã®æ¦è¦ 80 2.2 ç°¡æããã±ã¼ã¸ 81 2.3 åå¥ããã±ã¼ã¸ 82 ï¼ï¼ã¯ã¤ãã¯ã¹ã¿ã¼ãã¬ã¤ã 83 3.1 éçºç°å¢ã®æºå 84 3.2 ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®æ§ç¯ 85 3.3 ãµã³ãã«ããã°ã©ã ã®æ§ç¯ã¨å®è¡ 86 3.4 ã«ã¼ãã«ãé¢æ°åä½ã§ã©ã¤ãã©ãªåããæ¹æ³ 87 3.5 ã¢ããªã±ã¼ã·ã§ã³ã¨ã«ã¼ãã«ãå¥ã 88 ã«æ§ç¯ããæ¹æ³ 89 ï¼ï¼ãã£ã¬ã¯ããªæ§æã»ãã¡ã¤ã«æ§æ 90 4.1 é 91 å¸ããã±ã¼ã¸ã®ãã£ã¬ã¯ããªæ§æ 92 4.2 ã¿ã¼ã²ããéä¾åé¨ã®ãã¡ã¤ã«æ§æ 93 ï¼ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããã®ä½¿ãæ¹ 94 ï¼ï¼Makefileã®ä¿®æ£æ¹æ³ 95 6.1 Makefileã®å¤æ°å®ç¾© 96 6.2 ã³ã³ãã¤ã«ãªãã·ã§ã³ 97 ï¼ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®ä½¿ãæ¹ 98 ï¼ï¼ã·ã¹ãã ãµã¼ãã¹ 99 8.1 ã·ã¹ãã ãã°æ©è½ 100 8.1.1 ã·ã¹ãã ãã°æ©è½ã®ä½ç½®ä»ã 101 8.1.2 ãã°ãããã¡ã¸ã®è¨é²ã¨ä½ã¬ãã«åºå 102 8.1.3 ãã°æ 103 å ±ã®ç¨®å¥ 104 8.1.4 ãã°æ 105 å ±ã®éè¦åº¦ 106 8.1.5 ãã°æ 107 å ±ã®ãã¼ã¿æ§é 108 8.1.6 ã·ã¹ãã ãã°æ©è½ã®ãµã¼ãã¹ã³ã¼ã« 109 8.1.7 ã·ã¹ãã ãã°æ©è½ã®ããã®ã©ã¤ãã©ãªé¢æ°ã¨ãã¯ã 110 8.1.8 ã·ã¹ãã ãã°æ©è½ã®ãã®ä»ã®ãµã¼ãã¹ 111 8.2 ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ã 112 8.2.1 ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ãã®ãµã¼ãã¹ã³ã¼ã« 113 8.2.2 ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ãã®ãã®ä»ã®ãµã¼ãã¹ 114 8.3 ã·ã¹ãã ãã°ã¿ã¹ã¯ 115 8.3.1 ã·ã¹ãã ãã°ã¿ã¹ã¯ã®ãµã¼ãã¹ã³ã¼ã« 116 8.3.2 ã·ã¹ãã ãã°ã¿ã¹ã¯ã®ãã®ä»ã®ãµã¼ãã¹ 117 8.4 ã«ã¼ãã«èµ·åã¡ãã»ã¼ã¸ã®åºå 118 ï¼ï¼ãµãã¼ãã©ã¤ãã©ãª 119 9.1 åºæ¬çãªã©ã¤ãã©ãªé¢æ° 120 9.2 ãã¥ã¼æä½ã©ã¤ãã©ãªé¢æ° 121 9.3 ã·ã¹ãã ãã°åºåç¨ã©ã¤ãã©ãªé¢æ° 122 9.4 å®è¡æéåå¸éè¨ã¢ã¸ã¥ã¼ã« 123 ï¼ï¼ï¼ãã¹ãããã°ã©ã 124 10.1 ãã¹ãããã°ã©ã ç¨ã©ã¤ãã©ãª 125 10.2 ã«ã¼ãã«ã®æ´åæ§æ¤æ» 126 10.3 æ©è½ãã¹ãããã°ã©ã 127 10.4 æ§è½è©ä¾¡ããã°ã©ã 128 ï¼ï¼ï¼ä½¿ç¨ä¸ã®æ³¨æã¨ãã³ã 129 11.1 ã¿ã¤ããã©ã¤ãã®çµè¾¼ã¿ 130 11.2 assertãã¯ãã®å¦ç 131 11.3 ã·ã¹ãã ãã°æ©è½ã®æ±ã 132 11.4 ãªãã¸ã§ã¯ãIDã®ç®¡ç 133 11.5 ã«ã¼ãã«ã®å 134 é¨ã·ã³ãã«ã®ãªãã¼ã 135 11.6 ãã¬ã¼ã¹ãã°è¨é²ã®ãµã³ãã«ã³ã¼ãã®ä½¿ç¨æ¹æ³ 136 11.7 ã·ã¹ãã ã®èµ·åæã®åæåå¦ç 137 11.8 rodataã»ã¯ã·ã§ã³ãRAMã«ç½®ãå ´å 138 ï¼ï¼ï¼åèæ 139 å ± 140 12.1 å©ç¨æ¡ä»¶ã¨å©ç¨å ±å 141 12.2 ä¿è¨¼ã»é©ç¨æ§ã»ãµãã¼ã 142 12.3 ãã°ã¬ãã¼ã 143 12.4 ã¦ã§ããµã¤ã 144 12.5 TOPPERSã¦ã¼ã¶ã¼ãºã¡ã¼ãªã³ã°ãªã¹ã 145 12.6 TOPPERSããã¸ã§ã¯ãã®ã¡ã³ãåãã®ãµã¼ãã¹ 146 12.7 TOPPERSããã¸ã§ã¯ãã¸ã®åå 147 ï¼ï¼ï¼ãªãã¡ã¬ã³ã¹ 148 13.1 ãµã¼ãã¹ã³ã¼ã«ä¸è¦§ 149 13.2 éçAPIä¸è¦§ 150 13.3 ãã¼ã¸ã§ã³å±¥æ´ 151 152 153 ï¼ï¼TOPPERS/ASPã«ã¼ãã«ã®æ¦è¦ 154 155 1.1 TOPPERS/ASPã«ã¼ãã«ã®ä½ç½®ä»ã 156 157 TOPPERS/ASPã«ã¼ãã«ï¼ä»¥ä¸ï¼ASPã«ã¼ãã«ï¼ã¯ï¼TOPPERSæ°ä¸ä»£ã«ã¼ãã«ã®åºç¤ 158 ã¨ãªããã®ã¨ãã¦ï¼TOPPERSããã¸ã§ã¯ãã«ããã¦éçºãããªã¢ã«ã¿ã¤ã ã«ã¼ã 159 ã«ã§ããï¼Î¼ITRON4.0ä»æ§ã®ã¹ã¿ã³ãã¼ããããã¡ã¤ã«æºæ ã®ãªã¢ã«ã¿ã¤ã ã«ã¼ 160 ãã«ã§ããTOPPERS/JSPã«ã¼ãã«ãæ¡å¼µã»æ¹è¯ããå½¢ã§éçºããï¼ 161 162 1.2 TOPPERS/ASPã«ã¼ãã«ã®ä»æ§ 163 164 ASPã«ã¼ãã«ã®ä»æ§ã®æ¦è¦ã«ã¤ãã¦ã¯ï¼ãTOPPERS/ASPã«ã¼ãã«ã®ä»æ§æ¦è¦ãã 165 åç 166 §ãããã¨ï¼ã¾ãï¼ASPã«ã¼ãã«ãå«ãTOPPERSæ°ä¸ä»£ã«ã¼ãã«ã®ä»æ§ã®è©³ç´° 167 ã«ã¤ãã¦ã¯ï¼å¥éPDFãã¡ã¤ã«ã®å½¢ã§é 168 å¸ãã¦ãããTOPPERSæ°ä¸ä»£ã«ã¼ãã«çµ± 169 åä»æ§æ¸ï¼Release 1.7.1ï¼ããåç 170 §ãããã¨ï¼ 171 172 1.3 ãã¤ã°ã¬ã¼ã·ã§ã³ã¬ã¤ã 173 174 å¾æ¥ã®TOPPERSã«ã¼ãã«ãä»ã®Î¼ITRON4.0ä»æ§æºæ ã®ã«ã¼ãã«ããï¼TOPPERSæ° 175 ä¸ä»£ã«ã¼ãã«ã«ç§»è¡ããããã®æ¹æ³ï¼ã¾ãã¯ãã³ãï¼ã説æãããTOPPERSæ°ä¸ 176 代ã«ã¼ãã«ã¸ã®ãã¤ã°ã¬ã¼ã·ã§ã³ã¬ã¤ãããï¼å¥éPDFãã¡ã¤ã«ã®å½¢ã§é 177 å¸ã㦠178 ããï¼å¿ 179 è¦ã«å¿ãã¦åç 180 §ãããã¨ï¼ 181 182 1.4 æ©è½æ¡å¼µã»ãã¥ã¼ãã³ã°ã¬ã¤ã 183 184 TOPPERS/ASPã«ã¼ãã«ãï¼æ©è½æ¡å¼µã»ãã¥ã¼ãã³ã°ããããã®æ¹æ³ï¼ã¾ãã¯ãã³ 185 ãï¼ã説æãããæ©è½æ¡å¼µã»ãã¥ã¼ãã³ã°ã¬ã¤ãããç¨æãã¦ããï¼æ¡å¼µãã 186 ã±ã¼ã¸ã®ä½¿ç¨æ¹æ³ã¯ï¼ãæ©è½æ¡å¼µã»ãã¥ã¼ãã³ã°ã¬ã¤ããã«å«ã¾ãã¦ããï¼å¿ 187 188 è¦ã«å¿ãã¦åç 189 §ãããã¨ï¼ 190 191 1.5 æ¢ç¥ã®åé¡ 192 193 å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®å 194 é çªå°ï¼ATT_ISRã®isrï¼ï¼å²è¾¼ã¿ãã³ãã©ã®å 195 é 196 çªå°ï¼DEF_INHã®inthdrï¼ï¼CPUä¾å¤ãã³ãã©ã®å 197 é çªå°ï¼DEF_EXCã®exchdrï¼ï¼ 198 åæåã«ã¼ãã³ã®å 199 é çªå°ï¼ATT_INIã®inirtnï¼ï¼çµäºå¦çã«ã¼ãã³ã®å 200 é çªå° 201 ï¼ATT_TERã®terrtnï¼ãããã°ã©ã ã®éå§çªå°ã¨ãã¦æ£ãããªãå ´åã®ã¨ã©ã¼ã¯ï¼ 202 ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã«æ¤åºãããªãå ´åãããï¼ã¿ã¼ã²ããã«ä¾åï¼ï¼ 203 204 kernel_cfg.cï¼ããã³cfg1_out.cï¼ã¯ï¼ã«ã¼ãã«ï¼ã·ã¹ãã ãµã¼ãã¹ï¼ã¢ã㪠205 ã±ã¼ã·ã§ã³ã®ãããã®ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ãã¤ã³ã¯ã«ã¼ããï¼ãããã®ã·ã³ 206 ãã«ãåç 207 §ããå¯è½æ§ãããï¼ãã®ããï¼ã«ã¼ãã«ï¼ã·ã¹ãã ãµã¼ãã¹ï¼ã¢ã 208 ãªã±ã¼ã·ã§ã³ã§ã·ã³ãã«çãè¡çªãã¦ããå ´åãï¼ã³ã³ãã¤ã«ãªãã·ã§ã³ãé£ 209 ãéã£ã¦ããå ´åã«ï¼kernel_cfg.cï¼ããã³cfg1_out.cï¼ãæ£ããã³ã³ãã¤ã« 210 ã§ããªããªãå ´åãèããããï¼ã«ã¼ãã«ã®ã·ã³ãã«ããªãã¼ã ãããªã©ã®æ¹ 211 æ³ã§è»½æ¸ããã¦ã¯ãããï¼åé¡ããªããªã£ã¦ããããã§ã¯ãªãï¼ 212 213 ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ããï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã«å¯¾ãã 214 INCLUDEãã£ã¬ã¯ãã£ãã«ããä»ã®ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ãã¤ã³ã¯ã«ã¼ 215 ããã¦ããå ´åã«ï¼ãã®ä¸ã«å«ã¾ããCè¨èªããªããã»ããµã®ã¤ã³ã¯ã«ã¼ãã㣠216 ã¬ã¯ãã£ãï¼#includeï¼ã§ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã®ç½®ããã¦ãã 217 ãã£ã¬ã¯ããªãï¼ãã¡ã¤ã«ãæ¤ç´¢ãããã¹ã«ã¯ãããªãã¨ããåé¡ãããï¼ä¾ 218 ãã°ï¼syssvc/syslog.cfgã«ã#include "syslog.h"ãã¨è¨è¿°ã§ããªãã®ã¯ï¼ã 219 ã®åé¡ãããããã§ããï¼ 220 221 ç¾æç¹ã§ã¯ï¼ã¢ãã¬ã¹ã64ãããã®ç°å¢ã«ã¯å¯¾å¿ãã¦ããªãï¼64ãããã¢ã㬠222 ã¹ç°å¢ããµãã¼ãããããã®æ大ã®èª²é¡ã¯ï¼ã¢ããã¼ã©Sã¬ã³ã¼ããã©ã¼ããã 223 ã64ãããã¢ãã¬ã¹ã«å¯¾å¿ãã¦ããªããã¨ã§ããï¼ 224 225 1.6 Cygwinç°å¢ã«ããã注æäºé 226 227 228 Cygwinç°å¢ã«ããã¦ã¯ï¼ãã£ã¬ã¯ããªã®æå®ãç¸å¯¾ãã¹ã§è¡ããã¨ãæ¨å¥¨ããï¼ 229 ããã¯ï¼Cygwinç°å¢ã®çµ¶å¯¾ãã¹ã¯ï¼Windowsãã¤ãã£ãã§ãã«ãããããã¼ã«ã¯ 230 解éã§ããªãããã§ããï¼ 231 232 233 ï¼ï¼ã¿ã¼ã²ããä¾åé¨ 234 235 2.1 ã¿ã¼ã²ããä¾åé¨ã®æ¦è¦ 236 237 ASPã«ã¼ãã«ã®ã¿ã¼ã²ããéä¾åé¨ã¨ï¼å種ã®ã¿ã¼ã²ããã·ã¹ãã ã«å¯¾å¿ããã 238 ãã®ã¿ã¼ã²ããä¾åé¨ã¯ï¼å¥ã 239 ã«éçºããã¦ããï¼ãã®ããï¼ASPã«ã¼ãã«ã対 240 å¿ãã¦ãããã¹ã¦ã®ã¿ã¼ã²ããä¾åé¨ãï¼ãã¼ã¸ã§ã³ãæ´åããã¦ããã±ã¼ã¸ 241 åãããã¨ã¯å°é£ã§ããï¼ããã§ï¼ä¸»ã«åç´ã®ã¦ã¼ã¶ã対象ã«ããç°¡æããã±ã¼ 242 ã¸ã¨ï¼ä¸ç´ã®ã¦ã¼ã¶ãã«ã¼ãã«éçºè 243 ã対象ã«ããåå¥ããã±ã¼ã¸ãç¨æã㦠244 ããï¼ 245 246 ASPã«ã¼ãã«ãæªãµãã¼ãã®ã¿ã¼ã²ããã·ã¹ãã ã¸ãã¼ãã£ã³ã°ããããã«å¿ 247 è¦ 248 ãªä½æ¥ã¯ï¼éçºç°å¢ã®æ§ç¯ã¨æ¨æºã®éçºç°å¢ã¨ã®å·®ç°ã®å¸åï¼ã«ã¼ãã«èªèº«ã® 249 ãã¼ãã£ã³ã°ï¼ã·ã¹ãã ãµã¼ãã¹ã®ãã¼ãã£ã³ã°ãªã©ãããªãï¼è©³ããã¯ï¼ 250 ãã¿ã¼ã²ããä¾åé¨ ãã¼ãã£ã³ã°ã¬ã¤ãããåç 251 §ãããã¨ï¼ 252 253 2.2 ç°¡æããã±ã¼ã¸ 254 255 ç°¡æããã±ã¼ã¸ã¯ï¼ASPã«ã¼ãã«ã対å¿ãã¦ããã¿ã¼ã²ããã·ã¹ãã æ¯ã«ç¨æã 256 ãï¼ãã®ã¿ã¼ã²ããã·ã¹ãã ä¸ã§ASPã«ã¼ãã«ãåä½ãããããã«å¿ 257 è¦ãªãã¡ã¤ 258 ã«ä¸å¼ãããã±ã¼ã¸åãããã®ã§ããï¼ç°¡æããã±ã¼ã¸ã«å«ã¾ãããã¡ã¤ã«ã¯ï¼ 259 ãã¼ã¸ã§ã³ãæ´åãã¦ãããã¨ã確èªããã¦ããï¼ 260 261 ç°¡æããã±ã¼ã¸ã®ãã¼ã¸ã§ã³çªå·ã¯ï¼ããã±ã¼ã¸åããæ¥ä»ã¨ãããã¨ãåå 262 ã¨ãããï¼ã¿ã¼ã²ããã·ã¹ãã æ¯ã®äºæ 263 ã«ãããã®ååã«å¾ããªãå ´åãããï¼ 264 265 ç°¡æããã±ã¼ã¸ã¯ï¼åºæ¬çã«ã¯ï¼æ¬¡ã«èª¬æããåå¥ããã±ã¼ã¸ãè¤æ°ã¾ã¨ãã 266 ãã®ã§ããï¼ãã®ããï¼å¯¾è±¡ã¿ã¼ã²ããã·ã¹ãã ã«å¿ 267 è¦ã®ãªããã¡ã¤ã«ãå«ã¾ 268 ãã¦ããï¼ã¾ãï¼ç°¡æããã±ã¼ã¸ã«å«ã¾ãã¦ããåå¥ããã±ã¼ã¸ã®ãã¼ã¸ã§ã³ 269 ã¯ï¼åå¥ããã±ã¼ã¸ã®MANIFESTãã¡ã¤ã«ãåç 270 §ãããã¨ã§ç¥ããã¨ãã§ããï¼ 271 272 2.3 åå¥ããã±ã¼ã¸ 273 274 åå¥ããã±ã¼ã¸ã¯ï¼ASPã«ã¼ãã«ã®éçºåä½æ¯ã«ï¼ãã®éçºåä½ã§éçºãæ 275 å½ã 276 ã¦ãããã¡ã¤ã«ä¸å¼ãããã±ã¼ã¸åãããã®ã§ããï¼ASPã«ã¼ãã«ã®ã¿ã¼ã²ãã 277 éä¾åé¨ãï¼ä¸ã¤ã®åå¥ããã±ã¼ã¸ã¨ãã¦é 278 å¸ãããï¼ããåå¥ããã±ã¼ã¸ã 279 使ç¨ããããã«ã¯ï¼ä¸è¬ã«ã¯ï¼ä»ã®åå¥ããã±ã¼ã¸ãå¿ 280 è¦ã¨ãªãï¼ã¿ã¼ã²ãã 281 ä¾åé¨ã®åå¥ããã±ã¼ã¸ã使ç¨ããããã«å¿ 282 è¦ã¨ãªãåå¥ããã±ã¼ã¸ã¨ãã®ãã¼ 283 ã¸ã§ã³ã«ã¤ãã¦ã¯ï¼ã¿ã¼ã²ããä¾åé¨ã®ã¦ã¼ã¶ã¼ãºããã¥ã¢ã«ãåç 284 §ãããã¨ï¼ 285 使ç¨ããåå¥ããã±ã¼ã¸ã®ãã¼ã¸ã§ã³ãæ´åããããã¨ã¯ï¼ã¦ã¼ã¶ã®è²¬ä»»ã§ã 286 ãï¼ 287 288 åå¥ããã±ã¼ã¸ã®ãã¼ã¸ã§ã³çªå·ã¯ï¼X.Y.Zã®å½¢ã§è¡¨ç¾ãããï¼ã¿ã¼ã²ããéä¾ 289 åé¨ã®ãã¼ã¸ã§ã³çªå·ãï¼ASPã«ã¼ãã«å 290 ¨ä½ã®ãªãªã¼ã¹çªå·ã¨ããï¼ã¿ã¼ã²ãã 291 ä¾åé¨ã®ãã¼ã¸ã§ã³çªå·ã¯ï¼Xã¨Yãï¼ãããä¾åããã¿ã¼ã²ããéä¾åé¨ã¨ä¸ 292 è´ãã¦ããï¼ããã«å¯¾ãã¦ï¼Zã¯ä¸è´ãã¦ããã¨ã¯éããªãï¼ä¾ãã°ï¼ã¿ã¼ã²ã 293 ãéä¾åé¨ã®ãã¼ã¸ã§ã³1.1.0ã«å¯¾å¿ããã¿ã¼ã²ããä¾åé¨ã¯ï¼ãã¼ã¸ã§ã³ 294 1.1.Zã®å½¢ã¨ãªãï¼ã¿ã¼ã²ããä¾åé¨ã®ã¿ããã¼ã¸ã§ã³ã¢ããããå ´åã«ã¯ï¼Z 295 ãå¤æ´ãããï¼ 296 297 使ç¨ããåå¥ããã±ã¼ã¸ã¯ï¼æ¬¡ã®ä¾ã®ããã«ï¼ã¿ã¼ã²ããéä¾åé¨ã®åå¥ãã 298 ã±ã¼ã¸ãå±éããã®ã¨åããã£ã¬ã¯ããªã§å±éããï¼ 51 ○目次 52 53 1.TOPPERS/ASPカーネルの概要 54 1.1 TOPPERS/ASPカーネルの位置付け 55 1.2 TOPPERS/ASPカーネルの仕様 56 1.3 マイグレーションガイド 57 1.4 機能拡張・チューニングガイド 58 1.5 既知の問題 59 1.6 Cygwin環境における注意事項 60 2.ターゲット依存部 61 2.1 ターゲット依存部の概要 62 2.2 簡易パッケージ 63 2.3 個別パッケージ 64 3.クイックスタートガイド 65 3.1 開発環境の準備 66 3.2 コンフィギュレータの構築 67 3.3 サンプルプログラムの構築と実行 68 3.4 カーネルを関数単位でライブラリ化する方法 69 3.5 アプリケーションとカーネルを別々に構築する方法 70 4.ディレクトリ構成・ファイル構成 71 4.1 配布パッケージのディレクトリ構成 72 4.2 ターゲット非依存部のファイル構成 73 5.コンフィギュレーションスクリプトの使い方 74 6.Makefileの修正方法 75 6.1 Makefileの変数定義 76 6.2 コンパイルオプション 77 7.コンフィギュレータの使い方 78 8.システムサービス 79 8.1 システムログ機能 80 8.1.1 システムログ機能の位置付け 81 8.1.2 ログバッファへの記録と低レベル出力 82 8.1.3 ログ情報の種別 83 8.1.4 ログ情報の重要度 84 8.1.5 ログ情報のデータ構造 85 8.1.6 システムログ機能のサービスコール 86 8.1.7 システムログ機能のためのライブラリ関数とマクロ 87 8.1.8 システムログ機能のその他のサービス 88 8.2 シリアルインタフェースドライバ 89 8.2.1 シリアルインタフェースドライバのサービスコール 90 8.2.2 シリアルインタフェースドライバのその他のサービス 91 8.3 システムログタスク 92 8.3.1 システムログタスクのサービスコール 93 8.3.2 システムログタスクのその他のサービス 94 8.4 カーネル起動メッセージの出力 95 9.サポートライブラリ 96 9.1 基本的なライブラリ関数 97 9.2 キュー操作ライブラリ関数 98 9.3 システムログ出力用ライブラリ関数 99 9.4 実行時間分布集計モジュール 100 10.テストプログラム 101 10.1 テストプログラム用ライブラリ 102 10.2 カーネルの整合性検査 103 10.3 機能テストプログラム 104 10.4 性能評価プログラム 105 11.使用上の注意とヒント 106 11.1 タイマドライバの組込み 107 11.2 assertマクロの処理 108 11.3 システムログ機能の扱い 109 11.4 オブジェクトIDの管理 110 11.5 カーネルの内部シンボルのリネーム 111 11.6 トレースログ記録のサンプルコードの使用方法 112 11.7 システムの起動時の初期化処理 113 11.8 rodataセクションをRAMに置く場合 114 12.参考情報 115 12.1 利用条件と利用報告 116 12.2 保証・適用性・サポート 117 12.3 バグレポート 118 12.4 ウェブサイト 119 12.5 TOPPERSユーザーズメーリングリスト 120 12.6 TOPPERSプロジェクトのメンバ向けのサービス 121 12.7 TOPPERSプロジェクトへの参加 122 13.リファレンス 123 13.1 サービスコール一覧 124 13.2 静的API一覧 125 13.3 バージョン履歴 126 127 128 1.TOPPERS/ASPカーネルの概要 129 130 1.1 TOPPERS/ASPカーネルの位置付け 131 132 TOPPERS/ASPカーネル(以下,ASPカーネル)は,TOPPERS新世代カーネルの基盤 133 となるものとして,TOPPERSプロジェクトにおいて開発したリアルタイムカーネ 134 ルである.μITRON4.0仕様のスタンダードプロファイル準拠のリアルタイムカー 135 ネルであるTOPPERS/JSPカーネルを拡張・改良する形で開発した. 136 137 1.2 TOPPERS/ASPカーネルの仕様 138 139 ASPカーネルの仕様の概要については,「TOPPERS/ASPカーネルの仕様概要」を 140 参照すること.また,ASPカーネルを含むTOPPERS新世代カーネルの仕様の詳細 141 については,別途PDFファイルの形で配布している「TOPPERS新世代カーネル統 142 合仕様書(Release 1.7.1)」を参照すること. 143 144 1.3 マイグレーションガイド 145 146 従来のTOPPERSカーネルや他のμITRON4.0仕様準拠のカーネルから,TOPPERS新 147 世代カーネルに移行するための方法(またはヒント)を説明した「TOPPERS新世 148 代カーネルへのマイグレーションガイド」を,別途PDFファイルの形で配布して 149 いる.必要に応じて参照すること. 150 151 1.4 機能拡張・チューニングガイド 152 153 TOPPERS/ASPカーネルを,機能拡張・チューニングするための方法(またはヒン 154 ト)を説明した「機能拡張・チューニングガイド」を用意している.拡張パッ 155 ケージの使用方法は,「機能拡張・チューニングガイド」に含まれている.必 156 要に応じて参照すること. 157 158 1.5 既知の問題 159 160 割込みサービスルーチンの先頭番地(ATT_ISRのisr),割込みハンドラの先頭 161 番地(DEF_INHのinthdr),CPU例外ハンドラの先頭番地(DEF_EXCのexchdr), 162 初期化ルーチンの先頭番地(ATT_INIのinirtn),終了処理ルーチンの先頭番地 163 (ATT_TERのterrtn)がプログラムの開始番地として正しくない場合のエラーは, 164 コンフィギュレータに検出されない場合がある(ターゲットに依存). 165 166 kernel_cfg.c(およびcfg1_out.c)は,カーネル,システムサービス,アプリ 167 ケーションのいずれのインクルードファイルもインクルードし,いずれのシン 168 ボルも参照する可能性がある.そのため,カーネル,システムサービス,アプ 169 リケーションでシンボル等が衝突している場合や,コンパイルオプションが食 170 い違っている場合に,kernel_cfg.c(およびcfg1_out.c)が正しくコンパイル 171 できなくなる場合が考えられる.カーネルのシンボルをリネームするなどの方 172 法で軽減されてはいるが,問題がなくなっているわけではない. 173 174 システムコンフィギュレーションファイルから,コンフィギュレータに対する 175 INCLUDEディレクティブにより他のコンフィギュレーションファイルをインクルー 176 ドしている場合に,その中に含まれるC言語プリプロセッサのインクルードディ 177 レクティブ(#include)で,コンフィギュレーションファイルの置かれている 178 ディレクトリが,ファイルを検索するパスにはいらないという問題がある.例 179 えば,syssvc/syslog.cfgに「#include "syslog.h"」と記述できないのは,こ 180 の問題があるためである. 181 182 現時点では,アドレスが64ビットの環境には対応していない.64ビットアドレ 183 ス環境をサポートするための最大の課題は,モトローラSレコードフォーマット 184 が64ビットアドレスに対応していないことである. 185 186 1.6 Cygwin環境における注意事項 187 188 Cygwin環境においては,ディレクトリの指定を相対パスで行うことを推奨する. 189 これは,Cygwin環境の絶対パスは,Windowsネイティブでビルドされたツールは 190 解釈できないためである. 191 192 193 2.ターゲット依存部 194 195 2.1 ターゲット依存部の概要 196 197 ASPカーネルのターゲット非依存部と,各種のターゲットシステムに対応するた 198 めのターゲット依存部は,別々に開発されている.そのため,ASPカーネルが対 199 応しているすべてのターゲット依存部を,バージョンを整合させてパッケージ 200 化することは困難である.そこで,主に初級のユーザを対象にした簡易パッケー 201 ジと,上級のユーザやカーネル開発者を対象にした個別パッケージを用意して 202 いる. 203 204 ASPカーネルを未サポートのターゲットシステムへポーティングするために必要 205 な作業は,開発環境の構築と標準の開発環境との差異の吸収,カーネル自身の 206 ポーティング,システムサービスのポーティングなどからなる.詳しくは, 207 「ターゲット依存部 ポーティングガイド」を参照すること. 208 209 2.2 簡易パッケージ 210 211 簡易パッケージは,ASPカーネルが対応しているターゲットシステム毎に用意さ 212 れ,そのターゲットシステム上でASPカーネルを動作させるために必要なファイ 213 ル一式をパッケージ化したものである.簡易パッケージに含まれるファイルは, 214 バージョンが整合していることが確認されている. 215 216 簡易パッケージのバージョン番号は,パッケージ化した日付とすることを原則 217 とするが,ターゲットシステム毎の事情によりこの原則に従わない場合がある. 218 219 簡易パッケージは,基本的には,次に説明する個別パッケージを複数まとめた 220 ものである.そのため,対象ターゲットシステムに必要のないファイルも含ま 221 れている.また,簡易パッケージに含まれている個別パッケージのバージョン 222 は,個別パッケージのMANIFESTファイルを参照することで知ることができる. 223 224 2.3 個別パッケージ 225 226 個別パッケージは,ASPカーネルの開発単位毎に,その開発単位で開発を担当し 227 ているファイル一式をパッケージ化したものである.ASPカーネルのターゲット 228 非依存部も,一つの個別パッケージとして配布される.ある個別パッケージを 229 使用するためには,一般には,他の個別パッケージが必要となる.ターゲット 230 依存部の個別パッケージを使用するために必要となる個別パッケージとそのバー 231 ジョンについては,ターゲット依存部のユーザーズマニュアルを参照すること. 232 使用する個別パッケージのバージョンを整合させることは,ユーザの責任であ 233 る. 234 235 個別パッケージのバージョン番号は,X.Y.Zの形で表現される.ターゲット非依 236 存部のバージョン番号を,ASPカーネル全体のリリース番号とする.ターゲット 237 依存部のバージョン番号は,XとYが,それが依存するターゲット非依存部と一 238 致している.それに対して,Zは一致しているとは限らない.例えば,ターゲッ 239 ト非依存部のバージョン1.1.0に対応するターゲット依存部は,バージョン 240 1.1.Zの形となる.ターゲット依存部のみがバージョンアップした場合には,Z 241 が変更される. 242 243 使用する個別パッケージは,次の例のように,ターゲット非依存部の個別パッ 244 ケージを展開したのと同じディレクトリで展開する. 299 245 300 246 % tar xvfz asp-1.1.0.tar.gz 301 247 % tar xvfz asp_arch_arm_gcc_1.1.2.tar.gz 302 248 303 ã¿ã¼ã²ããéä¾åé¨ã®åå¥ããã±ã¼ã¸ã«ã¯ï¼ä»¥ä¸ã®ã¿ã¼ã²ããä¾åé¨ãå«ã¾ã 304 ã¦ãããï¼ãããã¯ä»ã®ã¿ã¼ã²ããã·ã¹ãã ã«ãã¼ãã£ã³ã°ããéã®åèã«ã 305 ãããã«ç¨æãã¦ãããã®ã§ããï¼ãã®åä½ã«ã¤ãã¦ã¯æªæ¤è¨¼ã§ããï¼ 306 307 target/dve68k_gcc DVE-68K/40ï¼GNUéçºç°å¢ï¼ç¨ã¿ã¼ã²ããä¾åé¨ 308 arch/m68k_gcc M68040ï¼GNUéçºç°å¢ï¼ç¨ããã»ããµä¾åé¨ 309 pdic/upd72001 μPD72001ç¨ ç°¡æSIOãã©ã¤ã 310 311 312 ï¼ï¼ã¯ã¤ãã¯ã¹ã¿ã¼ãã¬ã¤ã 313 314 ããã§ã¯ï¼ã¿ã¼ã²ããä¾åé¨ãç¨æããã¦ããã¿ã¼ã²ããã·ã¹ãã ä¸ã§ï¼ASPã«ã¼ 315 ãã«ä¸ã§åä½ãããµã³ãã«ããã°ã©ã ãæ§ç¯ã»åä½ãããã¾ã§ã®æé ã示ãï¼ 316 317 3.1 éçºç°å¢ã®æºå 318 319 ASPã«ã¼ãã«ãç¨ããã·ã¹ãã æ§ç¯ã«ã¯ï¼ä»¥ä¸ã®ãã¼ã«ãå¿ 320 è¦ã§ããï¼ 321 322 ãã¹ãã·ã¹ãã ç¨ã®ãã¼ã« 323 perl åä½ç¢ºèªï¼5.10.0 324 GNU Make åä½ç¢ºèªï¼3.81 325 326 TOPPERSæ°ä¸ä»£ã«ã¼ãã«ç¨ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ 327 cfg åä½ç¢ºèªï¼1.9.4 328 â» 1.5以åã®ãã¼ã¸ã§ã³ã§ã¯åä½ããªãï¼ 329 330 ã¿ã¼ã²ããã·ã¹ãã ç¨ã®ãã¼ã«ï¼ã¯ãã¹éçºç°å¢ï¼ 331 æ¨æºè¦æ ¼ã«æºæ ããCã³ã³ãã¤ã© 332 ã¢ã»ã³ãã©ï¼ãªã³ã«ï¼ã©ã¤ãã©ãªã¢ã³ 333 ã·ã³ãã«ãã¡ã¤ã«åºåãã¼ã«ï¼ãããµãã¡ã¤ã«åºåãã¼ã« 334 æ¨æºCã©ã¤ãã©ãªï¼å¿ 335 é ã§ã¯ãªãï¼ 336 337 ã¿ã¼ã²ããã·ã¹ãã ç¨ã®ãã¼ã«ã«GNUéçºç°å¢ãç¨ããå ´åã«ã¯ï¼ä»¥ä¸ã®ãã¼ã« 338 ãå¿ 339 è¦ã§ããï¼ 340 341 ã¿ã¼ã²ããã·ã¹ãã ç¨ã®GNUéçºç°å¢ãã¼ã« 342 BINUTILSï¼asï¼ldï¼arï¼nmï¼ranlibï¼objcopyï¼objdumpï¼ 343 GCCã¾ãã¯GCC-COREï¼gccããã³ããããå¼ã³åºããããã¼ã«ï¼ 344 NEWLIBï¼æ¨æºCã©ã¤ãã©ãªï¼å¿ 345 é ã§ã¯ãªãï¼ 346 347 åä½ç¢ºèªããã¦ããã¿ã¼ã²ããã·ã¹ãã ç¨ã®ãã¼ã«ã«ã¤ãã¦ã¯ï¼ã¿ã¼ã²ããä¾ 348 åé¨ã®ã¦ã¼ã¶ã¼ãºããã¥ã¢ã«ãåç 349 §ãããã¨ï¼ 350 351 ã¿ã¼ã²ããã·ã¹ãã ç¨ã®æ¨æºCã©ã¤ãã©ãªã¯ï¼ã¢ããªã±ã¼ã·ã§ã³ãæ¨æºCã©ã¤ã 352 ã©ãªã使ç¨ããªãå ´åã«ã¯ï¼å¿ 353 è¦ãªãï¼ãã ãï¼ã³ã³ãã¤ã©ãæ¨æºCã©ã¤ãã©ãª 354 é¢æ°ï¼memcpyï¼memsetãªã©ï¼ãå¼ã³åºãã³ã¼ããçæããå ´åãããï¼ãã®å ´ 355 åã«ã¯æ¨æºCã©ã¤ãã©ãªãå¿ 356 è¦ã§ããï¼æ¨æºCã©ã¤ãã©ãªãç¨æãã代ããã«ï¼ 357 çæããã³ã¼ããå¼ã³åºãé¢æ°ã®ã¿ãèªåã§ç¨æãã¦ãããï¼ 358 359 以ä¸ã§ã¯ï¼ãããã®ãã¼ã«ãç¨æã§ãã¦ãããã¨ãåæã«ï¼UNIXãã·ã³ä¸ã§ã® 360 æ§ç¯æé ã説æããï¼ã¾ã以ä¸ã®èª¬æã§ã¯ï¼makeã³ãã³ããGNU Makeã§ããã 361 ã®ã¨ããï¼ASPã«ã¼ãã«ã®ãµã³ãã«ã®Makefileã¯ï¼GNU Makeã®æ¡å¼µæ©è½ãç¨ã㦠362 ããï¼ï¼ 363 364 3.2 ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®æ§ç¯ 365 366 ã«ã¼ãã«ãæ§ç¯ããåã«ï¼ã¾ãï¼TOPPERSæ°ä¸ä»£ã«ã¼ãã«ç¨ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ 367 ãæ§ç¯ããå¿ 368 è¦ãããï¼ç°¡æããã±ã¼ã¸ã«å«ã¾ãã¦ããå ´åãªã©ï¼ã³ã³ãã£ã®ã¥ 369 ã¬ã¼ã¿ãå®è¡ãã¡ã¤ã«å½¢å¼ã§å 370 ¥æããå ´åã«ã¯ï¼ãã®ã¹ãããã¯å¿ 371 è¦ãªãï¼ 372 373 ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®æ§ç¯ã«ã¯ï¼ä»¥ä¸ã®ãã¼ã«ãå¿ 374 è¦ã§ããï¼ 375 376 ãã¹ãã·ã¹ãã ç¨ã®ãã¼ã«ï¼ã»ã«ãéçºç°å¢ï¼ 377 C++ã³ã³ãã¤ã©ï¼C++ã©ã¤ãã©ãª 378 åä½ç¢ºèªï¼Mac OS Xç°å¢ï¼ï¼GNU C++ 4.2.1 379 Boost åä½ç¢ºèªï¼1.52.0 380 GNU Make åä½ç¢ºèªï¼3.81 381 382 æåã«ï¼ããã±ã¼ã¸ã«ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®ã½ã¼ã¹ãã¡ã¤ã«ãå«ã¾ãã¦ããªã 383 å ´åã«ã¯ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®ããã±ã¼ã¸ãï¼ASPã«ã¼ãã«ã®ã½ã¼ã¹ãã¡ã¤ã« 384 ãå±éãããã£ã¬ã¯ããªã®ä¸ã«å±éããï¼ 249 ターゲット非依存部の個別パッケージには,以下のターゲット依存部が含まれ 250 ているが,これらは他のターゲットシステムにポーティングする際の参考にす 251 るために用意しているものであり,その動作については未検証である. 252 253 target/dve68k_gcc DVE-68K/40(GNU開発環境)用ターゲット依存部 254 arch/m68k_gcc M68040(GNU開発環境)用プロセッサ依存部 255 pdic/upd72001 μPD72001用 簡易SIOドライバ 256 257 258 3.クイックスタートガイド 259 260 ここでは,ターゲット依存部が用意されているターゲットシステム上で,ASPカー 261 ネル上で動作するサンプルプログラムを構築・動作させるまでの手順を示す. 262 263 3.1 開発環境の準備 264 265 ASPカーネルを用いたシステム構築には,以下のツールが必要である. 266 267 ホストシステム用のツール 268 perl 動作確認:5.10.0 269 GNU Make 動作確認:3.81 270 271 TOPPERS新世代カーネル用コンフィギュレータ 272 cfg 動作確認:1.9.4 273 ※ 1.5以前のバージョンでは動作しない. 274 275 ターゲットシステム用のツール(クロス開発環境) 276 標準規格に準拠したCコンパイラ 277 アセンブラ,リンカ,ライブラリアン 278 シンボルファイル出力ツール,ヘキサファイル出力ツール 279 標準Cライブラリ(必須ではない) 280 281 ターゲットシステム用のツールにGNU開発環境を用いる場合には,以下のツール 282 が必要である. 283 284 ターゲットシステム用のGNU開発環境ツール 285 BINUTILS(as,ld,ar,nm,ranlib,objcopy,objdump) 286 GCCまたはGCC-CORE(gccおよびそこから呼び出されるツール) 287 NEWLIB(標準Cライブラリ,必須ではない) 288 289 動作確認されているターゲットシステム用のツールについては,ターゲット依 290 存部のユーザーズマニュアルを参照すること. 291 292 ターゲットシステム用の標準Cライブラリは,アプリケーションが標準Cライブ 293 ラリを使用しない場合には,必要ない.ただし,コンパイラが標準Cライブラリ 294 関数(memcpy,memsetなど)を呼び出すコードを生成する場合があり,その場 295 合には標準Cライブラリが必要である.標準Cライブラリを用意する代わりに, 296 生成したコードが呼び出す関数のみを自分で用意してもよい. 297 298 以下では,これらのツールが用意できていることを前提に,UNIXマシン上での 299 構築手順を説明する.また以下の説明では,makeコマンドがGNU Makeであるも 300 のとする(ASPカーネルのサンプルのMakefileは,GNU Makeの拡張機能を用いて 301 いる). 302 303 3.2 コンフィギュレータの構築 304 305 カーネルを構築する前に,まず,TOPPERS新世代カーネル用コンフィギュレータ 306 を構築する必要がある.簡易パッケージに含まれていた場合など,コンフィギュ 307 レータを実行ファイル形式で入手した場合には,このステップは必要ない. 308 309 コンフィギュレータの構築には,以下のツールが必要である. 310 311 ホストシステム用のツール(セルフ開発環境) 312 C++コンパイラ,C++ライブラリ 313 動作確認(Mac OS X環境):GNU C++ 4.2.1 314 Boost 動作確認:1.52.0 315 GNU Make 動作確認:3.81 316 317 最初に,パッケージにコンフィギュレータのソースファイルが含まれていない 318 場合には,コンフィギュレータのパッケージを,ASPカーネルのソースファイル 319 を展開したディレクトリの下に展開する. 385 320 386 321 % cd asp 387 322 % tar xvfz cfg-1.9.4.tar.gz 388 323 389 ã¾ãã¯ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®ããã±ã¼ã¸ãä»ã®ãã£ã¬ã¯ããªã«å±éãï¼ASPã«ã¼ 390 ãã«ã®ã½ã¼ã¹ãã¡ã¤ã«ãå±éãããã£ã¬ã¯ããªããã·ã³ããªãã¯ãªã³ã¯ãã¯ã£ 391 ã¦ãããï¼ 392 393 ã½ã¼ã¹ãã¡ã¤ã«ãå±éã§ããã¨ï¼cfgãã£ã¬ã¯ããªã«ç§»åãï¼ã³ã³ãã£ã®ã¥ã¬ã¼ 394 ã·ã§ã³ã¹ã¯ãªããï¼configureï¼ã§Makefileã®ç°å¢ä¾åé¨ï¼Makefile.configï¼ 395 ãçæããå¾ï¼makeã³ãã³ãã«ããã³ã³ãã£ã®ã¥ã¬ã¼ã¿ï¼cfgããã°ã©ã ï¼ãæ§ 396 ç¯ã§ããï¼ 324 または,コンフィギュレータのパッケージを他のディレクトリに展開し,ASPカー 325 ネルのソースファイルを展開したディレクトリからシンボリックリンクをはっ 326 てもよい. 327 328 ソースファイルが展開できると,cfgディレクトリに移動し,コンフィギュレー 329 ションスクリプト(configure)でMakefileの環境依存部(Makefile.config) 330 を生成した後,makeコマンドによりコンフィギュレータ(cfgプログラム)が構 331 築できる. 397 332 398 333 % cd cfg … … 401 336 % make 402 337 403 ãã ãï¼Boostãã¤ã³ã¹ãã¼ã«ãããã£ã¬ã¯ããªããã³å称ãæ¨æºã§æ³å®ãã¦ã 404 ããã®ã¨ã¯éãå ´åã«ã¯ï¼configureã®--with-headersããã³--with-libraries 405 ãªãã·ã§ã³ã«ããï¼ããããã¡ã¤ã«ããã³ã©ã¤ãã©ãªã®ç½®ããããã£ã¬ã¯ã㪠406 ãæå®ããå¿ 407 è¦ãããï¼--without-xmlã¯ï¼AUTOSAR XMLãã¡ã¤ã«ã®èªã¿è¾¼ã¿æ© 408 è½ï¼ASPã«ã¼ãã«ç¨ã«ã¯å¿ 409 è¦ãªãï¼ãåãè¾¼ã¾ãªããã¨ãæå®ãããªãã·ã§ã³ã§ 410 ããï¼AUTOSAR XMLãã¡ã¤ã«ã®èªã¿è¾¼ã¿æ©è½ãåãè¾¼ãã«ã¯ï¼Xerces-C++ XML 411 Parserãå¿ 412 è¦ã«ãªãï¼ï¼ 413 414 ã¾ãï¼ãã¹ãã·ã¹ãã ã«ãã£ã¦ã¯ï¼æé©åã¬ãã«ãä¸ããã¨æ£ããã³ã³ãã¤ã« 415 ã§ããªããã¨ãç¥ããã¦ããï¼ãã®ãããªå ´åã«ã¯ï¼æé©åã¬ãã«ãä¸ãããï¼ 416 æé©åãææ¢ããããã«ï¼Makefileãä¿®æ£ããå¿ 417 è¦ãããï¼ 418 419 ãªãï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®ä½¿ç¨æ¹æ³ã«ã¤ãã¦ã¯ï¼ãï¼ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ 420 ã®ä½¿ãæ¹ãã®ç« ã§èª¬æããï¼ 421 422 3.3 ãµã³ãã«ããã°ã©ã ã®æ§ç¯ã¨å®è¡ 423 424 次ã«ï¼ASPã«ã¼ãã«ä¸ã§åä½ãããµã³ãã«ããã°ã©ã ãæ§ç¯ããæ¹æ³ã説æããï¼ 425 426 ã¾ãï¼ãµã³ãã«ããã°ã©ã ã®ãªãã¸ã§ã¯ããã¡ã¤ã«ãç½®ããã£ã¬ã¯ããªãä½æ 427 ãï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªãããå®è¡ããï¼ä¾ãã°ï¼ãªãã¸ã§ã¯ããã¡ 428 ã¤ã«ãç½®ããã£ã¬ã¯ããªãï¼ASPã«ã¼ãã«ã®ã½ã¼ã¹ãã¡ã¤ã«ãå±éãããã£ã¬ 429 ã¯ããªã®ä¸ã®OBJã¨ããå称ã®ãã£ã¬ã¯ããªã«ããå ´åã«ã¯ï¼æ¬¡ã®ã³ãã³ãã 430 å®è¡ããï¼ãã£ã¬ã¯ããªã®å ´æã¨å称ã¯ä»»æã«æ±ºãã¦ããï¼ï¼ 338 ただし,Boostをインストールしたディレクトリおよび名称が標準で想定してい 339 るものとは違う場合には,configureの--with-headersおよび--with-libraries 340 オプションにより,ヘッダファイルおよびライブラリの置かれたディレクトリ 341 を指定する必要がある.--without-xmlは,AUTOSAR XMLファイルの読み込み機 342 能(ASPカーネル用には必要ない)を取り込まないことを指定するオプションで 343 ある(AUTOSAR XMLファイルの読み込み機能を取り込むには,Xerces-C++ XML 344 Parserが必要になる). 345 346 また,ホストシステムによっては,最適化レベルを上げると正しくコンパイル 347 できないことが知られている.そのような場合には,最適化レベルを下げるか, 348 最適化を抑止するように,Makefileを修正する必要がある. 349 350 なお,コンフィギュレータの使用方法については,「7.コンフィギュレータ 351 の使い方」の章で説明する. 352 353 3.3 サンプルプログラムの構築と実行 354 355 次に,ASPカーネル上で動作するサンプルプログラムを構築する方法を説明する. 356 357 まず,サンプルプログラムのオブジェクトファイルを置くディレクトリを作成 358 し,コンフィギュレーションスクリプトを実行する.例えば,オブジェクトファ 359 イルを置くディレクトリを,ASPカーネルのソースファイルを展開したディレ 360 クトリの下のOBJという名称のディレクトリにする場合には,次のコマンドを 361 実行する(ディレクトリの場所と名称は任意に決めてよい). 431 362 432 363 % cd asp 433 364 % mkdir OBJ 434 365 % cd OBJ 435 % perl ../configure -T <ã¿ã¼ã²ããç¥ç§°> 436 437 ããã§ï¼<ã¿ã¼ã²ããç¥ç§°>ã¯ï¼targetãã£ã¬ã¯ããªã®ä¸ã«ç½®ããã¦ããã¿ã¼ã²ã 438 ãä¾åé¨ãã£ã¬ã¯ããªã®å称ã§ããï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããã®ãª 439 ãã·ã§ã³ã«ã¤ãã¦ã¯ï¼ãï¼ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããã®ä½¿ãæ¹ãã® 440 ç« ã§èª¬æããï¼ 441 442 ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããã®å®è¡ã«ããï¼ã«ã¬ã³ããã£ã¬ã¯ããªã«ã¯ï¼ 443 ãµã³ãã«ããã°ã©ã ãæ§ç¯ããããã®Makefileï¼ãµã³ãã«ããã°ã©ã ç¨ã®ã³ã³ 444 ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ï¼sample1.cfgï¼ï¼ãµã³ãã«ããã°ã©ã æ¬ä½ 445 ï¼sample1.hããã³sample1.cï¼ãçæãããï¼ 446 447 ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããã®å®è¡å¾ï¼å¿ 448 è¦ã§ããã°Makefileãä¿®æ£ã 449 ãï¼Makefileã®ä¿®æ£æ¹æ³ã«ã¤ãã¦ã¯ï¼ãï¼ï¼Makefileã®ä¿®æ£æ¹æ³ãã®ç« ã§èª¬æ 450 ããï¼ 451 452 ãã®å¾ï¼make dependã§ä¾åé¢ä¿ãã¡ã¤ã«ï¼Makefile.dependï¼ãçæããå¾ï¼ 453 makeã³ãã³ãã«ãããµã³ãã«ããã°ã©ã ã®ãã¼ãã¢ã¸ã¥ã¼ã«ï¼aspã¾ã㯠454 asp.exeï¼ãçæã§ããï¼ä¾åé¢ä¿ãã¡ã¤ã«ã®çæã«ã¯è¥å¹²æéããããï¼ 366 % perl ../configure -T <ターゲット略称> 367 368 ここで,<ターゲット略称>は,targetディレクトリの下に置かれているターゲッ 369 ト依存部ディレクトリの名称である.コンフィギュレーションスクリプトのオ 370 プションについては,「5.コンフィギュレーションスクリプトの使い方」の 371 章で説明する. 372 373 コンフィギュレーションスクリプトの実行により,カレントディレクトリには, 374 サンプルプログラムを構築するためのMakefile,サンプルプログラム用のコン 375 フィギュレーションファイル(sample1.cfg),サンプルプログラム本体 376 (sample1.hおよびsample1.c)が生成される. 377 378 コンフィギュレーションスクリプトの実行後,必要であればMakefileを修正す 379 る.Makefileの修正方法については,「6.Makefileの修正方法」の章で説明 380 する. 381 382 その後,make dependで依存関係ファイル(Makefile.depend)を生成した後, 383 makeコマンドによりサンプルプログラムのロードモジュール(aspまたは 384 asp.exe)が生成できる.依存関係ファイルの生成には若干時間がかかる. 455 385 456 386 % make depend 457 387 % make 458 388 459 ããã§æ§ç¯ãããµã³ãã«ããã°ã©ã ï¼sample1.hï¼sample1.cï¼sample1.cfgï¼ 460 ã¯ï¼ASPã«ã¼ãã«ã®åºæ¬çãªåä½ã確èªããããã®ãã®ã§ããï¼ãã®ããã°ã© 461 ã ã®æ¦è¦èª¬æã¯ï¼sample1.cã®å 462 é ã®ã³ã¡ã³ãã«ããï¼ 463 464 3.4 ã«ã¼ãã«ãé¢æ°åä½ã§ã©ã¤ãã©ãªåããæ¹æ³ 465 466 åç¯ã®æé ã§ã¯ï¼ã«ã¼ãã«ããã¡ã¤ã«åä½ã§ã³ã³ãã¤ã«ãï¼ã©ã¤ãã©ãªåã㦠467 ãããï¼ã«ã¼ãã«ã®ã³ã¼ããµã¤ãºã縮å°ããããã«ã¯ï¼ä½¿ç¨ããªããµã¼ãã¹ã³ã¼ 468 ã«ã¯ãªã³ã¯ããªãæ¹ãæã¾ããï¼ããã§ASPã«ã¼ãã«ã§ã¯ï¼ã«ã¼ãã«ãé¢æ°åä½ 469 ã§ã³ã³ãã¤ã«ãï¼ã©ã¤ãã©ãªåããæ¹æ³ãç¨æãã¦ããï¼ 470 471 ãã®æ¹æ³ã§ãµã³ãã«ããã°ã©ã ãæ§ç¯ããã«ã¯ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ 472 ãªããã«ï¼ãããæ示ãããªãã·ã§ã³ï¼-fï¼ãä»å ããã ãã§ããï¼ 389 ここで構築したサンプルプログラム(sample1.h,sample1.c,sample1.cfg) 390 は,ASPカーネルの基本的な動作を確認するためのものである.このプログラ 391 ムの概要説明は,sample1.cの先頭のコメントにある. 392 393 3.4 カーネルを関数単位でライブラリ化する方法 394 395 前節の手順では,カーネルをファイル単位でコンパイルし,ライブラリ化して 396 いたが,カーネルのコードサイズを縮小するためには,使用しないサービスコー 397 ルはリンクしない方が望ましい.そこでASPカーネルでは,カーネルを関数単位 398 でコンパイルし,ライブラリ化する方法を用意している. 399 400 この方法でサンプルプログラムを構築するには,コンフィギュレーションスク 401 リプトに,それを指示するオプション(-f)を付加するだけでよい. 473 402 474 403 % mkdir OBJ_LIB 475 404 % cd OBJ_LIB 476 % perl ../configure -T <ã¿ã¼ã²ããç¥ç§°> -f 477 478 ããã§ï¼OBJ_LIBã¨ãããã£ã¬ã¯ããªã®å ´æã¨å称ã¯ï¼ä»»æã«æ±ºãã¦ããï¼ãã 479 以éã®æé ã¯ï¼åç¯ã¨åãã§ããï¼ 480 481 3.5 ã¢ããªã±ã¼ã·ã§ã³ã¨ã«ã¼ãã«ãå¥ã 482 ã«æ§ç¯ããæ¹æ³ 483 484 åç¯ã§èª¬æããæ¹æ³ã§ã¯ï¼ã¢ããªã±ã¼ã·ã§ã³ã¨ã«ã¼ãã«ãåæã«çæããããï¼ 485 ãªãã¸ã§ã¯ããã¡ã¤ã«ãç½®ããã£ã¬ã¯ããªã«é常ã«å¤ãã®ãã¡ã¤ã«ãä½æãã 486 ã¦ï¼æ±ãã«ãããªãï¼ããã§ï¼ã«ã¼ãã«ãä¿®æ£ããé »åº¦ãä½ãå ´åã«ã¯ï¼ã«ã¼ 487 ãã«ã¯äºåã«æ§ç¯ãã¦ããï¼å¾ã§ã¢ããªã±ã¼ã·ã§ã³ã ããæ§ç¯ããæ¹æ³ãç¨æ 488 ãã¦ããï¼ä»¥ä¸ã§ã¯ï¼ãµã³ãã«ããã°ã©ã ãæ§ç¯ãä¾ã«ï¼ãã®æé ã«ã¤ãã¦èª¬ 489 æããï¼ 490 491 ã¾ãï¼ã«ã¼ãã«ãæ§ç¯ãããã£ã¬ã¯ããªãä½æãï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ 492 ã¯ãªãããå®è¡ããï¼ä¾ãã°ï¼ã«ã¼ãã«ãæ§ç¯ãããã£ã¬ã¯ããªãï¼ASPã«ã¼ 493 ãã«ã®ã½ã¼ã¹ãã¡ã¤ã«ãå±éãããã£ã¬ã¯ããªã®ä¸ã®KERNEL_LIBã¨ããå称㮠494 ãã£ã¬ã¯ããªã«ããå ´åã«ã¯ï¼æ¬¡ã®ã³ãã³ããå®è¡ããï¼ãã£ã¬ã¯ããªã®å ´æ 495 ã¨å称ã¯ä»»æã«æ±ºãã¦ããï¼ï¼ 405 % perl ../configure -T <ターゲット略称> -f 406 407 ここで,OBJ_LIBというディレクトリの場所と名称は,任意に決めてよい.これ 408 以降の手順は,前節と同じである. 409 410 3.5 アプリケーションとカーネルを別々に構築する方法 411 412 前節で説明した方法では,アプリケーションとカーネルを同時に生成するため, 413 オブジェクトファイルを置くディレクトリに非常に多くのファイルが作成され 414 て,扱いにくくなる.そこで,カーネルを修正する頻度が低い場合には,カー 415 ネルは事前に構築しておき,後でアプリケーションだけを構築する方法を用意 416 している.以下では,サンプルプログラムを構築を例に,その手順について説 417 明する. 418 419 まず,カーネルを構築するディレクトリを作成し,コンフィギュレーションス 420 クリプトを実行する.例えば,カーネルを構築するディレクトリを,ASPカー 421 ネルのソースファイルを展開したディレクトリの下のKERNEL_LIBという名称の 422 ディレクトリにする場合には,次のコマンドを実行する(ディレクトリの場所 423 と名称は任意に決めてよい). 496 424 497 425 % mkdir KERNEL_LIB 498 426 % cd KERNEL_LIB 499 % perl ../configure -T < ã¿ã¼ã²ããç¥ç§°> -f500 501 ããã«ããï¼ã«ã¼ãã«ãæ§ç¯ãããã£ã¬ã¯ããªã«ï¼Makefileï¼sample1.cfgï¼ 502 sample1.h ï¼sample1.cãçæããããï¼Makefile以å¤ã¯å®è³ªçã«ã¯ä½¿ç¨ããªãï¼503 504 make depend ã§ä¾åé¢ä¿ãã¡ã¤ã«ï¼Makefile.dependï¼ãçæããå¾ï¼make505 libkernel.a ã«ããã«ã¼ãã«ã©ã¤ãã©ãªï¼libkernel.aï¼ãçæã§ããï¼427 % perl ../configure -T <ターゲット略称> -f 428 429 これにより,カーネルを構築するディレクトリに,Makefile,sample1.cfg, 430 sample1.h,sample1.cが生成されるが,Makefile以外は実質的には使用しない. 431 432 make dependで依存関係ファイル(Makefile.depend)を生成した後,make 433 libkernel.aによりカーネルライブラリ(libkernel.a)が生成できる. 506 434 507 435 % make depend 508 436 % make libkernel.a 509 437 510 次ã«ï¼ã¢ããªã±ã¼ã·ã§ã³ãæ§ç¯ãããã£ã¬ã¯ããªãä½æãï¼ã³ã³ãã£ã®ã¥ã¬ã¼ 511 ã·ã§ã³ã¹ã¯ãªãããå®è¡ããï¼ä¾ãã°ï¼ã¢ããªã±ã¼ã·ã§ã³ãæ§ç¯ãããã£ã¬ã¯ 512 ããªãï¼ASPã«ã¼ãã«ã®ã½ã¼ã¹ãã¡ã¤ã«ãå±éãããã£ã¬ã¯ããªã®ä¸ã®APLã¨ã 513 ãå称ã®ãã£ã¬ã¯ããªã«ããå ´åã«ã¯ï¼æ¬¡ã®ã³ãã³ããå®è¡ããï¼ãã£ã¬ã¯ã 514 ãªã®å ´æã¨å称ã¯ä»»æã«æ±ºãã¦ããï¼ï¼ 438 次に,アプリケーションを構築するディレクトリを作成し,コンフィギュレー 439 ションスクリプトを実行する.例えば,アプリケーションを構築するディレク 440 トリを,ASPカーネルのソースファイルを展開したディレクトリの下のAPLとい 441 う名称のディレクトリにする場合には,次のコマンドを実行する(ディレクト 442 リの場所と名称は任意に決めてよい). 515 443 516 444 % cd .. 517 445 % mkdir APL 518 446 % cd APL 519 % perl ../configure -T < ã¿ã¼ã²ããç¥ç§°> -L ../KERNEL_LIB520 521 ããã§-Lãªãã·ã§ã³ã«ã¯ï¼ã«ã¼ãã«ãæ§ç¯ãããã£ã¬ã¯ããªã®ãã¹ãæå®ããï¼ 522 523 æå¾ã«ï¼make dependã§ä¾åé¢ä¿ãã¡ã¤ã«ï¼Makefile.dependï¼ãçæããå¾ï¼ 524 make ã³ãã³ãã«ãããµã³ãã«ããã°ã©ã ã®ãã¼ãã¢ã¸ã¥ã¼ã«ï¼aspã¾ãã¯525 asp.exe ï¼ãçæã§ããï¼447 % perl ../configure -T <ターゲット略称> -L ../KERNEL_LIB 448 449 ここで-Lオプションには,カーネルを構築したディレクトリのパスを指定する. 450 451 最後に,make dependで依存関係ファイル(Makefile.depend)を生成した後, 452 makeコマンドによりサンプルプログラムのロードモジュール(aspまたは 453 asp.exe)が生成できる. 526 454 527 455 % make depend 528 456 % make 529 457 530 ãã®æé ã§ã¯ï¼ã¢ããªã±ã¼ã·ã§ã³æ§ç¯æã«ã¯ã«ã¼ãã«ã®åæ§ç¯ãå¿ 531 è¦ããã§ã 532 ã¯ããªãããï¼ã«ã¼ãã«ã®ã½ã¼ã¹ã³ã¼ããä¿®æ£ããå ´åã«ã¯ï¼ã«ã¼ãã«ãæ§ç¯ 533 ãããã£ã¬ã¯ããªã§make libkernel.aãåå®è¡ããå¿ 534 è¦ãããï¼ 535 536 以ä¸ã§ã¯ï¼ã«ã¼ãã«ã¨ã¢ããªã±ã¼ã·ã§ã³ãå¥ã 537 ã®ãã£ã¬ã¯ããªã§æ§ç¯ãããï¼ 538 -Lãªãã·ã§ã³ã«ã«ã¬ã³ããã£ã¬ã¯ããªï¼ãã ãï¼"."ã¨ããè¨è¿°ã§ã¯ä¸å¯ï¼ãæ 539 å®ãããã¨ã§ï¼ã«ã¼ãã«ã¨ã¢ããªã±ã¼ã·ã§ã³ãåããã£ã¬ã¯ããªã§å¥ã 540 ã«æ§ç¯ 541 ãããã¨ãã§ããï¼å 542 ·ä½çã«ã¯ï¼æ¬¡ã®æé ã¨ãªãï¼ 458 この手順では,アプリケーション構築時にはカーネルの再構築が必要かチェッ 459 クしないため,カーネルのソースコードを修正した場合には,カーネルを構築 460 したディレクトリでmake libkernel.aを再実行する必要がある. 461 462 以上では,カーネルとアプリケーションを別々のディレクトリで構築したが, 463 -Lオプションにカレントディレクトリ(ただし,"."という記述では不可)を指 464 定することで,カーネルとアプリケーションを同じディレクトリで別々に構築 465 することもできる.具体的には,次の手順となる. 543 466 544 467 % mkdir OBJ 545 468 % cd OBJ 546 % perl ../configure -T < ã¿ã¼ã²ããç¥ç§°> -L ../OBJ469 % perl ../configure -T <ターゲット略称> -L ../OBJ 547 470 % make depend 548 471 % make libkernel.a … … 550 473 % make 551 474 552 ããã§ï¼make cleankernelã¯ï¼ã«ã¼ãã«ã©ã¤ãã©ãªãçæããããã®ä¸éãã¡ 553 ã¤ã«ãåé¤ãããã®ã§ããï¼ãã®æé ã§ã¯ï¼make dependã«ããã«ã¼ãã«ã©ã¤ 554 ãã©ãªã«é¢ããä¾åé¢ä¿ãçæããªãããï¼ã«ã¼ãã«ã®ã½ã¼ã¹ã³ã¼ããä¿®æ£ã 555 ãå ´åã«ã¯ï¼å¿ 556 ãmake cleankernelï¼ã¾ãã¯ï¼make cleanï¼ãã¦ããï¼make 557 libkernel.aããå¿ 558 è¦ãããã®ã§æ³¨æãããã¨ï¼ 559 560 ãªãï¼make realcleanããã¨ï¼make dependã¨makeã«ããçæãããã¡ã¤ã«ãã 561 ã¹ã¦åé¤ããï¼ããã«å¯¾ãã¦ï¼make cleanã§ã¯ï¼make dependã«ããçæããä¾ 562 åé¢ä¿ãã¡ã¤ã«ã¯åé¤ããªãï¼ 563 564 565 ï¼ï¼ãã£ã¬ã¯ããªæ§æã»ãã¡ã¤ã«æ§æ 566 567 4.1 é 568 å¸ããã±ã¼ã¸ã®ãã£ã¬ã¯ããªæ§æ 569 570 include/ ã¢ããªã±ã¼ã·ã§ã³åãããããã¡ã¤ã« 571 kernel/ ã«ã¼ãã«ã®ã½ã¼ã¹ãã¡ã¤ã« 572 syssvc/ ã·ã¹ãã ãµã¼ãã¹ã®ããããã¡ã¤ã«ï¼ã½ã¼ã¹ãã¡ã¤ã« 573 library/ ãµãã¼ãã©ã¤ãã©ãªã®ã½ã¼ã¹ãã¡ã¤ã« 574 target/ ã¿ã¼ã²ããä¾åé¨ 575 arch/ ã¿ã¼ã²ããä¾åé¨ã®å 576 ±éé¨å 577 gcc/ GCCéçºç°å¢ä¾åé¨ 578 logtrace/ ãã¬ã¼ã¹ãã°è¨é²ã®ãµã³ãã«ã³ã¼ã 579 pdic/ PDICï¼ããã¤ã¹ãã©ã¤ãã®OSéä¾åé¨åï¼ 580 utils/ ã¦ã¼ãã£ãªãã£ããã°ã©ã 581 sample/ ãµã³ãã«ããã°ã©ã ã¨Makefile 582 doc/ ããã¥ã¡ã³ã 583 test/ ãã¹ãããã°ã©ã 584 extension/ æ¡å¼µããã±ã¼ã¸ 585 586 4.2 ã¿ã¼ã²ããéä¾åé¨ã®ãã¡ã¤ã«æ§æ 587 588 ã¿ã¼ã²ããéä¾åé¨ï¼ãã¹ãããã°ã©ã ã¨æ¡å¼µããã±ã¼ã¸ã¯é¤ãï¼ã®åãã¡ã¤ 589 ã«ã®æ¦è¦ã¯æ¬¡ã®éãï¼ 590 591 README.txt TOPPERS/ASPã«ã¼ãã«ã®ç°¡åãªç´¹ä» 592 configure ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããï¼GNUéçºç°å¢ç¨ï¼ 593 MANIFEST åå¥ããã±ã¼ã¸ã®ãã¡ã¤ã«ãªã¹ã 475 ここで,make cleankernelは,カーネルライブラリを生成するための中間ファ 476 イルを削除するものである.この手順では,make dependによりカーネルライ 477 ブラリに関する依存関係を生成しないため,カーネルのソースコードを修正し 478 た場合には,必ずmake cleankernel(または,make clean)してから,make 479 libkernel.aする必要があるので注意すること. 480 481 なお,make realcleanすると,make dependとmakeにより生成したファイルをす 482 べて削除する.それに対して,make cleanでは,make dependにより生成した依 483 存関係ファイルは削除しない. 484 485 486 4.ディレクトリ構成・ファイル構成 487 488 4.1 配布パッケージのディレクトリ構成 489 490 include/ アプリケーション向けヘッダファイル 491 kernel/ カーネルのソースファイル 492 syssvc/ システムサービスのヘッダファイル,ソースファイル 493 library/ サポートライブラリのソースファイル 494 target/ ターゲット依存部 495 arch/ ターゲット依存部の共通部分 496 gcc/ GCC開発環境依存部 497 logtrace/ トレースログ記録のサンプルコード 498 pdic/ PDIC(デバイスドライバのOS非依存部分) 499 utils/ ユーティリティプログラム 500 sample/ サンプルプログラムとMakefile 501 doc/ ドキュメント 502 test/ テストプログラム 503 extension/ 拡張パッケージ 504 505 4.2 ターゲット非依存部のファイル構成 506 507 ターゲット非依存部(テストプログラムと拡張パッケージは除く)の各ファイ 508 ルの概要は次の通り. 509 510 README.txt TOPPERS/ASPカーネルの簡単な紹介 511 configure コンフィギュレーションスクリプト(GNU開発環境用) 512 MANIFEST 個別パッケージのファイルリスト 594 513 595 514 include/ 596 kernel.h ASPã«ã¼ãã«ã使ç¨ããããã®å®ç¾© 597 sil.h ã·ã¹ãã ã¤ã³ã¿ãã§ã¼ã¹ã¬ã¤ã¤ã使ç¨ããããã®å®ç¾© 598 t_stddef.h TOPPERSå 599 ±éããããã¡ã¤ã« 600 itron.h ITRONä»æ§å 601 ±éè¦å®ã®ãã¼ã¿åã»å®æ°ã»ãã¯ã 602 t_syslog.h ã·ã¹ãã ãã°åºåãè¡ãããã®å®ç¾© 603 t_stdlib.h åºæ¬çãªã©ã¤ãã©ãªé¢æ°ã使ç¨ããããã®å®ç¾© 604 queue.h ãã¥ã¼æä½ã©ã¤ãã©ãªã使ç¨ããããã®å®ç¾© 605 test_lib.h ãã¹ãããã°ã©ã ç¨ã©ã¤ãã©ãªã使ç¨ããããã®å®ç¾© 606 histogram.h å®è¡æéåå¸éè¨ã¢ã¸ã¥ã¼ã«ã使ç¨ããããã®å®ç¾© 607 log_output.h ã·ã¹ãã ãã°ã®ãã©ã¼ãããåºåã使ç¨ããããã®å®ç¾© 515 kernel.h ASPカーネルを使用するための定義 516 sil.h システムインタフェースレイヤを使用するための定義 517 t_stddef.h TOPPERS共通ヘッダファイル 518 itron.h ITRON仕様共通規定のデータ型・定数・マクロ 519 t_syslog.h システムログ出力を行うための定義 520 t_stdlib.h 基本的なライブラリ関数を使用するための定義 521 queue.h キュー操作ライブラリを使用するための定義 522 test_lib.h テストプログラム用ライブラリを使用するための定義 523 histogram.h 実行時間分布集計モジュールを使用するための定義 524 log_output.h システムログのフォーマット出力を使用するための定義 608 525 609 526 kernel/ 610 Makefile.kernel ã«ã¼ãã«ã®ãã¡ã¤ã«æ§æã®å®ç¾© 611 kernel_impl.h ã«ã¼ãã«å®è£ 612 ç¨æ¨æºããããã¡ã¤ã« 613 kernel_int.h kernel_cfg.cç¨ã®ããããã¡ã¤ã« 614 kernel_rename.def ã«ã¼ãã«ã®å 615 é¨èå¥åã®ãªãã¼ã å®ç¾© 616 kernel_rename.h ã«ã¼ãã«ã®å 617 é¨èå¥åã®ãªãã¼ã 618 kernel_unrename.h ã«ã¼ãã«ã®å 619 é¨èå¥åã®ãªãã¼ã è§£é¤ 620 kernel_api.csv ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®éçAPIãã¼ãã« 621 kernel_def.csv ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®å¤åå¾ã·ã³ãã«ãã¼ãã« 622 kernel.tf ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®ãã¹2ã®ãã³ãã¬ã¼ããã¡ã¤ã« 623 kernel_check.tf ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®ãã¹3ã®ãã³ãã¬ã¼ããã¡ã¤ã« 624 genoffset.tf ãªãã»ãããã¡ã¤ã«çæç¨ã®ãã³ãã¬ã¼ããã¡ã¤ã« 625 allfunc.h ãã¹ã¦ã®é¢æ°ãã³ã³ãã¤ã«ããããã®å®ç¾© 626 check.h ã¨ã©ã¼ãã§ãã¯ç¨ãã¯ã 627 startup.c ã«ã¼ãã«ã®åæåã¨çµäºå¦ç 628 task.h ã¿ã¹ã¯æä½ã«ã¼ãã³é¢é£ã®å®ç¾© 629 task.c ã¿ã¹ã¯æä½ã«ã¼ãã³ 630 wait.h å¾ 631 ã¡ç¶æ 632 æä½ã«ã¼ãã³é¢é£ã®å®ç¾© 633 wait.c å¾ 634 ã¡ç¶æ 635 æä½ã«ã¼ãã³ 636 time_event.h ã¿ã¤ã ã¤ãã³ã管çé¢é£ã®å®ç¾© 637 time_event.c ã¿ã¤ã ã¤ãã³ã管ç 638 task_manage.c ã¿ã¹ã¯ç®¡çæ©è½ 639 task_refer.c ã¿ã¹ã¯ç¶æ 640 åç 641 §æ©è½ 642 task_sync.c ã¿ã¹ã¯ä»å±åææ©è½ 643 task_except.c ã¿ã¹ã¯ä¾å¤å¦çæ©è½ 644 semaphore.h ã»ããã©æ©è½é¢é£ã®å®ç¾© 645 semaphore.c ã»ããã©æ©è½ 646 eventflag.h ã¤ãã³ããã©ã°æ©è½é¢é£ã®å®ç¾© 647 eventflag.c ã¤ãã³ããã©ã°æ©è½ 648 dataqueue.h ãã¼ã¿ãã¥ã¼æ©è½é¢é£ã®å®ç¾© 649 dataqueue.c ãã¼ã¿ãã¥ã¼æ©è½ 650 pridataq.h åªå 651 度ãã¼ã¿ãã¥ã¼æ©è½é¢é£ã®å®ç¾© 652 pridataq.c åªå 653 度ãã¼ã¿ãã¥ã¼æ©è½ 654 mailbox.h ã¡ã¼ã«ããã¯ã¹æ©è½é¢é£ã®å®ç¾© 655 mailbox.c ã¡ã¼ã«ããã¯ã¹æ©è½ 656 mempfix.h åºå®é·ã¡ã¢ãªãã¼ã«æ©è½é¢é£ã®å®ç¾© 657 mempfix.c åºå®é·ã¡ã¢ãªãã¼ã«æ©è½ 658 time_manage.c ã·ã¹ãã æå»ç®¡çæ©è½ 659 cyclic.h å¨æãã³ãã©æ©è½é¢é£ã®å®ç¾© 660 cyclic.c å¨æãã³ãã©æ©è½ 661 alarm.h ã¢ã©ã¼ã ãã³ãã©æ©è½é¢é£ã®å®ç¾© 662 alarm.c ã¢ã©ã¼ã ãã³ãã©æ©è½ 663 sys_manage.c ã·ã¹ãã ç¶æ 664 管çæ©è½ 665 interrupt.h å²è¾¼ã¿ç®¡çæ©è½é¢é£ã®å®ç¾© 666 interrupt.c å²è¾¼ã¿ç®¡çæ©è½ 667 exception.h CPUä¾å¤ç®¡çæ©è½é¢é£ã®å®ç¾© 668 exception.c CPUä¾å¤ç®¡çæ©è½ 527 Makefile.kernel カーネルのファイル構成の定義 528 kernel_impl.h カーネル実装用標準ヘッダファイル 529 kernel_int.h kernel_cfg.c用のヘッダファイル 530 kernel_rename.def カーネルの内部識別名のリネーム定義 531 kernel_rename.h カーネルの内部識別名のリネーム 532 kernel_unrename.h カーネルの内部識別名のリネーム解除 533 kernel_api.csv コンフィギュレータの静的APIテーブル 534 kernel_def.csv コンフィギュレータの値取得シンボルテーブル 535 kernel.tf コンフィギュレータのパス2のテンプレートファイル 536 kernel_check.tf コンフィギュレータのパス3のテンプレートファイル 537 genoffset.tf オフセットファイル生成用のテンプレートファイル 538 allfunc.h すべての関数をコンパイルするための定義 539 check.h エラーチェック用マクロ 540 startup.c カーネルの初期化と終了処理 541 task.h タスク操作ルーチン関連の定義 542 task.c タスク操作ルーチン 543 wait.h 待ち状態操作ルーチン関連の定義 544 wait.c 待ち状態操作ルーチン 545 time_event.h タイムイベント管理関連の定義 546 time_event.c タイムイベント管理 547 task_manage.c タスク管理機能 548 task_refer.c タスク状態参照機能 549 task_sync.c タスク付属同期機能 550 task_except.c タスク例外処理機能 551 semaphore.h セマフォ機能関連の定義 552 semaphore.c セマフォ機能 553 eventflag.h イベントフラグ機能関連の定義 554 eventflag.c イベントフラグ機能 555 dataqueue.h データキュー機能関連の定義 556 dataqueue.c データキュー機能 557 pridataq.h 優先度データキュー機能関連の定義 558 pridataq.c 優先度データキュー機能 559 mailbox.h メールボックス機能関連の定義 560 mailbox.c メールボックス機能 561 mempfix.h 固定長メモリプール機能関連の定義 562 mempfix.c 固定長メモリプール機能 563 time_manage.c システム時刻管理機能 564 cyclic.h 周期ハンドラ機能関連の定義 565 cyclic.c 周期ハンドラ機能 566 alarm.h アラームハンドラ機能関連の定義 567 alarm.c アラームハンドラ機能 568 sys_manage.c システム状態管理機能 569 interrupt.h 割込み管理機能関連の定義 570 interrupt.c 割込み管理機能 571 exception.h CPU例外管理機能関連の定義 572 exception.c CPU例外管理機能 669 573 670 574 syssvc/ 671 banner.h ã«ã¼ãã«èµ·åã¡ãã»ã¼ã¸ã®åºåã®ããã®å®ç¾©672 banner.c ã«ã¼ãã«èµ·åã¡ãã»ã¼ã¸ã®åºå673 banner.cfg ã«ã¼ãã«èµ·åã¡ãã»ã¼ã¸ã®åºåã®ã³ã³ãã£ã®ã¥ã¬ã¼674 ã·ã§ã³ãã¡ã¤ã«675 logtask.h ã·ã¹ãã ãã°ã¿ã¹ã¯ã使ç¨ããããã®å®ç¾©676 logtask.c ã·ã¹ãã ãã°ã¿ã¹ã¯677 logtask.cfg ã·ã¹ãã ãã°ã¿ã¹ã¯ã®ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«678 serial.h ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ãã使ç¨ããããã®å®ç¾©679 serial.c ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ã680 serial.cfg ã·ãªã¢ã«ãã©ã¤ãã®ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«681 syslog.h ã·ã¹ãã ãã°æ©è½ã使ç¨ããããã®å®ç¾©682 syslog.c ã·ã¹ãã ãã°æ©è½683 syslog.cfg ã·ã¹ãã ãã°æ©è½ã®ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«575 banner.h カーネル起動メッセージの出力のための定義 576 banner.c カーネル起動メッセージの出力 577 banner.cfg カーネル起動メッセージの出力のコンフィギュレー 578 ションファイル 579 logtask.h システムログタスクを使用するための定義 580 logtask.c システムログタスク 581 logtask.cfg システムログタスクのコンフィギュレーションファイル 582 serial.h シリアルインタフェースドライバを使用するための定義 583 serial.c シリアルインタフェースドライバ 584 serial.cfg シリアルドライバのコンフィギュレーションファイル 585 syslog.h システムログ機能を使用するための定義 586 syslog.c システムログ機能 587 syslog.cfg システムログ機能のコンフィギュレーションファイル 684 588 685 589 library/ 686 histogram.c å®è¡æéåå¸éè¨ã¢ã¸ã¥ã¼ã«687 log_output.c ã·ã¹ãã ãã°ã®ãã©ã¼ãããåºå688 strerror.c ã¨ã©ã¼ã¡ãã»ã¼ã¸æååãè¿ãé¢æ°689 t_perror.c ã¨ã©ã¼ã¡ãã»ã¼ã¸ã®åºå690 test_lib.c ãã¹ãããã°ã©ã ç¨ã©ã¤ãã©ãª691 vasyslog.c å¯å¤æ°å¼æ°ã®ã·ã¹ãã ãã°ã©ã¤ãã©ãª590 histogram.c 実行時間分布集計モジュール 591 log_output.c システムログのフォーマット出力 592 strerror.c エラーメッセージ文字列を返す関数 593 t_perror.c エラーメッセージの出力 594 test_lib.c テストプログラム用ライブラリ 595 vasyslog.c 可変数引数のシステムログライブラリ 692 596 693 597 arch/gcc/ 694 MANIFEST åå¥ããã±ã¼ã¸ã®ãã¡ã¤ã«ãªã¹ã695 tool_stddef.h t_stddef.h ã®éçºç°å¢ä¾åé¨ï¼GCCç¨ï¼598 MANIFEST 個別パッケージのファイルリスト 599 tool_stddef.h t_stddef.hの開発環境依存部(GCC用) 696 600 697 601 arch/logtrace/ 698 MANIFEST åå¥ããã±ã¼ã¸ã®ãã¡ã¤ã«ãªã¹ã699 trace_config.h ãã¬ã¼ã¹ãã°ã«é¢ããè¨å®700 trace_config.c ãã¬ã¼ã¹ãã°æ©è½701 trace_dump.c ãã¬ã¼ã¹ãã°ã®ãã³ã602 MANIFEST 個別パッケージのファイルリスト 603 trace_config.h トレースログに関する設定 604 trace_config.c トレースログ機能 605 trace_dump.c トレースログのダンプ 702 606 703 607 utils/ 704 applyrename ãã¡ã¤ã«ã«ãªãã¼ã ãé©ç¨705 genoffset offset.h ã®çæï¼GNUéçºç°å¢ç¨ï¼706 genrename ãªãã¼ã ããããã¡ã¤ã«ã®çæ707 gentest ãã¹ãããã°ã©ã ã®çæ708 makedep ä¾åé¢ä¿ãªã¹ãã®çæï¼GNUéçºç°å¢ç¨ï¼709 makerelease ãªãªã¼ã¹ããã±ã¼ã¸ã®çæ608 applyrename ファイルにリネームを適用 609 genoffset offset.hの生成(GNU開発環境用) 610 genrename リネームヘッダファイルの生成 611 gentest テストプログラムの生成 612 makedep 依存関係リストの生成(GNU開発環境用) 613 makerelease リリースパッケージの生成 710 614 711 615 sample/ 712 Makefile ãµã³ãã«ã®Makefileï¼GNUéçºç°å¢ç¨ï¼713 sample1.h ãµã³ãã«ããã°ã©ã (1)ã«é¢ããå®ç¾©714 sample1.c ãµã³ãã«ããã°ã©ã(1)715 sample1.cfg ãµã³ãã«ããã°ã©ã (1)ã®ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«616 Makefile サンプルのMakefile(GNU開発環境用) 617 sample1.h サンプルプログラム(1)に関する定義 618 sample1.c サンプルプログラム(1) 619 sample1.cfg サンプルプログラム(1)のコンフィギュレーションファイル 716 620 717 621 doc/ 718 user.txt ã¦ã¼ã¶ã¼ãºããã¥ã¢ã« 719 asp_spec.txt TOPPERS/ASPã«ã¼ãã«ã®ä»æ§æ¦è¦ 720 extension.txt æ©è½æ¡å¼µã»ãã¥ã¼ãã³ã°ã¬ã¤ã 721 porting.txt ã¿ã¼ã²ããä¾åé¨ ãã¼ãã£ã³ã°ã¬ã¤ã 722 configurator.txt ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ä»æ§ 723 design.txt è¨è¨ã¡ã¢ 724 version.txt å¤æ´å±¥æ´ 725 726 727 ï¼ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããã®ä½¿ãæ¹ 728 729 ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããï¼configureï¼ã¯ï¼ASPã«ã¼ãã«ããã³ã¢ã 730 ãªã±ã¼ã·ã§ã³ããã°ã©ã ãæ§ç¯ããããã«å¿ 731 è¦ãªåºæ¬çãªã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ 732 ã³ãè¡ãããã®ããã°ã©ã ã§ããï¼ 733 734 ASPã«ã¼ãã«ãç¨ãã¦ã¢ããªã±ã¼ã·ã§ã³ãä½æããå ´åã«ã¯ï¼ã¾ããªãã¸ã§ã¯ã 735 ãã¡ã¤ã«ãç½®ããã£ã¬ã¯ããªãä½æãï¼ãã®ãã£ã¬ã¯ããªã§ã³ã³ãã£ã®ã¥ã¬ã¼ 736 ã·ã§ã³ã¹ã¯ãªãããå®è¡ããï¼ãªãã¸ã§ã¯ããã¡ã¤ã«ãç½®ããã£ã¬ã¯ããªã®å ´ 737 æã¨å称ã¯ï¼ä»»æã«æ±ºãã¦ããï¼ 738 739 ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããã«å¯¾ãããªãã·ã§ã³ã¯æ¬¡ã®éãï¼ 740 741 -T <ã¿ã¼ã²ããç¥ç§°> 742 ã¿ã¼ã²ããã·ã¹ãã ã®å称ãï¼targetãã£ã¬ã¯ããªã®ä¸ã«ç½®ããã¦ã 743 ãã¿ã¼ã²ããä¾åé¨ãã£ã¬ã¯ããªã®å称ã§æå®ããï¼å¿ 744 é ï¼ï¼ 745 746 -A <ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã å> 747 ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã ã®å称ãæå®ããï¼çç¥ããå ´åã«ã¯ï¼ 748 ãµã³ãã«ããã°ã©ã ï¼sample1ï¼ã¨ãªãï¼ 749 750 -a <ã¢ããªã±ã¼ã·ã§ã³ã®ãã£ã¬ã¯ããªå> 751 ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã ã®ã½ã¼ã¹ãã¡ã¤ã«ï¼ã·ã¹ãã ã³ã³ãã£ã®ã¥ 752 ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ãé¤ãï¼ãç½®ãããã£ã¬ã¯ããªåãæå®ããï¼ç 753 ç¥ããå ´åã«ã¯ï¼ãªãã¸ã§ã¯ããã¡ã¤ã«ãç½®ããã£ã¬ã¯ããªã«ç½®ãã 754 ã¦ãããã¨ãä»®å®ããï¼ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã¯ï¼ 755 ãªãã¸ã§ã¯ããã¡ã¤ã«ãç½®ããã£ã¬ã¯ããªã«ç½®ããã¨ï¼ 756 757 -U <ãªãã¸ã§ã¯ããã¡ã¤ã«å> 758 ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã ã®ã¡ã¤ã³ã®ãªãã¸ã§ã¯ããã¡ã¤ã«ï¼-A 759 ã§æå®ããã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã åã«".o"ãä»å ãããã®ï¼ä»¥ 760 å¤ã«ï¼ãªã³ã¯ãã¹ããªãã¸ã§ã¯ããã¡ã¤ã«ã®å称ãï¼".o"ãä»å ãã 761 å½¢ã§æå®ããï¼""ã§å²ããã¨ã«ãã£ã¦ï¼è¤æ°ã®ãã¡ã¤ã«ãæå®ããã 762 ã¨ãå¯è½ã§ããï¼-Uãªãã·ã§ã³ãè¤æ°ä½¿ã£ã¦ã¯ãªããªãï¼ï¼ 763 764 -L <ã«ã¼ãã«ã©ã¤ãã©ãªã®ãã£ã¬ã¯ããªå> 765 äºåã«æ§ç¯ããã«ã¼ãã«ã©ã¤ãã©ãªï¼libkernel.aï¼ãç¨ãã¦ï¼ã¢ã㪠766 ã±ã¼ã·ã§ã³ã®ã¿ãæ§ç¯ããå ´åã«ã¯ï¼ãã®ãªãã·ã§ã³ã«ã«ã¼ãã«ã©ã¤ 767 ãã©ãªã®ç½®ããããã£ã¬ã¯ããªåãæå®ããï¼ãã®ãªãã·ã§ã³ã®ä½¿ç¨ 768 ä¾ã«ã¤ãã¦ã¯ï¼ã3.5 ã¢ããªã±ã¼ã·ã§ã³ã¨ã«ã¼ãã«ãå¥ã 769 ã«æ§ç¯ãã 770 æ¹æ³ãã®ç¯ãåç 771 §ãããã¨ï¼ 622 user.txt ユーザーズマニュアル 623 asp_spec.txt TOPPERS/ASPカーネルの仕様概要 624 extension.txt 機能拡張・チューニングガイド 625 porting.txt ターゲット依存部 ポーティングガイド 626 configurator.txt コンフィギュレータ仕様 627 design.txt 設計メモ 628 version.txt 変更履歴 629 630 631 5.コンフィギュレーションスクリプトの使い方 632 633 コンフィギュレーションスクリプト(configure)は,ASPカーネルおよびアプ 634 リケーションプログラムを構築するために必要な基本的なコンフィギュレーショ 635 ンを行うためのプログラムである. 636 637 ASPカーネルを用いてアプリケーションを作成する場合には,まずオブジェクト 638 ファイルを置くディレクトリを作成し,そのディレクトリでコンフィギュレー 639 ションスクリプトを実行する.オブジェクトファイルを置くディレクトリの場 640 所と名称は,任意に決めてよい. 641 642 コンフィギュレーションスクリプトに対するオプションは次の通り. 643 644 -T <ターゲット略称> 645 ターゲットシステムの名称を,targetディレクトリの下に置かれてい 646 るターゲット依存部ディレクトリの名称で指定する(必須). 647 648 -A <アプリケーションプログラム名> 649 アプリケーションプログラムの名称を指定する.省略した場合には, 650 サンプルプログラム(sample1)となる. 651 652 -a <アプリケーションのディレクトリ名> 653 アプリケーションプログラムのソースファイル(システムコンフィギュ 654 レーションファイルを除く)を置いたディレクトリ名を指定する.省 655 略した場合には,オブジェクトファイルを置くディレクトリに置かれ 656 ていることを仮定する.システムコンフィギュレーションファイルは, 657 オブジェクトファイルを置くディレクトリに置くこと. 658 659 -U <オブジェクトファイル名> 660 アプリケーションプログラムのメインのオブジェクトファイル(-A 661 で指定したアプリケーションプログラム名に".o"を付加したもの)以 662 外に,リンクすべきオブジェクトファイルの名称を,".o"を付加した 663 形で指定する.""で囲むことによって,複数のファイルを指定するこ 664 とも可能である(-Uオプションを複数使ってはならない). 665 666 -L <カーネルライブラリのディレクトリ名> 667 事前に構築したカーネルライブラリ(libkernel.a)を用いて,アプリ 668 ケーションのみを構築する場合には,このオプションにカーネルライ 669 ブラリの置かれたディレクトリ名を指定する.このオプションの使用 670 例については,「3.5 アプリケーションとカーネルを別々に構築する 671 方法」の節を参照すること. 772 672 773 673 -f 774 ã«ã¼ãã«ãé¢æ°åä½ã§ã³ã³ãã¤ã«ãã©ã¤ãã©ãªåããå ´åã«ï¼ãã®ãª 775 ãã·ã§ã³ãæå®ããï¼ãã®ãªãã·ã§ã³ã®ä½¿ç¨ä¾ã«ã¤ãã¦ã¯ï¼ã3.4 ã«ã¼ 776 ãã«ãé¢æ°åä½ã§ã©ã¤ãã©ãªåããæ¹æ³ãã®ç¯ãåç 777 §ãããã¨ï¼ 778 779 -D <ASPã«ã¼ãã«ã®ã½ã¼ã¹ãã£ã¬ã¯ããªå> 780 ASPã«ã¼ãã«ã®ã½ã¼ã¹ãã¡ã¤ã«ãç½®ãããã£ã¬ã¯ããªåãæå®ããï¼ç 781 ç¥ããå ´åã«ã¯ï¼configureã®ç½®ããã¦ãããã£ã¬ã¯ããªã¨ãªãï¼ 782 783 -l <ããã°ã©ãã³ã°è¨èª> 784 ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã ã®ããã°ã©ãã³ã°è¨èªãæå®ããï¼ç¾æ 785 ç¹ã§ã¯ï¼cã¨c++ã®ã¿ããµãã¼ããã¦ããï¼ 786 787 -t <ãã³ãã¬ã¼ããã£ã¬ã¯ããªå> 788 Makefileããµã³ãã«ããã°ã©ã ã®ãã³ãã¬ã¼ãã®ç½®ããããã£ã¬ã¯ã 789 ãªåãæå®ããï¼çç¥ããå ´åã«ã¯ï¼ASPã«ã¼ãã«ã®ã½ã¼ã¹ãã¡ã¤ã«ã 790 ç½®ãããã£ã¬ã¯ããªã®ä¸ã®sampleãã£ã¬ã¯ããªã¨ãªãï¼ 791 792 -m <ãã³ãã¬ã¼ãMakefileå> 793 Makefileã®ãã³ãã¬ã¼ãã¨ãããã¡ã¤ã«åãæå®ããï¼çç¥ããå ´å 794 ã«ã¯ï¼Makefileã¨ãªãï¼ 795 796 -d <å®è¡ç°å¢å> 797 ã¿ã¼ã²ããã·ã¹ãã ä¸ã§ã®ããã°ã©ã ã®å®è¡ç°å¢ï¼ãªããã¯ï¼ããã 798 ã°ç°å¢ï¼ã®å称ãæå®ããï¼ãã®ãªãã·ã§ã³ãæå®ããã¨ï¼å®è¡ç°å¢ 799 ãæå®ããã·ã³ãã«ï¼TOPPERS_<ãããã°ç°å¢å>ï¼ããã¯ãå®ç¾©ãã 800 ãï¼çç¥ããå ´åã«ã¯ï¼å®è¡ç°å¢ãæå®ããã·ã³ãã«ã¯ãã¯ãå®ç¾©ã 801 ããªãï¼ 674 カーネルを関数単位でコンパイルしライブラリ化する場合に,このオ 675 プションを指定する.このオプションの使用例については,「3.4 カー 676 ネルを関数単位でライブラリ化する方法」の節を参照すること. 677 678 -D <ASPカーネルのソースディレクトリ名> 679 ASPカーネルのソースファイルを置いたディレクトリ名を指定する.省 680 略した場合には,configureの置かれているディレクトリとなる. 681 682 -l <プログラミング言語> 683 アプリケーションプログラムのプログラミング言語を指定する.現時 684 点では,cとc++のみをサポートしている. 685 686 -t <テンプレートディレクトリ名> 687 Makefileやサンプルプログラムのテンプレートの置かれたディレクト 688 リ名を指定する.省略した場合には,ASPカーネルのソースファイルを 689 置いたディレクトリの下のsampleディレクトリとなる. 690 691 -m <テンプレートMakefile名> 692 Makefileのテンプレートとするファイル名を指定する.省略した場合 693 には,Makefileとなる. 694 695 -d <実行環境名> 696 ターゲットシステム上でのプログラムの実行環境(ないしは,デバッ 697 グ環境)の名称を指定する.このオプションを指定すると,実行環境 698 を指定するシンボル(TOPPERS_<デバッグ環境名>)がマクロ定義され 699 る.省略した場合には,実行環境を指定するシンボルはマクロ定義さ 700 れない. 802 701 803 702 -r 804 ãã¬ã¼ã¹ãã°è¨é²ã®ãµã³ãã«ã³ã¼ããæå¹ã«ããå ´åã«ï¼ãã®ãªãã·ã§ 805 ã³ãæå®ããï¼ãã®ãªãã·ã§ã³ã®ä½¿ç¨ä¾ã«ã¤ãã¦ã¯ï¼ã11.6 ãã¬ã¼ã¹ 806 ãã°è¨é²ã®ãµã³ãã«ã³ã¼ãã®ä½¿ç¨æ¹æ³ãã®ç¯ãåç 807 §ãããã¨ï¼ 808 809 -p <perlã®ãã¹å> 810 perlã®ãã¹åãæå®ããï¼çç¥ããå ´åã«ã¯ï¼/usr/local/bin㨠811 /usr/binãæ¢ç´¢ãï¼perlã®ãã¹åã決å®ããï¼ 812 813 -g <ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®ãã¹å> 814 ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ï¼cfgï¼ã®ãã¹åãæå®ããï¼çç¥ããå ´åã«ã¯ï¼ 815 ããã©ã«ãã®ãã¹åï¼ASPã«ã¼ãã«ã®ã½ã¼ã¹ãã£ã¬ã¯ããªã®ä¸ã® 816 cfg/cfg/cfgï¼ã¨ãªãï¼ 817 818 -o <ãªãã·ã§ã³æåå> 819 ã³ã³ãã¤ã©ã«ä¸ãããªãã·ã§ã³æååã§ï¼ã·ã³ãã«å®ç¾©ä»¥å¤ã®ãã®ï¼ 820 ã·ã³ãã«å®ç¾©ã®ãªãã·ã§ã³ã¯ï¼-Oãªãã·ã§ã³ã使ç¨ããï¼ãªãã·ã§ã³ 821 æååã«ã¹ãã¼ã¹ãå«ã¾ããå ´åã«ã¯ï¼"-O2 -Wall"ã®ããã«ï¼""ã§å² 822 ãã§è¨è¿°ããå¿ 823 è¦ãããï¼ 824 825 -O <ãªãã·ã§ã³æåå> 826 ã³ã³ãã¤ã©ã«ä¸ããã·ã³ãã«å®ç¾©ã®ããã®ãªãã·ã§ã³æååï¼ãªãã·ã§ 827 ã³æååã«ã¹ãã¼ã¹ãå«ã¾ããå ´åã«ã¯ï¼"-DTEST -DPERF"ã®ããã«ï¼ 828 ""ã§å²ãã§è¨è¿°ããå¿ 829 è¦ãããï¼ 830 831 -k <ãªãã·ã§ã³æåå> 832 ãªã³ã«ã«ä¸ãããªãã·ã§ã³æååï¼ãªãã·ã§ã³æååã«ã¹ãã¼ã¹ãå« 833 ã¾ããå ´åã«ã¯ï¼""ã§å²ãã§è¨è¿°ããå¿ 834 è¦ãããï¼ 835 836 ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªãããè¡ãå¦çã¯æ¬¡ã®éãã§ããï¼ 837 838 (1) Makefileã®çæ 839 840 ãã³ãã¬ã¼ããã£ã¬ã¯ããªï¼ããã©ã«ãã§ã¯ï¼sampleï¼ããé©åãªMakefileã 841 é¸æãï¼å¿ 842 è¦ãªç®æãæ¸ãæãã¦ï¼Makefileãçæããï¼ 843 844 (2) ãµã³ãã«ããã°ã©ã ã®çæ 845 846 æå®ããã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã ããã³ãã¬ã¼ããã£ã¬ã¯ããªã«ããå ´åï¼ 847 é©åãªã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã ã®ã½ã¼ã¹ãã¡ã¤ã«ãé¸æãï¼å¿ 848 è¦ãªç®æã 849 æ¸ãæãã¦ï¼ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã ã®ã½ã¼ã¹ãã¡ã¤ã«ï¼ä¾ãã°ï¼ 850 sample1.hï¼sample1.cï¼sample1.cfgï¼ãçæããï¼ 851 852 (3) ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ãç¨æã§ãã¦ãããã®ãã§ã㯠853 854 ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ï¼cfgï¼ã®å®è¡ãã¡ã¤ã«ãããããã§ãã¯ãï¼ãã¡ã¤ã«ã㪠855 ãå ´åã«ã¯ï¼ãã®æ¨ãåºåããï¼ 856 857 858 ï¼ï¼Makefileã®ä¿®æ£æ¹æ³ 859 860 åã®ç« ã§èª¬æããããã«ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããã«ä¸ãããªãã·ã§ 861 ã³çããMakefileãçæããããï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããã§å¯¾å¿ 862 ã§ããªãå ´åã«ã¯ï¼Makefileãç´æ¥ä¿®æ£ããå¿ 863 è¦ãããï¼ããã§ã¯ï¼Makefile 864 ã®ä¸ã§ï¼ä¿®æ£ãå¿ 865 è¦ã¨ãªãå¯è½æ§ã®é«ãç®æã«ã¤ãã¦èª¬æããï¼ 866 867 ãªãï¼Makefileãä¿®æ£ããå¾ã«ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªãããåå®è¡ã 868 ãã¨ï¼ä¿®æ£ããMakefileãä¸æ¸ãããã¦ãã¾ãã®ã§æ³¨æãããã¨ï¼å¤ããã®ã 869 Makefile.bakã«ä¿åãããï¼ï¼ 870 871 6.1 Makefileã®å¤æ°å®ç¾© 872 873 (A) ã¿ã¼ã²ããç¥ç§° 874 875 TARGETã«ã¯ï¼ã¿ã¼ã²ããã·ã¹ãã ã®å称ãï¼targetãã£ã¬ã¯ããªã®ä¸ã«ç½®ãã 876 ã¦ããã¿ã¼ã²ããä¾åé¨ãã£ã¬ã¯ããªã®å称ã§æå®ããï¼ãã®å®ç¾©ã¯ï¼é常ã¯ï¼ 877 ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããã«å¯¾ãã-Tãªãã·ã§ã³ã«ããè¡ãï¼ 878 879 (B) ãªãã¸ã§ã¯ããã¡ã¤ã«ã®æ¡å¼µå 880 881 Cygwinç°å¢ã§ã³ã³ãã¤ã«ããæã«ã¯ï¼OBJEXTã"exe"ã«å®ç¾©ããå¿ 882 è¦ãããï¼ã 883 ãã¯ï¼Cygwinç°å¢ã§ã¯ï¼ãã¼ãã¢ã¸ã¥ã¼ã«ã®ãã¡ã¤ã«åã«æ¡å¼µå".exe"ãä»å 884 ãããã®ã«å¯¾å¿ããããã®ãã®ã§ããï¼Cygwinç°å¢ã§ãããã¨ãå¤å®ã§ããã°ï¼ 885 ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããããã®å®ç¾©ãè¡ãï¼ 886 887 (C) å®è¡ç°å¢ï¼ã¿ã¼ã²ããä¾åï¼ 888 889 ã¿ã¼ã²ããã«ãã£ã¦ã¯ï¼å®è¡ç°å¢ã«å¯¾å¿ãã¦ã¿ã¼ã²ããä¾åé¨ã®ã³ã¼ããå·®ã 890 æããå ´åãããï¼ãããå¯è½ã«ããããã«ï¼å®è¡ç°å¢ã®å称ãDBGENVã«å®ç¾© 891 ãã¦ããï¼ãã®å®ç¾©ã¯ï¼é常ã¯ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããã«å¯¾ã 892 ã-Dãªãã·ã§ã³ã«ããè¡ãï¼ã©ã®ã¿ã¼ã²ãããã©ã®å®è¡ç°å¢ã«å¯¾å¿ãã¦ããã 893 ã¯ï¼ã¿ã¼ã²ããä¾åé¨ã®ã¦ã¼ã¶ã¼ãºããã¥ã¢ã«ãåç 894 §ãããã¨ï¼ 895 896 (D) ã«ã¼ãã«ã©ã¤ãã©ãªã®ãã£ã¬ã¯ããªå 897 898 KERNEL_LIBã«ã¯ï¼ã«ã¼ãã«ã©ã¤ãã©ãªã®ç½®ããããã£ã¬ã¯ããªåãå®ç¾©ããï¼ 899 ãã®å®ç¾©ã¯ï¼é常ã¯ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããã«å¯¾ãã-Lãªãã·ã§ 900 ã³ã«ããè¡ãï¼ 901 902 (E) ã«ã¼ãã«ãé¢æ°åä½ã§ã³ã³ãã¤ã«ãããã©ãã 903 904 KERNEL_FUNCOBJSã¯ï¼ã«ã¼ãã«ãé¢æ°åä½ã§ã³ã³ãã¤ã«ããå ´åã«ã¯trueã«å®ç¾© 905 ãï¼ãã¡ã¤ã«åä½ã§ã³ã³ãã¤ã«ããå ´åã«ã¯æªå®ç¾©ã¨ããï¼ãã®å®ç¾©ã¯ï¼é常 906 ã¯ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããã«å¯¾ãã-fãªãã·ã§ã³ã«ããè¡ãï¼ 907 908 (F) å 909 ±éã³ã³ãã¤ã«ãªãã·ã§ã³ 910 911 ãã¹ã¦ã®ããã°ã©ã ã«å 912 ±éããã³ã³ãã¤ã«ãªãã·ã§ã³ã®è¿½å ãå¿ 913 è¦ãªå ´åã«ã¯ï¼ 914 ä¸ã®å¤æ°ã®å®ç¾©ãå¤æ´ããï¼ãã®ã³ã³ãã¤ã«ãªãã·ã§ã³ãï¼ç¹å®ã®ã¿ã¼ã²ãã 915 ã§å¸¸ã«å¿ 916 è¦ãªå ´åã«ã¯ï¼ã¿ã¼ã²ããä¾åã®å®ç¾©ãå 917 ¥ããMakefile.targetçãä¿® 918 æ£ãã¹ãã§ããï¼ 919 920 CDEFS ã³ã³ãã¤ã©ã«å¯¾ãã-Dãªãã·ã§ã³ãè¨è¿°ããï¼ 921 INCLUDES ã³ã³ãã¤ã©ã«å¯¾ãã-Iãªãã·ã§ã³ãè¨è¿°ããï¼ 922 COPTS ã³ã³ãã¤ã©ã«å¯¾ãããã®ä»ã®ãªãã·ã§ã³ãè¨è¿°ããï¼ 923 LDFLAGS ãªã³ã«ã«å¯¾ãããªãã·ã§ã³ãè¨è¿°ããï¼ 924 LIBS ã©ã¤ãã©ãªãªã³ã¯ã®ããã®ãªãã·ã§ã³ãè¨è¿°ããï¼ 925 926 追å ã®å¯è½æ§ã®ããã³ã³ãã¤ã«ãªãã·ã§ã³ã«ã¤ãã¦ã¯ï¼ã6.2 ã³ã³ãã¤ã«ãªã 927 ã·ã§ã³ãã®ç¯ãåç 928 §ã®ãã¨ï¼ 929 930 (G) ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã å 931 932 APPLNAMEã«ã¯ï¼ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã åãå®ç¾©ããï¼ã·ã¹ãã ã³ã³ã㣠933 ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«åã¯ï¼APPLNAMEã«å®ç¾©ããååã«æ¡å¼µå".cfg"ãä»å 934 ããååã¨ããï¼ã¾ãï¼ã¢ããªã±ã¼ã·ã§ã³ã®ã¡ã¤ã³ãã¡ã¤ã«ã¯ï¼APPLNAMEã«å® 935 義ããååã«æ¡å¼µå".c"ãä»å ããååã¨ããï¼ãã®å®ç¾©ã¯ï¼é常ã¯ï¼ã³ã³ã㣠936 ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããã«å¯¾ãã-Aãªãã·ã§ã³ã«ããè¡ãï¼ 937 938 (H) ã¢ããªã±ã¼ã·ã§ã³ã®ãã£ã¬ã¯ããªå 939 940 ã¢ããªã±ã¼ã·ã§ã³ã®ã½ã¼ã¹ãã¡ã¤ã«ãï¼ãªãã¸ã§ã¯ããã¡ã¤ã«ãç½®ãã®ã¨ã¯å¥ 941 ã®ãã£ã¬ã¯ããªã«ç½®ãå ´åã«ã¯ï¼APPLDIRã«ãã®ãã£ã¬ã¯ããªåãå®ç¾©ããï¼ã 942 ã®å®ç¾©ã¯ï¼é常ã¯ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããã«å¯¾ãã-aãªãã·ã§ã³ 943 ã«ããè¡ãï¼ã¢ããªã±ã¼ã·ã§ã³ã®ã½ã¼ã¹ãã¡ã¤ã«ãç½®ããã£ã¬ã¯ããªãè¤æ°ã 944 ãå ´åã«ã¯ï¼APPL_DIRã®å®ç¾©ãå¤æ´ãããã¨ã§å¯¾å¿ããï¼ 945 946 (I) ã¢ããªã±ã¼ã·ã§ã³ã®ããã°ã©ã ãã¡ã¤ã«å 947 948 ã¢ããªã±ã¼ã·ã§ã³ãè¤æ°ã®ã½ã¼ã¹ãã¡ã¤ã«ã§æ§æãããå ´åã«ã¯ï¼ãã®ãªãã¸ã§ 949 ã¯ããã¡ã¤ã«åãï¼APPL_ASMOBJSï¼APPL_COBJSï¼APPL_CXXOBJSã«åæããï¼ 950 951 (J) ã¢ããªã±ã¼ã·ã§ã³ã®ã³ã³ãã¤ã«ãªãã·ã§ã³ 952 953 ã¢ããªã±ã¼ã·ã§ã³ã®ã³ã³ãã¤ã«ã«å¿ 954 è¦ãªã³ã³ãã¤ã«ãªãã·ã§ã³ãï¼ã¢ããªã±ã¼ 955 ã·ã§ã³ãã©ã¤ãã©ãªãå¿ 956 è¦ã¨ããå ´åã«ã¯ï¼APPL_CFLAGSããã³APPL_LIBSã«å® 957 義ããï¼ 958 959 (K) ãã¼ãã¢ã¸ã¥ã¼ã«ã®ãã¡ã¤ã«å 960 961 æ¨æºã®ãã¼ãã¢ã¸ã¥ã¼ã«ã®ãã¡ã¤ã«åãOBJNAMEã«å®ç¾©ããï¼ããã©ã«ãã¯asp 962 ã§ããï¼ 963 964 (L) ã¿ã¼ã²ãããã¡ã¤ã«ã®å®ç¾© 965 966 ã¿ã¼ã²ãã"all"ã®ä¾åãã¡ã¤ã«ã¨ãã¦ï¼ãã¼ãã¢ã¸ã¥ã¼ã«ã®å½¢å¼ãæå®ããï¼ 967 å 968 ·ä½çã«ã¯ï¼ELFå½¢å¼ã®æã¯$(OBJFILE)ï¼ãã¤ããªå½¢å¼ã®æã¯$(OBJNAME).binï¼ 969 ã¢ããã¼ã© Så½¢å¼ã®æã¯$(OBJNAME).srecãæå®ããï¼$(OBJFILE)ã¯ï¼Cygwin 970 ç°å¢ã§OBJEXTã"exe"ã«å®ç¾©ããæã«ã¯$(OBJNAME).exeï¼ããã§ãªãå ´åã«ã¯ 971 $(OBJNAME)ã¨ãªãï¼ 972 973 (M) makedepã®ãªãã·ã§ã³ã®å®ç¾© 974 975 Cygwinç°å¢ã§ã«ã¼ããã£ã¬ã¯ããªã"cygdrive"ã§ãªãå ´åã«ã¯ï¼makedepã®-R㪠976 ãã·ã§ã³ã§ã«ã¼ããã£ã¬ã¯ããªåãä¸ããå¿ 977 è¦ãããï¼ã¾ãï¼Makefileã®ã¿ã¼ 978 ã²ããé¨ï¼":"ã®å·¦å´ï¼ã«è¤æ°ã®ãã¡ã¤ã«åãè¨è¿°ããã¨ï¼ã«ã¼ãã«ãé¢æ°åä½ 979 ã§ã©ã¤ãã©ãªåããå ´åã«ï¼ãã®ãããªè¨è¿°ãçæãããï¼æ£ããåä½ããªã 980 å ´åã«ã¯ï¼Cygwinç°å¢ã®GNU Makeã§ãã®ãããªå¶éãããã¨ããå ±åãããï¼ï¼ 981 makedepã«-Sãªãã·ã§ã³ãä»ä¸ããå¿ 982 è¦ãããï¼ 983 984 makedepã®ãªãã·ã§ã³ã¯ï¼æ¬¡ã®ä¾ã®ããã«ï¼MAKEDEP_OPTSã«å®ç¾©ããï¼ 703 トレースログ記録のサンプルコードを有効にする場合に,このオプショ 704 ンを指定する.このオプションの使用例については,「11.6 トレース 705 ログ記録のサンプルコードの使用方法」の節を参照すること. 706 707 -p <perlのパス名> 708 perlのパス名を指定する.省略した場合には,/usr/local/binと 709 /usr/binを探索し,perlのパス名を決定する. 710 711 -g <コンフィギュレータのパス名> 712 コンフィギュレータ(cfg)のパス名を指定する.省略した場合には, 713 デフォルトのパス名(ASPカーネルのソースディレクトリの下の 714 cfg/cfg/cfg)となる. 715 716 -o <オプション文字列> 717 コンパイラに与えるオプション文字列で,シンボル定義以外のもの. 718 シンボル定義のオプションは,-Oオプションを使用する.オプション 719 文字列にスペースが含まれる場合には,"-O2 -Wall"のように,""で囲 720 んで記述する必要がある. 721 722 -O <オプション文字列> 723 コンパイラに与えるシンボル定義のためのオプション文字列.オプショ 724 ン文字列にスペースが含まれる場合には,"-DTEST -DPERF"のように, 725 ""で囲んで記述する必要がある. 726 727 -k <オプション文字列> 728 リンカに与えるオプション文字列.オプション文字列にスペースが含 729 まれる場合には,""で囲んで記述する必要がある. 730 731 コンフィギュレーションスクリプトが行う処理は次の通りである. 732 733 (1) Makefileの生成 734 735 テンプレートディレクトリ(デフォルトでは,sample)から適切なMakefileを 736 選択し,必要な箇所を書き換えて,Makefileを生成する. 737 738 (2) サンプルプログラムの生成 739 740 指定したアプリケーションプログラムがテンプレートディレクトリにある場合, 741 適切なアプリケーションプログラムのソースファイルを選択し,必要な箇所を 742 書き換えて,アプリケーションプログラムのソースファイル(例えば, 743 sample1.h,sample1.c,sample1.cfg)を生成する. 744 745 (3) コンフィギュレータが用意できているかのチェック 746 747 コンフィギュレータ(cfg)の実行ファイルがあるかチェックし,ファイルがな 748 い場合には,その旨を出力する. 749 750 751 6.Makefileの修正方法 752 753 前の章で説明したように,コンフィギュレーションスクリプトに与えるオプショ 754 ン等からMakefileが生成されるが,コンフィギュレーションスクリプトで対応 755 できない場合には,Makefileを直接修正する必要がある.ここでは,Makefile 756 の中で,修正が必要となる可能性の高い箇所について説明する. 757 758 なお,Makefileを修正した後にコンフィギュレーションスクリプトを再実行す 759 ると,修正したMakefileが上書きされてしまうので注意すること(古いものが 760 Makefile.bakに保存される). 761 762 6.1 Makefileの変数定義 763 764 (A) ターゲット略称 765 766 TARGETには,ターゲットシステムの名称を,targetディレクトリの下に置かれ 767 ているターゲット依存部ディレクトリの名称で指定する.この定義は,通常は, 768 コンフィギュレーションスクリプトに対する-Tオプションにより行う. 769 770 (B) オブジェクトファイルの拡張子 771 772 Cygwin環境でコンパイルする時には,OBJEXTを"exe"に定義する必要がある.こ 773 れは,Cygwin環境では,ロードモジュールのファイル名に拡張子".exe"が付加 774 されるのに対応するためのものである.Cygwin環境であることを判定できれば, 775 コンフィギュレーションスクリプトがこの定義を行う. 776 777 (C) 実行環境(ターゲット依存) 778 779 ターゲットによっては,実行環境に対応してターゲット依存部のコードを差し 780 換える場合がある.これを可能にするために,実行環境の名称をDBGENVに定義 781 している.この定義は,通常は,コンフィギュレーションスクリプトに対す 782 る-Dオプションにより行う.どのターゲットがどの実行環境に対応しているか 783 は,ターゲット依存部のユーザーズマニュアルを参照すること. 784 785 (D) カーネルライブラリのディレクトリ名 786 787 KERNEL_LIBには,カーネルライブラリの置かれたディレクトリ名を定義する. 788 この定義は,通常は,コンフィギュレーションスクリプトに対する-Lオプショ 789 ンにより行う. 790 791 (E) カーネルを関数単位でコンパイルするかどうか 792 793 KERNEL_FUNCOBJSは,カーネルを関数単位でコンパイルする場合にはtrueに定義 794 し,ファイル単位でコンパイルする場合には未定義とする.この定義は,通常 795 は,コンフィギュレーションスクリプトに対する-fオプションにより行う. 796 797 (F) 共通コンパイルオプション 798 799 すべてのプログラムに共通するコンパイルオプションの追加が必要な場合には, 800 下の変数の定義を変更する.そのコンパイルオプションが,特定のターゲット 801 で常に必要な場合には,ターゲット依存の定義を入れたMakefile.target等を修 802 正すべきである. 803 804 CDEFS コンパイラに対する-Dオプションを記述する. 805 INCLUDES コンパイラに対する-Iオプションを記述する. 806 COPTS コンパイラに対するその他のオプションを記述する. 807 LDFLAGS リンカに対するオプションを記述する. 808 LIBS ライブラリリンクのためのオプションを記述する. 809 810 追加の可能性のあるコンパイルオプションについては,「6.2 コンパイルオプ 811 ション」の節を参照のこと. 812 813 (G) アプリケーションプログラム名 814 815 APPLNAMEには,アプリケーションプログラム名を定義する.システムコンフィ 816 ギュレーションファイル名は,APPLNAMEに定義した名前に拡張子".cfg"を付加 817 した名前とする.また,アプリケーションのメインファイルは,APPLNAMEに定 818 義した名前に拡張子".c"を付加した名前とする.この定義は,通常は,コンフィ 819 ギュレーションスクリプトに対する-Aオプションにより行う. 820 821 (H) アプリケーションのディレクトリ名 822 823 アプリケーションのソースファイルを,オブジェクトファイルを置くのとは別 824 のディレクトリに置く場合には,APPLDIRにそのディレクトリ名を定義する.こ 825 の定義は,通常は,コンフィギュレーションスクリプトに対する-aオプション 826 により行う.アプリケーションのソースファイルを置くディレクトリが複数あ 827 る場合には,APPL_DIRの定義を変更することで対応する. 828 829 (I) アプリケーションのプログラムファイル名 830 831 アプリケーションが複数のソースファイルで構成される場合には,そのオブジェ 832 クトファイル名を,APPL_ASMOBJS,APPL_COBJS,APPL_CXXOBJSに列挙する. 833 834 (J) アプリケーションのコンパイルオプション 835 836 アプリケーションのコンパイルに必要なコンパイルオプションや,アプリケー 837 ションがライブラリを必要とする場合には,APPL_CFLAGSおよびAPPL_LIBSに定 838 義する. 839 840 (K) ロードモジュールのファイル名 841 842 標準のロードモジュールのファイル名をOBJNAMEに定義する.デフォルトはasp 843 である. 844 845 (L) ターゲットファイルの定義 846 847 ターゲット"all"の依存ファイルとして,ロードモジュールの形式を指定する. 848 具体的には,ELF形式の時は$(OBJFILE),バイナリ形式の時は$(OBJNAME).bin, 849 モトローラ S形式の時は$(OBJNAME).srecを指定する.$(OBJFILE)は,Cygwin 850 環境でOBJEXTを"exe"に定義した時には$(OBJNAME).exe,そうでない場合には 851 $(OBJNAME)となる. 852 853 (M) makedepのオプションの定義 854 855 Cygwin環境でルートディレクトリが"cygdrive"でない場合には,makedepの-Rオ 856 プションでルートディレクトリ名を与える必要がある.また,Makefileのター 857 ゲット部(":"の左側)に複数のファイル名を記述すると(カーネルを関数単位 858 でライブラリ化する場合に,このような記述が生成される)正しく動作しない 859 場合には(Cygwin環境のGNU Makeでこのような制限があるという報告がある), 860 makedepに-Sオプションを付与する必要がある. 861 862 makedepのオプションは,次の例のように,MAKEDEP_OPTSに定義する. 985 863 986 864 MAKEDEP_OPTS = -R cygdrive -S 987 865 988 6.2 ã³ã³ãã¤ã«ãªãã·ã§ã³ 989 990 ASPã«ã¼ãã«ã®ã³ã¼ãä¸ã«ã¯ï¼assertãã¯ãã使ããã¦ããï¼assertãã¯ãã¯ï¼ 991 NDEBUGãå®ç¾©ãããã¨ã§ï¼ãªãã¸ã§ã¯ãã³ã¼ãä¸ããæ¶ããã¨ãã§ããï¼ã«ã¼ 992 ãã«ã®ãããã°ãçµäºããã°ï¼-DNDEBUGãæå®ãã¦ã³ã³ãã¤ã«ããæ¹ãå¹çã 993 ãããªãï¼ 994 995 ã¿ã¼ã²ããä¾åé¨ã«ããã¦ï¼ã³ã³ãã¤ã«ãªãã·ã§ã³ã«-Werrorï¼è¦åãã¨ã©ã¼æ± 996 ãããï¼ãæå®ãã¦ããå ´åãããï¼ãã®ãããªã¿ã¼ã²ããã«ããã¦ï¼ã¢ã㪠997 ã±ã¼ã·ã§ã³ã§è¦åãé¿ããããªãå ´åã«ã¯ï¼ã¿ã¼ã²ããä¾åé¨ãä¿®æ£ãã¦ã³ã³ 998 ãã¤ã«ãªãã·ã§ã³ãåé¤ããå¿ 999 è¦ãããï¼ 1000 1001 ã¾ãï¼TOPPERS_OMIT_SYSLOGãå®ç¾©ãã¦ã³ã³ãã¤ã«ãããã¨ã§ï¼ã·ã¹ãã ãã°åº 1002 åãææ¢ãããã¨ãã§ããï¼ 1003 1004 1005 ï¼ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®ä½¿ãæ¹ 1006 1007 ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ï¼cfgï¼ã¯ï¼TOPPERSæ°ä¸ä»£ã«ã¼ãã«çµ±åä»æ§æ¸ã®2.12.5ç¯ 1008 ã®è¨è¿°ã®éãï¼3ã¤ã®ãã¹ã§æ§æãããï¼ 1009 1010 ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã¯ï¼ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«åããã©ã¡ã¼ 1011 ã¿ã«åãï¼ä»¥ä¸ã®ãªãã·ã§ã³ãæã¤ï¼éè¦ãªãã®ã®ã¿ï¼ï¼ 866 6.2 コンパイルオプション 867 868 ASPカーネルのコード中には,assertマクロが使われている.assertマクロは, 869 NDEBUGを定義することで,オブジェクトコード中から消すことができる.カー 870 ネルのデバッグが終了すれば,-DNDEBUGを指定してコンパイルした方が効率が 871 よくなる. 872 873 ターゲット依存部において,コンパイルオプションに-Werror(警告をエラー扱 874 いする)を指定している場合がある.そのようなターゲットにおいて,アプリ 875 ケーションで警告が避けられない場合には,ターゲット依存部を修正してコン 876 パイルオプションを削除する必要がある. 877 878 また,TOPPERS_OMIT_SYSLOGを定義してコンパイルすることで,システムログ出 879 力を抑止することができる. 880 881 882 7.コンフィギュレータの使い方 883 884 コンフィギュレータ(cfg)は,TOPPERS新世代カーネル統合仕様書の2.12.5節 885 の記述の通り,3つのパスで構成される. 886 887 コンフィギュレータは,システムコンフィギュレーションファイル名をパラメー 888 タに取り,以下のオプションを持つ(重要なもののみ). 1012 889 1013 890 --help 1014 ãªãã·ã§ã³ã®ãªã¹ãã¨èª¬æã表示ããï¼ 1015 1016 -vï¼»--versionï¼½ 1017 ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®ãã¼ã¸ã§ã³ã表示ããï¼ 1018 1019 -kï¼»--kernelï¼½<ã«ã¼ãã«å> 1020 ã«ã¼ãã«ã®å称ãæå®ããï¼ããã©ã«ãã¯aspï¼ 1021 1022 -pï¼»--passï¼½<ãã¹çªå·> 1023 ãã¹çªå·ãæå®ããï¼1ï½3ã®ããããï¼ 1024 1025 -Iï¼»--include-pathï¼½<ã¤ã³ã¯ã«ã¼ããã¹å> 1026 INCLUDEãã£ã¬ã¯ãã£ãã«ããã¦ï¼ã¤ã³ã¯ã«ã¼ãããã³ã³ãã£ã®ã¥ã¬ã¼ 1027 ã·ã§ã³ãã¡ã¤ã«ãæ¢ããã¹åãæå®ããï¼ 1028 1029 -Tï¼»--template-fileï¼½<ãã³ãã¬ã¼ããã¡ã¤ã«å> 1030 ãã³ãã¬ã¼ããã¡ã¤ã«ã®å称ãæå®ããï¼ãã¹2ã¨ãã¹3ã§æå¹ï¼ 1031 1032 --api-table <éçAPIãã¼ãã«ãã¡ã¤ã«å> 1033 éçAPIãã¼ãã«ã®ãã¡ã¤ã«åãæå®ããï¼ 1034 1035 --cfg1-def-table <å¤åå¾ã·ã³ãã«ãã¼ãã«ãã¡ã¤ã«å> 1036 å¤åå¾ã·ã³ãã«ãã¼ãã«ã®ãã¡ã¤ã«åãæå®ããï¼ 1037 1038 -rï¼»--rom-imageï¼½<ãã¼ãã¢ã¸ã¥ã¼ã«å> 1039 ãã¼ãã¢ã¸ã¥ã¼ã«ãSã¬ã³ã¼ããã©ã¼ãããã®å½¢ã«å¤æãããã¡ã¤ã«ã® 1040 å称ãæå®ããï¼ãã¹3ã§ã®ã¿æå¹ï¼ 1041 1042 -s [--symbol-table] <ã·ã³ãã«ãã¡ã¤ã«å> 1043 ãã¼ãã¢ã¸ã¥ã¼ã«ä¸ã®åã·ã³ãã«ã¨ã¢ãã¬ã¹ã®å¯¾å¿è¡¨ãå«ãã·ã³ãã« 1044 ãã¡ã¤ã«ã®å称ãæå®ããï¼ãã¹3ã§ã®ã¿æå¹ï¼ 1045 1046 --id-output-file <IDçªå·åºåãã¡ã¤ã«å> 1047 ãªãã¸ã§ã¯ãã®IDçªå·ã®å²ä»ãçµæãï¼æå®ããååã®ãã¡ã¤ã«ã«æ¸ 1048 ãåºãï¼ãã¹2ã§ã®ã¿æå¹ï¼ 1049 1050 --id-input-file <IDçªå·å 1051 ¥åãã¡ã¤ã«å> 1052 ãªãã¸ã§ã¯ãã®IDçªå·ã®å²ä»ããï¼æå®ããååã®ãã¡ã¤ã«ããåã 1053 è¾¼ãï¼ãã¹2ã§ã®ã¿æå¹ï¼ 891 オプションのリストと説明を表示する. 892 893 -v[--version] 894 コンフィギュレータのバージョンを表示する. 895 896 -k[--kernel]<カーネル名> 897 カーネルの名称を指定する.デフォルトはasp. 898 899 -p[--pass]<パス番号> 900 パス番号を指定する.1~3のいずれか. 901 902 -I[--include-path]<インクルードパス名> 903 INCLUDEディレクティブにおいて,インクルードするコンフィギュレー 904 ションファイルを探すパス名を指定する. 905 906 -T[--template-file]<テンプレートファイル名> 907 テンプレートファイルの名称を指定する.パス2とパス3で有効. 908 909 --api-table <静的APIテーブルファイル名> 910 静的APIテーブルのファイル名を指定する. 911 912 --cfg1-def-table <値取得シンボルテーブルファイル名> 913 値取得シンボルテーブルのファイル名を指定する. 914 915 -r[--rom-image]<ロードモジュール名> 916 ロードモジュールをSレコードフォーマットの形に変換したファイルの 917 名称を指定する.パス3でのみ有効. 918 919 -s [--symbol-table] <シンボルファイル名> 920 ロードモジュール中の各シンボルとアドレスの対応表を含むシンボル 921 ファイルの名称を指定する.パス3でのみ有効. 922 923 --id-output-file <ID番号出力ファイル名> 924 オブジェクトのID番号の割付け結果を,指定した名前のファイルに書 925 き出す.パス2でのみ有効. 926 927 --id-input-file <ID番号入力ファイル名> 928 オブジェクトのID番号の割付けを,指定した名前のファイルから取り 929 込む.パス2でのみ有効. 1054 930 1055 931 --external-id 1056 ãªãã¸ã§ã¯ãã®IDçªå·ãä¿æããå¤æ°ã®å®ç¾©ãçæããï¼ãã¹2ã§ã®ã¿ 1057 æå¹ï¼ 1058 1059 -Mï¼»--print-dependenciesï¼½<ã¿ã¼ã²ããã·ã³ãã«> 1060 ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã®ä¾åé¢ä¿ãåºåããï¼ 1061 Makefileä¸ã®ä¾åé¢ä¿ãçæããéã«ç¨ããï¼ 1062 1063 ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®è©³ç´°ä»æ§ã«ã¤ãã¦ã¯ï¼å¥éPDFãã¡ã¤ã«ã®å½¢ã§é 1064 å¸ãã¦ã 1065 ããTOPPERSæ°ä¸ä»£ã«ã¼ãã«ç¨ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ä»æ§ããåç 1066 §ãããã¨ï¼ 1067 1068 1069 ï¼ï¼ã·ã¹ãã ãµã¼ãã¹ 1070 1071 8.1 ã·ã¹ãã ãã°æ©è½ 1072 1073 ã·ã¹ãã ãã°æ©è½ã¯ï¼ã«ã¼ãã«å 1074 ã§çºçããç°å¸¸äºè±¡ãã«ã¼ãã«ã®ãã¬ã¼ã¹ã 1075 ã°ï¼ã·ã¹ãã ãµã¼ãã¹ãã¢ããªã±ã¼ã·ã§ã³ã§çºçããç°å¸¸äºè±¡ããã¬ã¼ã¹ãã° 1076 ãï¼ãã°æ 1077 å ±ã¨ãã¦è¨é²ããããã®æ©è½ã§ããï¼ã¾ãï¼è¨é²ãããã°æ 1078 å ±ãå 1079 ãåºãæ©è½ãæã¤ï¼ 1080 1081 ã·ã¹ãã ãã°æ©è½ã¯ï¼ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã§syslog.cfg 1082 ãã¤ã³ã¯ã«ã¼ããããã¨ã§ï¼ã·ã¹ãã ã«çµã¿è¾¼ããã¨ãã§ããï¼ã·ã¹ãã ãã° 1083 åºåãè¡ãã½ã¼ã¹ãã¡ã¤ã«ã§ã¯ï¼t_syslog.hãã¤ã³ã¯ã«ã¼ãããï¼ã¾ãï¼ã·ã¹ 1084 ãã ãã°æ©è½ã®ãã®ä»ã®ãµã¼ãã¹ã³ã¼ã«ãå¼ã³åºãã½ã¼ã¹ãã¡ã¤ã«ã§ã¯ï¼ 1085 syslog.hãã¤ã³ã¯ã«ã¼ãããï¼ 1086 1087 8.1.1 ã·ã¹ãã ãã°æ©è½ã®ä½ç½®ä»ã 1088 1089 ã·ã¹ãã ãã°æ©è½ã¯ï¼ã«ã¼ãã«å 1090 ãããå¼ã³åºããã¨ãã§ããããï¼ã«ã¼ãã« 1091 ããä¸ã®é層ã®ã¢ã¸ã¥ã¼ã«ã¨ä½ç½®ä»ãããã¨ãã§ããï¼ãã®æå³ã§ã¯ï¼ä»ã®ã· 1092 ã¹ãã ãµã¼ãã¹ã¨ã¯ä½ç½®ä»ããç°ãªãï¼ 1093 1094 ä¸æ¹ï¼ãã°æ 1095 å ±ãã·ã¹ãã å¤é¨ã«åºåããããã«ã¯ï¼ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ 1096 ãã©ã¤ããªã©ï¼ã«ã¼ãã«ä¸ã§åä½ããã·ã¹ãã ãµã¼ãã¹ãç¨ããå¿ 1097 è¦ãããï¼ 1098 ããã§ï¼ãã°æ 1099 å ±ãã·ã¹ãã å¤é¨ã«åºåããããã®ãµã¼ãã¹ï¼ãããï¼ã·ã¹ã 1100 ã ãã°ã¿ã¹ã¯ã¨å¼ã¶ï¼ã¯ï¼ã·ã¹ãã ãã°æ©è½ã¨ã¯åé¢ãã¦å®è£ 1101 ãããã¨ã¨ãï¼ 1102 ã·ã¹ãã ãã°æ©è½ã¯ãã°æ 1103 å ±ã®è¨é²ã»ååºãã®ããã®æ©è½ã«çµã£ã¦ããï¼ 1104 1105 以ä¸ã®ããã«ï¼ã·ã¹ãã ãã°æ©è½ã¯ã«ã¼ãã«ããä¸ã®é層ã®ã¢ã¸ã¥ã¼ã«ã§ãã 1106 ãï¼ã·ã¹ãã ãã°æ©è½ã®ä¸ã§ãã°æå»ãåãåºãããã«ï¼ã«ã¼ãã«ã®æ©è½ãå¿ 1107 1108 è¦ã¨ããï¼å®è£ 1109 ä¸ã¯ï¼ã«ã¼ãã«ã®å 1110 é¨å¤æ°ãç´æ¥åç 1111 §ãã¦ããï¼ãã®ããï¼ã«ã¼ 1112 ãã«ã®å®è¡éå§åãçµäºå¾ã¯ï¼ãã°æå»ã¯æ£ããè¨é²ãããªãï¼ 1113 1114 8.1.2 ãã°ãããã¡ã¸ã®è¨é²ã¨ä½ã¬ãã«åºå 1115 1116 ä¸è¿°ããããã«ï¼ãã°æ 1117 å ±ãã·ã¹ãã ã®å¤é¨ã«åºåããããã«ã¯ï¼ã«ã¼ãã«ä¸ 1118 ã§åä½ããã·ã¹ãã ãµã¼ãã¹ãç¨ããå¿ 1119 è¦ãããããï¼ã«ã¼ãã«ã®åä½ãç¶ç¶ 1120 ã§ããªããããªé大ãªç°å¸¸äºè±¡ãèµ·ãã£ãå ´åã«ã¯ï¼ãã°æ 1121 å ±ãåºåã§ããªã 1122 ãªãï¼ã¾ãï¼ãããã®ã·ã¹ãã ãµã¼ãã¹èªèº«ããããã°ããå ´åã«ãï¼ãã°æ 1123 1124 å ±ã®åºåãã§ããªãï¼ 1125 1126 ããã§ï¼ã«ã¼ãã«ä¸ã§åä½ããã·ã¹ãã ãµã¼ãã¹ã使ããªãå ´åã«ã§ããã°æ 1127 1128 å ±ãåºåããããã«ï¼ä½ã¬ãã«åºåæ©è½ãç¨æããï¼ä½ã¬ãã«åºåæ©è½ã¯ï¼ã¿ã¼ 1129 ã²ããä¾åã«ç¨æããä½ã¬ãã«ã®æååºåé¢æ°ï¼target_fput_logï¼ãç¨ãã¦ã 1130 ã°æ 1131 å ±ãåºåããæ©è½ã§ããï¼ä½ã¬ãã«ã®æååºåé¢æ°ã¯ï¼ã¿ã¼ã²ããä¾åé¨ 1132 ã§ç¨æãããã¨ã¨ãã¦ãããï¼æçµè£½åã«çµã¿è¾¼ã¾ããå ´åãªã©ã§ã¯ï¼æåã 1133 åºåããæ¹æ³ããªãç¶æ³ãèããããï¼ãã®ãããªå ´åï¼ä½ã¬ãã«ã®æååºå 1134 é¢æ°ã«éãããæåã¯ï¼ã¡ã¢ãªä¸ã«æ®ãã¦ãããï¼æ¨ã¦ã¦ãã¾ããããªãï¼ 1135 1136 ãã°æ 1137 å ±ãï¼ãã°ãããã¡ã¸è¨é²ãããä½ã¬ãã«åºåæ©è½ãç¨ãã¦åºåããã 1138 ã®è¨å®ã¯ï¼ã·ã¹ãã ãã°æ©è½ã®ãµã¼ãã¹ã³ã¼ã«ï¼syslog_msk_logï¼ã«ãã£ã¦è¡ 1139 ããã¨ãã§ããï¼syslog_msk_logã®ä½¿ãæ¹ã«ã¤ãã¦ã¯å¾è¿°ããï¼ããã©ã«ã㧠1140 ã¯ï¼ã·ã¹ãã ãã°ã¿ã¹ã¯ãåä½ãããï¼syslog_msk_logãå¼ã³åºããªãå ´åï¼ï¼ 1141 ãã¹ã¦ã®ãã°æ 1142 å ±ãä½ã¬ãã«åºåæ©è½ãç¨ãã¦åºåãï¼ãã°ãããã¡ã«ã¯è¨é² 1143 ããªãï¼ 1144 1145 ä½ã¬ãã«åºåæ©è½ãç¨ããã¨ï¼ãã°ã¡ãã»ã¼ã¸ã®ä½æå¦çï¼printfç¸å½ã®å¦çï¼ 1146 ã¨ä½ã¬ãã«ã®æååºåå¦çãã«ã¼ãã«å 1147 ã§è¡ãããã«ï¼ã«ã¼ãã«ã®å¿çæ§ãæª 1148 ããªããã¨ã«æ³¨æããªããã°ãªããªãï¼ç¹ã«ï¼ä½ã¬ãã«ã®æååºåå¦çã¯ãã 1149 ã¤ã¹ããã¼ãªã³ã°ããå½¢ã§å®è£ 1150 ããã®ãé常ã§ï¼ãã®å ´åã«ã¯ï¼ã«ã¼ãã«ã®å¿ 1151 çæ§ã¯å®ç¨çã¨è¨ããªãç¨ã«æªããªãï¼ 1152 1153 8.1.3 ãã°æ 1154 å ±ã®ç¨®å¥ 1155 1156 ã·ã¹ãã ãã°æ©è½ã¯ï¼ãã°æ 1157 å ±ã«ä»¥ä¸ã®ç¨®å¥ãè¨ãã¦ããï¼ 1158 1159 LOG_TYPE_COMMENT ã³ã¡ã³ã 1160 LOG_TYPE_ASSERT ã¢ãµã¼ã·ã§ã³ã®å¤±æ 1161 LOG_TYPE_INH å²è¾¼ã¿ãã³ãã© 1162 LOG_TYPE_ISR å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ 1163 LOG_TYPE_CYC å¨æãã³ãã© 1164 LOG_TYPE_ALM ã¢ã©ã¼ã ãã³ãã© 1165 LOG_TYPE_OVR ãªã¼ãã©ã³ãã³ãã© 1166 LOG_TYPE_EXC CPUä¾å¤ãã³ãã© 1167 LOG_TYPE_TEX ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ 1168 LOG_TYPE_TSKSTAT ã¿ã¹ã¯ç¶æ 1169 å¤å 1170 LOG_TYPE_DSP ãã£ã¹ããã㣠1171 LOG_TYPE_SVC ãµã¼ãã¹ã³ã¼ã« 1172 1173 ãã°æ 1174 å ±ã®ç¨®å¥ã®ä¸ã§ï¼LOG_TYPE_COMMENTã¨LOG_TYPE_ASSERT以å¤ã¯ï¼ã«ã¼ãã« 1175 ã®ãã¬ã¼ã¹ãã°ã«ç¨ããããã®ãã®ã§ãããï¼ä½¿ç¨ãããã©ããã¯ã¿ã¼ã²ãã 1176 ä¾åé¨ã«ä»»ããã¦ããï¼ 1177 1178 8.1.4 ãã°æ 1179 å ±ã®éè¦åº¦ 1180 1181 ã·ã¹ãã ãã°æ©è½ã¯ï¼ãã°æ 1182 å ±ãåºåããéã«æå®ããéè¦åº¦ã«åºã¥ãã¦ï¼å® 1183 éã«åºåãããã°æ 1184 å ±ãåçã«è¨å®ãããã¨ãã§ããï¼ããã¯ï¼UNIXã®ã·ã¹ã 1185 ã ãã°æ©è½ãã¾ãããã®ã§ï¼ãã°ã®éè¦åº¦ã®ç¨®é¡ãæå®æ¹æ³ãUNIXã®APIãåè 1186 ã«ãã¦ããï¼ã¾ãï¼ä½ã¬ãã«åºåæ©è½ãç¨ãã¦åºåãããã°æ 1187 å ±ãï¼éè¦åº¦ã« 1188 åºã¥ãã¦åçã«è¨å®ãããã¨ãã§ããï¼ 1189 1190 å 1191 ·ä½çã«ã¯ï¼ãã°ã®éè¦åº¦ã¨ãã¦æ¬¡ã®8段éãç¨æãã¦ããï¼ 1192 1193 LOG_EMERG ã«ã¼ãã«ã®åä½ãç¶ç¶ã§ããªãã¨ã©ã¼ 932 オブジェクトのID番号を保持する変数の定義を生成する.パス2でのみ 933 有効. 934 935 -M[--print-dependencies]<ターゲットシンボル> 936 システムコンフィギュレーションファイルの依存関係を出力する. 937 Makefile中の依存関係を生成する際に用いる. 938 939 コンフィギュレータの詳細仕様については,別途PDFファイルの形で配布してい 940 る「TOPPERS新世代カーネル用コンフィギュレータ仕様」を参照すること. 941 942 943 8.システムサービス 944 945 8.1 システムログ機能 946 947 システムログ機能は,カーネル内で発生した異常事象やカーネルのトレースロ 948 グ,システムサービスやアプリケーションで発生した異常事象やトレースログ 949 を,ログ情報として記録するための機能である.また,記録したログ情報を取 950 り出す機能も持つ. 951 952 システムログ機能は,システムコンフィギュレーションファイルでsyslog.cfg 953 をインクルードすることで,システムに組み込むことができる.システムログ 954 出力を行うソースファイルでは,t_syslog.hをインクルードする.また,シス 955 テムログ機能のその他のサービスコールを呼び出すソースファイルでは, 956 syslog.hをインクルードする. 957 958 8.1.1 システムログ機能の位置付け 959 960 システムログ機能は,カーネル内からも呼び出すことができるため,カーネル 961 より下の階層のモジュールと位置付けることができる.この意味では,他のシ 962 ステムサービスとは位置付けが異なる. 963 964 一方,ログ情報をシステム外部に出力するためには,シリアルインタフェース 965 ドライバなど,カーネル上で動作するシステムサービスを用いる必要がある. 966 そこで,ログ情報をシステム外部に出力するためのサービス(これを,システ 967 ムログタスクと呼ぶ)は,システムログ機能とは分離して実装することとし, 968 システムログ機能はログ情報の記録・取出しのための機能に絞っている. 969 970 以上のように,システムログ機能はカーネルより下の階層のモジュールである 971 が,システムログ機能の中でログ時刻を取り出すために,カーネルの機能を必 972 要とする.実装上は,カーネルの内部変数を直接参照している.そのため,カー 973 ネルの実行開始前や終了後は,ログ時刻は正しく記録されない. 974 975 8.1.2 ログバッファへの記録と低レベル出力 976 977 上述したように,ログ情報をシステムの外部に出力するためには,カーネル上 978 で動作するシステムサービスを用いる必要があるため,カーネルの動作を継続 979 できないような重大な異常事象が起こった場合には,ログ情報を出力できなく 980 なる.また,これらのシステムサービス自身をデバッグする場合にも,ログ情 981 報の出力ができない. 982 983 そこで,カーネル上で動作するシステムサービスが使えない場合にでもログ情 984 報を出力するために,低レベル出力機能を用意する.低レベル出力機能は,ター 985 ゲット依存に用意する低レベルの文字出力関数(target_fput_log)を用いてロ 986 グ情報を出力する機能である.低レベルの文字出力関数は,ターゲット依存部 987 で用意することとしているが,最終製品に組み込まれる場合などでは,文字を 988 出力する方法がない状況も考えられる.そのような場合,低レベルの文字出力 989 関数に送られた文字は,メモリ上に残しておくか,捨ててしまうしかない. 990 991 ログ情報を,ログバッファへ記録するか低レベル出力機能を用いて出力するか 992 の設定は,システムログ機能のサービスコール(syslog_msk_log)によって行 993 うことができる.syslog_msk_logの使い方については後述する.デフォルトで 994 は(システムログタスクを動作させず,syslog_msk_logも呼び出さない場合), 995 すべてのログ情報を低レベル出力機能を用いて出力し,ログバッファには記録 996 しない. 997 998 低レベル出力機能を用いると,ログメッセージの作成処理(printf相当の処理) 999 と低レベルの文字出力処理をカーネル内で行うために,カーネルの応答性が悪 1000 くなることに注意しなければならない.特に,低レベルの文字出力処理はデバ 1001 イスをポーリングする形で実装するのが通常で,その場合には,カーネルの応 1002 答性は実用的と言えない程に悪くなる. 1003 1004 8.1.3 ログ情報の種別 1005 1006 システムログ機能は,ログ情報に以下の種別を設けている. 1007 1008 LOG_TYPE_COMMENT コメント 1009 LOG_TYPE_ASSERT アサーションの失敗 1010 LOG_TYPE_INH 割込みハンドラ 1011 LOG_TYPE_ISR 割込みサービスルーチン 1012 LOG_TYPE_CYC 周期ハンドラ 1013 LOG_TYPE_ALM アラームハンドラ 1014 LOG_TYPE_OVR オーバランハンドラ 1015 LOG_TYPE_EXC CPU例外ハンドラ 1016 LOG_TYPE_TEX タスク例外処理ルーチン 1017 LOG_TYPE_TSKSTAT タスク状態変化 1018 LOG_TYPE_DSP ディスパッチャ 1019 LOG_TYPE_SVC サービスコール 1020 1021 ログ情報の種別の中で,LOG_TYPE_COMMENTとLOG_TYPE_ASSERT以外は,カーネル 1022 のトレースログに用いるためのものであるが,使用するかどうかはターゲット 1023 依存部に任されている. 1024 1025 8.1.4 ログ情報の重要度 1026 1027 システムログ機能は,ログ情報を出力する際に指定する重要度に基づいて,実 1028 際に出力するログ情報を動的に設定することができる.これは,UNIXのシステ 1029 ムログ機能をまねたもので,ログの重要度の種類や指定方法もUNIXのAPIを参考 1030 にしている.また,低レベル出力機能を用いて出力するログ情報も,重要度に 1031 基づいて動的に設定することができる. 1032 1033 具体的には,ログの重要度として次の8段階を用意している. 1034 1035 LOG_EMERG カーネルの動作を継続できないエラー 1194 1036 LOG_ALERT 1195 1037 LOG_CRIT 1196 LOG_ERROR éè¦æ§ã®ä½ãã·ã¹ãã ã¨ã©ã¼ 1197 LOG_WARNING è¦åã¡ãã»ã¼ã¸ï¼ã·ã¹ãã ã¯å®å 1198 ¨ã«ç¶ç¶åä½ã§ãã 1038 LOG_ERROR 重要性の低いシステムエラー 1039 LOG_WARNING 警告メッセージ.システムは安全に継続動作できる 1199 1040 LOG_NOTICE 1200 1041 LOG_INFO 1201 LOG_DEBUG ãããã°ã®ããã®ã¡ãã»ã¼ã¸ 1202 1203 ã©ã®éè¦åº¦ã®ãã°æ 1204 å ±ããã°ãããã¡ã«è¨é²ãããã¨ï¼ã©ã®éè¦åº¦ã®ãã°æ 1205 å ± 1206 ãä½ã¬ãã«åºåæ©è½ãç¨ãã¦åºåãããã¯ï¼ã·ã¹ãã ãã°æ©è½ã®ãµã¼ãã¹ã³ã¼ 1207 ã«ï¼syslog_msk_logï¼ã«ãã£ã¦è¨å®ãããã¨ãã§ããï¼ 1208 1209 8.1.5 ãã°æ 1210 å ±ã®ãã¼ã¿æ§é 1211 1212 ãã°æ 1213 å ±ãæ ¼ç´ããããã®ãã¼ã¿åã¨ãã¦ï¼SYSLOGæ§é ä½ãç¨æãã¦ããï¼ 1214 SYSLOGæ§é ä½ã«ã¯ï¼ãã°æ 1215 å ±ã®ç¨®å¥ï¼logtypeãã£ã¼ã«ãï¼ï¼ãã°æå» 1216 ï¼logtimãã£ã¼ã«ãï¼ï¼ãã®ä»ã®ãã°æ 1217 å ±ï¼loginfoãã£ã¼ã«ãï¼ãå«ã¾ããï¼ 1218 1219 SYSLOGæ§é ä½ã«æ ¼ç´ããããã°æ 1220 å ±ãåºåããå ´åã«ã¯ï¼ãã°æå»ã¯åºåé¢æ° 1221 ï¼syslog_wri_logï¼ã«ãã£ã¦æ¸ãè¾¼ã¾ããããï¼åºåé¢æ°ãå¼ã¶å´ã§æ¸ãè¾¼ã 1222 å¿ 1223 è¦ã¯ãªãï¼ 1224 1225 8.1.6 ã·ã¹ãã ãã°æ©è½ã®ãµã¼ãã¹ã³ã¼ã« 1226 1227 ã·ã¹ãã ãã°æ©è½ã®æä¾ãããµã¼ãã¹ã³ã¼ã«ã¯æ¬¡ã®éãã§ããï¼ãããã®ãµã¼ 1228 ãã¹ã³ã¼ã«ãå¼ã³åºãã½ã¼ã¹ãã¡ã¤ã«ã§ã¯ï¼syslog.hãã¤ã³ã¯ã«ã¼ãããå¿ 1229 è¦ 1230 ãããï¼ 1042 LOG_DEBUG デバッグのためのメッセージ 1043 1044 どの重要度のログ情報をログバッファに記録するかと,どの重要度のログ情報 1045 を低レベル出力機能を用いて出力するかは,システムログ機能のサービスコー 1046 ル(syslog_msk_log)によって設定することができる. 1047 1048 8.1.5 ログ情報のデータ構造 1049 1050 ログ情報を格納するためのデータ型として,SYSLOG構造体を用意している. 1051 SYSLOG構造体には,ログ情報の種別(logtypeフィールド),ログ時刻 1052 (logtimフィールド),その他のログ情報(loginfoフィールド)が含まれる. 1053 1054 SYSLOG構造体に格納されたログ情報を出力する場合には,ログ時刻は出力関数 1055 (syslog_wri_log)によって書き込まれるため,出力関数を呼ぶ側で書き込む 1056 必要はない. 1057 1058 8.1.6 システムログ機能のサービスコール 1059 1060 システムログ機能の提供するサービスコールは次の通りである.これらのサー 1061 ビスコールを呼び出すソースファイルでは,syslog.hをインクルードする必要 1062 がある. 1231 1063 1232 1064 (1) ER syslog_wri_log(uint_t prio, const SYSLOG *p_syslog) 1233 1065 1234 ã·ã¹ãã ãã°æ©è½ã«ï¼p_syslogã§æå®ããããã°æ 1235 å ±ãï¼prioã§æå®ãããé 1236 è¦åº¦ã§åºåããï¼ãã°ãããã¡ã¸è¨é²ãããä½ã¬ãã«åºåæ©è½ãç¨ãã¦åºåã 1237 ãï¼ï¼ 1238 1239 ãããã¿ã¤ã宣è¨ã«ããã¦ï¼*p_syslogã«constæå®ãããã¦ãããï¼å®éã«ã¯ï¼ 1240 ãã®é¢æ°ã®ä¸ã§ï¼*p_syslogã®logtimãã£ã¼ã«ãã«ã·ã¹ãã æå»ãæ¸ãè¾¼ãã§ã 1241 ãï¼ 1066 システムログ機能に,p_syslogで指定されるログ情報を,prioで指定される重 1067 要度で出力する(ログバッファへ記録するか低レベル出力機能を用いて出力す 1068 る). 1069 1070 プロトタイプ宣言において,*p_syslogにconst指定がされているが,実際には, 1071 この関数の中で,*p_syslogのlogtimフィールドにシステム時刻を書き込んでい 1072 る. 1242 1073 1243 1074 (2) ER_UINT syslog_rea_log(SYSLOG *p_syslog) 1244 1075 1245 ãã°ãããã¡ãããã°æ 1246 å ±ã1ã¤åãåºãï¼ãã°ãããã¡ã空ã®æã¯E_OBJï¼ã 1247 ãã§ãªãå ´åã¯ï¼ãã°ãããã¡ã®ãªã¼ãããã¼ã«ãã失ããããã°æ 1248 å ±ã®æ° 1249 ï¼ãã°æ 1250 å ±ã失ããã¦ããªãå ´åã¯0ï¼ãè¿ãï¼ã·ã¹ãã ãã°ã¿ã¹ã¯ãç¨ããã 1251 ã¨ãæ³å®ãã¦ããï¼ 1076 ログバッファからログ情報を1つ取り出す.ログバッファが空の時はE_OBJ,そ 1077 うでない場合は,ログバッファのオーバフローにより失われたログ情報の数 1078 (ログ情報が失われていない場合は0)を返す.システムログタスクが用いるこ 1079 とを想定している. 1252 1080 1253 1081 (3) ER syslog_msk_log(uint_t logmask, uint_t lowmask) 1254 1082 1255 ãã°ãããã¡ã«è¨é²ãã¹ããã°æ 1256 å ±ã®éè¦åº¦ã®ç¤ºãããããããï¼logmaskï¼ã¨ï¼ 1257 ä½ã¬ãã«åºåæ©è½ãç¨ãã¦åºåãã¹ããã°æ 1258 å ±ã®éè¦åº¦ã示ããããããã 1259 ï¼lowmaskï¼ãè¨å®ããï¼ãããããããä½ãããã®ãã¯ãã¨ãã¦ï¼LOG_MASK㨠1260 LOG_UPTOãç¨æãã¦ããï¼ 1083 ログバッファに記録すべきログ情報の重要度の示すビットマップ(logmask)と, 1084 低レベル出力機能を用いて出力すべきログ情報の重要度を示すビットマップ 1085 (lowmask)を設定する.ビットマップを作るためのマクロとして,LOG_MASKと 1086 LOG_UPTOを用意している. 1261 1087 1262 1088 (4) ER syslog_ref_log(T_SYSLOG_RLOG *pk_rlog) 1263 1089 1264 ã·ã¹ãã ãã°æ©è½ã®ç¶æ 1265 ãåç 1266 §ããï¼å 1267 ·ä½çã«ã¯ï¼ãã°ãããã¡ã«è¨é²ãã㦠1268 ãããã°æ 1269 å ±ã®æ°ï¼T_SYSLOG_RLOGæ§é ä½ã®countãã£ã¼ã«ãï¼ï¼ãã°ãããã¡ 1270 ã®ãªã¼ãããã¼ã«ãã失ããããã°æ 1271 å ±ã®æ°ï¼lostãã£ã¼ã«ãï¼ï¼ãã°ãããã¡ 1272 ã«è¨é²ãã¹ããã°æ 1273 å ±ã®éè¦åº¦ã®ç¤ºãããããããï¼logmaskãã£ã¼ã«ãï¼ï¼ä½ 1274 ã¬ãã«åºåæ©è½ãç¨ãã¦åºåãã¹ããã°æ 1275 å ±ã®éè¦åº¦ã示ããããããã 1276 ï¼lowmaskãã£ã¼ã«ãï¼ãåç 1277 §ãããã¨ãã§ããï¼ 1278 1279 8.1.7 ã·ã¹ãã ãã°æ©è½ã®ããã®ã©ã¤ãã©ãªé¢æ°ã¨ãã¯ã 1280 1281 ã·ã¹ãã ãã°åºåã®ããã®ã©ã¤ãã©ãªé¢æ°ã¨ãã¯ãã¯æ¬¡ã®éãã§ããï¼ããã 1282 ã ããå¼ã³åºãã½ã¼ã¹ãã¡ã¤ã«ã§ã¯ï¼t_syslog.hãã¤ã³ã¯ã«ã¼ãããã°ããï¼ 1090 システムログ機能の状態を参照する.具体的には,ログバッファに記録されて 1091 いるログ情報の数(T_SYSLOG_RLOG構造体のcountフィールド),ログバッファ 1092 のオーバフローにより失われたログ情報の数(lostフィールド),ログバッファ 1093 に記録すべきログ情報の重要度の示すビットマップ(logmaskフィールド),低 1094 レベル出力機能を用いて出力すべきログ情報の重要度を示すビットマップ 1095 (lowmaskフィールド)を参照することができる. 1096 1097 8.1.7 システムログ機能のためのライブラリ関数とマクロ 1098 1099 システムログ出力のためのライブラリ関数とマクロは次の通りである.これら 1100 だけを呼び出すソースファイルでは,t_syslog.hをインクルードすればよい. 1283 1101 1284 1102 (1) void _syslog_n(uint_t prio, uint_t type, intptr_t arg1, ..., intptr_t argn) 1285 â» nã¯0ï½6ã®ããããï¼ 1286 1287 ãã°ç¨®å¥ãtypeï¼ãã©ã¡ã¼ã¿ãarg1ï½argnã®ãã°æ 1288 å ±ãï¼éè¦åº¦prioã§åºåã 1289 ãããã®é¢æ°ï¼ 1103 ※ nは0~6のいずれか. 1104 1105 ログ種別がtype,パラメータがarg1~argnのログ情報を,重要度prioで出力す 1106 るための関数. 1290 1107 1291 1108 (2) void syslog_n(uint_t prio, const char *format, arg1, ..., argn) 1292 â» nã¯0ï½5ã®ããããï¼ 1293 1294 formatæååããã³ããã«ç¶ãå¼æ°ããä½æãããã¡ãã»ã¼ã¸ãï¼ãã°ç¨®å¥ã 1295 LOG_TYPE_COMMENTã®ãã°æ 1296 å ±ã¨ãã¦ï¼éè¦åº¦prioã§åºåããããã®ãã¯ãï¼ 1297 1298 formatã¯ã¡ãã»ã¼ã¸ã®ãã©ã¼ãããè¨è¿°ï¼arg1ï½argnã¯ãã©ã¼ãããè¨è¿°ä¸ã§ 1299 åç 1300 §ãããå¤ã§ï¼printfã®ãã©ã¼ãããè¨è¿°ã®ãµãã»ããã¨ãªã£ã¦ããï¼arg1ï½ 1301 argnã¯ï¼ãã®ãã¯ãä¸ã§intptr_tåã«ãã£ã¹ããããããï¼intptr_tåã«åå¤ 1302 æã§ããä»»æã®åã渡ããã¨ãã§ãï¼åãã§ãã¯ã¯ãããªãï¼formatããã³ 1303 arg1ï½argnã«ã¯ï¼æ¬¡ã®å¶éãããï¼ 1304 1305 ã»formatã®ãã©ã¼ãããè¨è¿°ã¯ï¼å®æ°æååã渡ããã¨ãæ³å®ãã¦ããï¼ãã® 1306 ãã¯ãå¦çãçµããå¾ãå¤åãã¦ã¯ãªããªãï¼ 1307 1308 ã»formatä¸ã«ä½¿ãããã©ã¼ãããæå®ã¯æ¬¡ã®éãï¼ 1309 1310 %d å¼æ°ãint_tåã¨ã¿ãªãï¼10é²æ°ã§è¡¨ç¤º 1311 %u å¼æ°ãuint_tåã¨ã¿ãªãï¼10é²æ°ã§è¡¨ç¤º 1312 %x å¼æ°ãuint_tåã¨ã¿ãªãï¼16é²æ°ï¼è±æåã¯å°æåï¼ã§è¡¨ç¤º 1313 %X å¼æ°ãuint_tåã¨ã¿ãªãï¼16é²æ°ï¼è±æåã¯å¤§æåï¼ã§è¡¨ç¤º 1314 %p å¼æ°ããã¤ã³ã¿ã¨ã¿ãªãï¼16é²æ°ï¼è±æåã¯å°æåï¼ã§è¡¨ç¤º 1315 %c å¼æ°ãæåã³ã¼ãã¨ã¿ãªãï¼æåã表示 1316 %s å¼æ°ãæååã示ããã¤ã³ã¿ã¨ã¿ãªãï¼æååã表示 1317 %% '%'ã表示ï¼å¼æ°ã¯åããªãï¼ 1318 1319 %d, %u, %x, %Xã«ããã¦ã¯ï¼'%'ã®ç´å¾ã«è¡¨ç¤ºæ¡æ°ãæå®ãã10é²æ°å¤ãè¨è¿°ã 1320 ããã¨ãã§ããï¼ãã®å ´åï¼è¡¨ç¤ºãã¹ãæååãæå®ããæ¡æ°ã«æºããªãå ´å 1321 ã«ã¯ï¼æå®ããæ¡æ°å 1322 ã«å³è©°ãã§è¡¨ç¤ºããï¼10é²æ°å¤ã'0'ã§å§ã¾ãå ´åã«ã¯ï¼ 1323 ãã®éã«'0'ãåããï¼ 1324 1325 ã¾ãï¼intptr_tåã®ãµã¤ãºãlongåã®ãµã¤ãºä»¥ä¸ã§ããç°å¢ã«ããã¦ã¯ï¼æ¬¡ã® 1326 ãã©ã¼ãããæå®ã使ç¨ãããã¨ãã§ããï¼ãã®ä»ã®ãã©ã¼ãããæå®ã«'l' 1327 ãä»å ããå ´åã«ã¯ç¡è¦ããï¼%lcã¨%lsã«ã¯å¯¾å¿ãã¦ããªãï¼ï¼ 1328 1329 %ld å¼æ°ãlong_tåã¨ã¿ãªãï¼10é²æ°ã§è¡¨ç¤º 1330 %lu å¼æ°ãulong_tåã¨ã¿ãªãï¼10é²æ°ã§è¡¨ç¤º 1331 %lx å¼æ°ãulong_tåã¨ã¿ãªãï¼16é²æ°ï¼è±æåã¯å°æåï¼ã§è¡¨ç¤º 1332 %lX å¼æ°ãulong_tåã¨ã¿ãªãï¼16é²æ°ï¼è±æåã¯å¤§æåï¼ã§è¡¨ç¤º 1333 1334 ã»arg1ï½argnã«ãã¤ã³ã¿ã渡ãå ´åï¼%sã«å¯¾å¿ããå¼æ°ã®å ´åï¼ã«ï¼ãã¤ã³ã¿ 1335 ã®æããã¼ã¿ã¯ï¼ãã®ãã¯ãå¦çãçµããå¾ãå¤åãã¦ã¯ãªããªãï¼å®æ°æå 1336 åã渡ããã¨ãæ³å®ãã¦ããï¼ 1109 ※ nは0~5のいずれか. 1110 1111 format文字列およびそれに続く引数から作成されるメッセージを,ログ種別が 1112 LOG_TYPE_COMMENTのログ情報として,重要度prioで出力するためのマクロ. 1113 1114 formatはメッセージのフォーマット記述,arg1~argnはフォーマット記述中で 1115 参照される値で,printfのフォーマット記述のサブセットとなっている.arg1~ 1116 argnは,このマクロ中でintptr_t型にキャストされるため,intptr_t型に型変 1117 換できる任意の型を渡すことができ,型チェックはされない.formatおよび 1118 arg1~argnには,次の制限がある. 1119 1120 ・formatのフォーマット記述は,定数文字列を渡すことを想定しており,この 1121 マクロ処理を終えた後も変化してはならない. 1122 1123 ・format中に使えるフォーマット指定は次の通り. 1124 1125 %d 引数をint_t型とみなし,10進数で表示 1126 %u 引数をuint_t型とみなし,10進数で表示 1127 %x 引数をuint_t型とみなし,16進数(英文字は小文字)で表示 1128 %X 引数をuint_t型とみなし,16進数(英文字は大文字)で表示 1129 %p 引数をポインタとみなし,16進数(英文字は小文字)で表示 1130 %c 引数を文字コードとみなし,文字を表示 1131 %s 引数を文字列を示すポインタとみなし,文字列を表示 1132 %% '%'を表示(引数は取らない) 1133 1134 %d, %u, %x, %Xにおいては,'%'の直後に表示桁数を指定する10進数値を記述す 1135 ることができる.その場合,表示すべき文字列が指定した桁数に満たない場合 1136 には,指定した桁数内に右詰めで表示する.10進数値が'0'で始まる場合には, 1137 その間に'0'を埋める. 1138 1139 また,intptr_t型のサイズがlong型のサイズ以上である環境においては,次の 1140 フォーマット指定も使用することができる.この他のフォーマット指定に'l' 1141 を付加した場合には無視する(%lcと%lsには対応していない). 1142 1143 %ld 引数をlong_t型とみなし,10進数で表示 1144 %lu 引数をulong_t型とみなし,10進数で表示 1145 %lx 引数をulong_t型とみなし,16進数(英文字は小文字)で表示 1146 %lX 引数をulong_t型とみなし,16進数(英文字は大文字)で表示 1147 1148 ・arg1~argnにポインタを渡す場合(%sに対応する引数の場合)に,ポインタ 1149 の指すデータは,このマクロ処理を終えた後も変化してはならない.定数文字 1150 列を渡すことを想定している. 1337 1151 1338 1152 (3) void syslog(uint_t prio, const char *format, ...) 1339 1153 1340 formatæååããã³ããã«ç¶ãå¼æ°ããä½æãããã¡ãã»ã¼ã¸ãï¼ãã°ç¨®å¥ã 1341 LOG_TYPE_COMMENTã®ãã°æ 1342 å ±ã¨ãã¦ï¼éè¦åº¦prioã§åºåããããã®é¢æ°ã§ï¼å¼ 1343 æ°ã®æ°ãå¯å¤ã«ãããã®ï¼formatã«ç¶ãå¼æ°ã¯æ大5åã¾ã§ï¼formatããã³ãã 1344 ã«ç¶ãå¼æ°ã«ã¯ï¼syslog_nã¨åæ§ã®å¶éãããï¼ 1345 1346 ãã®ã©ã¤ãã©ãªé¢æ°ã¯ï¼å¯å¤æ°å¼æ°ãå¦çããããã«å 1347 é¨ã§æååãã¹ãã£ã³ 1348 ããï¼ãã®ããï¼å®è¡æéãé·ããªãå¯è½æ§ãããï¼å²è¾¼ã¿ç¦æ¢ç¶æ 1349 ã§å¼ã³åº 1350 ãã¹ãã§ã¯ãªãï¼ä¸»ã«ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã ãç¨ãããã¨ãæ³å®ãã¦ã 1351 ãï¼ 1154 format文字列およびそれに続く引数から作成されるメッセージを,ログ種別が 1155 LOG_TYPE_COMMENTのログ情報として,重要度prioで出力するための関数で,引 1156 数の数を可変にしたもの.formatに続く引数は最大5個まで.formatおよびそれ 1157 に続く引数には,syslog_nと同様の制限がある. 1158 1159 このライブラリ関数は,可変数引数を処理するために内部で文字列をスキャン 1160 する.そのため,実行時間が長くなる可能性があり,割込み禁止状態で呼び出 1161 すべきではない.主にアプリケーションプログラムが用いることを想定してい 1162 る. 1352 1163 1353 1164 (4) UINT LOG_MASK(UINT prio) 1354 1165 1355 éè¦åº¦prioã®ã¿ã»ããããããããããããä½ããã¯ãï¼syslog_msk_logã«æ¸¡ 1356 ãå¼æ°ãä½ãããã«ç¨ããï¼ 1166 重要度prioのみセットされたビットマップを作るマクロ.syslog_msk_logに渡 1167 す引数を作るために用いる. 1357 1168 1358 1169 (5) UINT LOG_UPTO(UINT prio) 1359 1170 1360 éè¦åº¦prio以ä¸ã®éè¦åº¦ããã¹ã¦ã»ããããããããããããä½ããã¯ãï¼ 1361 syslog_msk_log ã«æ¸¡ãå¼æ°ãä½ãããã«ç¨ããï¼1362 1363 8.1.8 ã·ã¹ãã ãã°æ©è½ã®ãã®ä»ã®ãµã¼ãã¹1364 1365 ã·ã¹ãã ãã°æ©è½ã¯ï¼åè¨ã®ãµã¼ãã¹ã³ã¼ã«çã«å ãã¦ï¼åæåå¦çã®ããã® 1366 é¢æ°ãæã¤ï¼ 1171 重要度prio以上の重要度がすべてセットされたビットマップを作るマクロ. 1172 syslog_msk_logに渡す引数を作るために用いる. 1173 1174 8.1.8 システムログ機能のその他のサービス 1175 1176 システムログ機能は,前記のサービスコール等に加えて,初期化処理のための 1177 関数を持つ. 1367 1178 1368 1179 (1) void syslog_initialize(intptr_t exinf) 1369 1180 1370 ã·ã¹ãã ãã°æ©è½ãåæåããï¼ãã°ãããã¡ã«ãã°æ 1371 å ±ãè¨é²ããã¦ããå ´ 1372 åã«ã¯ï¼æ¶å»ãããï¼syslog.cfgã«ãã£ã¦ï¼ã«ã¼ãã«ã«åæåã«ã¼ãã³ã¨ã㦠1373 ç»é²ãããï¼exinfã¯ç¡è¦ãããï¼ 1374 1375 8.2 ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ã 1376 1377 ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ãã¯ï¼ã·ãªã¢ã«ãã¼ããæ±ãããã®ãã©ã¤ã㧠1378 ããï¼ 1379 1380 ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ãã¯ï¼ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ 1381 ã«ã§serial.cfgãã¤ã³ã¯ã«ã¼ããããã¨ã§ï¼ã·ã¹ãã ã«çµã¿è¾¼ããã¨ãã§ããï¼ 1382 ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ããå¼ã³åºãã½ã¼ã¹ãã¡ã¤ã«ã§ã¯ï¼serial.hã 1383 ã¤ã³ã¯ã«ã¼ãããï¼ 1384 1385 ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ãã¯ï¼ãã¼ãæ¯ã«ã»ããã©ã2åãã¤ä½¿ç¨ããï¼ 1386 ã»ããã©ãçæããéçAPIã¯ï¼serial.cfgã«å«ã¾ãã¦ããï¼ 1387 1388 8.2.1 ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ãã®ãµã¼ãã¹ã³ã¼ã« 1389 1390 ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ããå¼ã³åºããµã¼ãã¹ã³ã¼ã«ã®ä»æ§ã¯æ¬¡ã®éã 1391 ã§ããï¼ãã®ä¸ã§ï¼ã·ãªã¢ã«ãã¼ãã®IDçªå·ï¼portidï¼ã®è§£éã¯ã¿ã¼ã²ããä¾ 1392 åã¨ãªãï¼ 1393 1394 ãããã®ãµã¼ãã¹ã³ã¼ã«ã¯ï¼éã¿ã¹ã¯ã³ã³ããã¹ãããå¼ã³åºããã¨ã¯ã§ã㪠1395 ãï¼ã¾ãï¼serial_rea_datã¨serial_wri_datã¯ï¼ãã£ã¹ãããä¿çç¶æ 1396 ã§å¼ã³ 1397 åºããã¨ã¯ã§ããªãï¼ããããï¼å¼ã³åºããå ´åã«ã¯E_CTXã¨ã©ã¼ã¨ãªãï¼ 1181 システムログ機能を初期化する.ログバッファにログ情報が記録されている場 1182 合には,消去される.syslog.cfgによって,カーネルに初期化ルーチンとして 1183 登録される.exinfは無視される. 1184 1185 8.2 シリアルインタフェースドライバ 1186 1187 シリアルインタフェースドライバは,シリアルポートを扱うためのドライバで 1188 ある. 1189 1190 シリアルインタフェースドライバは,システムコンフィギュレーションファイ 1191 ルでserial.cfgをインクルードすることで,システムに組み込むことができる. 1192 シリアルインタフェースドライバを呼び出すソースファイルでは,serial.hを 1193 インクルードする. 1194 1195 シリアルインタフェースドライバは,ポート毎にセマフォを2個ずつ使用する. 1196 セマフォを生成する静的APIは,serial.cfgに含まれている. 1197 1198 8.2.1 シリアルインタフェースドライバのサービスコール 1199 1200 シリアルインタフェースドライバを呼び出すサービスコールの仕様は次の通り 1201 である.この中で,シリアルポートのID番号(portid)の解釈はターゲット依 1202 存となる. 1203 1204 これらのサービスコールは,非タスクコンテキストから呼び出すことはできな 1205 い.また,serial_rea_datとserial_wri_datは,ディスパッチ保留状態で呼び 1206 出すことはできない.いずれも,呼び出した場合にはE_CTXエラーとなる. 1398 1207 1399 1208 (1) ER serial_opn_por(ID portid) 1400 1209 1401 portidã§æå®ãããã·ãªã¢ã«ãã¼ãããªã¼ãã³ãï¼åä¿¡ï¼éä¿¡ãå¯è½ãªç¶æ 1402 ã« 1403 ããï¼ 1210 portidで指定されたシリアルポートをオープンし,受信/送信が可能な状態に 1211 する. 1404 1212 1405 1213 (2) ER serial_cls_por(ID portid) 1406 1214 1407 portid ã§æå®ãããã·ãªã¢ã«ãã¼ããã¯ãã¼ãºããï¼1215 portidで指定されたシリアルポートをクローズする. 1408 1216 1409 1217 (3) ER_UINT serial_rea_dat(ID portid, char *buf, uint_t len) 1410 1218 1411 portidã§æå®ãããã·ãªã¢ã«ãã¼ãããï¼lenãã¤ãã®æååãåä¿¡ãï¼bufã 1412 ãã®é åã«å 1413 ¥ããï¼lenãã¤ãåä¿¡ããã¾ã§ï¼å¾ 1414 ã¡ç¶æ 1415 ã¨ãªãï¼åä¿¡ããæåæ° 1416 ã¾ãã¯ã¨ã©ã¼ã³ã¼ããè¿ãï¼ 1219 portidで指定されたシリアルポートから,lenバイトの文字列を受信し,bufか 1220 らの領域に入れる.lenバイト受信するまで,待ち状態となる.受信した文字数 1221 またはエラーコードを返す. 1417 1222 1418 1223 (4) ER_UINT serial_wri_dat(ID portid, const char *buf, uint_t len) 1419 1224 1420 portidã§æå®ãããã·ãªã¢ã«ãã¼ãã«ï¼bufããã®lenãã¤ãã®æååãéä¿¡ã 1421 ãï¼lenãã¤ãéä¿¡ãããã¡ã«å 1422 ¥ããã¾ã§ï¼å¾ 1423 ã¡ç¶æ 1424 ã¨ãªãï¼éä¿¡ããæåæ°ã¾ 1425 ãã¯ã¨ã©ã¼ã³ã¼ããè¿ãï¼ 1225 portidで指定されたシリアルポートに,bufからのlenバイトの文字列を送信す 1226 る.lenバイト送信バッファに入れるまで,待ち状態となる.送信した文字数ま 1227 たはエラーコードを返す. 1426 1228 1427 1229 (5) ER serial_ctl_por(ID portid, uint_t ioctl) 1428 1230 1429 portidã§æå®ãããã·ãªã¢ã«ãã¼ãã®å¶å¾¡æ 1430 å ±ãï¼ioctlã§ç¤ºãããå¤ã«è¨å®ã 1431 ãï¼ 1432 1433 ioctlã«ã¯ï¼ä»¥ä¸ã®å¶å¾¡æ 1434 å ±ã表ãå®æ°ãï¼ãããæ¯ã«è«çåãã¨ã£ããã®ã 1435 æå®ããï¼ 1436 1437 IOCTL_ECHOï¼ã¨ã³ã¼ããã¯ã¢ã¼ãï¼ 1438 ãã®ããããè¨å®ããã¨ï¼ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ããã¨ã³ã¼ 1439 ããã¯ãè¡ãï¼å 1440 ·ä½çã«ã¯ï¼ãããã¡ããæåãåãåºã度ã«ï¼ãã® 1441 æåãæ¸ãåºãï¼ 1442 1443 IOCTL_CRLFï¼æ¹è¡ã¢ã¼ãï¼ 1444 LFï¼line feedï¼ãæ¸ãåºãã¨ï¼CRï¼carriage returnï¼ï¼LFã«å¤æã 1445 ã¦æ¸ãåºãï¼ 1446 1447 IOCTL_FCSNDï¼éä¿¡ããã¼å¶å¾¡ï¼ 1448 æåãéä¿¡ããå¦çã«å¯¾ãã¦ï¼XON/XOFFã«ããããã¼å¶å¾¡ãè¡ãï¼ 1449 ããªãã¡ï¼STOPï¼ã³ã³ããã¼ã«-Sï¼ãåä¿¡ããã¨éä¿¡ãåæ¢ãï¼ 1450 STARTï¼ã³ã³ããã¼ã«-Qï¼ãåä¿¡ããã¨éä¿¡ãåéããï¼ 1451 1452 IOCTL_FCANYï¼éä¿¡ããã¼å¶å¾¡ã§ä»»æã®æåã§éä¿¡åéï¼ 1453 IOCTL_FCSNDãæå®ãã¦ããæã«ï¼éä¿¡åæ¢ä¸ã«åä¿¡ããä»»æã®æå 1454 ã§éä¿¡ãåéããï¼ 1455 1456 IOCTL_FCRCVï¼åä¿¡ããã¼å¶å¾¡ï¼ 1457 æåãåä¿¡ããå¦çã«å¯¾ãã¦ï¼XON/XOFFã«ããããã¼å¶å¾¡ãè¡ãï¼ 1458 ããªãã¡ï¼åä¿¡ãããã¡ã®æ®ãé åãå°ãªããªãã¨STOPï¼ã³ã³ããã¼ 1459 ã«-Sï¼ãéåºãï¼æ®ãé åãå¢ããã°STARTï¼ã³ã³ããã¼ã«-Qï¼ãé 1460 åºããï¼ 1461 1462 ãªãï¼ãªã¼ãã³ç´å¾ã®ããã©ã«ãã®è¨å®å¤ã¯(IOCTL_ECHO | IOCTL_CRLF | 1463 IOCTL_FCSND | IOCTL_FCRCV)ã§ããï¼ 1231 portidで指定されたシリアルポートの制御情報を,ioctlで示される値に設定す 1232 る. 1233 1234 ioctlには,以下の制御情報を表す定数を,ビット毎に論理和をとったものを 1235 指定する. 1236 1237 IOCTL_ECHO(エコーバックモード) 1238 このビットを設定すると,シリアルインタフェースドライバがエコー 1239 バックを行う.具体的には,バッファから文字を取り出す度に,その 1240 文字を書き出す. 1241 1242 IOCTL_CRLF(改行モード) 1243 LF(line feed)を書き出すと,CR(carriage return)+LFに変換し 1244 て書き出す. 1245 1246 IOCTL_FCSND(送信フロー制御) 1247 文字を送信する処理に対して,XON/XOFFによるフロー制御を行う. 1248 すなわち,STOP(コントロール-S)を受信すると送信を停止し, 1249 START(コントロール-Q)を受信すると送信を再開する. 1250 1251 IOCTL_FCANY(送信フロー制御で任意の文字で送信再開) 1252 IOCTL_FCSNDを指定している時に,送信停止中に受信した任意の文字 1253 で送信を再開する. 1254 1255 IOCTL_FCRCV(受信フロー制御) 1256 文字を受信する処理に対して,XON/XOFFによるフロー制御を行う. 1257 すなわち,受信バッファの残り領域が少なくなるとSTOP(コントロー 1258 ル-S)を送出し,残り領域が増えればSTART(コントロール-Q)を送 1259 出する. 1260 1261 なお,オープン直後のデフォルトの設定値は(IOCTL_ECHO | IOCTL_CRLF | 1262 IOCTL_FCSND | IOCTL_FCRCV)である. 1464 1263 1465 1264 (6) ER serial_ref_por(ID portid, T_SERIAL_RPOR *pk_rpor) 1466 1265 1467 portidã§æå®ãããã·ãªã¢ã«ãã¼ãã®ç¶æ 1468 ãåç 1469 §ãï¼pk_rporã§æå®ããããã±ã 1470 ãã«è¿ãï¼ãã±ããä¸ã®reacntã«ã¯åä¿¡ãããã¡ä¸ã®æåæ°ãï¼wricntã«ã¯é 1471 ä¿¡ãããã¡ä¸ã®æåæ°ãè¿ãï¼ 1472 1473 8.2.2 ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ãã®ãã®ä»ã®ãµã¼ãã¹ 1474 1475 ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ãã¯ï¼åè¨ã®ãµã¼ãã¹ã³ã¼ã«ã«å ãã¦ï¼åæå 1476 å¦çã¨æªéä¿¡æåã®ååºãå¦çãæã¤ï¼åæåå¦çã¯ï¼ã«ã¼ãã«ã«åæåã«ã¼ 1477 ãã³ã¨ãã¦ç»é²ããï¼ã¾ãï¼ã¿ã¼ã²ããä¾åã§ï¼åæåå¦çï¼çµäºå¦çï¼å²è¾¼ 1478 ã¿ãµã¼ãã¹ã«ã¼ãã³ãæã¤ï¼ãããã®ç»é²å¦çã¯serial.cfgã«å«ã¾ããï¼ 1266 portidで指定されたシリアルポートの状態を参照し,pk_rporで指定されるパケッ 1267 トに返す.パケット中のreacntには受信バッファ中の文字数を,wricntには送 1268 信バッファ中の文字数を返す. 1269 1270 8.2.2 シリアルインタフェースドライバのその他のサービス 1271 1272 シリアルインタフェースドライバは,前記のサービスコールに加えて,初期化 1273 処理と未送信文字の取出し処理を持つ.初期化処理は,カーネルに初期化ルー 1274 チンとして登録する.また,ターゲット依存で,初期化処理,終了処理,割込 1275 みサービスルーチンを持つ.これらの登録処理はserial.cfgに含まれる. 1479 1276 1480 1277 (1) void serial_initialize(intptr_t exinf) 1481 1278 1482 ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ããåæåããï¼ã«ã¼ãã«ã«åæåã«ã¼ãã³ã¨ 1483 ãã¦ç»é²ããï¼exinfã¯ç¡è¦ããï¼ 1279 シリアルインタフェースドライバを初期化する.カーネルに初期化ルーチンと 1280 して登録する.exinfは無視する. 1484 1281 1485 1282 (2) bool_t serial_get_chr(ID portid, char *p_c) 1486 1283 1487 portidã§æå®ãããã·ãªã¢ã«ãã¼ãã®éä¿¡ãããã¡ä¸ã®æåãï¼p_cã®æãçªå° 1488 ã«åãåºãï¼trueãè¿ãé¢æ°ï¼æåããªãã£ãæã«ã¯ï¼falseãè¿ãï¼çµäºå¦ç 1489 ã«ã¼ãã³ä¸ã§å¼ã³åºããã¨ãæ³å®ãã¦ããï¼ 1490 1491 8.3 ã·ã¹ãã ãã°ã¿ã¹ã¯ 1492 1493 ã·ã¹ãã ãã°ã¿ã¹ã¯ã¯ï¼ã·ã¹ãã ãã°æ©è½ãããã°æ 1494 å ±ãåãåºãï¼ãããã· 1495 ã¹ãã ã®å¤é¨ã«åºåããããã®ãµã¼ãã¹ã§ããï¼ 1496 1497 ASPã«ã¼ãã«ã®ãªãªã¼ã¹ããã±ã¼ã¸ã«å«ã¾ããã·ã¹ãã ãã°ã¿ã¹ã¯ã¯ï¼ã·ãªã¢ã« 1498 ãã¼ãã«ãã°æ 1499 å ±ãæååã®å½¢ã§åºåãããã®ã§ï¼ã·ã¹ãã ãã°ã¿ã¹ã¯ã®ä¸ä¾ 1500 ã¨ããä½ç½®ä»ãã§æä¾ãã¦ããï¼ 1501 1502 ãã®ã·ã¹ãã ãã°ã¿ã¹ã¯ã¯ï¼ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã§ 1503 logtask.cfgãã¤ã³ã¯ã«ã¼ããããã¨ã§ï¼ã·ã¹ãã ã«çµã¿è¾¼ããã¨ãã§ããï¼ã· 1504 ã¹ãã ãã°ã¿ã¹ã¯ã®ãµã¼ãã¹ãå¼ã³åºãã½ã¼ã¹ãã¡ã¤ã«ã§ã¯ï¼logtask.hãã¤ã³ 1505 ã¯ã«ã¼ãããï¼ 1506 1507 ã·ã¹ãã ãã°ã¿ã¹ã¯ãå®è¡éå§ãããã¨ï¼éè¦åº¦ãLOG_EMERGã®ãã°æ 1508 å ±ãä½ã¬ 1509 ãã«åºåæ©è½ãç¨ãã¦åºåãï¼éè¦åº¦ãLOG_NOTICEãããããé«ããã°æ 1510 å ±ã 1511 ãã°ãããã¡ã«è¨é²ããããã«ï¼ã·ã¹ãã ãã°æ©è½ã®è¨å®ãå¤æ´ãããï¼ 1512 1513 8.3.1 ã·ã¹ãã ãã°ã¿ã¹ã¯ã®ãµã¼ãã¹ã³ã¼ã« 1514 1515 ã·ã¹ãã ãã°ã¿ã¹ã¯ã®ãµã¼ãã¹ãå¼ã³åºããµã¼ãã¹ã³ã¼ã«ã®ä»æ§ã¯æ¬¡ã®éã㧠1516 ããï¼ 1284 portidで指定されたシリアルポートの送信バッファ中の文字を,p_cの指す番地 1285 に取り出し,trueを返す関数.文字がなかった時には,falseを返す.終了処理 1286 ルーチン中で呼び出すことを想定している. 1287 1288 8.3 システムログタスク 1289 1290 システムログタスクは,システムログ機能からログ情報を取り出し,それをシ 1291 ステムの外部に出力するためのサービスである. 1292 1293 ASPカーネルのリリースパッケージに含まれるシステムログタスクは,シリアル 1294 ポートにログ情報を文字列の形で出力するもので,システムログタスクの一例 1295 という位置付けで提供している. 1296 1297 このシステムログタスクは,システムコンフィギュレーションファイルで 1298 logtask.cfgをインクルードすることで,システムに組み込むことができる.シ 1299 ステムログタスクのサービスを呼び出すソースファイルでは,logtask.hをイン 1300 クルードする. 1301 1302 システムログタスクが実行開始されると,重要度がLOG_EMERGのログ情報を低レ 1303 ベル出力機能を用いて出力し,重要度がLOG_NOTICEかそれより高いログ情報を 1304 ログバッファに記録するように,システムログ機能の設定が変更される. 1305 1306 8.3.1 システムログタスクのサービスコール 1307 1308 システムログタスクのサービスを呼び出すサービスコールの仕様は次の通りで 1309 ある. 1517 1310 1518 1311 (1) ER logtask_flush(uint_t count) 1519 1312 1520 ã·ã¹ãã ãã°æ©è½ã®ãã°ãããã¡ä¸ã®ãã°æ 1521 å ±ã®æ°ãcount以ä¸ã«ãªãã¾ã§å¾ 1522 ã¤ï¼ 1523 countã0ã®å ´åã«ã¯ï¼ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ãã®éä¿¡ãããã¡ã空㫠1524 ãªãã®ãå¾ 1525 ã¤ï¼ 1526 1527 8.3.2 ã·ã¹ãã ãã°ã¿ã¹ã¯ã®ãã®ä»ã®ãµã¼ãã¹ 1528 1529 ã·ã¹ãã ãã°ã¿ã¹ã¯ã¯ï¼åè¨ã®ãµã¼ãã¹ã³ã¼ã«ã«å ãã¦ï¼ã¡ã¤ã³å¦çã¨çµäºå¦ 1530 çãæã¤ï¼ã¡ã¤ã³å¦çã¯ã¿ã¹ã¯ã¨ãã¦ï¼çµäºå¦çã¯çµäºå¦çã«ã¼ãã³ã¨ãã¦ç» 1531 é²ããï¼ãããã®ç»é²å¦çã¯logtask.cfgã«å«ã¾ããï¼ 1313 システムログ機能のログバッファ中のログ情報の数がcount以下になるまで待つ. 1314 countが0の場合には,シリアルインタフェースドライバの送信バッファが空に 1315 なるのも待つ. 1316 1317 8.3.2 システムログタスクのその他のサービス 1318 1319 システムログタスクは,前記のサービスコールに加えて,メイン処理と終了処 1320 理を持つ.メイン処理はタスクとして,終了処理は終了処理ルーチンとして登 1321 録する.これらの登録処理はlogtask.cfgに含まれる. 1532 1322 1533 1323 (1) void logtask_main(intptr_t exinf) 1534 1324 1535 ã·ã¹ãã ãã°ã¿ã¹ã¯ã®ã¡ã¤ã³å¦çï¼exinfã«ã¯ï¼ãã°æ 1536 å ±ãåºåããã·ãªã¢ã«ãã¼ 1537 ãã®IDçªå·ã渡ãï¼ 1325 システムログタスクのメイン処理.exinfには,ログ情報を出力するシリアルポー 1326 トのID番号を渡す. 1538 1327 1539 1328 (2) void logtask_terminate(intptr_t exinf) 1540 1329 1541 ã·ã¹ãã ãã°ã¿ã¹ã¯ã®çµäºå¦çï¼ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ãã®éä¿¡ãã 1542 ãã¡ã«èç©ããããã¼ã¿ã¨ï¼ãã°ãããã¡ã«è¨é²ããããã°æ 1543 å ±ãï¼ä½ã¬ãã« 1544 åºåæ©è½ãç¨ãã¦åºåããï¼åºåãã¹ããã°æ 1545 å ±ãããå ´åã«ã¯ï¼ãããåºå 1546 ããåã«ï¼"-- buffered messages --"ã¨ããæååãåºåããï¼exinfã¯ç¡è¦ 1547 ããï¼ 1548 1549 ãã®é¢æ°ãçµäºå¦çã«ã¼ãã³ã¨ãã¦ç»é²ãããã¨ã§ï¼ã«ã¼ãã«çµäºæç¹ã§æªåº 1550 åã®ãã°æ 1551 å ±ã®ã»ã¨ãã©ãåºåãããã¨ãã§ããï¼ãã ãï¼æªåºåã®ãã°æ 1552 å ± 1553 ã®å 1554 ï¼ã·ã¹ãã ãã°ã¿ã¹ã¯ã®ã¡ã¤ã³å¦çãï¼ãã°ãããã¡ããåãåºãããï¼ 1555 ã¾ã ã·ãªã¢ã«ã¤ã³ã¿ãã§ã¼ã¹ãã©ã¤ãã«éä¿¡ãã¦ããªãæ 1556 å ±ã¯ï¼ãã®é¢æ°ã§ã¯ 1557 åºåã§ããªãï¼ 1558 1559 8.4 ã«ã¼ãã«èµ·åã¡ãã»ã¼ã¸ã®åºå 1560 1561 ã«ã¼ãã«èµ·åã¡ãã»ã¼ã¸ã®åºåã¯ï¼ã«ã¼ãã«ã®èµ·åæã«ï¼ã«ã¼ãã«ã®å称ããã¼ 1562 ã¸ã§ã³çªå·ï¼èä½æ¨©è¡¨ç¤ºãªã©ãåºåããããã®æ©è½ã§ããï¼ 1563 1564 ã«ã¼ãã«èµ·åã¡ãã»ã¼ã¸ã®åºåã¯ï¼ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã« 1565 ã§banner.cfgãã¤ã³ã¯ã«ã¼ããããã¨ã§ï¼ã·ã¹ãã ã«çµã¿è¾¼ããã¨ãã§ããï¼ 1566 1567 ã«ã¼ãã«èµ·åã¡ãã»ã¼ã¸ã®åºåã¯ï¼æ¬¡ã®é¢æ°ã§æ§æãããï¼ 1330 システムログタスクの終了処理.シリアルインタフェースドライバの送信バッ 1331 ファに蓄積されたデータと,ログバッファに記録されたログ情報を,低レベル 1332 出力機能を用いて出力する.出力すべきログ情報がある場合には,それを出力 1333 する前に,"-- buffered messages --"という文字列を出力する.exinfは無視 1334 する. 1335 1336 この関数を終了処理ルーチンとして登録することで,カーネル終了時点で未出 1337 力のログ情報のほとんどを出力することができる.ただし,未出力のログ情報 1338 の内,システムログタスクのメイン処理が,ログバッファから取り出したが, 1339 まだシリアルインタフェースドライバに送信していない情報は,この関数では 1340 出力できない. 1341 1342 8.4 カーネル起動メッセージの出力 1343 1344 カーネル起動メッセージの出力は,カーネルの起動時に,カーネルの名称やバー 1345 ジョン番号,著作権表示などを出力するための機能である. 1346 1347 カーネル起動メッセージの出力は,システムコンフィギュレーションファイル 1348 でbanner.cfgをインクルードすることで,システムに組み込むことができる. 1349 1350 カーネル起動メッセージの出力は,次の関数で構成される. 1568 1351 1569 1352 (1) void print_banner(intptr_t exinf) 1570 1353 1571 ã·ã¹ãã ãã°æ©è½ãç¨ãã¦ï¼ã«ã¼ãã«èµ·åã¡ãã»ã¼ã¸ãåºåããï¼banner.cfg 1572 ã«ãã£ã¦ï¼ã«ã¼ãã«ã«åæåã«ã¼ãã³ã¨ãã¦ç»é²ãããï¼exinfã¯ç¡è¦ãããï¼ 1573 1574 1575 ï¼ï¼ãµãã¼ãã©ã¤ãã©ãª 1576 1577 ãµãã¼ãã©ã¤ãã©ãªã¯ï¼ã¢ããªã±ã¼ã·ã§ã³ãã·ã¹ãã ãµã¼ãã¹ãä½æãããã 1578 ã«å©ç¨ã§ããã©ã¤ãã©ãªé¢æ°ç¾¤ã§ããï¼ 1579 1580 9.1 åºæ¬çãªã©ã¤ãã©ãªé¢æ° 1581 1582 åºæ¬çãªã©ã¤ãã©ãªé¢æ°ãç¨ããå ´åã«ã¯ï¼t_stdlib.hãã¤ã³ã¯ã«ã¼ããï¼å¿ 1583 1584 è¦ã«å¿ãã¦strerror.cã¨t_perror.cãã³ã³ãã¤ã«ã»ãªã³ã¯ããï¼ 1354 システムログ機能を用いて,カーネル起動メッセージを出力する.banner.cfg 1355 によって,カーネルに初期化ルーチンとして登録される.exinfは無視される. 1356 1357 1358 9.サポートライブラリ 1359 1360 サポートライブラリは,アプリケーションやシステムサービスを作成するため 1361 に利用できるライブラリ関数群である. 1362 1363 9.1 基本的なライブラリ関数 1364 1365 基本的なライブラリ関数を用いる場合には,t_stdlib.hをインクルードし,必 1366 要に応じてstrerror.cとt_perror.cをコンパイル・リンクする. 1585 1367 1586 1368 (1) const char *itron_strerror(ER ercd) 1587 1369 1588 ercd ã§ç¤ºãããã¨ã©ã¼ã³ã¼ãã«å¯¾å¿ããã¡ã¤ã³ã¨ã©ã¼ã³ã¼ãã®æååãè¿ãï¼1370 ercdで示されるエラーコードに対応するメインエラーコードの文字列を返す. 1589 1371 1590 1372 (2) void t_perror(uint_t prio, const char *file, int_t line, 1591 1373 const char *expr, ER ercd); 1592 1374 1593 ãµã¼ãã¹ã³ã¼ã«ãã¨ã©ã¼ãè¿ããå ´åã«ç¨ãããã¨ãæ³å®ããé¢æ°ã§ï¼ãã¡ã¤ 1594 ã«åï¼è¡çªå·ï¼ã¡ã¤ã³ã¨ã©ã¼ã³ã¼ãçãï¼éè¦åº¦prioã§ï¼ã·ã¹ãã ãã°æ©è½ã 1595 ç¨ãã¦åºåããï¼ 1596 1597 9.2 ãã¥ã¼æä½ã©ã¤ãã©ãªé¢æ° 1598 1599 ãã¥ã¼æä½ã©ã¤ãã©ãªã¯ï¼ãã¥ã¼ããããå«ããªã³ã°æ§é ã®ããã«ãªã³ã¯ãã¥ã¼ 1600 ãæ±ãã©ã¤ãã©ãªã§ããï¼ãã¥ã¼ãããã®æ¬¡ã¨ã³ããªã¯ãã¥ã¼ã®å 1601 é ã®ã¨ã³ã 1602 ãªï¼åã¨ã³ããªã¯ãã¥ã¼ã®æ«å°¾ã®ã¨ã³ããªã¨ããï¼ã¾ãï¼ãã¥ã¼ã®å 1603 é ã®ã¨ã³ 1604 ããªã®åã¨ã³ããªã¨ï¼ãã¥ã¼ã®æ«å°¾ã®ã¨ã³ããªã®æ¬¡ã¨ã³ããªã¯ï¼ãã¥ã¼ããã 1605 ã¨ããï¼ç©ºã®ãã¥ã¼ã¯ï¼æ¬¡ã¨ã³ããªï¼åã¨ã³ããªã¨ãèªåèªèº«ãæããã¥ã¼ãã 1606 ãã§ããããï¼ 1607 1608 ãã¥ã¼æä½ã©ã¤ãã©ãªé¢æ°ãç¨ããå ´åã«ã¯ï¼queue.hãã¤ã³ã¯ã«ã¼ãããï¼ 1609 1610 ãã¥ã¼ãããã¨ã¨ã³ããªã®ããã®ãã¼ã¿æ§é ã¨ãã¦ï¼QUEUEæ§é ä½ãç¨ããï¼ 1611 QUEUEæ§é ä½ã®å®ç¾©ã¯æ¬¡ã®éãï¼ 1375 サービスコールがエラーを返した場合に用いることを想定した関数で,ファイ 1376 ル名,行番号,メインエラーコード等を,重要度prioで,システムログ機能を 1377 用いて出力する. 1378 1379 9.2 キュー操作ライブラリ関数 1380 1381 キュー操作ライブラリは,キューヘッダを含むリング構造のダブルリンクキュー 1382 を扱うライブラリである.キューヘッダの次エントリはキューの先頭のエント 1383 リ,前エントリはキューの末尾のエントリとする.また,キューの先頭のエン 1384 トリの前エントリと,キューの末尾のエントリの次エントリは,キューヘッダ 1385 とする.空のキューは,次エントリ,前エントリとも自分自身を指すキューヘッ 1386 ダであらわす. 1387 1388 キュー操作ライブラリ関数を用いる場合には,queue.hをインクルードする. 1389 1390 キューヘッダとエントリのためのデータ構造として,QUEUE構造体を用いる. 1391 QUEUE構造体の定義は次の通り. 1612 1392 1613 1393 typedef struct queue { 1614 struct queue *p_next; /* 次ã¨ã³ããªã¸ã®ãã¤ã³ã¿*/1615 struct queue *p_prev; /* åã¨ã³ããªã¸ã®ãã¤ã³ã¿*/1394 struct queue *p_next; /* 次エントリへのポインタ */ 1395 struct queue *p_prev; /* 前エントリへのポインタ */ 1616 1396 } QUEUE; 1617 1397 1618 ãã¥ã¼æä½ã®ããã«ç¨æãã¦ããé¢æ°ã¯æ¬¡ã®éãï¼ 1398 キュー操作のために用意している関数は次の通り. 1619 1399 1620 1400 (1) void queue_initialize(QUEUE *p_queue); 1621 1401 1622 ãã¥ã¼ãåæåããï¼p_queueã«ã¯ãã¥ã¼ããããæå®ããï¼ 1402 キューを初期化する.p_queueにはキューヘッダを指定する. 1623 1403 1624 1404 (2) void queue_insert_prev(QUEUE *p_queue, QUEUE *p_entry); 1625 1405 1626 p_queueã§æå®ããã¨ã³ããªã®åã«ï¼p_entryã§æå®ããã¨ã³ããªãæ¿å 1627 ¥ããï¼ 1628 p_queueã«ãã¥ã¼ããããæå®ããå ´åã«ã¯ï¼ãã¥ã¼ã®æ«å°¾ã«p_entryã§æå®ã 1629 ãã¨ã³ããªãæ¿å 1630 ¥ãããã¨ã«ãªãï¼ 1406 p_queueで指定するエントリの前に,p_entryで指定するエントリを挿入する. 1407 p_queueにキューヘッダを指定した場合には,キューの末尾にp_entryで指定す 1408 るエントリを挿入することになる. 1631 1409 1632 1410 (3) void queue_insert_next(QUEUE *p_queue, QUEUE *p_entry); 1633 1411 1634 p_queueã§æå®ããã¨ã³ããªã®æ¬¡ã«ï¼p_entryã§æå®ããã¨ã³ããªãæ¿å 1635 ¥ããï¼ 1636 p_queueã«ãã¥ã¼ããããæå®ããå ´åã«ã¯ï¼ãã¥ã¼ã®å 1637 é ã«p_entryã§æå®ã 1638 ãã¨ã³ããªãæ¿å 1639 ¥ãããã¨ã«ãªãï¼ 1412 p_queueで指定するエントリの次に,p_entryで指定するエントリを挿入する. 1413 p_queueにキューヘッダを指定した場合には,キューの先頭にp_entryで指定す 1414 るエントリを挿入することになる. 1640 1415 1641 1416 (4) void queue_delete(QUEUE *p_entry); 1642 1417 1643 p_entry ã§æå®ããã¨ã³ããªãï¼ãã¥ã¼ããåé¤ããï¼1418 p_entryで指定するエントリを,キューから削除する. 1644 1419 1645 1420 (5) QUEUE *queue_delete_next(QUEUE *p_queue); 1646 1421 1647 p_queueã§æå®ããã¨ã³ããªã®æ¬¡ã®ã¨ã³ããªããã¥ã¼ããåé¤ãï¼åé¤ããã¨ã³ 1648 ããªãè¿ãï¼p_queueã«ãã¥ã¼ããããæå®ããå ´åã«ã¯ï¼ãã¥ã¼ã®å 1649 é ã®ã¨ã³ 1650 ããªãåãåºããã¨ã«ãªãï¼p_queueã«ç©ºã®ãã¥ã¼ãæå®ãã¦å¼ã³åºãã¦ã¯ãªã 1651 ãªãï¼ 1422 p_queueで指定するエントリの次のエントリをキューから削除し,削除したエン 1423 トリを返す.p_queueにキューヘッダを指定した場合には,キューの先頭のエン 1424 トリを取り出すことになる.p_queueに空のキューを指定して呼び出してはなら 1425 ない. 1652 1426 1653 1427 (6) bool_t queue_empty(QUEUE *p_queue); 1654 1428 1655 ãã¥ã¼ã空ã®å ´åã«ã¯trueï¼ããã§ãªãå ´åã«ã¯falseãè¿ãï¼p_queueã«ã¯ 1656 ãã¥ã¼ããããæå®ããï¼ 1657 1658 9.3 ã·ã¹ãã ãã°åºåç¨ã©ã¤ãã©ãªé¢æ° 1659 1660 ã·ã¹ãã ãã°åºåç¨ã©ã¤ãã©ãªé¢æ°ã¯ï¼ãã°æ 1661 å ±ããã©ã¼ãããåºåãããã 1662 ã«ï¼ã·ã¹ãã ãã°ã¿ã¹ã¯ããã³ã·ã¹ãã ãã°æ©è½ã§ç¨ããããã®é¢æ°ç¾¤ã§ããï¼ 1663 1664 ã·ã¹ãã ãã°åºåç¨ã©ã¤ãã©ãªé¢æ°ãç¨ããå ´åã«ã¯ï¼log_output.hãã¤ã³ã¯ 1665 ã«ã¼ããï¼log_output.cãã³ã³ãã¤ã«ã»ãªã³ã¯ããï¼ 1429 キューが空の場合にはtrue,そうでない場合にはfalseを返す.p_queueには 1430 キューヘッダを指定する. 1431 1432 9.3 システムログ出力用ライブラリ関数 1433 1434 システムログ出力用ライブラリ関数は,ログ情報をフォーマット出力するため 1435 に,システムログタスクおよびシステムログ機能で用いるための関数群である. 1436 1437 システムログ出力用ライブラリ関数を用いる場合には,log_output.hをインク 1438 ルードし,log_output.cをコンパイル・リンクする. 1666 1439 1667 1440 (1) void syslog_printf(const char *format, const intptr_t *p_args, 1668 1441 void (*putc)(char)) 1669 1442 1670 format ã§æå®ããããã©ã¼ãããè¨è¿°ã¨p_argsã§æå®ãããå¼æ°åããä½æã1671 ãã¡ãã»ã¼ã¸ãï¼1æååºåé¢æ°putcãç¨ãã¦åºåããï¼ 1443 formatで指定されるフォーマット記述とp_argsで指定される引数列から作成し 1444 たメッセージを,1文字出力関数putcを用いて出力する. 1672 1445 1673 1446 (2) void syslog_print(const SYSLOG *p_syslog, void (*putc)(char)) 1674 1447 1675 p_syslogã§æå®ããããã°æ 1676 å ±ãæååã«ç´ãï¼1æååºåé¢æ°putcãç¨ãã¦åº 1677 åããï¼ 1448 p_syslogで指定されるログ情報を文字列に直し,1文字出力関数putcを用いて出 1449 力する. 1678 1450 1679 1451 (3) void syslog_lostmsg(uint_t lost, void (*putc)(char)) 1680 1452 1681 loståã®ãã°æ 1682 å ±ã失ãããæ¨ã®ã¡ãã»ã¼ã¸ãï¼1æååºåé¢æ°putcãç¨ãã¦åº 1683 åããï¼ 1684 1685 9.4 å®è¡æéåå¸éè¨ã¢ã¸ã¥ã¼ã« 1686 1687 å®è¡æéåå¸éè¨ã¢ã¸ã¥ã¼ã«ã¯ï¼ã·ã¹ãã ã®ãªã¢ã«ã¿ã¤ã æ§è½ãè©ä¾¡ãããã 1688 ã«ï¼ããã°ã©ã åºéã®å®è¡æéãè¨æ¸¬ãï¼ãã®åå¸ãéè¨ã»è¡¨ç¤ºããããã®ã© 1689 ã¤ãã©ãªé¢æ°ç¾¤ã§ããï¼ 1690 1691 å®è¡æéåå¸éè¨ã¢ã¸ã¥ã¼ã«ãç¨ããå ´åã«ã¯ï¼histogram.hãã¤ã³ã¯ã«ã¼ããï¼ 1692 histogram.cãã³ã³ãã¤ã«ã»ãªã³ã¯ããï¼ 1693 1694 å®è¡æéåå¸éè¨ã¢ã¸ã¥ã¼ã«ã¯ï¼è¤æ°ã®ããã°ã©ã åºéã®å®è¡æéãè¨æ¸¬ã»é 1695 è¨ã»è¡¨ç¤ºãããã¨ãã§ããï¼ããã°ã©ã åºéæ¯ã«ï¼å®è¡æéåå¸ãè¨é²ããã 1696 ãã®ãã¼ã¿æ§é ãæã¤ï¼ã©ã®ãã¼ã¿æ§é ãç¨ããããï¼IDçªå·ï¼histidï¼ã§æ 1697 å®ããï¼ä½¿ç¨ã§ãããã¼ã¿æ§é ã®æ°ã¯ï¼TNUM_HISTã§å®ç¾©ãããï¼ããªãã¡ï¼ 1698 IDçªå·ã¨ãã¦ï¼1ï½TNUM_HISTãæå®ãããã¨ãã§ããï¼TNUM_HISTã¯ï¼ããã©ã« 1699 ãå¤ãhistgram.cã®ä¸ã§å®ç¾©ããã¦ããï¼ã³ã³ãã¤ã«ãªãã·ã§ã³ãã¿ã¼ã²ãã 1700 ä¾åé¨ï¼target_test.hã¾ãã¯ããããã¤ã³ã¯ã«ã¼ãããããã¡ã¤ã«ï¼ã«ããå¤ 1701 æ´ãããã¨ãã§ããï¼ 1702 1703 ã¿ã¼ã²ããä¾åé¨ã§è¨å®ãå¤æ´ãã¦ããªãå ´åï¼å®è¡æéåå¸éè¨ã¢ã¸ã¥ã¼ã« 1704 ã¯ï¼ã«ã¼ãã«ã®æ§è½è©ä¾¡ç¨ã·ã¹ãã æå»ãåç 1705 §ããæ©è½ï¼get_utmï¼ãç¨ãã¦å® 1706 è¡æéãè¨æ¸¬ããï¼ãã®ããï¼å®è¡æéã¯ãã¤ã¯ãç§åä½ã§è¨é²ãããï¼ç²¾åº¦ 1707 ã¯ã¿ã¼ã²ããä¾åï¼ï¼ã¾ãï¼è¨é²ãããæéã«ã¯ï¼è¨æ¸¬ã®ããã®ãªã¼ãããã 1708 ï¼get_utmã®å®è¡æéï¼Î±ï¼ãå«ã¾ããï¼ 1709 1710 ã¿ã¼ã²ããä¾åé¨ã§è¨å®ãå¤æ´ãã¦ããå ´åã®ä»æ§ã«ã¤ãã¦ã¯ï¼ã¿ã¼ã²ããä¾ 1711 åé¨ã®ã¦ã¼ã¶ã¼ãºããã¥ã¢ã«ãåç 1712 §ãããã¨ï¼ 1453 lost個のログ情報が失われた旨のメッセージを,1文字出力関数putcを用いて出 1454 力する. 1455 1456 9.4 実行時間分布集計モジュール 1457 1458 実行時間分布集計モジュールは,システムのリアルタイム性能を評価するため 1459 に,プログラム区間の実行時間を計測し,その分布を集計・表示するためのラ 1460 イブラリ関数群である. 1461 1462 実行時間分布集計モジュールを用いる場合には,histogram.hをインクルードし, 1463 histogram.cをコンパイル・リンクする. 1464 1465 実行時間分布集計モジュールは,複数のプログラム区間の実行時間を計測・集 1466 計・表示することができる.プログラム区間毎に,実行時間分布を記録するた 1467 めのデータ構造を持つ.どのデータ構造を用いるかを,ID番号(histid)で指 1468 定する.使用できるデータ構造の数は,TNUM_HISTで定義される.すなわち, 1469 ID番号として,1~TNUM_HISTを指定することができる.TNUM_HISTは,デフォル 1470 ト値がhistgram.cの中で定義されており,コンパイルオプションやターゲット 1471 依存部(target_test.hまたはそこからインクルードされるファイル)により変 1472 更することができる. 1473 1474 ターゲット依存部で設定を変更していない場合,実行時間分布集計モジュール 1475 は,カーネルの性能評価用システム時刻を参照する機能(get_utm)を用いて実 1476 行時間を計測する.そのため,実行時間はマイクロ秒単位で記録される(精度 1477 はターゲット依存).また,記録される時間には,計測のためのオーバヘッド 1478 (get_utmの実行時間+α)が含まれる. 1479 1480 ターゲット依存部で設定を変更している場合の仕様については,ターゲット依 1481 存部のユーザーズマニュアルを参照すること. 1713 1482 1714 1483 (1) void init_hist(ID histid, uint_t maxval, uint_t histarea[]) 1715 1484 1716 histidã§æå®ããããã¼ã¿æ§é ãåæåããï¼maxvalã«ã¯è¨é²ããæ大æéãï¼ 1717 histareaã«ã¯è¨é²é åã®å 1718 é çªå°ãæå®ããï¼histareaã§å§ã¾ãè¨æ¶é åã¯ï¼ 1719 è¦ç´ æ°ãmaxvalã«æå®ããå¤+1ã®uint_tåã®é 1720 åã¨ãã¦ç¢ºä¿ããï¼ä¾ãã°ï¼ 1721 maxvalã«1000ãæå®ããå ´åã«ã¯ï¼histareaã«ã¯è¦ç´ æ°ã1001ã®uint_tåã®é 1722 1723 åã®å 1724 é çªå°ã渡ãï¼ 1485 histidで指定されたデータ構造を初期化する.maxvalには記録する最大時間を, 1486 histareaには記録領域の先頭番地を指定する.histareaで始まる記憶領域は, 1487 要素数がmaxvalに指定した値+1のuint_t型の配列として確保する.例えば, 1488 maxvalに1000を指定する場合には,histareaには要素数が1001のuint_t型の配 1489 列の先頭番地を渡す. 1725 1490 1726 1491 (2) void begin_measure(ID histid) 1727 1492 1728 å®è¡æéãè¨æ¸¬ããããã°ã©ã åºéã®ç´åã«å¼ã³åºãé¢æ°ï¼histidã§æå®ãã 1729 ããã¼ã¿æ§é ã«ï¼ç¾å¨ã®ã·ã¹ãã æå»ãè¨é²ããï¼ 1493 実行時間を計測するプログラム区間の直前に呼び出す関数.histidで指定され 1494 たデータ構造に,現在のシステム時刻を記録する. 1730 1495 1731 1496 (3) void end_measure(ID histid) 1732 1497 1733 å®è¡æéãè¨æ¸¬ããããã°ã©ã åºéã®ç´å¾ã«å¼ã³åºãé¢æ°ï¼ç¾å¨ã®ã·ã¹ãã æ 1734 å»ã¨ï¼histidã§æå®ããããã¼ã¿æ§é ã«è¨é²ãããéå§æå»ããï¼ããã°ã©ã 1735 åºéã®å®è¡æéãæ±ãï¼ãã®çµæãè¨é²ããï¼ 1498 実行時間を計測するプログラム区間の直後に呼び出す関数.現在のシステム時 1499 刻と,histidで指定されたデータ構造に記録された開始時刻から,プログラム 1500 区間の実行時間を求め,その結果を記録する. 1736 1501 1737 1502 (4) void print_hist(ID histid) 1738 1503 1739 ã·ã¹ãã ãã°æ©è½ãç¨ãã¦ï¼å®è¡æéåå¸ã®è¨æ¸¬çµæãåºåããï¼ 1740 1741 1742 ï¼ï¼ï¼ãã¹ãããã°ã©ã 1743 1744 ãã¹ãããã°ã©ã ã¯ï¼ã«ã¼ãã«ã®æ©è½ãã¹ãããã³æ§è½è©ä¾¡ãè¡ãããã®ãã 1745 ã°ã©ã 群ã§ããï¼ 1746 1747 10.1 ãã¹ãããã°ã©ã ç¨ã©ã¤ãã©ãª1748 1749 ãã¹ãããã°ã©ã ç¨ã©ã¤ãã©ãªã¯ï¼ããã°ã©ã ä¸ã®ãã§ãã¯ãã¤ã³ããæ£ãã 1750 é åºã§å®è¡ããããã¨ãªã©ï¼ããã°ã©ã ãæ£ããåä½ãã¦ãããã¨ããã§ã㯠1751 ããããã®é¢æ°ç¾¤ã§ããï¼ããã°ã©ã ãæ£ããåä½ãã¦ããªããã¨ãæ¤åºãã 1752 å ´åã«ã¯ï¼ããã°ã©ã ãçµäºãããï¼ 1753 1754 ãã¹ãããã°ã©ã ç¨ã©ã¤ãã©ãªé¢æ°ãç¨ããå ´åã«ã¯ï¼test_lib.hãã¤ã³ã¯ã«ã¼ 1755 ããï¼test_lib.cãã³ã³ãã¤ã«ã»ãªã³ã¯ããï¼ 1504 システムログ機能を用いて,実行時間分布の計測結果を出力する. 1505 1506 1507 10.テストプログラム 1508 1509 テストプログラムは,カーネルの機能テストおよび性能評価を行うためのプロ 1510 グラム群である. 1511 1512 10.1 テストプログラム用ライブラリ 1513 1514 テストプログラム用ライブラリは,プログラム中のチェックポイントが正しい 1515 順序で実行されたことなど,プログラムが正しく動作していることをチェック 1516 するための関数群である.プログラムが正しく動作していないことを検出した 1517 場合には,プログラムを終了させる. 1518 1519 テストプログラム用ライブラリ関数を用いる場合には,test_lib.hをインクルー 1520 ドし,test_lib.cをコンパイル・リンクする. 1756 1521 1757 1522 (1) void check_point(uint_t count) 1758 1523 1759 ãã§ãã¯ãã¤ã³ããééããéã«å¼ã³åºãé¢æ°ï¼countã«ã¯ï¼ä½çªç®ã®ãã§ã㯠1760 ãã¤ã³ãã§ããããæå®ããï¼æåã®ãã§ãã¯ãã¤ã³ãã§ã¯1ãæå®ããï¼ï¼ 1761 count ã®å¤ãï¼æåã®ãã§ãã¯ãã¤ã³ãã«ããã¦ã¯1ã§ãªãå ´åã«ï¼ãã以éã®1762 ãã§ãã¯ãã¤ã³ãã«ããã¦ã¯ï¼åã®ãã§ãã¯ãã¤ã³ãééæã«countã«æå®ãã 1763 å¤ã«1ãå ããå¤ã§ãªãå ´åã«ï¼ããã°ã©ã ãæ£ããåä½ãã¦ããªãã¨è¦ãªãï¼ 1764 ããã°ã©ã ãçµäºãããï¼ 1524 チェックポイントを通過する際に呼び出す関数.countには,何番目のチェック 1525 ポイントであるかを指定する(最初のチェックポイントでは1を指定する). 1526 countの値が,最初のチェックポイントにおいては1でない場合に,それ以降の 1527 チェックポイントにおいては,前のチェックポイント通過時にcountに指定した 1528 値に1を加えた値でない場合に,プログラムが正しく動作していないと見なし, 1529 プログラムを終了させる. 1765 1530 1766 1531 (2) void check_finish(uint_t count) 1767 1532 1768 æå¾ã®ãã§ãã¯ãã¤ã³ãã«å°éããéã«å¼ã³åºãé¢æ°ï¼countã«ã¯ï¼ä½çªç®ã® 1769 ãã§ãã¯ãã¤ã³ãã§ããããæå®ããï¼æåã®ãã§ãã¯ãã¤ã³ãã§ã¯1ãæå®ã 1770 ãï¼ï¼countã®å¤ãï¼åã®ãã§ãã¯ãã¤ã³ãééæã«countã«æå®ããå¤ã«1ãå 1771 ããå¤ã§ãªãå ´åã«ï¼ããã°ã©ã ãæ£ããåä½ãã¦ããªãã¨è¦ãªãï¼ãã®é¢æ° 1772 ã¯ï¼ããã°ã©ã ãæ£ããåä½ãã¦ããï¼ããªãã«é¢ãããï¼ããã°ã©ã ãçµäº 1773 ãããï¼ 1533 最後のチェックポイントに到達した際に呼び出す関数.countには,何番目の 1534 チェックポイントであるかを指定する(最初のチェックポイントでは1を指定す 1535 る).countの値が,前のチェックポイント通過時にcountに指定した値に1を加 1536 えた値でない場合に,プログラムが正しく動作していないと見なす.この関数 1537 は,プログラムが正しく動作している/いないに関わらず,プログラムを終了 1538 させる. 1774 1539 1775 1540 (3) void check_assert(bool_t exp) 1776 1541 1777 exp ãçã§ãããã¨ããã§ãã¯ãããå ´åã«å¼ã³åºãé¢æ°ï¼expãå½ã§ããå ´å1778 ã«ï¼ããã°ã©ã ãæ£ããåä½ãã¦ããªãã¨è¦ãªãï¼ããã°ã©ã ãçµäºãããï¼ 1542 expが真であることをチェックしたい場合に呼び出す関数.expが偽である場合 1543 に,プログラムが正しく動作していないと見なし,プログラムを終了させる. 1779 1544 1780 1545 (4) void check_ercd(ER ercd, ER expected_ercd) 1781 1546 1782 ercd ãexpected_ercdã«ä¸è´ãã¦ãããã¨ããã§ãã¯ãããå ´åã«å¼ã³åºãé¢æ°ï¼1783 ercd ãexpected_ercdã«ä¸è´ãã¦ããªãå ´åã«ï¼ããã°ã©ã ãæ£ããåä½ãã¦ã1784 ãªãã¨è¦ãªãï¼ããã°ã©ã ãçµäºãããï¼ 1547 ercdがexpected_ercdに一致していることをチェックしたい場合に呼び出す関数. 1548 ercdがexpected_ercdに一致していない場合に,プログラムが正しく動作してい 1549 ないと見なし,プログラムを終了させる. 1785 1550 1786 1551 (5) void check_state(bool_t ctx, bool_t loc, PRI ipm, 1787 1552 bool_t dsp, bool_t dpn, bool_t tex) 1788 1553 1789 ã¿ã¹ã¯ã³ã³ããã¹ãã«ããã¦ï¼ã·ã¹ãã ç¶æ 1790 ãæå¾ 1791 ãããã®ã«ãªã£ã¦ããã 1792 ãã§ãã¯ãããæã«å¼ã³åºãé¢æ°ï¼ctxï¼locï¼dspï¼dpnï¼texã«ã¯ãããã 1793 sns_ctx()ï¼sns_loc()ï¼sns_dsp()ï¼sns_dpn()ï¼sns_tex()ã®è¿å¤ã¨ãã¦æå¾ 1794 ã 1795 ããå¤ãï¼ipmã«ã¯get_ipm()ã§åç 1796 §ã§ããå²è¾¼ã¿åªå 1797 度ãã¹ã¯ã¨ãã¦æå¾ 1798 ãã 1799 ãå¤ãæå®ããï¼ãã®å 1800 ã®ãããããæå¾ 1801 ãããå¤ã¨ä¸è´ãã¦ããªãå ´åã«ï¼ 1802 ããã°ã©ã ãæ£ããåä½ãã¦ããªãã¨è¦ãªãï¼ããã°ã©ã ãçµäºãããï¼ 1554 タスクコンテキストにおいて,システム状態が期待したものになっているか 1555 チェックしたい時に呼び出す関数.ctx,loc,dsp,dpn,texにはそれぞれ 1556 sns_ctx(),sns_loc(),sns_dsp(),sns_dpn(),sns_tex()の返値として期待さ 1557 れる値を,ipmにはget_ipm()で参照できる割込み優先度マスクとして期待され 1558 る値を指定する.この内のいずれかが期待される値と一致していない場合に, 1559 プログラムが正しく動作していないと見なし,プログラムを終了させる. 1803 1560 1804 1561 (6) void check_state_i(bool_t ctx, bool_t loc, 1805 1562 bool_t dsp, bool_t dpn, bool_t tex) 1806 1563 1807 éã¿ã¹ã¯ã³ã³ããã¹ãã«ããã¦ï¼ã·ã¹ãã ç¶æ 1808 ãæå¾ 1809 ãããã®ã«ãªã£ã¦ããã 1810 ãã§ãã¯ãããæã«å¼ã³åºãé¢æ°ï¼ctxï¼locï¼dspï¼dpnï¼texã«ã¯ãããã 1811 sns_ctx()ï¼sns_loc()ï¼sns_dsp()ï¼sns_dpn()ï¼sns_tex()ã®è¿å¤ã¨ãã¦æå¾ 1812 ã 1813 ããå¤ãæå®ããï¼ãã®å 1814 ã®ãããããæå¾ 1815 ãããå¤ã¨ä¸è´ãã¦ããªãå ´åã«ï¼ 1816 ããã°ã©ã ãæ£ããåä½ãã¦ããªãã¨è¦ãªãï¼ããã°ã©ã ãçµäºãããï¼ 1564 非タスクコンテキストにおいて,システム状態が期待したものになっているか 1565 チェックしたい時に呼び出す関数.ctx,loc,dsp,dpn,texにはそれぞれ 1566 sns_ctx(),sns_loc(),sns_dsp(),sns_dpn(),sns_tex()の返値として期待さ 1567 れる値を指定する.この内のいずれかが期待される値と一致していない場合に, 1568 プログラムが正しく動作していないと見なし,プログラムを終了させる. 1817 1569 1818 1570 (7) void set_bit_func(BIT_FUNC bit_func) 1819 1571 1820 ãã§ãã¯ãã¤ã³ãã«ããã¦å¼ã³åºãèªå·±è¨ºæé¢æ°ãè¨å®ããããã®é¢æ°ï¼ 1572 チェックポイントにおいて呼び出す自己診断関数を設定するための関数. 1821 1573 1822 1574 (8) void test_start(char *progname) 1823 1575 1824 ãã¹ãéå§æã«ï¼ãã¹ãããã°ã©ã åãåºåããããã®é¢æ°ï¼ 1576 テスト開始時に,テストプログラム名を出力するための関数. 1825 1577 1826 1578 (9) void syslog_flush(void) 1827 1579 1828 ã·ã¹ãã ãã°æ©è½ã«è¨é²ããããã°æ 1829 å ±ãï¼ä½ã¬ãã«åºåæ©è½ã«ç¨ããæååº 1830 åé¢æ°ã«ããåºåããï¼ 1580 システムログ機能に記録されたログ情報を,低レベル出力機能に用いる文字出 1581 力関数により出力する. 1831 1582 1832 1583 (10) void test_finish(void) 1833 1584 1834 ããã°ã©ã ãçµäºãããé¢æ°ï¼ãã§ãã¯ãã¤ã³ãã使ç¨ããªãå ´åã«ï¼ãã®é¢ 1835 æ°ãç¨ããï¼ 1836 1837 10.2 ã«ã¼ãã«ã®æ´åæ§æ¤æ» 1838 1839 ãã§ãã¯ãã¤ã³ãã«ããã¦å¼ã³åºãèªå·±è¨ºæã«ä½¿ãããã®ããã°ã©ã ã¨ãã¦ï¼ 1840 ã«ã¼ãã«ã®æ´åæ§æ¤æ»ãç¨æãã¦ããï¼ã«ã¼ãã«ã®æ´åæ§æ¤æ»ã¯ï¼ã«ã¼ãã«å 1841 1842 ã®åãã¼ã¿æ§é ã®ä¸è²«æ§ãæ¤æ»ããï¼ç¾æç¹ã§ã¯æªå®æï¼ï¼ 1843 1844 ã«ã¼ãã«ã®æ´åæ§æ¤æ»ãç¨ããå ´åã«ã¯ï¼bit_kernel.cãã³ã³ãã¤ã«ã»ãªã³ã¯ 1845 ããï¼ 1585 プログラムを終了させる関数.チェックポイントを使用しない場合に,この関 1586 数を用いる. 1587 1588 10.2 カーネルの整合性検査 1589 1590 チェックポイントにおいて呼び出す自己診断に使うためのプログラムとして, 1591 カーネルの整合性検査を用意している.カーネルの整合性検査は,カーネル内 1592 の各データ構造の一貫性を検査する(現時点では未完成). 1593 1594 カーネルの整合性検査を用いる場合には,bit_kernel.cをコンパイル・リンク 1595 する. 1846 1596 1847 1597 (1) ER bit_kernel(void) 1848 1598 1849 ã«ã¼ãã«å 1850 ã®åãã¼ã¿æ§é ã®ä¸è²«æ§ãæ¤æ»ãï¼ä¸è²«æ§ã確èªã§ããå ´åã«E_OKï¼ 1851 ã§ããªãã£ãå ´åã«E_SYSã¨ã©ã¼ãè¿ãé¢æ°ï¼E_SYSã¨ã©ã¼ãè¿ãéã®ãµãã¨ã©ã¼ 1852 ã³ã¼ãã¨ãã¦ï¼ä¸è²«æ§ã確èªã§ããªãã£ãé 1853 ç®ã示ãã³ã¼ããè¿ãï¼ 1854 1855 10.3 æ©è½ãã¹ãããã°ã©ã 1856 1857 testãã£ã¬ã¯ããªã«ç½®ããã"test"ã§å§ã¾ãããã°ã©ã ã¯ï¼ã«ã¼ãã«ã®æ©è½ã 1858 ã¹ããè¡ãããã®ããã°ã©ã ã§ããï¼ 1859 1860 æ©è½ãã¹ãããã°ã©ã ã¯ãã¹ãããã°ã©ã ç¨ã©ã¤ãã©ãªã使ç¨ãã¦ããããï¼ 1861 æ§ç¯ããå ´åã«ã¯ï¼Makefileã®APPL_COBJSã«ï¼test_lib.oã追å ããå¿ 1862 è¦ãã 1863 ãï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããã使ç¨ããå ´åã«ã¯ï¼-Uãªãã·ã§ã³ã§ 1864 test_lib.oãæå®ããï¼å 1865 ·ä½çã«ã¯ï¼æ¬¡ã®ã³ãã³ããå®è¡ããã°ããï¼æ§ç¯ç¨ 1866 ã®ãã£ã¬ã¯ããªãï¼ASPã«ã¼ãã«ã®ã½ã¼ã¹ãã¡ã¤ã«ãå±éãããã£ã¬ã¯ããªã®ç´ 1867 ä¸ã«ããã¨ä»®å®ãã¦ããï¼ï¼ 1868 1869 % perl ../configure -T <ã¿ã¼ã²ããç¥ç§°> -A <æ©è½ãã¹ãããã°ã©ã å> \ 1599 カーネル内の各データ構造の一貫性を検査し,一貫性が確認できた場合にE_OK, 1600 できなかった場合にE_SYSエラーを返す関数.E_SYSエラーを返す際のサブエラー 1601 コードとして,一貫性が確認できなかった項目を示すコードを返す. 1602 1603 10.3 機能テストプログラム 1604 1605 testディレクトリに置かれた"test"で始まるプログラムは,カーネルの機能テ 1606 ストを行うためのプログラムである. 1607 1608 機能テストプログラムはテストプログラム用ライブラリを使用しているため, 1609 構築する場合には,MakefileのAPPL_COBJSに,test_lib.oを追加する必要があ 1610 る.コンフィギュレーションスクリプトを使用する場合には,-Uオプションで 1611 test_lib.oを指定する.具体的には,次のコマンドを実行すればよい(構築用 1612 のディレクトリが,ASPカーネルのソースファイルを展開したディレクトリの直 1613 下にあると仮定している). 1614 1615 % perl ../configure -T <ターゲット略称> -A <機能テストプログラム名> \ 1870 1616 -a ../test -U test_lib.o 1871 1617 1872 ãã ãï¼CPUä¾å¤å¦çã®ãã¹ã(1)ï½(13)ã¯ï¼åä¸ã®ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ 1873 ã·ã§ã³ãå 1874 ±ç¨ãã¦ããããï¼test_cpuexc.cfgã次ã®ããã«ã³ãã¼ãã¦ããå¿ 1875 è¦ 1876 ãããï¼ 1877 1878 % cp ../test/test_cpuexc.cfg test_cpuexc<ãã¹ãçªå·>.cfg 1879 1880 ç¾ãã¼ã¸ã§ã³ã§ç¨æãã¦ããæ©è½ãã¹ãããã°ã©ã ã¯æ¬¡ã®éãï¼ 1881 1882 (1) test_cpuexc1 CPUä¾å¤å¦çã®ãã¹ã(1) 1883 (2) test_cpuexc2 CPUä¾å¤å¦çã®ãã¹ã(2) 1884 (3) test_cpuexc3 CPUä¾å¤å¦çã®ãã¹ã(3) 1885 (4) test_cpuexc4 CPUä¾å¤å¦çã®ãã¹ã(4) 1886 (5) test_cpuexc5 CPUä¾å¤å¦çã®ãã¹ã(5) 1887 (6) test_cpuexc6 CPUä¾å¤å¦çã®ãã¹ã(6) 1888 (7) test_cpuexc7 CPUä¾å¤å¦çã®ãã¹ã(7) 1889 (8) test_cpuexc8 CPUä¾å¤å¦çã®ãã¹ã(8) 1890 (9) test_cpuexc9 CPUä¾å¤å¦çã®ãã¹ã(9) 1891 (10) test_cpuexc10 CPUä¾å¤å¦çã®ãã¹ã(10) 1892 (11) test_cpuexc11 CPUä¾å¤å¦çã®ãã¹ã(11) 1893 (12) test_cpuexc12 CPUä¾å¤å¦çã®ãã¹ã(12) 1894 (13) test_cpuexc13 CPUä¾å¤å¦çã®ãã¹ã(13) 1895 (14) test_dlynse sil_dly_nseã«é¢ãããã¹ã 1896 (15) test_sem1 ã»ããã©æ©è½ã®ãã¹ã(1) 1897 (16) test_sem2 ã»ããã©æ©è½ã®ãã¹ã(2) 1898 (17) test_sysstat1 ã·ã¹ãã ç¶æ 1899 ã«é¢ãããã¹ã(1) 1900 (18) test_task1 ã¿ã¹ã¯ç®¡çã¢ã¸ã¥ã¼ã«ã®ãã¹ã(1) 1901 (19) test_tex1 ã¿ã¹ã¯ä¾å¤å¦çã«é¢ãããã¹ã(1) 1902 (20) test_tex2 ã¿ã¹ã¯ä¾å¤å¦çã«é¢ãããã¹ã(2) 1903 (21) test_utm1 get_utmã«é¢ãããã¹ã(1) 1904 1905 CPUä¾å¤å¦çã®ãã¹ãããã°ã©ã ã®ä¸é¨ã¯ï¼CPUä¾å¤ãã³ãã©ãããªã¿ã¼ã³ãã 1906 å ´åã«ï¼CPUä¾å¤ãçºçãããå½ä»¤ã®æ¬¡ããå®è¡ãç¶ç¶ããããã¨ãåæã«ä½æ 1907 ããã¦ããï¼ãã®åæãæãç«ããªãå ´åã«ã¯ï¼ãã¹ãããã°ã©ã ã®ã¿ã¼ã²ã 1908 ãä¾åå®ç¾©ã«ããã¦ï¼CANNOT_RETURN_CPUEXCããã¯ãå®ç¾©ãããã¨ãå¿ 1909 è¦ã§ã 1910 ãï¼è©³ããã¯ï¼ãã¿ã¼ã²ããä¾åé¨ ãã¼ãã£ã³ã°ã¬ã¤ãããåç 1911 §ãããã¨ï¼ 1912 1913 10.4 æ§è½è©ä¾¡ããã°ã©ã 1914 1915 testãã£ã¬ã¯ããªã«ç½®ããã"perf"ã§å§ã¾ãããã°ã©ã ã¯ï¼ã«ã¼ãã«ã®æ§è½è© 1916 価ãè¡ãããã®ããã°ã©ã ã§ããï¼ 1917 1918 æ§è½è©ä¾¡ããã°ã©ã ã¯ï¼è¨æ¸¬å¯¾è±¡ã¨ãªãå¦çãç¹°ãè¿ãå®è¡ãï¼ãã®å®è¡æé 1919 ãè¨æ¸¬ãã¦ï¼å®è¡æéåå¸ã表示ããï¼ 1920 1921 è¨æ¸¬ããå®è¡æéã«ã¯ï¼æéè¨æ¸¬ã®ãªã¼ããããï¼æéè¨æ¸¬å¦çã®å®è¡ã«ãã 1922 ãæéï¼ãå«ã¾ããï¼è¨æ¸¬å¯¾è±¡ã®å¦çã®æ£å³ã®å®è¡æéãæ±ããããã«ã¯ï¼è¨ 1923 測ãããæéããï¼æéè¨æ¸¬ã®ãªã¼ãããããè¨æ¸¬ããããã®ããã°ã©ã 1924 ï¼perf0ï¼ã§è¨æ¸¬ãããæéãæ¸ç®ããå¿ 1925 è¦ãããï¼ 1926 1927 ã¾ãï¼å®è¡æéã®è¨æ¸¬ã¯ï¼å¥ã«è¨è¿°ããªãéãå²è¾¼ã¿ã許å¯ããã¾ã¾è¡ãããï¼ 1928 å²è¾¼ã¿ãã³ãã©ï¼å°ãªãã¨ãï¼ã¿ã¤ãå²è¾¼ã¿ãã³ãã©ï¼ã®å¦çæéãå«ã¾ãã 1929 å®è¡çµæãè¨æ¸¬ãããï¼ 1930 1931 ã«ã¼ãã«ã®æ§è½è©ä¾¡ã«ããã£ã¦ã¯ï¼ãã¼ãã¦ã§ã¢ï¼ç¹ã«ãã£ãã·ã¥ï¼ã®è¨å®ã« 1932 çæããå¿ 1933 è¦ãããï¼ 1934 1935 æ§è½è©ä¾¡ããã°ã©ã ã¯ãã¹ãããã°ã©ã ç¨ã©ã¤ãã©ãªã¨å®è¡æéåå¸éè¨ã¢ 1936 ã¸ã¥ã¼ã«ã使ç¨ãã¦ããããï¼æ§ç¯ããå ´åã«ã¯ï¼Makefileã®APPL_COBJSã«ï¼ 1937 test_lib.oã¨histogram.oã追å ããå¿ 1938 è¦ãããï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ 1939 ãªããã使ç¨ããå ´åã«ã¯ï¼-Uãªãã·ã§ã³ã§test_lib.oã¨histgram.oãæå®ã 1940 ãï¼å 1941 ·ä½çã«ã¯ï¼æ¬¡ã®ã³ãã³ããå®è¡ããã°ããï¼æ§ç¯ç¨ã®ãã£ã¬ã¯ããªãï¼ 1942 ASPã«ã¼ãã«ã®ã½ã¼ã¹ãã¡ã¤ã«ãå±éãããã£ã¬ã¯ããªã®ç´ä¸ã«ããã¨ä»®å®ã㦠1943 ããï¼ï¼ 1944 1945 % perl ../configure -T <ã¿ã¼ã²ããç¥ç§°> -A <æ§è½è©ä¾¡ããã°ã©ã å> \ 1618 ただし,CPU例外処理のテスト(1)~(13)は,同一のシステムコンフィギュレー 1619 ションを共用しているため,test_cpuexc.cfgを次のようにコピーしておく必要 1620 がある. 1621 1622 % cp ../test/test_cpuexc.cfg test_cpuexc<テスト番号>.cfg 1623 1624 現バージョンで用意している機能テストプログラムは次の通り. 1625 1626 (1) test_cpuexc1 CPU例外処理のテスト(1) 1627 (2) test_cpuexc2 CPU例外処理のテスト(2) 1628 (3) test_cpuexc3 CPU例外処理のテスト(3) 1629 (4) test_cpuexc4 CPU例外処理のテスト(4) 1630 (5) test_cpuexc5 CPU例外処理のテスト(5) 1631 (6) test_cpuexc6 CPU例外処理のテスト(6) 1632 (7) test_cpuexc7 CPU例外処理のテスト(7) 1633 (8) test_cpuexc8 CPU例外処理のテスト(8) 1634 (9) test_cpuexc9 CPU例外処理のテスト(9) 1635 (10) test_cpuexc10 CPU例外処理のテスト(10) 1636 (11) test_cpuexc11 CPU例外処理のテスト(11) 1637 (12) test_cpuexc12 CPU例外処理のテスト(12) 1638 (13) test_cpuexc13 CPU例外処理のテスト(13) 1639 (14) test_dlynse sil_dly_nseに関するテスト 1640 (15) test_sem1 セマフォ機能のテスト(1) 1641 (16) test_sem2 セマフォ機能のテスト(2) 1642 (17) test_sysstat1 システム状態に関するテスト(1) 1643 (18) test_task1 タスク管理モジュールのテスト(1) 1644 (19) test_tex1 タスク例外処理に関するテスト(1) 1645 (20) test_tex2 タスク例外処理に関するテスト(2) 1646 (21) test_utm1 get_utmに関するテスト(1) 1647 1648 CPU例外処理のテストプログラムの一部は,CPU例外ハンドラからリターンした 1649 場合に,CPU例外を発生させた命令の次から実行が継続されることを前提に作成 1650 されている.この前提が成り立たない場合には,テストプログラムのターゲッ 1651 ト依存定義において,CANNOT_RETURN_CPUEXCをマクロ定義することが必要であ 1652 る.詳しくは,「ターゲット依存部 ポーティングガイド」を参照すること. 1653 1654 10.4 性能評価プログラム 1655 1656 testディレクトリに置かれた"perf"で始まるプログラムは,カーネルの性能評 1657 価を行うためのプログラムである. 1658 1659 性能評価プログラムは,計測対象となる処理を繰り返し実行し,その実行時間 1660 を計測して,実行時間分布を表示する. 1661 1662 計測した実行時間には,時間計測のオーバヘッド(時間計測処理の実行にかか 1663 る時間)が含まれる.計測対象の処理の正味の実行時間を求めるためには,計 1664 測された時間から,時間計測のオーバヘッドを計測するためのプログラム 1665 (perf0)で計測された時間を減算する必要がある. 1666 1667 また,実行時間の計測は,別に記述がない限り割込みを許可したまま行うため, 1668 割込みハンドラ(少なくとも,タイマ割込みハンドラ)の処理時間が含まれた 1669 実行結果が計測される. 1670 1671 カーネルの性能評価にあたっては,ハードウェア(特にキャッシュ)の設定に 1672 留意する必要がある. 1673 1674 性能評価プログラムはテストプログラム用ライブラリと実行時間分布集計モ 1675 ジュールを使用しているため,構築する場合には,MakefileのAPPL_COBJSに, 1676 test_lib.oとhistogram.oを追加する必要がある.コンフィギュレーションスク 1677 リプトを使用する場合には,-Uオプションでtest_lib.oとhistgram.oを指定す 1678 る.具体的には,次のコマンドを実行すればよい(構築用のディレクトリが, 1679 ASPカーネルのソースファイルを展開したディレクトリの直下にあると仮定して 1680 いる). 1681 1682 % perl ../configure -T <ターゲット略称> -A <性能評価プログラム名> \ 1946 1683 -a ../test -U "test_lib.o histogram.o" 1947 1684 1948 ç¾ãã¼ã¸ã§ã³ã§ç¨æãã¦ããæ§è½è©ä¾¡ããã°ã©ã ã¯æ¬¡ã®éãï¼ 1949 1950 (1) perf0 æéè¨æ¸¬ã®ãªã¼ããããã®è©ä¾¡ 1951 1952 æéè¨æ¸¬ã®ãªã¼ãããããè¨æ¸¬ããããã®ããã°ã©ã ï¼å 1953 ·ä½çã«ã¯ï¼ç©ºã®ãã 1954 ã°ã©ã ï¼begin_mearsureã¨end_measureãç¶ãã¦å¼ã³åºãããã°ã©ã ï¼ã®å®è¡æ 1955 éãè¨æ¸¬ããï¼ 1956 1957 ä»ã®æ§è½è©ä¾¡ããã°ã©ã ã§è¨æ¸¬ãããæéããï¼ãã®ããã°ã©ã ã§è¨æ¸¬ããã 1958 æéãæ¸ç®ããæéãï¼è¨æ¸¬å¯¾è±¡ã®å¦çã®æ£å³ã®å®è¡æéã§ããï¼ 1959 1960 (2) perf1 slp_tskï¼wup_tskã«ããã¿ã¹ã¯åæãæéã®è©ä¾¡ 1961 1962 slp_tskï¼wup_tskã«ããã¿ã¹ã¯åæãæéãè¨æ¸¬ããããã®ããã°ã©ã ï¼å 1963 ·ä½ 1964 çã«ã¯ï¼é«ãåªå 1965 度ã®ã¿ã¹ã¯ãèµ·åºå¾ 1966 ã¡ç¶æ 1967 ã§ããæã«ï¼ä½ãåªå 1968 度ã®ã¿ã¹ã¯ 1969 ãwup_tskã«ããé«ãåªå 1970 度ã®ã¿ã¹ã¯ãèµ·åºãï¼é«ãåªå 1971 度ã®ã¿ã¹ã¯ã«åãæã 1972 ãã¾ã§ã®æéã¨ï¼é«ãåªå 1973 度ã®ã¿ã¹ã¯ãslp_tskã«ããèµ·åºå¾ 1974 ã¡ç¶æ 1975 ã¨ãªãï¼ä½ 1976 ãåªå 1977 度ã®ã¿ã¹ã¯ã«åãæããã¾ã§ã®æéãè¨æ¸¬ããï¼ 1978 1979 (3) perf2 snd_pdqã®å¦çæéã®è©ä¾¡ 1980 1981 åªå 1982 度ãã¼ã¿ãã¥ã¼ã«èç©ããã¦ãããã¼ã¿ã®æ°ã«ããï¼snd_pdqã®å¦çæéã 1983 ã©ã®ããã«å¤åããããè¨æ¸¬ããããã®ããã°ã©ã ï¼å 1984 ·ä½çã«ã¯ï¼åªå 1985 度ãã¼ 1986 ã¿ãã¥ã¼ä¸ã«é«ãåªå 1987 度ã®ãã¼ã¿ãnåèç©ããã¦ããæã«ï¼snd_dtqã«ããä½ 1988 ãåªå 1989 度ã®ãã¼ã¿ãå 1990 ¥ããã®ã«ãããæéãè¨æ¸¬ããï¼nã0ï¼10ï¼20ï¼30ï¼40ï¼ 1991 50ï¼100ï¼200ï¼300ã¨å¤åããã¦è¨æ¸¬ããï¼ 1992 1993 (4) perf3 set_flgã®å¦çæéã®è©ä¾¡ 1994 1995 å¾ 1996 ã¡è§£é¤ããã¿ã¹ã¯ã®æ°ã«ããï¼set_flgã®å¦çæéãã©ã®ããã«å¤åãããã 1997 è¨æ¸¬ããããã®ããã°ã©ã ï¼å 1998 ·ä½çã«ã¯ï¼TA_WMULå±æ§ã®ã¤ãã³ããã©ã°ã«å¯¾ã 1999 ã¦ï¼nåã®ã¿ã¹ã¯ãå¾ 2000 ã£ã¦ããæã«ï¼set_flgã«ãããã®ãã¹ã¦ãå¾ 2001 ã¡è§£é¤ãã 2002 ã®ã«ãããæéãè¨æ¸¬ããï¼nã0ï¼1ï¼2ï¼3ï¼4ï¼5ï¼10ï¼20ã¨å¤åããã¦è¨æ¸¬ã 2003 ãï¼ 2004 2005 (5) perf4 act_tskï¼iact_tskã®å¦çæéã¨ã¿ã¹ã¯åæãæéã®è©ä¾¡ 2006 2007 act_tskï¼iact_tskã®å¦çæéã¨ã¿ã¹ã¯åæãæéãè¨æ¸¬ããããã®ããã°ã©ã ï¼ 2008 å 2009 ·ä½çã«ã¯ï¼(1) ã¿ã¹ã¯åæããèµ·ãããªãact_tskã®å¦çæéï¼(2) ã¿ã¹ã¯å 2010 æããèµ·ããact_tskã®å¦çæéï¼ã¿ã¹ã¯åæãæéãå«ãï¼ï¼(3) ã¿ã¹ã¯åæ 2011 ããèµ·ããiact_tskã®å¦çæéï¼ã¿ã¹ã¯åæãæéã¨ã¿ã¤ãå²è¾¼ã¿ä¸ã§å®è¡ã 2012 ããã·ã¹ãã æå»ã®æ´æ°å¦çæéãå«ãï¼ã®3ã¤ã®æéãè¨æ¸¬ããï¼ 2013 2014 ï¼ï¼ï¼ä½¿ç¨ä¸ã®æ³¨æã¨ãã³ã 2015 2016 11.1 ã¿ã¤ããã©ã¤ãã®çµè¾¼ã¿ 2017 2018 ã¿ã¤ããã©ã¤ããã·ã¹ãã ã«çµã¿è¾¼ãããã«ï¼ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ 2019 ã³ãã¡ã¤ã«ã®å 2020 é ã§target_timer.cfgãã¤ã³ã¯ã«ã¼ãããå¿ 2021 è¦ãããï¼ 2022 2023 11.2 assertãã¯ãã®å¦ç 2024 2025 ASPã«ã¼ãã«ã®ã³ã¼ãä¸ã«ã¯ï¼assertãã¯ãã使ããã¦ããï¼assertãã¯ãã®å® 2026 義ã¯t_stddef.hã«å«ã¾ãï¼assertã失æããå ´åã®æå¾ã®å¦çï¼é常ã¯ï¼ãã 2027 ã°ã©ã ãåæ¢ãããå¦çï¼ã¯ï¼ã¿ã¼ã²ããä¾åé¨ã®TOPPERS_assert_abortã§æ±º 2028 å®ãããï¼ 2029 2030 assertã失æããå ´åï¼ã·ã¹ãã éçºä¸ã¯ãããã¬ã«è½ã¨ãã®ãæã¾ãããï¼ 2031 ã·ã¹ãã 稼åæã®å¯¾å¦æ³ã¯ï¼ã·ã¹ãã ã«å¯¾ããè¦ä»¶ã«ä¾åããï¼ããã§ï¼ã¿ã¼ 2032 ã²ããä¾åé¨ã®TOPPERS_assert_abortãï¼ã·ã¹ãã è¦ä»¶ã«åè´ããé©åãªå¦ç 2033 ã«ç½®ãæããå¿ 2034 è¦ãããï¼ã·ã¹ãã è¦ä»¶ã«ãã£ã¦ã¯ï¼NDEBUGãå®ç¾©ãã¦assert 2035 ãã¯ãã®å¦çããªãã¸ã§ã¯ãã³ã¼ãä¸ããæ¶ãï¼ã6.2 ã³ã³ãã¤ã«ãªãã·ã§ã³ã 2036 ã®ç¯ãåç 2037 §ï¼æ¹æ³ãèããããï¼ 2038 2039 11.3 ã·ã¹ãã ãã°æ©è½ã®æ±ã 2040 2041 TOPPERS/ASPã«ã¼ãã«ã§ã¯ï¼ã·ã¹ãã éçºæã®å©ä¾¿æ§ãèæ 2042 ®ãï¼ã·ã¹ãã ãã°æ© 2043 è½ãçµã¿è¾¼ãè¨å®ãããã©ã«ãã¨ãã¦ããï¼ 2044 2045 ããã«å¯¾ãã¦ï¼TOPPERS/ASPã«ã¼ãã«ãç¨ããã·ã¹ãã ãæ©å¨ã«çµã¿è¾¼ãå ´åã¯ï¼ 2046 ã·ã¹ãã ãã°æ©è½ãæå³ããªãå ´åãå¤ãï¼æ©å¨ã¸ã®çµè¾¼ã¿ã«éãã¦ã®ã·ã¹ã 2047 ã ãã°æ©è½ã®è¨å®æ¹æ³ã«ã¯ï¼ä»¥ä¸ã®æ¹æ³ãèããããï¼ 2048 2049 (1) ã·ã¹ãã ãã°æ©è½ãç¨ããªã 2050 2051 ã·ã¹ãã ãã°æ©è½ãä¸å使ç¨ããªãå ´åã«ã¯ï¼ã·ã¹ãã ãã°æ©è½ãã·ã¹ãã ã« 2052 çµã¿è¾¼ã¾ãï¼ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã§syslog.cfgãã¤ã³ã¯ 2053 ã«ã¼ãããªãï¼ï¼ã·ã¹ãã ãã°æ©è½ã®ãµã¼ãã¹ã³ã¼ã«ãå¼ã³åºãã½ã¼ã¹ãã¡ã¤ 2054 ã«ãTOPPERS_OMIT_SYSLOGãå®ç¾©ãã¦ã³ã³ãã¤ã«ããã°ããï¼ 2055 2056 (2) ãã°æ 2057 å ±ã®èç©ã®ã¿ãè¡ã 2058 2059 æ©å¨ã«çµã¿è¾¼ãã ç¶æ 2060 ã§ï¼ã·ãªã¢ã«ãã¼ãçãä»ãã¦ã·ã¹ãã ãå¤é¨ã¨æ¥ç¶ã 2061 ããã¨ãã§ããå ´åã«ã¯ï¼ã·ã¹ãã 稼åæã«ã¯ãã°æ 2062 å ±ã®èç©ã®ã¿ãè¡ãï¼ã· 2063 ã¹ãã ã«é害ãèµ·ããæãªã©ã«ãã°æ 2064 å ±ãåãåºããã¨ã§ï¼é害ã®åå åæã® 2065 å©ãã¨ãããã¨ãã§ããï¼ 2066 2067 å 2068 ·ä½çãªè¨å®æ¹æ³ã¨ãã¦ï¼æ¬¡ã®2ã¤ã®æ¹æ³ãèããããï¼ 2069 2070 (2-1) ä½ã¬ãã«åºåãã¡ã¢ãªã«èç©ãã 2071 2072 å¿ 2073 è¦ãªãã°æ 2074 å ±ãä½ã¬ãã«åºåæ©è½ãç¨ãã¦åºåããããã«è¨å®ãï¼ä½ã¬ãã« 2075 ã®æååºåé¢æ°ï¼target_fput_logï¼ã«éãããæåãã¡ã¢ãªï¼å 2076 ¸åçã«ã¯ãªã³ 2077 ã°ãããã¡ï¼ã«èç©ããããã«ããï¼ã·ã¹ãã ã®é害æã«ã¯ï¼ãã®ã¡ã¢ãªé å 2078 ãèªã¿åºãï¼ 2079 2080 (2-2) ã·ã¹ãã ãã°æ©è½ã®ãã°ãããã¡ã«èç©ãã 2081 2082 å¿ 2083 è¦ãªãã°æ 2084 å ±ãã·ã¹ãã ãã°æ©è½ã®ãã°ãããã¡ã«è¨é²ããããã«è¨å®ããï¼ 2085 ã·ã¹ãã ãã°ã¿ã¹ã¯ãåä½ãããªãã¨ï¼ãã°æ 2086 å ±ã¯ãã°ãããã¡ã«èç©ãã㦠2087 ããï¼ã·ã¹ãã ã®é害æã«ã¯ï¼ãã°ãããã¡ã®é åãèªã¿åºããï¼ã·ã¹ãã ã 2088 ã°ã¿ã¹ã¯ãåä½ããã¦ãã°æ 2089 å ±ãåºåãããï¼ 2090 2091 (3) éçºæã®è¨å®ã®ã¾ã¾ã¨ãã 2092 2093 ã·ã¹ãã ãã°æ©è½ã®è¨å®ãï¼ã·ã¹ãã éçºæã®ã¾ã¾å¤æ´ããï¼ã·ãªã¢ã«ãã¼ã 2094 çã«ãã°æ 2095 å ±ãåãæµãæ¹æ³ãèããããï¼ 2096 2097 11.4 ãªãã¸ã§ã¯ãIDã®ç®¡ç 2098 2099 TOPPERS/ASPã«ã¼ãã«ã§ã¯ï¼ãªãã¸ã§ã¯ãã®IDçªå·ãï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ãå² 2100 ãä»ããæ¹æ³ãåºæ¬ã¨ãªã£ã¦ããï¼ 2101 2102 ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã ä¸ã§ãªãã¸ã§ã¯ãã®IDçªå·ãåç 2103 §ããå ´åã«ã¯ï¼ 2104 次ã®2ã¤ã®æ¹æ³ãèããããï¼ 2105 2106 (1) ãªãã¸ã§ã¯ãèå¥åãç¨ãã 2107 2108 ãªãã¸ã§ã¯ãçæã®ããã®éçAPIï¼CRE_YYYï¼ã®ç¬¬1ãã©ã¡ã¼ã¿ã«è¨è¿°ãããªã 2109 ã¸ã§ã¯ãèå¥åãï¼ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã ä¸ã§ãç¨ããæ¹æ³ï¼ 2110 2111 ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã¯ï¼ãªãã¸ã§ã¯ãèå¥åãï¼å²ãä»ããIDçªå·ã«ãã¯ãå® 2112 義ããCè¨èªããªããã»ããµã®ãã£ã¬ã¯ãã£ãï¼#defineï¼ãkernel_cfg.hã«ç 2113 æããããï¼ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã ããkernel_cfg.hãã¤ã³ã¯ã«ã¼ãã 2114 ãå¿ 2115 è¦ãããï¼ 2116 2117 ãã®æ¹æ³ã¯ï¼ãªãã¸ã§ã¯ãã³ã¼ãä¸ã«IDçªå·ãç´æ¥åãè¾¼ã¾ããããã«å®è¡å¹ 2118 çãè¯ãä¸æ¹ã§ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ãå®è¡ããã¦kernel_cfg.hãæ¸ãæãã 2119 度ã«ï¼ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã ã®åã³ã³ãã¤ã«ãå¿ 2120 è¦ã«ãªãã¨ããæ¬ ç¹ã 2121 ããï¼ãã®ããï¼ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã ãæ§æãããã¡ã¤ã«ã®ä¸ã§ï¼ä¸ 2122 é¨ã®ãã¡ã¤ã«ã®ã¿ã§ãªãã¸ã§ã¯ãèå¥åãåç 2123 §ããæ§æã«ããã¨ãã£ã工夫ã 2124 ãããã¨ãæã¾ããï¼ 2125 2126 (2) ãªãã¸ã§ã¯ãã®IDçªå·ãä¿æããå¤æ°ãç¨ãã 2127 2128 ãªãã¸ã§ã¯ãã®IDçªå·ãä¿æããconstå±æ§ãä»å ããå¤æ°ãç¨æãï¼ã¢ããªã±ã¼ 2129 ã·ã§ã³ããã°ã©ã ä¸ã§ã¯ï¼ãã®å¤æ°ãç¨ããæ¹æ³ï¼ 2130 2131 ä¾ãã°ï¼TASK1ã¨ãããªãã¸ã§ã¯ãèå¥åã®ã¿ã¹ã¯ã«å¯¾ãã¦ï¼æ¬¡ã®ãããªå¤æ°ã 2132 ç¨æããï¼ 1685 現バージョンで用意している性能評価プログラムは次の通り. 1686 1687 (1) perf0 時間計測のオーバヘッドの評価 1688 1689 時間計測のオーバヘッドを計測するためのプログラム.具体的には,空のプロ 1690 グラム(begin_mearsureとend_measureを続けて呼び出すプログラム)の実行時 1691 間を計測する. 1692 1693 他の性能評価プログラムで計測された時間から,このプログラムで計測された 1694 時間を減算した時間が,計測対象の処理の正味の実行時間である. 1695 1696 (2) perf1 slp_tsk,wup_tskによるタスク切換え時間の評価 1697 1698 slp_tsk,wup_tskによるタスク切換え時間を計測するためのプログラム.具体 1699 的には,高い優先度のタスクが起床待ち状態である時に,低い優先度のタスク 1700 がwup_tskにより高い優先度のタスクを起床し,高い優先度のタスクに切り換わ 1701 るまでの時間と,高い優先度のタスクがslp_tskにより起床待ち状態となり,低 1702 い優先度のタスクに切り換わるまでの時間を計測する. 1703 1704 (3) perf2 snd_pdqの処理時間の評価 1705 1706 優先度データキューに蓄積されているデータの数により,snd_pdqの処理時間が 1707 どのように変化するかを計測するためのプログラム.具体的には,優先度デー 1708 タキュー中に高い優先度のデータがn個蓄積されている時に,snd_dtqにより低 1709 い優先度のデータを入れるのにかかる時間を計測する.nを0,10,20,30,40, 1710 50,100,200,300と変化させて計測する. 1711 1712 (4) perf3 set_flgの処理時間の評価 1713 1714 待ち解除するタスクの数により,set_flgの処理時間がどのように変化するかを 1715 計測するためのプログラム.具体的には,TA_WMUL属性のイベントフラグに対し 1716 て,n個のタスクが待っている時に,set_flgによりそのすべてを待ち解除する 1717 のにかかる時間を計測する.nを0,1,2,3,4,5,10,20と変化させて計測す 1718 る. 1719 1720 (5) perf4 act_tsk,iact_tskの処理時間とタスク切換え時間の評価 1721 1722 act_tsk,iact_tskの処理時間とタスク切換え時間を計測するためのプログラム. 1723 具体的には,(1) タスク切換えを起こさないact_tskの処理時間,(2) タスク切 1724 換えを起こすact_tskの処理時間(タスク切換え時間を含む),(3) タスク切換 1725 えを起こすiact_tskの処理時間(タスク切換え時間とタイマ割込み中で実行さ 1726 れるシステム時刻の更新処理時間を含む)の3つの時間を計測する. 1727 1728 11.使用上の注意とヒント 1729 1730 11.1 タイマドライバの組込み 1731 1732 タイマドライバをシステムに組み込むために,システムコンフィギュレーショ 1733 ンファイルの先頭でtarget_timer.cfgをインクルードする必要がある. 1734 1735 11.2 assertマクロの処理 1736 1737 ASPカーネルのコード中には,assertマクロが使われている.assertマクロの定 1738 義はt_stddef.hに含まれ,assertが失敗した場合の最後の処理(通常は,プロ 1739 グラムを停止させる処理)は,ターゲット依存部のTOPPERS_assert_abortで決 1740 定される. 1741 1742 assertが失敗した場合,システム開発中はデバッガに落とすのが望ましいが, 1743 システム稼働時の対処法は,システムに対する要件に依存する.そこで,ター 1744 ゲット依存部のTOPPERS_assert_abortを,システム要件に合致した適切な処理 1745 に置き換える必要がある.システム要件によっては,NDEBUGを定義してassert 1746 マクロの処理をオブジェクトコード中から消す(「6.2 コンパイルオプション」 1747 の節を参照)方法も考えられる. 1748 1749 11.3 システムログ機能の扱い 1750 1751 TOPPERS/ASPカーネルでは,システム開発時の利便性を考慮し,システムログ機 1752 能を組み込む設定をデフォルトとしている. 1753 1754 それに対して,TOPPERS/ASPカーネルを用いたシステムを機器に組み込む場合は, 1755 システムログ機能が意味がない場合も多い.機器への組込みに際してのシステ 1756 ムログ機能の設定方法には,以下の方法が考えられる. 1757 1758 (1) システムログ機能を用いない 1759 1760 システムログ機能を一切使用しない場合には,システムログ機能をシステムに 1761 組み込まず(システムコンフィギュレーションファイルでsyslog.cfgをインク 1762 ルードしない),システムログ機能のサービスコールを呼び出すソースファイ 1763 ルをTOPPERS_OMIT_SYSLOGを定義してコンパイルすればよい. 1764 1765 (2) ログ情報の蓄積のみを行う 1766 1767 機器に組み込んだ状態で,シリアルポート等を介してシステムを外部と接続す 1768 ることができる場合には,システム稼働時にはログ情報の蓄積のみを行い,シ 1769 ステムに障害が起きた時などにログ情報を取り出すことで,障害の原因分析の 1770 助けとすることができる. 1771 1772 具体的な設定方法として,次の2つの方法が考えられる. 1773 1774 (2-1) 低レベル出力をメモリに蓄積する 1775 1776 必要なログ情報を低レベル出力機能を用いて出力するように設定し,低レベル 1777 の文字出力関数(target_fput_log)に送られた文字をメモリ(典型的にはリン 1778 グバッファ)に蓄積するようにする.システムの障害時には,そのメモリ領域 1779 を読み出す. 1780 1781 (2-2) システムログ機能のログバッファに蓄積する 1782 1783 必要なログ情報をシステムログ機能のログバッファに記録するように設定する. 1784 システムログタスクを動作させないと,ログ情報はログバッファに蓄積されて 1785 いく.システムの障害時には,ログバッファの領域を読み出すか,システムロ 1786 グタスクを動作させてログ情報を出力させる. 1787 1788 (3) 開発時の設定のままとする 1789 1790 システムログ機能の設定を,システム開発時のまま変更せず,シリアルポート 1791 等にログ情報を垂れ流す方法も考えられる. 1792 1793 11.4 オブジェクトIDの管理 1794 1795 TOPPERS/ASPカーネルでは,オブジェクトのID番号を,コンフィギュレータが割 1796 り付ける方法が基本となっている. 1797 1798 アプリケーションプログラム中でオブジェクトのID番号を参照する場合には, 1799 次の2つの方法が考えられる. 1800 1801 (1) オブジェクト識別名を用いる 1802 1803 オブジェクト生成のための静的API(CRE_YYY)の第1パラメータに記述したオブ 1804 ジェクト識別名を,アプリケーションプログラム中でも用いる方法. 1805 1806 コンフィギュレータは,オブジェクト識別名を,割り付けたID番号にマクロ定 1807 義するC言語プリプロセッサのディレクティブ(#define)をkernel_cfg.hに生 1808 成するため,アプリケーションプログラムからkernel_cfg.hをインクルードす 1809 る必要がある. 1810 1811 この方法は,オブジェクトコード中にID番号が直接埋め込まれるために実行効 1812 率が良い一方で,コンフィギュレータが実行されてkernel_cfg.hが書き換わる 1813 度に,アプリケーションプログラムの再コンパイルが必要になるという欠点が 1814 ある.そのため,アプリケーションプログラムを構成するファイルの中で,一 1815 部のファイルのみでオブジェクト識別名を参照する構成にするといった工夫を 1816 することが望ましい. 1817 1818 (2) オブジェクトのID番号を保持する変数を用いる 1819 1820 オブジェクトのID番号を保持するconst属性を付加した変数を用意し,アプリケー 1821 ションプログラム中では,その変数を用いる方法. 1822 1823 例えば,TASK1というオブジェクト識別名のタスクに対して,次のような変数を 1824 用意する. 2133 1825 2134 1826 const ID TASK1_id = TASK1; 2135 1827 2136 ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã ä¸ã§ã¯ï¼ãã®å¤æ°ï¼TASK1_idï¼ãç¨ãããã¨ã§ï¼ 2137 ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ãå®è¡ããã¦kernel_cfg.hãæ¸ãæãã度ã«ï¼ä¸è¨ã®å¤æ° 2138 å®ç¾©ãå«ãã ãã¡ã¤ã«ã®ã¿ãåã³ã³ãã¤ã«ããã°ãããã¨ã«ãªãï¼ 2139 2140 ãã®æ¹æ³ã¯ï¼ã¢ããªã±ã¼ã·ã§ã³ããã°ã©ã ã®åã³ã³ãã¤ã«ãæå°éã«ã§ããå© 2141 ç¹ãããä¸æ¹ã§ï¼å¤æ°ã®ããã®ã¡ã¢ãªé åãå¿ 2142 è¦ã«ãªããã¨ã«å ãã¦ï¼ï¼ãã 2143 ã»ããµã«ãã£ã¦ã¯ï¼å¤æ°ã¢ã¯ã»ã¹ã®ããã®ãªã¼ãããããçããã¨ããæ¬ ç¹ã 2144 ããï¼ã¾ãï¼å®æ°ã§ã¯ãªãå¤æ°ã§ãããã¨ããï¼ä»ã®å¤æ°ã®åæåã«ã¯ä½¿ã㪠2145 ãã¨ããå¶éãããï¼ 2146 2147 ãªãï¼TOPPERS/ASPã«ã¼ãã«ã®ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã¯ï¼--external-idãªãã·ã§ 2148 ã³ãä»å ãããã¨ã«ããï¼ä¸è¨ã®å¤æ°å®ç¾©ãkernel_cfg.cä¸ã«çæããæ©è½ã 2149 æã£ã¦ããã®ã§ï¼ãã¹ã¦ã®ãªãã¸ã§ã¯ãIDããã®æ¹æ³ã§åç 2150 §ããå ´åã«ã¯ï¼ã 2151 ã®æ©è½ãç¨ãããã¨ãæ¨å¥¨ããï¼ 2152 2153 ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã«ããIDçªå·å²ä»ãã®ãã1ã¤ã®èª²é¡ã¨ãã¦ï¼ã³ã³ãã£ã®ã¥ 2154 ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã®ä¿®æ£ã«ããï¼ãªãã¸ã§ã¯ãIDã®å²ä»ããå¤ãã£ã¦ãã¾ã 2155 ãã¨ãæããããï¼ããã¯ï¼ã¢ããªã±ã¼ã·ã§ã³ã½ããã¦ã§ã¢ã®è¨è¨ä»æ§æ¸ã«ID 2156 çªå·ãè¨è¼ããã¦ããå ´åãï¼ãããã°ä½æ¥ã«ããã¦IDçªå·ãç´æ¥æ±ã£ã¦ãã 2157 å ´åã«ï¼ä½æ¥å¹çãä½ä¸ãããå¯è½æ§ãèããããï¼ 2158 2159 ãã®åé¡ã«å¯¾å¿ããããã«ï¼TOPPERS/ASPã«ã¼ãã«ã®ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã«ï¼ 2160 IDçªå·ã®å²ä»ãçµæããã¡ã¤ã«ã«æ¸ãåºãæ©è½ï¼--id-output-fileãªãã·ã§ã³ï¼ 2161 ã¨ï¼IDçªå·ã®å²ä»ãããã¡ã¤ã«ããåãè¾¼ãæ©è½ï¼--id-input-fileãªãã·ã§ã³ï¼ 2162 ãç¨æãã¦ããï¼ãããã®æ©è½ãç¨ãã¦ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ãå®è¡ãã度ã«ï¼ 2163 ååã«å®è¡ããæã«ãã¡ã¤ã«ã«æ¸ãåºããIDçªå·ã®å²ä»ããåãè¾¼ããã¨ã§ï¼ 2164 ååå®è¡æã¨åãå²ä»ããè¡ããã¨ãã§ããï¼ãã ãï¼TOPPERS/ASPã«ã¼ãã«ã§ 2165 ã¯ï¼IDçªå·ã«æããããã®ã¯è¨±ãããªãããï¼ãªãã¸ã§ã¯ãã®æ°ãæ¸ã£ãå ´å 2166 ã«ã¯ï¼IDçªå·ã大ããæ¹ã®ãªãã¸ã§ã¯ããæ¸ã£ãå ´åãé¤ãã¦ï¼ã¨ã©ã¼ã¨ãªãï¼ 2167 ãã®å ´åã«ã¯ï¼ããã¼ã®ãªãã¸ã§ã¯ããçæããæ¹æ³ã§åé¿ãããããªãï¼ 2168 2169 11.5 ã«ã¼ãã«ã®å 2170 é¨ã·ã³ãã«ã®ãªãã¼ã 2171 2172 ASPã«ã¼ãã«ã§ã¯ï¼ã¢ã¸ã¥ã¼ã«å 2173 é¨ã®å称ãä»ã®ã¢ã¸ã¥ã¼ã«å 2174 é¨ã®å称ã¨è¡çªã 2175 ããã¨ãé¿ããããã«ï¼ã«ã¼ãã«ã®å 2176 é¨ã·ã³ãã«ã¯ï¼Cè¨èªã¬ãã«ã§ï¼å 2177 é ã 2178 "_kernel_"ã¾ãã¯"_KERNEL_"ã§ããå称ã¨ãã¦ããï¼ 2179 2180 ãããã½ã¼ã¹ã³ã¼ãã®å¯èªæ§ã¨ä¸¡ç«ãããããã«ï¼ASPã«ã¼ãã«ã§ã¯ï¼ã½ã¼ã¹ã³ã¼ 2181 ãã¯èªç¶ãªååãç¨ãã¦è¨è¿°ãï¼Cè¨èªããªããã»ããµã®ãã¯ãå®ç¾©ï¼#defineï¼ 2182 ãç¨ãã¦ï¼ããã"_kernel_"ã¾ãã¯"_KERNEL_"ã§å§ã¾ãååï¼èªç¶ãªååã 2183 yyyyyã®å ´åã«ã¯ï¼_kernel_yyyyyï¼ã«ãªãã¼ã ããä»çµã¿ãç¨ãã¦ããï¼ 2184 2185 å 2186 ·ä½çã«ã¯ï¼é¢é£ãããã£ã¬ã¯ããªã«xxx_rename.defãç½®ãï¼ãããããªãã¼ 2187 ã ã®ããã®ããããã¡ã¤ã«ï¼xxx_rename.hããã³xxx_unrename.hï¼ãçæãã 2188 ãã¼ã«ï¼utils/genrenameï¼ãç¨æãã¦ããï¼ 2189 2190 ãã®ä»çµã¿ã¯ï¼ã½ã¼ã¹ã³ã¼ãã®å¯èªæ§åä¸ã«å½¹ç«ã¤ä¸æ¹ã§ï¼å¼å®³ãããï¼ä¾ã 2191 ã°ï¼å¤ãã®ãããã¬ã§ï¼ã½ã¼ã¹ã³ã¼ãä¸ã®å称ã¨ãªãã¸ã§ã¯ãã³ã¼ãä¸ã®å称 2192 ãç°ãªãããã«ï¼ã½ã¼ã¹ã³ã¼ãä¸ã®å¤æ°åãæå®ãã¦å¤ãèªãã ãï¼é¢æ°åã 2193 æå®ãã¦ãã¬ã¼ã¯ãã¤ã³ããç½®ãã¨ãã£ããã¨ãã§ããªãï¼ 2194 2195 ãã®ç¶æ³ã«å¯¾å¿ããããã«ï¼ASPã«ã¼ãã«ã§ã¯ï¼ã½ã¼ã¹ã³ã¼ãä¸ã®è©²å½ããå称 2196 ããªãã¼ã ããããã®ã¦ã¼ãã£ãªãã£ï¼utils/applyrenameï¼ãç¨æãã¦ããï¼ 2197 applyrenameã¦ã¼ãã£ãªãã£ã«ï¼ãªãã¼ã å®ç¾©ãã¡ã¤ã«ï¼xxx_rename.defï¼ã®ã 2198 ãªãã£ãã¯ã¹ï¼xxxã®é¨åï¼ã¨ï¼ãªãã¼ã ããããã¡ã¤ã«ãªã¹ããä¸ããã¨ï¼ãª 2199 ãã¼ã å¦çãè¡ãªãï¼ä¾ãã°ï¼kernelãã£ã¬ã¯ããªã®ãã¹ã¦ã®ãã¡ã¤ã«ã«å¯¾ã 2200 ã¦ï¼ã«ã¼ãã«ã®å 2201 é¨ã·ã³ãã«ããªãã¼ã ããã«ã¯ï¼æ¬¡ã®ã³ãã³ããå®è¡ããã° 2202 ããï¼ 1828 アプリケーションプログラム中では,この変数(TASK1_id)を用いることで, 1829 コンフィギュレータが実行されてkernel_cfg.hが書き換わる度に,上記の変数 1830 定義を含んだファイルのみを再コンパイルすればよいことになる. 1831 1832 この方法は,アプリケーションプログラムの再コンパイルを最小限にできる利 1833 点がある一方で,変数のためのメモリ領域が必要になることに加えて,(プロ 1834 セッサによっては)変数アクセスのためのオーバヘッドが生じるという欠点が 1835 ある.また,定数ではなく変数であることから,他の変数の初期化には使えな 1836 いという制限がある. 1837 1838 なお,TOPPERS/ASPカーネルのコンフィギュレータは,--external-idオプショ 1839 ンを付加することにより,上記の変数定義をkernel_cfg.c中に生成する機能を 1840 持っているので,すべてのオブジェクトIDをこの方法で参照する場合には,こ 1841 の機能を用いることを推奨する. 1842 1843 コンフィギュレータによるID番号割付けのもう1つの課題として,コンフィギュ 1844 レーションファイルの修正により,オブジェクトIDの割付けが変わってしまう 1845 ことが挙げられる.これは,アプリケーションソフトウェアの設計仕様書にID 1846 番号が記載されている場合や,デバッグ作業においてID番号を直接扱っている 1847 場合に,作業効率を低下させる可能性が考えられる. 1848 1849 この問題に対応するために,TOPPERS/ASPカーネルのコンフィギュレータに, 1850 ID番号の割付け結果をファイルに書き出す機能(--id-output-fileオプション) 1851 と,ID番号の割付けをファイルから取り込む機能(--id-input-fileオプション) 1852 を用意している.これらの機能を用いて,コンフィギュレータを実行する度に, 1853 前回に実行した時にファイルに書き出したID番号の割付けを取り込むことで, 1854 前回実行時と同じ割付けを行うことができる.ただし,TOPPERS/ASPカーネルで 1855 は,ID番号に抜けがあるのは許されないため,オブジェクトの数が減った場合 1856 には(ID番号が大きい方のオブジェクトが減った場合を除いて)エラーとなる. 1857 この場合には,ダミーのオブジェクトを生成する方法で回避するしかない. 1858 1859 11.5 カーネルの内部シンボルのリネーム 1860 1861 ASPカーネルでは,モジュール内部の名称が他のモジュール内部の名称と衝突す 1862 ることを避けるために,カーネルの内部シンボルは,C言語レベルで,先頭が 1863 "_kernel_"または"_KERNEL_"である名称としている. 1864 1865 これをソースコードの可読性と両立させるために,ASPカーネルでは,ソースコー 1866 ドは自然な名前を用いて記述し,C言語プリプロセッサのマクロ定義(#define) 1867 を用いて,それを"_kernel_"または"_KERNEL_"で始まる名前(自然な名前が 1868 yyyyyの場合には,_kernel_yyyyy)にリネームする仕組みを用いている. 1869 1870 具体的には,関連するディレクトリにxxx_rename.defを置き,そこからリネー 1871 ムのためのヘッダファイル(xxx_rename.hおよびxxx_unrename.h)を生成する 1872 ツール(utils/genrename)を用意している. 1873 1874 この仕組みは,ソースコードの可読性向上に役立つ一方で,弊害もある.例え 1875 ば,多くのデバッガで,ソースコード中の名称とオブジェクトコード中の名称 1876 が異なるために,ソースコード中の変数名を指定して値を読んだり,関数名を 1877 指定してブレークポイントを置くといったことができない. 1878 1879 この状況に対応するために,ASPカーネルでは,ソースコード中の該当する名称 1880 をリネームするためのユーティリティ(utils/applyrename)を用意している. 1881 applyrenameユーティリティに,リネーム定義ファイル(xxx_rename.def)のプ 1882 リフィックス(xxxの部分)と,リネームしたいファイルリストを与えると,リ 1883 ネーム処理を行なう.例えば,kernelディレクトリのすべてのファイルに対し 1884 て,カーネルの内部シンボルをリネームするには,次のコマンドを実行すれば 1885 よい. 2203 1886 2204 1887 % cd kernel 2205 1888 % ../utils/applyrename kernel * 2206 1889 2207 ã¾ãï¼ã¿ã¼ã²ããä¾åé¨ã®ãã£ã¬ã¯ããªã®ãã¹ã¦ã®ãã¡ã¤ã«ã«å¯¾ãã¦ï¼ã«ã¼ã 2208 ã«ã®å 2209 é¨ã·ã³ãã«ããªãã¼ã ããã«ã¯ï¼æ¬¡ã®ãããªã³ãã³ããå®è¡ããã°ããï¼ 1890 また,ターゲット依存部のディレクトリのすべてのファイルに対して,カーネ 1891 ルの内部シンボルをリネームするには,次のようなコマンドを実行すればよい. 2210 1892 2211 1893 % cd target/dve68k_gcc/ … … 2213 1895 % ../../utils/applyrename ../../kernel/kernel * 2214 1896 2215 11.6 ãã¬ã¼ã¹ãã°è¨é²ã®ãµã³ãã«ã³ã¼ãã®ä½¿ç¨æ¹æ³2216 2217 ãã¬ã¼ã¹ãã°è¨é²ã®ãµã³ãã«ã³ã¼ããã¿ã¼ã²ããä¾åé¨ã«çµã¿è¾¼ã¾ãã¦ããå ´ 2218 åã«ã¯ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¹ã¯ãªããã«ããã使ç¨ãããã¨ãæ示ãã 2219 ãªãã·ã§ã³ï¼-rï¼ãä»å ãããã¨ã§ï¼ã¡ã¢ãªä¸ã«ãã¬ã¼ã¹ãã°ãè¨é²ããæ©è½ 2220 ãæå¹ã«ãªãï¼ 2221 2222 ãã¬ã¼ã¹ãã°è¨é²ã®ä½¿ç¨æ¹æ³ã®ä¸ä¾ã¨ãã¦ï¼ã·ã¹ãã èµ·åæã«ãã¬ã¼ã¹ãã°ã® 2223 è¨é²ãéå§ãï¼ã·ã¹ãã çµäºæã«è¨é²ãããã¬ã¼ã¹ãã°ããã³ãããããã«ã¯ï¼ 2224 ã·ã¹ãã ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ãã¡ã¤ã«ã«æ¬¡ã®ãããªè¨è¿°ã追å ããï¼ 1897 11.6 トレースログ記録のサンプルコードの使用方法 1898 1899 トレースログ記録のサンプルコードがターゲット依存部に組み込まれている場 1900 合には,コンフィギュレーションスクリプトにそれを使用することを指示する 1901 オプション(-r)を付加することで,メモリ上にトレースログを記録する機能 1902 が有効になる. 1903 1904 トレースログ記録の使用方法の一例として,システム起動時にトレースログの 1905 記録を開始し,システム終了時に記録したトレースログをダンプするためには, 1906 システムコンフィギュレーションファイルに次のような記述を追加する. 2225 1907 2226 1908 #include "logtrace/trace_config.h" … … 2228 1910 ATT_TER({ TA_NULL, target_fput_log, trace_dump }); 2229 1911 2230 ããã§ï¼åæåã«ã¼ãã³ï¼trace_initializeï¼ã¸ã®å¼æ°ã¯ï¼åæåç´å¾ã®ãã¬ã¼ 2231 ã¹ãã°ã®åä½ã¢ã¼ããæå®ãããã®ã§ããï¼æå®ã§ããåä½ã¢ã¼ãã«ã¤ãã¦ã¯ï¼ 2232 arch/logtrace/trace_config.hä¸ã®ã³ã¡ã³ãã«èª¬æãããï¼ 2233 2234 çµäºå¦çã«ã¼ãã³ï¼trace_dumpï¼ã¯ï¼è¨é²ããããã¬ã¼ã¹ãã°ãã¿ã¼ã²ããä¾ 2235 åã®ä½ã¬ãã«åºåæ©è½ï¼target_fput_logï¼ãå©ç¨ãã¦ãã³ãããããã®ãã®ã§ 2236 ããï¼ãã¬ã¼ã¹ãã°ãå¥ã®æ¹æ³ã§åãåºãå ´åã«ã¯ï¼çµäºå¦çã«ã¼ãã³ãç»é² 2237 ããå¿ 2238 è¦ã¯ãªãï¼ 2239 2240 以ä¸ã®æ¹æ³ã§ã¯ï¼trace_initializeãåæåã«ã¼ãã³ã§ï¼trace_dumpãçµäºå¦ 2241 çã«ã¼ãã³ã§å¼ã³åºãã¦ããããï¼åæåã«ã¼ãã³ãå¼ã³åºãåãçµäºå¦çã«ã¼ 2242 ãã³ãå¼ã³åºããå¾ã«ã¯ï¼ãã¬ã¼ã¹ãã°è¨é²ã®æ©è½ãå©ç¨ã§ããªãï¼åæåã«ã¼ 2243 ãã³ãå¼ã³åºãåãçµäºå¦çã«ã¼ãã³ãå¼ã³åºããå¾ã«å®è¡ãããå¦çï¼ä¾ã 2244 ã°ï¼ã«ã¼ãã«ãªãã¸ã§ã¯ãã®åæåå¦çãï¼trace_initializeãããå 2245 ã«ç»é² 2246 ããåæåã«ã¼ãã³ï¼trace_dumpãããå 2247 ã«ç»é²ããçµäºå¦çã«ã¼ãã³ï¼ã§ã 2248 ã¬ã¼ã¹ãã°è¨é²ã®æ©è½ãå©ç¨ããããã«ã¯ï¼trace_initializeã¨trace_dumpã 2249 é©åãªå ´æã§å¼ã¶ããã«ä¿®æ£ãããã¨ãå¿ 2250 è¦ã§ããï¼ 2251 2252 11.7 ã·ã¹ãã ã®èµ·åæã®åæåå¦ç 2253 2254 ã·ã¹ãã ã®èµ·åæã«ã¢ããªã±ã¼ã·ã§ã³ã§å¿ 2255 è¦ã¨ãªãåæåå¦çãè¡ãããã®æ© 2256 è½ã¨ãã¦åæåã«ã¼ãã³ãç¨æããã¦ãããï¼åæåã«ã¼ãã³ãå®è¡ãããã 2257 ããæ©ãã¿ã¤ãã³ã°ã§å®è¡ãããã¨ãå¿ 2258 è¦ãªåæåå¦çãããå ´åãããï¼ 2259 2260 ãã®ãããªå ´åã«ç¨ããããã«ï¼æ¨æºçãªã¹ã¿ã¼ãã¢ããã¢ã¸ã¥ã¼ã«ããï¼ã¿ã¼ 2261 ã²ããã·ã¹ãã ä¾åã®åæåããã¯ï¼hardware_init_hookï¼ãå¼ã³åºããã¨ã¨ 2262 ãã¦ããï¼hardware_init_hookã¯ï¼ã«ã¼ãã«ã®ã¿ã¼ã²ããä¾åé¨ã§ç¨æãã㦠2263 ããã®ãæ¨æºã§ãããï¼ãããã¢ããªã±ã¼ã·ã§ã³ã§ç¨æãããã®ã«ç½®ãæãï¼ 2264 ãã®ä¸ã§ã¢ããªã±ã¼ã·ã§ã³ã§å¿ 2265 è¦ã¨ãªãåæåå¦çãè¡ããã¨ãã§ããï¼ 2266 2267 ãã ãï¼hardware_init_hookã®ä½æããå ´åã«ã¯ï¼bssã»ã¯ã·ã§ã³ã¨dataã»ã¯ã·ã§ 2268 ã³ãåæåããã¦ããªããã¨ãï¼ã©ã¤ãã©ãªãåæåããã¦ããªããã¨ï¼Cè¨èª 2269 ã§è¨è¿°ã§ããã¨ã¯éããªããã¨ãªã©ã«æ³¨æãå¿ 2270 è¦ã§ããï¼ä½æã«ããã£ã¦ã¯ï¼ 2271 ãã¿ã¼ã²ããä¾åé¨ ãã¼ãã£ã³ã°ã¬ã¤ãããåç 2272 §ãããã¨ï¼ 2273 2274 ã«ã¼ãã«ã®ã¹ã¿ã¼ãã¢ããã¢ã¸ã¥ã¼ã«ãhardware_init_hookãå¼ã³åºãããã« 2275 å®è£ 2276 ããã¦ããªãå ´åã«ã¯ï¼ã¹ã¿ã¼ãã¢ããã¢ã¸ã¥ã¼ã«ãã¢ããªã±ã¼ã·ã§ã³ã§ 2277 ç¨æãããã®ã«ç½®ãæããæ¹æ³ãæ¨å¥¨ããï¼ 2278 2279 11.8 rodataã»ã¯ã·ã§ã³ãRAMã«ç½®ãå ´å 2280 2281 ä½ããã®çç±ã§rodataã»ã¯ã·ã§ã³ãRAMã«ç½®ãå ´åï¼dataã»ã¯ã·ã§ã³ã¨åæ§ã«ï¼ 2282 ãã®åæå¤ã¯ROMã«ç½®ãï¼ã¹ã¿ã¼ãã¢ããã¢ã¸ã¥ã¼ã«ã§RAMã«ã³ãã¼ããã®ãç´ 2283 ç´ã§ããï¼ãããå®ç¾ããã«ã¯ï¼dataã»ã¯ã·ã§ã³ã®åæ±ããåèã«ï¼ãªã³ã«ã¹ 2284 ã¯ãªããã¨ã¹ã¿ã¼ãã¢ããã¢ã¸ã¥ã¼ã«ãä¿®æ£ããå¿ 2285 è¦ããããï¼ããã«å ãã¦ï¼ 2286 以ä¸ã®æªç½®ãå¿ 2287 è¦ã§ããï¼ 2288 2289 ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã¯ï¼ãã¹1ã¨ãã¹3ã«ããã¦ï¼ãã¼ãã¢ã¸ã¥ã¼ã«ã®ã·ã³ãã« 2290 ãã¡ã¤ã«ãç¨ãã¦ï¼ãã¼ãã¢ã¸ã¥ã¼ã«å 2291 ã®rodataã»ã¯ã·ã§ã³ãèªã¿è¾¼ããã¨ã§ï¼ 2292 å種ã®å®æ°å¤ãåå¾ããï¼ãã®ããï¼rodataã»ã¯ã·ã§ã³ãdataã»ã¯ã·ã§ã³ã¨å 2293 æ§ã«æ±ãã¨ï¼ãã®ã¢ã¯ã»ã¹ã¢ãã¬ã¹ï¼RAMå 2294 ã®ã¢ãã¬ã¹ï¼VMAã¨å¼ã¶ï¼ã¨é 2295 置㢠2296 ãã¬ã¹ï¼ROMå 2297 ã®ã¢ãã¬ã¹ï¼LMAã¨å¼ã¶ï¼ãä¸è´ããªããªãããã«ï¼å®æ°å¤ãå 2298 å¾ãããã¨ãã§ããï¼ã¨ã©ã¼ã¨ãªãï¼ 2299 2300 ãã¹1ã§ã®ã¨ã©ã¼ãåé¿ããããã«ã¯ï¼ãã¹1ã®ãªã³ã¯æï¼cfg1_outããªã³ã¯ã 2301 ãæï¼ã«ã¯ï¼rodataã»ã¯ã·ã§ã³ã®ã¢ã¯ã»ã¹ã¢ãã¬ã¹ã¨é 2302 ç½®ã¢ãã¬ã¹ãä¸è´ãã 2303 ããªã³ã«ã¹ã¯ãªããï¼æ¨æºã®ãªã³ã«ã¹ã¯ãªããã¯ãã®ããã«ãªã£ã¦ããï¼ãç¨ 2304 ããï¼ãµã³ãã«ã®Makefileã§ã¯ï¼LDSCRIPTã«ãããªã³ã«ã¹ã¯ãªãããæå®ãã 2305 ã®ã§ã¯ãªãï¼LDFLAGSã¨CFG1_OUT_LDFLAGSã«ç°ãªããªã³ã«ã¹ã¯ãªãããç¨ãã㪠2306 ãã·ã§ã³ãè¨å®ããã°ããï¼ 2307 2308 ãã¹3ã§ã®ã¨ã©ã¼ãåé¿ããããã«ã¯ï¼ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®ãã¹3ã®ãã³ãã¬ã¼ 2309 ããã¡ã¤ã«ã«ããã¦ï¼rodataã»ã¯ã·ã§ã³ã®å 2310 容ãï¼é 2311 ç½®ã¢ãã¬ã¹ããã¢ã¯ã»ã¹ 2312 ã¢ãã¬ã¹ã«ã³ãã¼ããï¼ãã®ããã«ã¯ï¼ãã¹3ã®ãã³ãã¬ã¼ããã¡ã¤ã«ã®ã¿ã¼ã²ã 2313 ãä¾åé¨ã§ï¼LMA.ORDER_LISTçã®ãã³ãã¬ã¼ããã¡ã¤ã«å¤æ°ãè¨å®ããã°ããï¼ 2314 å 2315 ·ä½çãªæ¹æ³ã¯ï¼ãã¿ã¼ã²ããä¾åé¨ ãã¼ãã£ã³ã°ã¬ã¤ãããåç 2316 §ãããã¨ï¼ 2317 2318 2319 ï¼ï¼ï¼åèæ 2320 å ± 2321 2322 12.1 å©ç¨æ¡ä»¶ã¨å©ç¨å ±å 2323 2324 ASPã«ã¼ãã«ã®å©ç¨æ¡ä»¶ã¯ï¼åãã¡ã¤ã«ã®å 2325 é ã«è¡¨ç¤ºããã¦ããï¼èä½æ¨©ã¯ï¼å 2326 ãã¡ã¤ã«ã®å 2327 é ã«è¡¨ç¤ºããã¦ããèä½æ¨©è 2328 ãä¿æãã¦ããï¼ 2329 2330 å©ç¨æ¡ä»¶ã®(3)ã®(b)ã«ããã¦ï¼å©ç¨ã®å½¢æ 2331 ãTOPPERSããã¸ã§ã¯ãã«å ±åããæ¹ 2332 æ³ã¨ãã¦ã¯ï¼ASPã«ã¼ãã«ãå©ç¨ãã製åã®å称ã¨å¿ç¨åéï¼è£½ååããä¼ç¤¾å 2333 ã¨æ¥ç¨®çã®æ 2334 å ±ãï¼ä»¥ä¸ã®URLã®ãã¼ã¸ããå ±åãããã®ã¨ããï¼ 1912 ここで,初期化ルーチン(trace_initialize)への引数は,初期化直後のトレー 1913 スログの動作モードを指定するものである.指定できる動作モードについては, 1914 arch/logtrace/trace_config.h中のコメントに説明がある. 1915 1916 終了処理ルーチン(trace_dump)は,記録されたトレースログをターゲット依 1917 存の低レベル出力機能(target_fput_log)を利用してダンプするためのもので 1918 ある.トレースログを別の方法で取り出す場合には,終了処理ルーチンを登録 1919 する必要はない. 1920 1921 以上の方法では,trace_initializeを初期化ルーチンで,trace_dumpを終了処 1922 理ルーチンで呼び出しているため,初期化ルーチンを呼び出す前や終了処理ルー 1923 チンを呼び出した後には,トレースログ記録の機能を利用できない.初期化ルー 1924 チンを呼び出す前や終了処理ルーチンを呼び出した後に実行される処理(例え 1925 ば,カーネルオブジェクトの初期化処理や,trace_initializeよりも先に登録 1926 した初期化ルーチン,trace_dumpよりも先に登録した終了処理ルーチン)でト 1927 レースログ記録の機能を利用するためには,trace_initializeとtrace_dumpを 1928 適切な場所で呼ぶように修正することが必要である. 1929 1930 11.7 システムの起動時の初期化処理 1931 1932 システムの起動時にアプリケーションで必要となる初期化処理を行うための機 1933 能として初期化ルーチンが用意されているが,初期化ルーチンが実行されるよ 1934 りも早いタイミングで実行することが必要な初期化処理がある場合がある. 1935 1936 このような場合に用いるために,標準的なスタートアップモジュールから,ター 1937 ゲットシステム依存の初期化フック(hardware_init_hook)を呼び出すことと 1938 している.hardware_init_hookは,カーネルのターゲット依存部で用意されて 1939 いるのが標準であるが,これをアプリケーションで用意したものに置き換え, 1940 その中でアプリケーションで必要となる初期化処理を行うことができる. 1941 1942 ただし,hardware_init_hookの作成する場合には,bssセクションとdataセクショ 1943 ンが初期化されていないことや,ライブラリが初期化されていないこと,C言語 1944 で記述できるとは限らないことなどに注意が必要である.作成にあたっては, 1945 「ターゲット依存部 ポーティングガイド」を参照すること. 1946 1947 カーネルのスタートアップモジュールがhardware_init_hookを呼び出すように 1948 実装されていない場合には,スタートアップモジュールをアプリケーションで 1949 用意したものに置き換える方法を推奨する. 1950 1951 11.8 rodataセクションをRAMに置く場合 1952 1953 何らかの理由でrodataセクションをRAMに置く場合,dataセクションと同様に, 1954 その初期値はROMに置き,スタートアップモジュールでRAMにコピーするのが素 1955 直である.これを実現するには,dataセクションの取扱いを参考に,リンカス 1956 クリプトとスタートアップモジュールを修正する必要があるが,それに加えて, 1957 以下の措置が必要である. 1958 1959 コンフィギュレータは,パス1とパス3において,ロードモジュールのシンボル 1960 ファイルを用いて,ロードモジュール内のrodataセクションを読み込むことで, 1961 各種の定数値を取得する.そのため,rodataセクションをdataセクションと同 1962 様に扱うと,そのアクセスアドレス(RAM内のアドレス,VMAと呼ぶ)と配置ア 1963 ドレス(ROM内のアドレス,LMAと呼ぶ)が一致しなくなるために,定数値を取 1964 得することができず,エラーとなる. 1965 1966 パス1でのエラーを回避するためには,パス1のリンク時(cfg1_outをリンクす 1967 る時)には,rodataセクションのアクセスアドレスと配置アドレスを一致させ 1968 るリンカスクリプト(標準のリンカスクリプトはこのようになっている)を用 1969 いる.サンプルのMakefileでは,LDSCRIPTによりリンカスクリプトを指定する 1970 のではなく,LDFLAGSとCFG1_OUT_LDFLAGSに異なるリンカスクリプトを用いるオ 1971 プションを設定すればよい. 1972 1973 パス3でのエラーを回避するためには,コンフィギュレータのパス3のテンプレー 1974 トファイルにおいて,rodataセクションの内容を,配置アドレスからアクセス 1975 アドレスにコピーする.そのためには,パス3のテンプレートファイルのターゲッ 1976 ト依存部で,LMA.ORDER_LIST等のテンプレートファイル変数を設定すればよい. 1977 具体的な方法は,「ターゲット依存部 ポーティングガイド」を参照すること. 1978 1979 1980 12.参考情報 1981 1982 12.1 利用条件と利用報告 1983 1984 ASPカーネルの利用条件は,各ファイルの先頭に表示されている.著作権は,各 1985 ファイルの先頭に表示されている著作権者が保有している. 1986 1987 利用条件の(3)の(b)において,利用の形態をTOPPERSプロジェクトに報告する方 1988 法としては,ASPカーネルを利用した製品の名称と応用分野,製品化した会社名 1989 と業種等の情報を,以下のURLのページから報告するものとする. 2335 1990 2336 1991 http://www.toppers.jp/report.html 2337 1992 2338 ã¾ããã®éã«ï¼ASPã«ã¼ãã«ã使ç¨ãã¦ã®ã³ã¡ã³ãããæè¦ãããã ããã¨å¹¸ã 2339 ã§ããï¼ 2340 2341 12.2 ä¿è¨¼ã»é©ç¨æ§ã»ãµãã¼ã 2342 2343 ASPã«ã¼ãã«ã¯ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼éçºè 2344 ããã³TOPPERSãã 2345 ã¸ã§ã¯ãã¯ï¼ASPã«ã¼ãã«ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®çã«å¯¾ããé©åæ§ãå«ãã¦ï¼ 2346 ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼ASPã«ã¼ãã«ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥ç 2347 ã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 2348 2349 éçºè 2350 ããã³TOPPERSããã¸ã§ã¯ãã¯ï¼ASPã«ã¼ãã«ã«é¢ãããµãã¼ãã®ç´æ㯠2351 ãã¦ããªãï¼ASPã«ã¼ãã«ã«é¢ãã¦è³ªåãããå ´åã¯ï¼å¾è¿°ã®TOPPERSã¦ã¼ã¶ã¼ 2352 ãºã¡ã¼ãªã³ã°ãªã¹ããå©ç¨ãã¦ããã ããã¨å¹¸ãã§ããï¼ç¢ºå®ãªãµãã¼ããå¿ 2353 2354 è¦ãªå ´åã«ã¯ï¼æåã§ãµãã¼ããµã¼ãã¹ãæä¾ãã¦ããä¼ç¤¾ã«ç¸è«ããããï¼ 2355 2356 12.3 ãã°ã¬ãã¼ã 2357 2358 ASPã«ã¼ãã«ã«ãã°ãåé¡ç¹ãçºè¦ãããå ´åã«ã¯ï¼å¾è¿°ã®TOPPERSã¦ã¼ã¶ã¼ãº 2359 ã¡ã¼ãªã³ã°ãªã¹ãã«å ±åãã¦æ¬²ããï¼ 2360 2361 ã¡ã¼ãªã³ã°ãªã¹ãã«ãã°ãåé¡ç¹ãªã©ãå ±åããå ´åã«ã¯ï¼å¿ 2362 è¦ã«å¿ãã¦æ¬¡ã® 2363 æ 2364 å ±ãç¥ããã¦æ¬²ããï¼ 2365 2366 使ç¨ãã¦ããã«ã¼ãã«ã«é¢ããæ 2367 å ± 2368 ã»ã¿ã¼ã²ããéä¾åé¨ã®ãã¼ã¸ã§ã³ 2369 ã»ä½¿ç¨ãã¦ããã¿ã¼ã²ããä¾åé¨ã¨ãã®ãã¼ã¸ã§ã³ 2370 ã»TOPPERSããã¸ã§ã¯ãããã®ãªãªã¼ã¹ã«å¯¾ããæ¹é ç®æï¼ããã°ï¼ 2371 2372 ã¿ã¼ã²ããã·ã¹ãã ã«é¢ããæ 2373 å ± 2374 ã»ã¿ã¼ã²ããããã»ããµã®ç¨®é¡ 2375 ã»ã¿ã¼ã²ãããã¼ãçã®ç¨®é¡ 2376 2377 ãã¹ãã«é¢ããæ 2378 å ± 2379 ã»OSã®ãã¼ã¸ã§ã³ï¼ãµã¼ãã¹ããã¯ã®é©ç¨ç¶æ³ãï¼ 2380 ã»ã³ã³ãã¤ã©ãªã©ã®éçºç°å¢ã®ãã¼ã¸ã§ã³ï¼Cygwinã®ãã¼ã¸ã§ã³ãï¼ 2381 2382 12.4 ã¦ã§ããµã¤ã 2383 2384 TOPPERSããã¸ã§ã¯ãã®ã¦ã§ããµã¤ãã¯ï¼ä»¥ä¸ã®URLã«ããï¼ 1993 またその際に,ASPカーネルを使用してのコメントやご意見もいただけると幸い 1994 である. 1995 1996 12.2 保証・適用性・サポート 1997 1998 ASPカーネルは無保証で提供されているものである.開発者およびTOPPERSプロ 1999 ジェクトは,ASPカーネルに関して,特定の使用目的に対する適合性も含めて, 2000 いかなる保証も行わない.また,ASPカーネルの利用により直接的または間接的 2001 に生じたいかなる損害に関しても,その責任を負わない. 2002 2003 開発者およびTOPPERSプロジェクトは,ASPカーネルに関するサポートの約束は 2004 していない.ASPカーネルに関して質問がある場合は,後述のTOPPERSユーザー 2005 ズメーリングリストを利用していただけると幸いである.確実なサポートが必 2006 要な場合には,有償でサポートサービスを提供している会社に相談されたい. 2007 2008 12.3 バグレポート 2009 2010 ASPカーネルにバグや問題点を発見された場合には,後述のTOPPERSユーザーズ 2011 メーリングリストに報告して欲しい. 2012 2013 メーリングリストにバグや問題点などを報告する場合には,必要に応じて次の 2014 情報を知らせて欲しい. 2015 2016 使用しているカーネルに関する情報 2017 ・ターゲット非依存部のバージョン 2018 ・使用しているターゲット依存部とそのバージョン 2019 ・TOPPERSプロジェクトからのリリースに対する改造箇所(あれば) 2020 2021 ターゲットシステムに関する情報 2022 ・ターゲットプロセッサの種類 2023 ・ターゲットボード等の種類 2024 2025 ホストに関する情報 2026 ・OSのバージョン(サービスパックの適用状況も) 2027 ・コンパイラなどの開発環境のバージョン(Cygwinのバージョンも) 2028 2029 12.4 ウェブサイト 2030 2031 TOPPERSプロジェクトのウェブサイトは,以下のURLにある. 2385 2032 2386 2033 http://www.toppers.jp/ 2387 2034 2388 TOPPERSããã¸ã§ã¯ããASPã«ã¼ãã«ã«é¢ããææ°æ 2389 å ±ã¯ï¼ãã®ã¦ã§ããµã¤ãã 2390 ãå¾ããã¨ãã§ããï¼ã¾ãï¼ASPã«ã¼ãã«ã®ææ°çã¯ï¼ãã®ã¦ã§ããµã¤ãããã 2391 ã¦ã³ãã¼ããããã¨ãã§ããï¼ 2392 2393 12.5 TOPPERSã¦ã¼ã¶ã¼ãºã¡ã¼ãªã³ã°ãªã¹ã 2394 2395 ASPã«ã¼ãã«ãå«ãTOPPERSããã¸ã§ã¯ãã®éçºææç©ã®ã¦ã¼ã¶ã«å¯¾ããæ 2396 å ±æ 2397 ä¾ããã³ã¦ã¼ã¶ç¸äºéã®æ 2398 å ±äº¤æã容æã«ããããã«ï¼TOPPERSã¦ã¼ã¶ã¼ãºã¡ã¼ 2399 ãªã³ã°ãªã¹ãï¼users@toppers.jpï¼ãç¨æãã¦ããï¼ 2400 2401 ãã®ã¡ã¼ãªã³ã°ãªã¹ãã«ã¯ï¼èª°ã§ãèªç±ã«ç»é²ãï¼ã¡ã¼ã«ãéä»ãããã¨ã㧠2402 ããï¼ç»é²è 2403 以å¤ã¯ã¡ã¼ã«ãéä»ã§ããªãï¼ï¼ã¾ãï¼éä»ãããã¡ã¼ã«ã¯ï¼èª° 2404 ã§ãèªç±ã«ã¦ã§ããµã¤ãã§èªããã¨ãã§ããï¼ 2405 2406 ã¡ã¼ãªã³ã°ãªã¹ãã¸ã®ç»é²æ¹æ³ã«ã¤ãã¦ã¯ï¼ä»¥ä¸ã®URLã®ãã¼ã¸ã«èª¬æãããï¼ 2035 TOPPERSプロジェクトやASPカーネルに関する最新情報は,このウェブサイトか 2036 ら得ることができる.また,ASPカーネルの最新版は,このウェブサイトからダ 2037 ウンロードすることができる. 2038 2039 12.5 TOPPERSユーザーズメーリングリスト 2040 2041 ASPカーネルを含むTOPPERSプロジェクトの開発成果物のユーザに対する情報提 2042 供およびユーザ相互間の情報交換を容易にするために,TOPPERSユーザーズメー 2043 リングリスト(users@toppers.jp)を用意している. 2044 2045 このメーリングリストには,誰でも自由に登録し,メールを送付することがで 2046 きる(登録者以外はメールを送付できない).また,送付されたメールは,誰 2047 でも自由にウェブサイトで読むことができる. 2048 2049 メーリングリストへの登録方法については,以下のURLのページに説明がある. 2407 2050 2408 2051 http://www.toppers.jp/community.html 2409 2052 2410 12.6 TOPPERSããã¸ã§ã¯ãã®ã¡ã³ãåãã®ãµã¼ãã¹ 2411 2412 TOPPERSããã¸ã§ã¯ãã®ã¡ã³ãã«å¯¾ãã¦ã¯ï¼ä¸è¨ã«å ãã¦ï¼ASPã«ã¼ãã«ã«é¢é£ 2413 ãã¦æ¬¡ã®ãµã¼ãã¹ãç¨æãã¦ããï¼ 2414 2415 (1) TOPPERSéçºè 2416 ã¡ã¼ãªã³ã°ãªã¹ã 2417 2418 TOPPERSããã¸ã§ã¯ãã®ã¡ã³ãã¯ï¼ASPã«ã¼ãã«ã«é¢ãã質åï¼ãã°ãåé¡ç¹ãª 2419 ã©ã®å ±åã«ï¼TOPPERSéçºè 2420 ã¡ã¼ãªã³ã°ãªã¹ãï¼dev@toppers.jpï¼ãå©ç¨ããã 2421 ã¨ãã§ããï¼ 2422 2423 (2) ASPã«ã¼ãã«ã®éçºæ¯æ´ãµã¤ã 2424 2425 ASPã«ã¼ãã«ã®éçºæ¯æ´ã®ããã®TRACï¼ãã°ãã©ããã³ã°ã·ã¹ãã ï¼ãï¼ä»¥ä¸ã® 2426 URLã«ããï¼TRACã¸ã®ã¢ã¯ã»ã¹ã«ã¯ï¼ä¼å¡ãã¹ã¯ã¼ããå¿ 2427 è¦ã§ããï¼ï¼ 2053 12.6 TOPPERSプロジェクトのメンバ向けのサービス 2054 2055 TOPPERSプロジェクトのメンバに対しては,上記に加えて,ASPカーネルに関連 2056 して次のサービスを用意している. 2057 2058 (1) TOPPERS開発者メーリングリスト 2059 2060 TOPPERSプロジェクトのメンバは,ASPカーネルに関する質問,バグや問題点な 2061 どの報告に,TOPPERS開発者メーリングリスト(dev@toppers.jp)を利用するこ 2062 とができる. 2063 2064 (2) ASPカーネルの開発支援サイト 2065 2066 ASPカーネルの開発支援のためのTRAC(バグトラッキングシステム)が,以下の 2067 URLにある(TRACへのアクセスには,会員パスワードが必要である). 2428 2068 2429 2069 http://dev.toppers.jp/trac/asp/ 2430 2070 2431 TOPPERS ããã¸ã§ã¯ãã®ã¡ã³ãã¯ï¼ãã®ãµã¤ãããï¼ã¦ã§ãã¤ã³ã¿ãã§ã¼ã¹ãã2432 ã³subversionãµã¼ãã«ããï¼ASPã«ã¼ãã«ã®éçºä¸ã®ãã¼ã¸ã§ã³ãå¾ããã¨ã㧠2433 ããï¼ã¾ãï¼ãã°ãã©ããã³ã°ãã¼ã¿ãã¼ã¹ã«ã¢ã¯ã»ã¹ãããã¨ãã§ãï¼éå» 2434 ã®ãã°å±¥æ´ã¸ã®ã¢ã¯ã»ã¹ãï¼ãã°ã®ç»é²ããããã¨ãã§ããï¼ 2435 2436 12.7 TOPPERS ããã¸ã§ã¯ãã¸ã®åå2437 2438 TOPPERS ããã¸ã§ã¯ãã§ã¯ï¼ä½ããã®å½¢ã§ããã¸ã§ã¯ãã«è²¢ç®ãã¦ããã ããæ¹ï¼2439 ããã¸ã§ã¯ãã§éçºããã½ããã¦ã§ã¢ãã使ãã®æ¹ï¼ããã¸ã§ã¯ãã«èå³ãã 2440 æã¡ã®æ¹ã®åå ãæ±ãã¦ããï¼TOPPERSããã¸ã§ã¯ãã¸ã®åå æ¹æ³ã«ã¤ãã¦ã¯ï¼ 2441 以ä¸ã®ãã¼ã¸ã«èª¬æãããï¼ 2071 TOPPERSプロジェクトのメンバは,このサイトから,ウェブインタフェースおよ 2072 びsubversionサーバにより,ASPカーネルの開発中のバージョンを得ることがで 2073 きる.また,バグトラッキングデータベースにアクセスすることができ,過去 2074 のバグ履歴へのアクセスや,バグの登録をすることができる. 2075 2076 12.7 TOPPERSプロジェクトへの参加 2077 2078 TOPPERSプロジェクトでは,何からの形でプロジェクトに貢献していただける方, 2079 プロジェクトで開発したソフトウェアをお使いの方,プロジェクトに興味をお 2080 持ちの方の参加を求めている.TOPPERSプロジェクトへの参加方法については, 2081 以下のページに説明がある. 2442 2082 2443 2083 http://www.toppers.jp/joinus.html 2444 2084 2445 2085 2446 ï¼ï¼ï¼ãªãã¡ã¬ã³ã¹ 2447 2448 13.1 ãµã¼ãã¹ã³ã¼ã«ä¸è¦§2449 2450 (1) ã¿ã¹ã¯ç®¡çæ©è½2086 13.リファレンス 2087 2088 13.1 サービスコール一覧 2089 2090 (1) タスク管理機能 2451 2091 2452 2092 ER ercd = act_tsk(ID tskid) … … 2460 2100 ER ercd = ref_tsk(ID tskid, T_RTSK *pk_rtsk) 2461 2101 2462 (2) ã¿ã¹ã¯ä»å±åææ©è½2102 (2) タスク付属同期機能 2463 2103 2464 2104 ER ercd = slp_tsk(void) … … 2473 2113 ER ercd = dly_tsk(RELTIM dlytim) 2474 2114 2475 (3) ã¿ã¹ã¯ä¾å¤å¦çæ©è½2115 (3) タスク例外処理機能 2476 2116 2477 2117 ER ercd = ras_tex(ID tskid, TEXPTN rasptn) … … 2482 2122 ER ercd = ref_tex(ID tskid, T_RTEX *pk_rtex) 2483 2123 2484 (4) åæã»éä¿¡æ©è½2124 (4) 同期・通信機能 2485 2125 2486 2126 ER ercd = sig_sem(ID semid) … … 2533 2173 ER ercd = ref_mbx(ID mbxid, T_RMBX *pk_rmbx) 2534 2174 2535 (5) ã¡ã¢ãªãã¼ã«ç®¡çæ©è½2175 (5) メモリプール管理機能 2536 2176 2537 2177 ER ercd = get_mpf(ID mpfid, void **p_blk) … … 2542 2182 ER ercd = ref_mpf(ID mpfid, T_RMPF *pk_rmpf) 2543 2183 2544 (6) æé管çæ©è½2184 (6) 時間管理機能 2545 2185 2546 2186 ER ercd = get_tim(SYSTIM *p_systim) … … 2557 2197 ER ercd = ref_alm(ID almid, T_RALM *pk_ralm) 2558 2198 2559 (7) ã·ã¹ãã ç¶æ 2560 管çæ©è½ 2199 (7) システム状態管理機能 2561 2200 2562 2201 ER ercd = rot_rdq(PRI tskpri) … … 2577 2216 ER ercd = ext_ker(void) 2578 2217 2579 (8) å²è¾¼ã¿ç®¡çæ©è½2218 (8) 割込み管理機能 2580 2219 2581 2220 ER ercd = dis_int(INTNO intno) … … 2584 2223 ER ercd = get_ipm(PRI *p_intpri) 2585 2224 2586 (9) CPU ä¾å¤ç®¡çæ©è½2225 (9) CPU例外管理機能 2587 2226 2588 2227 bool_t stat = xsns_dpn(void *p_excinf) 2589 2228 bool_t stat = xsns_xpn(void *p_excinf) 2590 2229 2591 13.2 éçAPIä¸è¦§2592 2593 (1) ã¿ã¹ã¯ç®¡çæ©è½2230 13.2 静的API一覧 2231 2232 (1) タスク管理機能 2594 2233 2595 2234 CRE_TSK(ID tskid, { ATR tskatr, intptr_t exinf, TASK task, 2596 2235 PRI itskpri, SIZE stksz, STK_T *stk }) 2597 2236 2598 (3) ã¿ã¹ã¯ä¾å¤å¦çæ©è½2237 (3) タスク例外処理機能 2599 2238 2600 2239 DEF_TEX(ID tskid, { ATR texatr, TEXRTN texrtn }) 2601 2240 2602 (4) åæã»éä¿¡æ©è½2241 (4) 同期・通信機能 2603 2242 2604 2243 CRE_SEM(ID semid, { ATR sematr, uint_t isemcnt, uint_t maxsem }) … … 2608 2247 CRE_MBX(ID mbxid, { ATR mbxatr, PRI maxmpri, void *mprihd }) 2609 2248 2610 (5) ã¡ã¢ãªãã¼ã«ç®¡çæ©è½2249 (5) メモリプール管理機能 2611 2250 2612 2251 CRE_MPF(ID mpfid, { ATR mpfatr, uint_t blkcnt, uint_t blksz, 2613 2252 MPF_T *mpf, void *mpfmb }) 2614 2253 2615 (6) æé管çæ©è½2254 (6) 時間管理機能 2616 2255 2617 2256 CRE_CYC(ID cycid, { ATR cycatr, intptr_t exinf, CYCHDR cychdr, … … 2619 2258 CRE_ALM(ID almid, { ATR almatr, intptr_t exinf, ALMHDR almhdr }) 2620 2259 2621 (8) å²è¾¼ã¿ç®¡çæ©è½2260 (8) 割込み管理機能 2622 2261 2623 2262 CFG_INT(INTNO intno, { ATR intatr, PRI intpri }) … … 2625 2264 DEF_INH(INHNO inhno, { ATR inhatr, INTHDR inthdr }) 2626 2265 2627 (9) CPU ä¾å¤ç®¡çæ©è½2266 (9) CPU例外管理機能 2628 2267 2629 2268 DEF_EXC(EXCNO excno, { ATR excatr, EXCHDR exchdr }) 2630 2269 2631 (10) ã·ã¹ãã æ§æ管çæ©è½2270 (10) システム構成管理機能 2632 2271 2633 2272 DEF_ICS({ SIZE istksz, STK_T *istk }) … … 2635 2274 ATT_TER({ ATR teratr, intptr_t exinf, TERRTN terrtn }) 2636 2275 2637 13.3 ãã¼ã¸ã§ã³å±¥æ´ 2638 2639 2006å¹´10æ29æ¥ Release 1.A.0 æåã®ãªãªã¼ã¹ 2640 2007å¹´2æ20æ¥ Release 1.A.1 2641 2007å¹´2æ20æ¥ Release 1.A.2 2642 2007å¹´7æ12æ¥ Release 1.B.0 ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ãæ°ãã¼ã¸ã§ã³ã« 2643 2007å¹´7æ12æ¥ Release 1.B.1 ã©ã¤ã»ã³ã¹æ¡ä»¶ã®å 2644 ¥ãæã 2645 2007å¹´7æ16æ¥ Release 1.B.2 2646 2007å¹´7æ21æ¥ Release 1.B.3 ãã£ã¬ã¯ããªæ§æã®å¤æ´ 2647 2007å¹´8æ20æ¥ Release 1.B.4 æ¡å¼µããã±ã¼ã¸ã®è¿½å 2648 2007å¹´10æ16æ¥ Release 1.B.5 2649 2007å¹´11æ15æ¥ Release 1.0.0 æ£å¼çã®ãªãªã¼ã¹ 2650 2007å¹´12æ23æ¥ Release 1.1.0 2651 2008å¹´3æ19æ¥ Release 1.2.0 2652 2008å¹´3æ21æ¥ Release 1.2.1 2653 2008å¹´4æ12æ¥ Release 1.3.0 ä¸è¬å 2654 ¬éã«åãã¦ã®æçµä¿®æ£ 2655 2008å¹´5æ13æ¥ Release 1.3.1 æåã®ä¸è¬å 2656 ¬éç 2657 2008å¹´8æ21æ¥ Release 1.3.2 2658 2009å¹´5æ11æ¥ Release 1.4.0 2659 2010å¹´6æ28æ¥ Release 1.5.0 æ¡å¼µããã±ã¼ã¸ãä¸è¬å 2660 ¬é 2661 2010å¹´8æ1æ¥ Release 1.6.0 cfg-1.6ã«å¯¾å¿ 2662 2011å¹´5æ8æ¥ Release 1.7.0 åççææ©è½æ¡å¼µããã±ã¼ã¸çã®è¿½å 2663 2012å¹´12æ26æ¥ Release 1.8.0 2664 2014å¹´1æ6æ¥ Release 1.9.0 ã¡ãã»ã¼ã¸ãããã¡æ©è½æ¡å¼µã®è¿½å 2665 2014å¹´11æ17æ¥ Release 1.9.1 2666 2015å¹´5æ30æ¥ Release 1.9.2 2667 2017å¹´4æ29æ¥ Release 1.9.3 2668 2669 ä»¥ä¸ 2276 13.3 バージョン履歴 2277 2278 2006年10月29日 Release 1.A.0 最初のリリース 2279 2007年2月20日 Release 1.A.1 2280 2007年2月20日 Release 1.A.2 2281 2007年7月12日 Release 1.B.0 コンフィギュレータを新バージョンに 2282 2007年7月12日 Release 1.B.1 ライセンス条件の入れ換え 2283 2007年7月16日 Release 1.B.2 2284 2007年7月21日 Release 1.B.3 ディレクトリ構成の変更 2285 2007年8月20日 Release 1.B.4 拡張パッケージの追加 2286 2007年10月16日 Release 1.B.5 2287 2007年11月15日 Release 1.0.0 正式版のリリース 2288 2007年12月23日 Release 1.1.0 2289 2008年3月19日 Release 1.2.0 2290 2008年3月21日 Release 1.2.1 2291 2008年4月12日 Release 1.3.0 一般公開に向けての最終修正 2292 2008年5月13日 Release 1.3.1 最初の一般公開版 2293 2008年8月21日 Release 1.3.2 2294 2009年5月11日 Release 1.4.0 2295 2010年6月28日 Release 1.5.0 拡張パッケージを一般公開 2296 2010年8月1日 Release 1.6.0 cfg-1.6に対応 2297 2011年5月8日 Release 1.7.0 動的生成機能拡張パッケージ等の追加 2298 2012年12月26日 Release 1.8.0 2299 2014年1月6日 Release 1.9.0 メッセージバッファ機能拡張の追加 2300 2014年11月17日 Release 1.9.1 2301 2015年5月30日 Release 1.9.2 2302 2017年4月29日 Release 1.9.3 2303 2304 以上 -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.