Changeset 167 for UsbWattMeter/trunk/asp_dcre/kernel/dataqueue.h
- Timestamp:
- Mar 8, 2016, 8:37:45 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
UsbWattMeter/trunk/asp_dcre/kernel/dataqueue.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 * f[^L 49 [@\ 44 * データキュー機能 50 45 */ 51 46 … … 56 51 57 52 /* 58 * f[^ÇubN53 * データ管理ブロック 59 54 */ 60 55 typedef struct data_management_block { 61 intptr_t data; /* f[^{Ì*/56 intptr_t data; /* データ本体 */ 62 57 } DTQMB; 63 58 64 59 /* 65 * f[^L 66 [ú»ubN 60 * データキュー初期化ブロック 67 61 * 68 * ±Ì\¢ÌÍC¯úEÊMIuWFNgÌú»ubN̤ʪ69 * iWOBJINIBjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC70 * ÅÌtB[hª¤ÊÉÈÁÄ¢éD62 * この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分 63 * (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので, 64 * 最初のフィールドが共通になっている. 71 65 */ 72 66 typedef struct dataqueue_initialization_block { 73 ATR dtqatr; /* f[^L 74 [®« */ 75 uint_t dtqcnt; /* f[^L 76 [ÌeÊ */ 77 DTQMB *p_dtqmb; /* f[^L 78 [ÇÌæÌæªÔn */ 67 ATR dtqatr; /* データキュー属性 */ 68 uint_t dtqcnt; /* データキューの容量 */ 69 DTQMB *p_dtqmb; /* データキュー管理領域の先頭番地 */ 79 70 } DTQINIB; 80 71 81 72 /* 82 * f[^L 83 [ÇubN 73 * データキュー管理ブロック 84 74 * 85 * ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÇubN̤ʪiWOBJCBj86 * ðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅCÅÌ2ÂÌ87 * tB[hª¤ÊÉÈÁÄ¢éD75 * この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB) 76 * を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの 77 * フィールドが共通になっている. 88 78 */ 89 79 typedef struct dataqueue_control_block { 90 QUEUE swait_queue; /* f[^L 91 [MÒ¿L 92 [ */ 93 const DTQINIB *p_dtqinib; /* ú»ubNÖÌ|C^ */ 94 QUEUE rwait_queue; /* f[^L 95 [óMÒ¿L 96 [ */ 97 uint_t count; /* f[^L 98 [Ìf[^Ì */ 99 uint_t head; /* ÅÌf[^Ìi[ê */ 100 uint_t tail; /* ÅãÌf[^Ìi[êÌ */ 80 QUEUE swait_queue; /* データキュー送信待ちキュー */ 81 const DTQINIB *p_dtqinib; /* 初期化ブロックへのポインタ */ 82 QUEUE rwait_queue; /* データキュー受信待ちキュー */ 83 uint_t count; /* データキュー中のデータの数 */ 84 uint_t head; /* 最初のデータの格納場所 */ 85 uint_t tail; /* 最後のデータの格納場所の次 */ 101 86 } DTQCB; 102 87 103 88 /* 104 * f[^L 105 [Ò¿îñubNÌè` 89 * データキュー待ち情報ブロックの定義 106 90 * 107 * ±Ì\¢ÌÍC¯úEÊMIuWFNgÌÒ¿îñubN̤ʪ 108 * iWINFO_WOBJjðg£iIuWFNgwü¾êÌp³Éjµ½àÌÅC 109 * ÅÌ2ÂÌtB[hª¤ÊÉÈÁÄ¢éD 110 * f[^L 111 [ÖÌMÒ¿Æf[^L 112 [©çÌóMÒ¿ÅC¯¶Ò¿î 113 * ñubNðg¤D 91 * この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分 92 * (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので, 93 * 最初の2つのフィールドが共通になっている. 94 * データキューへの送信待ちとデータキューからの受信待ちで,同じ待ち情 95 * 報ブロックを使う. 114 96 */ 115 97 typedef struct dataqueue_waiting_information { 116 WINFO winfo; /* WÌÒ¿îñubN */ 117 DTQCB *p_dtqcb; /* ÒÁÄ¢éf[^L 118 [ÌÇubN */ 119 intptr_t data; /* óMf[^ */ 98 WINFO winfo; /* 標準の待ち情報ブロック */ 99 DTQCB *p_dtqcb; /* 待っているデータキューの管理ブロック */ 100 intptr_t data; /* 送受信データ */ 120 101 } WINFO_DTQ; 121 102 122 103 /* 123 * gpµÄ¢È¢f[^L 124 [ÇubNÌXg 104 * 使用していないデータキュー管理ブロックのリスト 125 105 */ 126 106 extern QUEUE free_dtqcb; 127 107 128 108 /* 129 * f[^L 130 [IDÌÅålikernel_cfg.cj 109 * データキューIDの最大値(kernel_cfg.c) 131 110 */ 132 111 extern const ID tmax_dtqid; … … 134 113 135 114 /* 136 * f[^L 137 [ú»ubNÌGAikernel_cfg.cj 115 * データキュー初期化ブロックのエリア(kernel_cfg.c) 138 116 */ 139 117 extern const DTQINIB dtqinib_table[]; … … 141 119 142 120 /* 143 * f[^L 144 [ÇubNÌGAikernel_cfg.cj 121 * データキュー管理ブロックのエリア(kernel_cfg.c) 145 122 */ 146 123 extern DTQCB dtqcb_table[]; 147 124 148 125 /* 149 * f[^L 150 [ÇubN©çf[^L 151 [IDðæèo·½ßÌ}N 126 * データキュー管理ブロックからデータキューIDを取り出すためのマクロ 152 127 */ 153 128 #define DTQID(p_dtqcb) ((ID)(((p_dtqcb) - dtqcb_table) + TMIN_DTQID)) 154 129 155 130 /* 156 * f[^L 157 [@\Ìú» 131 * データキュー機能の初期化 158 132 */ 159 133 extern void initialize_dataqueue(void); 160 134 161 135 /* 162 * f[^L 163 [ÇÌæÖÌf[^Ìi[ 136 * データキュー管理領域へのデータの格納 164 137 */ 165 138 extern void enqueue_data(DTQCB *p_dtqcb, intptr_t data); 166 139 167 140 /* 168 * f[^L 169 [ÇÌæÖÌf[^̧i[ 141 * データキュー管理領域へのデータの強制格納 170 142 */ 171 143 extern void force_enqueue_data(DTQCB *p_dtqcb, intptr_t data); 172 144 173 145 /* 174 * f[^L 175 [ÇÌæ©çÌf[^Ìæoµ 146 * データキュー管理領域からのデータの取出し 176 147 */ 177 148 extern void dequeue_data(DTQCB *p_dtqcb, intptr_t *p_data); 178 149 179 150 /* 180 * f[^L 181 [ÖÌf[^M 151 * データキューへのデータ送信 182 152 */ 183 153 extern bool_t send_data(DTQCB *p_dtqcb, intptr_t data, bool_t *p_dspreq); 184 154 185 155 /* 186 * f[^L 187 [ÖÌf[^§M 156 * データキューへのデータ強制送信 188 157 */ 189 158 extern bool_t force_send_data(DTQCB *p_dtqcb, intptr_t data); 190 159 191 160 /* 192 * f[^L 193 [©çÌf[^óM 161 * データキューからのデータ受信 194 162 */ 195 163 extern bool_t receive_data(DTQCB *p_dtqcb, intptr_t *p_data, -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.