Changeset 167 for UsbWattMeter/trunk/asp_dcre/kernel/time_event.h
- Timestamp:
- Mar 8, 2016, 8:37:45 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
UsbWattMeter/trunk/asp_dcre/kernel/time_event.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 37 * 38 * {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨ 39 * æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI 40 * ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF 41 * AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC» 42 * ÌÓCðíÈ¢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 * 免責すること. 33 * 34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 43 39 * 44 40 * $Id$ … … 46 42 47 43 /* 48 * ^CCxgÇW 49 [ 44 * タイムイベント管理モジュール 50 45 */ 51 46 … … 54 49 55 50 /* 56 * Cxg¶Ìf[^^Ìè`57 * 58 * EVTTIM ÍCRELTIMƵÄwèÅ«éÍÍæèàL¢ÍÍð\»Å«éKv59 * ª éDÊITRON4.0dlÌX^_[hvt@CÅÍCRELTIMª16rb60 * gÈãÅȯêÎÈçÈ¢½ßCEVTTIMÍ17rbgÈãŠ鱯ªKv61 * Å éD»Ì½ßC16rbgÉÈéêª éuint_tÅÍÈCulong_tÉ62 * è`µÄ¢éD51 * イベント発生時刻のデータ型の定義 52 * 53 * EVTTIMは,RELTIMとして指定できる範囲よりも広い範囲を表現できる必要 54 * がある.μITRON4.0仕様のスタンダードプロファイルでは,RELTIMが16ビッ 55 * ト以上でなければならないため,EVTTIMは17ビット以上であることが必要 56 * である.そのため,16ビットになる場合があるuint_tではなく,ulong_tに 57 * 定義している. 63 58 */ 64 59 typedef ulong_t EVTTIM; 65 60 66 61 /* 67 * ^CCxgubNÌf[^^Ìè`68 */ 69 typedef void (*CBACK)(void *); /* R[obNÖÌ^*/62 * タイムイベントブロックのデータ型の定義 63 */ 64 typedef void (*CBACK)(void *); /* コールバック関数の型 */ 70 65 71 66 typedef struct time_event_block { 72 uint_t index; /* ^CCxgq[vÅÌÊu*/73 CBACK callback; /* R[obNÖ*/74 void *arg; /* R[obNÖÖn·ø*/67 uint_t index; /* タイムイベントヒープ中での位置 */ 68 CBACK callback; /* コールバック関数 */ 69 void *arg; /* コールバック関数へ渡す引数 */ 75 70 } TMEVTB; 76 71 77 72 /* 78 * ^CCxgq[vÌm[hÌf[^^Ìè`73 * タイムイベントヒープ中のノードのデータ型の定義 79 74 */ 80 75 typedef struct time_event_node { 81 EVTTIM time; /* Cxg¶*/82 TMEVTB *p_tmevtb; /* ηé^CCxgubN*/76 EVTTIM time; /* イベント発生時刻 */ 77 TMEVTB *p_tmevtb; /* 対応するタイムイベントブロック */ 83 78 } TMEVTN; 84 79 85 80 /* 86 * ^CCxgq[vikernel_cfg.cj81 * タイムイベントヒープ(kernel_cfg.c) 87 82 */ 88 83 extern TMEVTN tmevt_heap[]; 89 84 90 85 /* 91 * »ÝÌVXeiPÊ: 1~bj92 * 93 * VXeN®É0Éú»³êCÈ~C^CeBbNª³êéxÉ94 * P²ÉÁ·éD86 * 現在のシステム時刻(単位: 1ミリ秒) 87 * 88 * システム起動時に0に初期化され,以降,タイムティックが供給される度に 89 * 単調に増加する. 95 90 */ 96 91 extern EVTTIM current_time; 97 92 98 93 /* 99 * ^CCxgq[vÅLøÈŬÌVXeiPÊ: 1~bj94 * タイムイベントヒープ中で有効な最小のシステム時刻(単位: 1ミリ秒) 100 95 */ 101 96 extern EVTTIM min_time; 102 97 103 98 /* 104 * Ì^CeBbNÌVXeiPÊ: 1~bj99 * 次のタイムティックのシステム時刻(単位: 1ミリ秒) 105 100 */ 106 101 extern EVTTIM next_time; 107 102 108 103 /* 109 * VXeÏZpÏiPÊ: 1/TIC_DENO~bj 110 * 111 * Ì^CeBbNÌVXeÌºÊ 112 ð¦·iãÊ 113 Ínext_timejD 114 * TIC_DENOª1ÌÍCºÊ 115 ÍíÉ0Å é½ßC±ÌÏÍKvÈ¢D 104 * システム時刻積算用変数(単位: 1/TIC_DENOミリ秒) 105 * 106 * 次のタイムティックのシステム時刻の下位桁を示す(上位桁はnext_time). 107 * TIC_DENOが1の時は,下位桁は常に0であるため,この変数は必要ない. 116 108 */ 117 109 #if TIC_DENO != 1U … … 120 112 121 113 /* 122 * ÎÔÌîiPÊ: 1~bj123 * 124 * Ì^CeBbNÌVXeðØèã°½DTIC_DENOª1Ì125 * ÍCnext_timeÉêv·éD114 * 相対時間の基準時刻(単位: 1ミリ秒) 115 * 116 * 次のタイムティックのシステム時刻を切り上げた時刻.TIC_DENOが1の時 117 * は,next_timeに一致する. 126 118 */ 127 119 #if TIC_DENO == 1U … … 132 124 133 125 /* 134 * ^CCxgq[vÌÅãÌgpÌæÌCfbNX135 * 136 * ^CCxgq[vÉo^³êÄ¢é^CCxgÌÉêv·éD126 * タイムイベントヒープの最後の使用領域のインデックス 127 * 128 * タイムイベントヒープに登録されているタイムイベントの数に一致する. 137 129 */ 138 130 extern uint_t last_index; 139 131 140 132 /* 141 * ^CCxgÇW 142 [Ìú» 133 * タイムイベント管理モジュールの初期化 143 134 */ 144 135 extern void initialize_tmevt(void); 145 136 146 137 /* 147 * ^CCxgÌ}üÊuÌTõ138 * タイムイベントの挿入位置の探索 148 139 */ 149 140 extern uint_t tmevt_up(uint_t index, EVTTIM time); … … 151 142 152 143 /* 153 * ^CCxgq[vÖÌo^Æí144 * タイムイベントヒープへの登録と削除 154 145 */ 155 146 extern void tmevtb_insert(TMEVTB *p_tmevtb, EVTTIM time); … … 157 148 158 149 /* 159 * ^CCxgubNÌo^iÎÔwèj160 * 161 * time Åwèµ½ÎÔªoßµ½ãÉCargðøÆµÄcallbackªÄ162 * Ño³ê鿤ÉCp_tmevtbÅwèµ½^CCxgubNðo^·163 * éD150 * タイムイベントブロックの登録(相対時間指定) 151 * 152 * timeで指定した相対時間が経過した後に,argを引数としてcallbackが呼 153 * び出されるように,p_tmevtbで指定したタイムイベントブロックを登録す 154 * る. 164 155 * 165 156 */ … … 175 166 176 167 /* 177 * ^CCxgubNÌo^iCxg¶wèj178 * 179 * time Åwèµ½Cxg¶ÉCargðøÆµÄcallbackªÄÑo180 * ³ê鿤ÉCp_tmevtbÅwèµ½^CCxgubNðo^·éD168 * タイムイベントブロックの登録(イベント発生時刻指定) 169 * 170 * timeで指定したイベント発生時刻に,argを引数としてcallbackが呼び出 171 * されるように,p_tmevtbで指定したタイムイベントブロックを登録する. 181 172 */ 182 173 Inline void … … 189 180 190 181 /* 191 * ^CCxgubNÌo^ð182 * タイムイベントブロックの登録解除 192 183 */ 193 184 Inline void … … 198 189 199 190 /* 200 * ^CCxgÜÅÌcèÔÌvZ191 * タイムイベントまでの残り時間の計算 201 192 */ 202 193 extern RELTIM tmevt_lefttim(TMEVTB *p_tmevtb); 203 194 204 195 /* 205 * ^CeBbNÌ196 * タイムティックの供給 206 197 */ 207 198 extern void signal_time(void); -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.