Changeset 167 for UsbWattMeter/trunk/asp_dcre/kernel/pridataq.h
- Timestamp:
- Mar 8, 2016, 8:37:45 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
UsbWattMeter/trunk/asp_dcre/kernel/pridataq.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=SHIFT_JIS
r164 r167 9 9 * Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 * 11 * ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 12 * Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 13 * ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 14 * (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 15 * \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 16 * XR[hÉÜÜêĢ鱯D 17 * (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 18 * pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 19 gip 20 * Ò}j 21 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 22 * Ì³ÛØKèðfÚ·é±ÆD 23 * (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 24 * pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 25 * ÆD 26 * (a) Äzzɺ¤hL 27 gipÒ}j 28 AÈÇjÉCãLÌ 29 * ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 30 * (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 31 * ñ·é±ÆD 32 * (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 33 * Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 34 * ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 35 * RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 36 * ÆÓ·é±ÆD 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 * 免責すること. 37 33 * 38 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨39 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI40 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF41 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»42 * ÌÓCðíÈ¢D34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 43 39 * 44 40 * @(#) $Id$ … … 46 42 47 43 /* 48 * Dæxf[^L 49 [@\ 44 * 優先度データキュー機能 50 45 */ 51 46 … … 56 51 57 52 /* 58 * Dæxf[^ÇubN53 * 優先度データ管理ブロック 59 54 */ 60 55 typedef struct pridata_management_block PDQMB; 61 56 62 57 struct pridata_management_block { 63 PDQMB *p_next; /* Ìf[^*/64 intptr_t data; /* f[^{Ì*/65 PRI datapri; /* f[^Dæx*/58 PDQMB *p_next; /* 次のデータ */ 59 intptr_t data; /* データ本体 */ 60 PRI datapri; /* データ優先度 */ 66 61 }; 67 62 68 63 /* 69 * Dæxf[^L 70 [ú»ubN 64 * 優先度データキュー初期化ブロック 71 65 * 72 * ±Ì\¢ÌÍC¯úEÊMIuWFNgÌú»ubN̤ʪ73 * iWOBJINIBjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC74 * ÅÌtB[hª¤ÊÉÈÁÄ¢éD66 * この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分 67 * (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので, 68 * 最初のフィールドが共通になっている. 75 69 */ 76 70 typedef struct pridataq_initialization_block { 77 ATR pdqatr; /* Dæxf[^L 78 [®« */ 79 uint_t pdqcnt; /* Dæxf[^L 80 [ÌeÊ */ 81 PRI maxdpri; /* f[^DæxÌÅål */ 82 PDQMB *p_pdqmb; /* Dæxf[^L 83 [ÇÌæÌæªÔn */ 71 ATR pdqatr; /* 優先度データキュー属性 */ 72 uint_t pdqcnt; /* 優先度データキューの容量 */ 73 PRI maxdpri; /* データ優先度の最大値 */ 74 PDQMB *p_pdqmb; /* 優先度データキュー管理領域の先頭番地 */ 84 75 } PDQINIB; 85 76 86 77 /* 87 * Dæxf[^L 88 [ÇubN 78 * 優先度データキュー管理ブロック 89 79 * 90 * ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÇubN̤ʪiWOBJCBj91 * ðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅCÅÌ2ÂÌ92 * tB[hª¤ÊÉÈÁÄ¢éD80 * この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB) 81 * を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの 82 * フィールドが共通になっている. 93 83 */ 94 84 typedef struct pridataq_control_block { 95 QUEUE swait_queue; /* Dæxf[^L 96 [MÒ¿L 97 [ */ 98 const PDQINIB *p_pdqinib; /* ú»ubNÖÌ|C^ */ 99 QUEUE rwait_queue; /* Dæxf[^L 100 [óMÒ¿L 101 [ */ 102 uint_t count; /* Dæxf[^L 103 [Ìf[^Ì */ 104 PDQMB *p_head; /* ÅÌf[^ */ 105 uint_t unused; /* ¢gpf[^ÇubNÌæª */ 106 PDQMB *p_freelist; /* ¢Äf[^ÇubNÌXg */ 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; /* 未割当てデータ管理ブロックのリスト */ 107 92 } PDQCB; 108 93 109 94 /* 110 * Dæxf[^L 111 [Ò¿îñubNÌè` 95 * 優先度データキュー待ち情報ブロックの定義 112 96 * 113 * ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÒ¿îñubN̤ʪ 114 * iWINFO_WOBJjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC 115 * ÅÌ2ÂÌtB[hª¤ÊÉÈÁÄ¢éD 116 * Dæxf[^L 117 [ÖÌMÒ¿ÆDæxf[^L 118 [©çÌóMÒ¿ÅC 119 * ¯¶Ò¿îñubNðg¤D 97 * この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分 98 * (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので, 99 * 最初の2つのフィールドが共通になっている. 100 * 優先度データキューへの送信待ちと優先度データキューからの受信待ちで, 101 * 同じ待ち情報ブロックを使う. 120 102 */ 121 103 typedef struct pridataq_waiting_information { 122 WINFO winfo; /* WÌÒ¿îñubN */ 123 PDQCB *p_pdqcb; /* ÒÁÄ¢éDæxf[^L 124 [ÌÇubN*/ 125 intptr_t data; /* óMf[^ */ 126 PRI datapri; /* f[^Dæx */ 104 WINFO winfo; /* 標準の待ち情報ブロック */ 105 PDQCB *p_pdqcb; /* 待っている優先度データキューの管理ブロック*/ 106 intptr_t data; /* 送受信データ */ 107 PRI datapri; /* データ優先度 */ 127 108 } WINFO_PDQ; 128 109 129 110 /* 130 * gpµÄ¢È¢Dæxf[^L 131 [ÇubNÌXg 111 * 使用していない優先度データキュー管理ブロックのリスト 132 112 */ 133 113 extern QUEUE free_pdqcb; 134 114 135 115 /* 136 * Dæxf[^L 137 [IDÌÅålikernel_cfg.cj 116 * 優先度データキューIDの最大値(kernel_cfg.c) 138 117 */ 139 118 extern const ID tmax_pdqid; … … 141 120 142 121 /* 143 * Dæxf[^L 144 [ú»ubNÌGAikernel_cfg.cj 122 * 優先度データキュー初期化ブロックのエリア(kernel_cfg.c) 145 123 */ 146 124 extern const PDQINIB pdqinib_table[]; … … 148 126 149 127 /* 150 * Dæxf[^L 151 [ÇubNÌGAikernel_cfg.cj 128 * 優先度データキュー管理ブロックのエリア(kernel_cfg.c) 152 129 */ 153 130 extern PDQCB pdqcb_table[]; 154 131 155 132 /* 156 * Dæxf[^L 157 [ÇubN©çDæxf[^L 158 [IDðæèo·½ 159 * ßÌ}N 133 * 優先度データキュー管理ブロックから優先度データキューIDを取り出すた 134 * めのマクロ 160 135 */ 161 136 #define PDQID(p_pdqcb) ((ID)(((p_pdqcb) - pdqcb_table) + TMIN_PDQID)) 162 137 163 138 /* 164 * Dæxf[^L 165 [@\Ìú» 139 * 優先度データキュー機能の初期化 166 140 */ 167 141 extern void initialize_pridataq(void); 168 142 169 143 /* 170 * Dæxf[^L 171 [ÇÌæÖÌf[^Ìi[ 144 * 優先度データキュー管理領域へのデータの格納 172 145 */ 173 146 extern void enqueue_pridata(PDQCB *p_pdqcb, intptr_t data, PRI datapri); 174 147 175 148 /* 176 * Dæxf[^L 177 [ÇÌæ©çÌf[^Ìæoµ 149 * 優先度データキュー管理領域からのデータの取出し 178 150 */ 179 151 extern void dequeue_pridata(PDQCB *p_pdqcb, intptr_t *p_data, PRI *p_datapri); 180 152 181 153 /* 182 * Dæxf[^L 183 [ÖÌf[^M 154 * 優先度データキューへのデータ送信 184 155 */ 185 156 extern bool_t send_pridata(PDQCB *p_pdqcb, intptr_t data, … … 187 158 188 159 /* 189 * Dæxf[^L 190 [©çÌf[^óM 160 * 優先度データキューからのデータ受信 191 161 */ 192 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.