Changeset 315 for rubycfg_asp/trunk/asp_dcre/kernel/time_event.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/time_event.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 責ãããã¨ï¼ 47 * 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 * ã®è²¬ä»»ãè² ããªãï¼ 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 * の責任を負わない. 54 39 * 55 40 * $Id$ … … 57 42 58 43 /* 59 * ã¿ã¤ã ã¤ãã³ã管çã¢ã¸ã¥ã¼ã«44 * タイムイベント管理モジュール 60 45 */ 61 46 … … 64 49 65 50 /* 66 * ã¤ãã³ãçºçæå»ã®ãã¼ã¿åã®å®ç¾© 67 * 68 * EVTTIMã¯ï¼RELTIMã¨ãã¦æå®ã§ããç¯å²ãããåºãç¯å²ã表ç¾ã§ããå¿ 69 è¦ 70 * ãããï¼Î¼ITRON4.0ä»æ§ã®ã¹ã¿ã³ãã¼ããããã¡ã¤ã«ã§ã¯ï¼RELTIMã16ãã 71 * ã以ä¸ã§ãªããã°ãªããªãããï¼EVTTIMã¯17ããã以ä¸ã§ãããã¨ãå¿ 72 è¦ 73 * ã§ããï¼ãã®ããï¼16ãããã«ãªãå ´åãããuint_tã§ã¯ãªãï¼ulong_tã« 74 * å®ç¾©ãã¦ããï¼ 51 * イベント発生時刻のデータ型の定義 52 * 53 * EVTTIMは,RELTIMとして指定できる範囲よりも広い範囲を表現できる必要 54 * がある.μITRON4.0仕様のスタンダードプロファイルでは,RELTIMが16ビッ 55 * ト以上でなければならないため,EVTTIMは17ビット以上であることが必要 56 * である.そのため,16ビットになる場合があるuint_tではなく,ulong_tに 57 * 定義している. 75 58 */ 76 59 typedef ulong_t EVTTIM; 77 60 78 61 /* 79 * ã¿ã¤ã ã¤ãã³ããããã¯ã®ãã¼ã¿åã®å®ç¾©80 */ 81 typedef void (*CBACK)(void *); /* ã³ã¼ã«ããã¯é¢æ°ã®å*/62 * タイムイベントブロックのデータ型の定義 63 */ 64 typedef void (*CBACK)(void *); /* コールバック関数の型 */ 82 65 83 66 typedef struct time_event_block { 84 uint_t index; /* ã¿ã¤ã ã¤ãã³ããã¼ãä¸ã§ã®ä½ç½®*/85 CBACK callback; /* ã³ã¼ã«ããã¯é¢æ°*/86 void *arg; /* ã³ã¼ã«ããã¯é¢æ°ã¸æ¸¡ãå¼æ°*/67 uint_t index; /* タイムイベントヒープ中での位置 */ 68 CBACK callback; /* コールバック関数 */ 69 void *arg; /* コールバック関数へ渡す引数 */ 87 70 } TMEVTB; 88 71 89 72 /* 90 * ã¿ã¤ã ã¤ãã³ããã¼ãä¸ã®ãã¼ãã®ãã¼ã¿åã®å®ç¾©73 * タイムイベントヒープ中のノードのデータ型の定義 91 74 */ 92 75 typedef struct time_event_node { 93 EVTTIM time; /* ã¤ãã³ãçºçæå»*/94 TMEVTB *p_tmevtb; /* 対å¿ããã¿ã¤ã ã¤ãã³ããããã¯*/76 EVTTIM time; /* イベント発生時刻 */ 77 TMEVTB *p_tmevtb; /* 対応するタイムイベントブロック */ 95 78 } TMEVTN; 96 79 97 80 /* 98 * ã¿ã¤ã ã¤ãã³ããã¼ãï¼kernel_cfg.cï¼81 * タイムイベントヒープ(kernel_cfg.c) 99 82 */ 100 83 extern TMEVTN tmevt_heap[]; 101 84 102 85 /* 103 * ç¾å¨ã®ã·ã¹ãã æå»ï¼åä½: 1ããªç§ï¼104 * 105 * ã·ã¹ãã èµ·åæã«0ã«åæåããï¼ä»¥éï¼ã¿ã¤ã ãã£ãã¯ãä¾çµ¦ããã度ã«106 * å調ã«å¢å ããï¼86 * 現在のシステム時刻(単位: 1ミリ秒) 87 * 88 * システム起動時に0に初期化され,以降,タイムティックが供給される度に 89 * 単調に増加する. 107 90 */ 108 91 extern EVTTIM current_time; 109 92 110 93 /* 111 * ã¿ã¤ã ã¤ãã³ããã¼ãä¸ã§æå¹ãªæå°ã®ã·ã¹ãã æå»ï¼åä½: 1ããªç§ï¼94 * タイムイベントヒープ中で有効な最小のシステム時刻(単位: 1ミリ秒) 112 95 */ 113 96 extern EVTTIM min_time; 114 97 115 98 /* 116 * 次ã®ã¿ã¤ã ãã£ãã¯ã®ã·ã¹ãã æå»ï¼åä½: 1ããªç§ï¼99 * 次のタイムティックのシステム時刻(単位: 1ミリ秒) 117 100 */ 118 101 extern EVTTIM next_time; 119 102 120 103 /* 121 * ã·ã¹ãã æå»ç©ç®ç¨å¤æ°ï¼åä½: 1/TIC_DENOããªç§ï¼ 122 * 123 * 次ã®ã¿ã¤ã ãã£ãã¯ã®ã·ã¹ãã æå»ã®ä¸ä½æ¡ã示ãï¼ä¸ä½æ¡ã¯next_timeï¼ï¼ 124 * TIC_DENOã1ã®æã¯ï¼ä¸ä½æ¡ã¯å¸¸ã«0ã§ããããï¼ãã®å¤æ°ã¯å¿ 125 è¦ãªãï¼ 104 * システム時刻積算用変数(単位: 1/TIC_DENOミリ秒) 105 * 106 * 次のタイムティックのシステム時刻の下位桁を示す(上位桁はnext_time). 107 * TIC_DENOが1の時は,下位桁は常に0であるため,この変数は必要ない. 126 108 */ 127 109 #if TIC_DENO != 1U … … 130 112 131 113 /* 132 * ç¸å¯¾æéã®åºæºæå»ï¼åä½: 1ããªç§ï¼133 * 134 * 次ã®ã¿ã¤ã ãã£ãã¯ã®ã·ã¹ãã æå»ãåãä¸ããæå»ï¼TIC_DENOã1ã®æ135 * ã¯ï¼next_timeã«ä¸è´ããï¼114 * 相対時間の基準時刻(単位: 1ミリ秒) 115 * 116 * 次のタイムティックのシステム時刻を切り上げた時刻.TIC_DENOが1の時 117 * は,next_timeに一致する. 136 118 */ 137 119 #if TIC_DENO == 1U … … 142 124 143 125 /* 144 * ã¿ã¤ã ã¤ãã³ããã¼ãã®æå¾ã®ä½¿ç¨é åã®ã¤ã³ããã¯ã¹145 * 146 * ã¿ã¤ã ã¤ãã³ããã¼ãã«ç»é²ããã¦ããã¿ã¤ã ã¤ãã³ãã®æ°ã«ä¸è´ããï¼126 * タイムイベントヒープの最後の使用領域のインデックス 127 * 128 * タイムイベントヒープに登録されているタイムイベントの数に一致する. 147 129 */ 148 130 extern uint_t last_index; 149 131 150 132 /* 151 * ã¿ã¤ã ã¤ãã³ã管çã¢ã¸ã¥ã¼ã«ã®åæå133 * タイムイベント管理モジュールの初期化 152 134 */ 153 135 extern void initialize_tmevt(void); 154 136 155 137 /* 156 * ã¿ã¤ã ã¤ãã³ãã®æ¿å 157 ¥ä½ç½®ã®æ¢ç´¢ 138 * タイムイベントの挿入位置の探索 158 139 */ 159 140 extern uint_t tmevt_up(uint_t index, EVTTIM time); … … 161 142 162 143 /* 163 * ã¿ã¤ã ã¤ãã³ããã¼ãã¸ã®ç»é²ã¨åé¤144 * タイムイベントヒープへの登録と削除 164 145 */ 165 146 extern void tmevtb_insert(TMEVTB *p_tmevtb, EVTTIM time); … … 167 148 168 149 /* 169 * ã¿ã¤ã ã¤ãã³ããããã¯ã®ç»é²ï¼ç¸å¯¾æéæå®ï¼170 * 171 * time ã§æå®ããç¸å¯¾æéãçµéããå¾ã«ï¼argãå¼æ°ã¨ãã¦callbackãå¼172 * ã³åºãããããã«ï¼p_tmevtbã§æå®ããã¿ã¤ã ã¤ãã³ããããã¯ãç»é²ã173 * ãï¼150 * タイムイベントブロックの登録(相対時間指定) 151 * 152 * timeで指定した相対時間が経過した後に,argを引数としてcallbackが呼 153 * び出されるように,p_tmevtbで指定したタイムイベントブロックを登録す 154 * る. 174 155 * 175 156 */ … … 185 166 186 167 /* 187 * ã¿ã¤ã ã¤ãã³ããããã¯ã®ç»é²ï¼ã¤ãã³ãçºçæå»æå®ï¼188 * 189 * time ã§æå®ããã¤ãã³ãçºçæå»ã«ï¼argãå¼æ°ã¨ãã¦callbackãå¼ã³åº190 * ãããããã«ï¼p_tmevtbã§æå®ããã¿ã¤ã ã¤ãã³ããããã¯ãç»é²ããï¼168 * タイムイベントブロックの登録(イベント発生時刻指定) 169 * 170 * timeで指定したイベント発生時刻に,argを引数としてcallbackが呼び出 171 * されるように,p_tmevtbで指定したタイムイベントブロックを登録する. 191 172 */ 192 173 Inline void … … 199 180 200 181 /* 201 * ã¿ã¤ã ã¤ãã³ããããã¯ã®ç»é²è§£é¤182 * タイムイベントブロックの登録解除 202 183 */ 203 184 Inline void … … 208 189 209 190 /* 210 * ã¿ã¤ã ã¤ãã³ãã¾ã§ã®æ®ãæéã®è¨ç®191 * タイムイベントまでの残り時間の計算 211 192 */ 212 193 extern RELTIM tmevt_lefttim(TMEVTB *p_tmevtb); 213 194 214 195 /* 215 * ã¿ã¤ã ãã£ãã¯ã®ä¾çµ¦196 * タイムティックの供給 216 197 */ 217 198 extern void signal_time(void); -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.