Changeset 315 for rubycfg_asp/trunk/asp_dcre/kernel/interrupt.h
- Timestamp:
- Jul 23, 2017, 2:29:40 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
rubycfg_asp/trunk/asp_dcre/kernel/interrupt.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=UTF-8
r313 r315 9 9 * Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 * 11 * ä¸è¨èä½æ¨©è 12 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 13 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 14 * å¤ã»åé 15 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 16 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 17 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 18 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 19 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 20 * ç¨ã§ããå½¢ã§åé 21 å¸ããå ´åã«ã¯ï¼åé 22 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 23 * è 24 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 25 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 26 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 27 * ç¨ã§ããªãå½¢ã§åé 28 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 29 * ã¨ï¼ 30 * (a) åé 31 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 32 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 33 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 34 * (b) åé 35 å¸ã®å½¢æ 36 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 37 * å ±åãããã¨ï¼ 38 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 39 * 害ãããï¼ä¸è¨èä½æ¨©è 40 ããã³TOPPERSããã¸ã§ã¯ããå 41 責ãããã¨ï¼ 42 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 43 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 44 ããã³TOPPERSããã¸ã§ã¯ãã 45 * å 46 責ãããã¨ï¼ 11 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 12 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 13 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 16 * スコード中に含まれていること. 17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 18 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 19 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 20 * の無保証規定を掲載すること. 21 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 22 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 23 * と. 24 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 25 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 26 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 27 * 報告すること. 28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 29 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 30 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 31 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 32 * 免責すること. 47 33 * 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 * ã®è²¬ä»»ãè² ããªãï¼ 34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 54 39 * 55 40 * @(#) $Id$ … … 57 42 58 43 /* 59 * å²è¾¼ã¿ç®¡çæ©è½44 * 割込み管理機能 60 45 */ 61 46 … … 66 51 67 52 /* 68 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³åæåãããã¯53 * 割込みサービスルーチン初期化ブロック 69 54 */ 70 55 typedef struct isr_initialization_block { 71 ATR isratr; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³å±æ§ */ 72 intptr_t exinf; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®æ¡å¼µæ 73 å ± */ 74 INTNO intno; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ãç»é²ããå²è¾¼ã¿çªå· */ 75 QUEUE *p_isr_queue; /* ç»é²å 76 å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ãã¥ã¼ã®çªå° */ 77 ISR isr; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®å 78 é çªå° */ 79 PRI isrpri; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³åªå 80 度 */ 56 ATR isratr; /* 割込みサービスルーチン属性 */ 57 intptr_t exinf; /* 割込みサービスルーチンの拡張情報 */ 58 INTNO intno; /* 割込みサービスルーチンを登録する割込み番号 */ 59 QUEUE *p_isr_queue; /* 登録先割込みサービスルーチンキューの番地 */ 60 ISR isr; /* 割込みサービスルーチンの先頭番地 */ 61 PRI isrpri; /* 割込みサービスルーチン優先度 */ 81 62 } ISRINIB; 82 63 83 64 /* 84 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ç®¡çãããã¯65 * 割込みサービスルーチン管理ブロック 85 66 */ 86 67 typedef struct isr_control_block { 87 QUEUE isr_queue; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³å¼åºããã¥ã¼*/88 const ISRINIB *p_isrinib; /* åæåãããã¯ã¸ã®ãã¤ã³ã¿*/68 QUEUE isr_queue; /* 割込みサービスルーチン呼出しキュー */ 69 const ISRINIB *p_isrinib; /* 初期化ブロックへのポインタ */ 89 70 } ISRCB; 90 71 91 72 /* 92 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³å¼åºããã¥ã¼ãæ¤ç´¢ããããã®ãã¼ã¿æ§é73 * 割込みサービスルーチン呼出しキューを検索するためのデータ構造 93 74 */ 94 75 typedef struct { 95 INTNO intno; /* å²è¾¼ã¿çªå·*/96 QUEUE *p_isr_queue; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³å¼åºããã¥ã¼*/76 INTNO intno; /* 割込み番号 */ 77 QUEUE *p_isr_queue; /* 割込みサービスルーチン呼出しキュー */ 97 78 } ISR_ENTRY; 98 79 99 80 /* 100 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ãã¥ã¼ã®ã¨ã³ããªæ°ï¼kernel_cfg.cï¼81 * 割込みサービスルーチンキューのエントリ数(kernel_cfg.c) 101 82 */ 102 83 extern const uint_t tnum_isr_queue; 103 84 104 85 /* 105 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ãã¥ã¼ãªã¹ãï¼kernel_cfg.cï¼86 * 割込みサービスルーチンキューリスト(kernel_cfg.c) 106 87 */ 107 88 extern const ISR_ENTRY isr_queue_list[]; 108 89 109 90 /* 110 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ãã¥ã¼ã®ã¨ãªã¢ï¼kernel_cfg.cï¼91 * 割込みサービスルーチンキューのエリア(kernel_cfg.c) 111 92 */ 112 93 extern QUEUE isr_queue_table[]; 113 94 114 95 /* 115 * 使ç¨ãã¦ããªãå²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ç®¡çãããã¯ã®ãªã¹ã96 * 使用していない割込みサービスルーチン管理ブロックのリスト 116 97 */ 117 98 extern QUEUE free_isrcb; 118 99 119 100 /* 120 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³IDã®æ大å¤ï¼kernel_cfg.cï¼101 * 割込みサービスルーチンIDの最大値(kernel_cfg.c) 121 102 * 122 * éçã«çæãããå²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã¯IDçªå·ãæããªãããï¼123 * tmax_isrid ã¯åçã«çæãããå²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®IDçªå·ã®æ大å¤124 * ã§ããï¼éçã«çæãããå²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®æ°ã¯ï¼tnum_sisrã«ä¿125 * æããï¼103 * 静的に生成される割込みサービスルーチンはID番号を持たないため, 104 * tmax_isridは動的に生成される割込みサービスルーチンのID番号の最大値 105 * である.静的に生成される割込みサービスルーチンの数は,tnum_sisrに保 106 * 持する. 126 107 */ 127 108 extern const ID tmax_isrid; … … 129 110 130 111 /* 131 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³åæåãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼112 * 割込みサービスルーチン初期化ブロックのエリア(kernel_cfg.c) 132 113 */ 133 114 extern const ISRINIB sisrinib_table[]; … … 135 116 136 117 /* 137 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ç®¡çãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼118 * 割込みサービスルーチン管理ブロックのエリア(kernel_cfg.c) 138 119 */ 139 120 extern ISRCB isrcb_table[]; 140 121 141 122 /* 142 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ç®¡çãããã¯ããå²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³IDãå143 * ãåºãããã®ãã¯ã123 * 割込みサービスルーチン管理ブロックから割込みサービスルーチンIDを取 124 * り出すためのマクロ 144 125 */ 145 126 #define ISRID(p_isrcb) ((ID)(((p_isrcb) - isrcb_table) \ … … 147 128 148 129 /* 149 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³æ©è½ã®åæå130 * 割込みサービスルーチン機能の初期化 150 131 */ 151 132 extern void initialize_isr(void); 152 133 153 134 /* 154 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®å¼åºã135 * 割込みサービスルーチンの呼出し 155 136 */ 156 137 extern void call_isr(QUEUE *p_isr_queue); … … 159 140 160 141 /* 161 * å²è¾¼ã¿ãã³ãã©åæåãããã¯142 * 割込みハンドラ初期化ブロック 162 143 */ 163 144 typedef struct interrupt_handler_initialization_block { 164 INHNO inhno; /* å²è¾¼ã¿ãã³ãã©çªå· */ 165 ATR inhatr; /* å²è¾¼ã¿ãã³ãã©å±æ§ */ 166 FP int_entry; /* å²è¾¼ã¿ãã³ãã©ã®åºå 167 ¥å£å¦çã®çªå° */ 145 INHNO inhno; /* 割込みハンドラ番号 */ 146 ATR inhatr; /* 割込みハンドラ属性 */ 147 FP int_entry; /* 割込みハンドラの出入口処理の番地 */ 168 148 } INHINIB; 169 149 170 150 /* 171 * å²è¾¼ã¿è¦æ±ã©ã¤ã³åæåãããã¯151 * 割込み要求ライン初期化ブロック 172 152 */ 173 153 typedef struct interrupt_request_initialization_block { 174 INTNO intno; /* å²è¾¼ã¿çªå· */ 175 ATR intatr; /* å²è¾¼ã¿å±æ§ */ 176 PRI intpri; /* å²è¾¼ã¿åªå 177 度 */ 154 INTNO intno; /* 割込み番号 */ 155 ATR intatr; /* 割込み属性 */ 156 PRI intpri; /* 割込み優先度 */ 178 157 } INTINIB; 179 158 180 159 /* 181 * å²è¾¼ã¿ãã³ãã©çªå·ã®æ°ï¼kernel_cfg.cï¼160 * 割込みハンドラ番号の数(kernel_cfg.c) 182 161 */ 183 162 extern const uint_t tnum_inhno; 184 163 185 164 /* 186 * å²è¾¼ã¿ãã³ãã©åæåãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼165 * 割込みハンドラ初期化ブロックのエリア(kernel_cfg.c) 187 166 */ 188 167 extern const INHINIB inhinib_table[]; 189 168 190 169 /* 191 * å²è¾¼ã¿è¦æ±ã©ã¤ã³ã®æ°ï¼kernel_cfg.cï¼170 * 割込み要求ラインの数(kernel_cfg.c) 192 171 */ 193 172 extern const uint_t tnum_intno; 194 173 195 174 /* 196 * å²è¾¼ã¿è¦æ±ã©ã¤ã³åæåãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼175 * 割込み要求ライン初期化ブロックのエリア(kernel_cfg.c) 197 176 */ 198 177 extern const INTINIB intinib_table[]; … … 201 180 202 181 /* 203 * å²è¾¼ã¿ç®¡çæ©è½ã®åæå182 * 割込み管理機能の初期化 204 183 */ 205 184 extern void initialize_interrupt(void); -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.