Changeset 315 for rubycfg_asp/trunk/asp_dcre/kernel/pridataq.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/pridataq.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 * åªå 60 度ãã¼ã¿ãã¥ã¼æ©è½ 44 * 優先度データキュー機能 61 45 */ 62 46 … … 67 51 68 52 /* 69 * åªå 70 度ãã¼ã¿ç®¡çããã㯠53 * 優先度データ管理ブロック 71 54 */ 72 55 typedef struct pridata_management_block PDQMB; 73 56 74 57 struct pridata_management_block { 75 PDQMB *p_next; /* 次ã®ãã¼ã¿ */ 76 intptr_t data; /* ãã¼ã¿æ¬ä½ */ 77 PRI datapri; /* ãã¼ã¿åªå 78 度 */ 58 PDQMB *p_next; /* 次のデータ */ 59 intptr_t data; /* データ本体 */ 60 PRI datapri; /* データ優先度 */ 79 61 }; 80 62 81 63 /* 82 * åªå 83 度ãã¼ã¿ãã¥ã¼åæåããã㯠64 * 優先度データキュー初期化ブロック 84 65 * 85 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®åæåãããã¯ã®å 86 ±éé¨å 87 * ï¼WOBJINIBï¼ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼ 88 * æåã®ãã£ã¼ã«ããå 89 ±éã«ãªã£ã¦ããï¼ 66 * この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分 67 * (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので, 68 * 最初のフィールドが共通になっている. 90 69 */ 91 70 typedef struct pridataq_initialization_block { 92 ATR pdqatr; /* åªå 93 度ãã¼ã¿ãã¥ã¼å±æ§ */ 94 uint_t pdqcnt; /* åªå 95 度ãã¼ã¿ãã¥ã¼ã®å®¹é */ 96 PRI maxdpri; /* ãã¼ã¿åªå 97 度ã®æå¤§å¤ */ 98 PDQMB *p_pdqmb; /* åªå 99 度ãã¼ã¿ãã¥ã¼ç®¡çé åã®å 100 é çªå° */ 71 ATR pdqatr; /* 優先度データキュー属性 */ 72 uint_t pdqcnt; /* 優先度データキューの容量 */ 73 PRI maxdpri; /* データ優先度の最大値 */ 74 PDQMB *p_pdqmb; /* 優先度データキュー管理領域の先頭番地 */ 101 75 } PDQINIB; 102 76 103 77 /* 104 * åªå 105 度ãã¼ã¿ãã¥ã¼ç®¡çããã㯠78 * 優先度データキュー管理ブロック 106 79 * 107 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®ç®¡çãããã¯ã®å 108 ±éé¨åï¼WOBJCBï¼ 109 * ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼æåã®2ã¤ã® 110 * ãã£ã¼ã«ããå 111 ±éã«ãªã£ã¦ããï¼ 80 * この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB) 81 * を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの 82 * フィールドが共通になっている. 112 83 */ 113 84 typedef struct pridataq_control_block { 114 QUEUE swait_queue; /* åªå 115 度ãã¼ã¿ãã¥ã¼éä¿¡å¾ 116 ã¡ãã¥ã¼ */ 117 const PDQINIB *p_pdqinib; /* åæåãããã¯ã¸ã®ãã¤ã³ã¿ */ 118 QUEUE rwait_queue; /* åªå 119 度ãã¼ã¿ãã¥ã¼åä¿¡å¾ 120 ã¡ãã¥ã¼ */ 121 uint_t count; /* åªå 122 度ãã¼ã¿ãã¥ã¼ä¸ã®ãã¼ã¿ã®æ° */ 123 PDQMB *p_head; /* æåã®ãã¼ã¿ */ 124 uint_t unused; /* æªä½¿ç¨ãã¼ã¿ç®¡çãããã¯ã®å 125 é */ 126 PDQMB *p_freelist; /* æªå²å½ã¦ãã¼ã¿ç®¡çãããã¯ã®ãªã¹ã */ 85 QUEUE swait_queue; /* 優先度データキュー送信待ちキュー */ 86 const PDQINIB *p_pdqinib; /* 初期化ブロックへのポインタ */ 87 QUEUE rwait_queue; /* 優先度データキュー受信待ちキュー */ 88 uint_t count; /* 優先度データキュー中のデータの数 */ 89 PDQMB *p_head; /* 最初のデータ */ 90 uint_t unused; /* 未使用データ管理ブロックの先頭 */ 91 PDQMB *p_freelist; /* 未割当てデータ管理ブロックのリスト */ 127 92 } PDQCB; 128 93 129 94 /* 130 * åªå 131 度ãã¼ã¿ãã¥ã¼å¾ 132 ã¡æ 133 å ±ãããã¯ã®å®ç¾© 95 * 優先度データキュー待ち情報ブロックの定義 134 96 * 135 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®å¾ 136 ã¡æ 137 å ±ãããã¯ã®å 138 ±éé¨å 139 * ï¼WINFO_WOBJï¼ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼ 140 * æåã®2ã¤ã®ãã£ã¼ã«ããå 141 ±éã«ãªã£ã¦ããï¼ 142 * åªå 143 度ãã¼ã¿ãã¥ã¼ã¸ã®éä¿¡å¾ 144 ã¡ã¨åªå 145 度ãã¼ã¿ãã¥ã¼ããã®åä¿¡å¾ 146 ã¡ã§ï¼ 147 * åãå¾ 148 ã¡æ 149 å ±ãããã¯ã使ãï¼ 97 * この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分 98 * (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので, 99 * 最初の2つのフィールドが共通になっている. 100 * 優先度データキューへの送信待ちと優先度データキューからの受信待ちで, 101 * 同じ待ち情報ブロックを使う. 150 102 */ 151 103 typedef struct pridataq_waiting_information { 152 WINFO winfo; /* æ¨æºã®å¾ 153 ã¡æ 154 å ±ããã㯠*/ 155 PDQCB *p_pdqcb; /* å¾ 156 ã£ã¦ããåªå 157 度ãã¼ã¿ãã¥ã¼ã®ç®¡çãããã¯*/ 158 intptr_t data; /* éåä¿¡ãã¼ã¿ */ 159 PRI datapri; /* ãã¼ã¿åªå 160 度 */ 104 WINFO winfo; /* 標準の待ち情報ブロック */ 105 PDQCB *p_pdqcb; /* 待っている優先度データキューの管理ブロック*/ 106 intptr_t data; /* 送受信データ */ 107 PRI datapri; /* データ優先度 */ 161 108 } WINFO_PDQ; 162 109 163 110 /* 164 * 使ç¨ãã¦ããªãåªå 165 度ãã¼ã¿ãã¥ã¼ç®¡çãããã¯ã®ãªã¹ã 111 * 使用していない優先度データキュー管理ブロックのリスト 166 112 */ 167 113 extern QUEUE free_pdqcb; 168 114 169 115 /* 170 * åªå 171 度ãã¼ã¿ãã¥ã¼IDã®æ大å¤ï¼kernel_cfg.cï¼ 116 * 優先度データキューIDの最大値(kernel_cfg.c) 172 117 */ 173 118 extern const ID tmax_pdqid; … … 175 120 176 121 /* 177 * åªå 178 度ãã¼ã¿ãã¥ã¼åæåãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼ 122 * 優先度データキュー初期化ブロックのエリア(kernel_cfg.c) 179 123 */ 180 124 extern const PDQINIB pdqinib_table[]; … … 182 126 183 127 /* 184 * åªå 185 度ãã¼ã¿ãã¥ã¼ç®¡çãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼ 128 * 優先度データキュー管理ブロックのエリア(kernel_cfg.c) 186 129 */ 187 130 extern PDQCB pdqcb_table[]; 188 131 189 132 /* 190 * åªå 191 度ãã¼ã¿ãã¥ã¼ç®¡çãããã¯ããåªå 192 度ãã¼ã¿ãã¥ã¼IDãåãåºãã 193 * ãã®ãã¯ã 133 * 優先度データキュー管理ブロックから優先度データキューIDを取り出すた 134 * めのマクロ 194 135 */ 195 136 #define PDQID(p_pdqcb) ((ID)(((p_pdqcb) - pdqcb_table) + TMIN_PDQID)) 196 137 197 138 /* 198 * åªå 199 度ãã¼ã¿ãã¥ã¼æ©è½ã®åæå 139 * 優先度データキュー機能の初期化 200 140 */ 201 141 extern void initialize_pridataq(void); 202 142 203 143 /* 204 * åªå 205 度ãã¼ã¿ãã¥ã¼ç®¡çé åã¸ã®ãã¼ã¿ã®æ ¼ç´ 144 * 優先度データキュー管理領域へのデータの格納 206 145 */ 207 146 extern void enqueue_pridata(PDQCB *p_pdqcb, intptr_t data, PRI datapri); 208 147 209 148 /* 210 * åªå 211 度ãã¼ã¿ãã¥ã¼ç®¡çé åããã®ãã¼ã¿ã®ååºã 149 * 優先度データキュー管理領域からのデータの取出し 212 150 */ 213 151 extern void dequeue_pridata(PDQCB *p_pdqcb, intptr_t *p_data, PRI *p_datapri); 214 152 215 153 /* 216 * åªå 217 度ãã¼ã¿ãã¥ã¼ã¸ã®ãã¼ã¿éä¿¡ 154 * 優先度データキューへのデータ送信 218 155 */ 219 156 extern bool_t send_pridata(PDQCB *p_pdqcb, intptr_t data, … … 221 158 222 159 /* 223 * åªå 224 度ãã¼ã¿ãã¥ã¼ããã®ãã¼ã¿åä¿¡ 160 * 優先度データキューからのデータ受信 225 161 */ 226 162 extern bool_t receive_pridata(PDQCB *p_pdqcb, intptr_t *p_data, -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.