Changeset 315 for rubycfg_asp/trunk/asp_dcre/kernel/time_event.c
- 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.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 * ã¿ã¤ã ã¤ãã³ã管çã¢ã¸ã¥ã¼ã«44 * タイムイベント管理モジュール 60 45 */ 61 46 … … 64 49 65 50 /* 66 * ã¿ã¤ã ã¤ãã³ããã¼ãæä½ãã¯ã67 */ 68 #define PARENT(index) ((index) >> 1) /* 親ãã¼ããæ±ãã*/69 #define LCHILD(index) ((index) << 1) /* å·¦ã®åãã¼ããæ±ãã*/51 * タイムイベントヒープ操作マクロ 52 */ 53 #define PARENT(index) ((index) >> 1) /* 親ノードを求める */ 54 #define LCHILD(index) ((index) << 1) /* 左の子ノードを求める */ 70 55 #define TMEVT_NODE(index) (tmevt_heap[(index) - 1]) 71 56 72 57 /* 73 * ã¤ãã³ãçºçæå»æ¯è¼ãã¯ã74 * 75 * ã¤ãã³ãçºçæå»ã¯ï¼min_timeããã®ç¸å¯¾å¤ã§æ¯è¼ããï¼ããªãã¡ï¼76 * min_time ãæå°å¤ï¼æãè¿ãæå»ï¼ï¼mit_time-1ãæ大å¤ï¼æãé ãæå»ï¼77 * ã¨ã¿ãªãã¦æ¯è¼ããï¼58 * イベント発生時刻比較マクロ 59 * 60 * イベント発生時刻は,min_timeからの相対値で比較する.すなわち, 61 * min_timeを最小値(最も近い時刻),mit_time-1が最大値(最も遠い時刻) 62 * とみなして比較する. 78 63 */ 79 64 #define EVTTIM_LT(t1, t2) (((t1) - min_time) < ((t2) - min_time)) … … 83 68 84 69 /* 85 * ç¾å¨ã®ã·ã¹ãã æå»ï¼åä½: 1ããªç§ï¼86 * 87 * å³å¯ã«ã¯ï¼åã®ã¿ã¤ã ãã£ãã¯ã®ã·ã¹ãã æå»ï¼70 * 現在のシステム時刻(単位: 1ミリ秒) 71 * 72 * 厳密には,前のタイムティックのシステム時刻. 88 73 */ 89 74 EVTTIM current_time; 90 75 91 76 /* 92 * ã¿ã¤ã ã¤ãã³ããã¼ãä¸ã§æå¹ãªæå°ã®ã·ã¹ãã æå»ï¼åä½: 1ããªç§ï¼77 * タイムイベントヒープ中で有効な最小のシステム時刻(単位: 1ミリ秒) 93 78 */ 94 79 EVTTIM min_time; 95 80 96 81 /* 97 * 次ã®ã¿ã¤ã ãã£ãã¯ã®ã·ã¹ãã æå»ï¼åä½: 1ããªç§ï¼82 * 次のタイムティックのシステム時刻(単位: 1ミリ秒) 98 83 */ 99 84 EVTTIM next_time; 100 85 101 86 /* 102 * ã·ã¹ãã æå»ç©ç®ç¨å¤æ°ï¼åä½: 1/TIC_DENOããªç§ï¼87 * システム時刻積算用変数(単位: 1/TIC_DENOミリ秒) 103 88 */ 104 89 #if TIC_DENO != 1U … … 107 92 108 93 /* 109 * ã¿ã¤ã ã¤ãã³ããã¼ãã®æå¾ã®ä½¿ç¨é åã®ã¤ã³ããã¯ã¹94 * タイムイベントヒープの最後の使用領域のインデックス 110 95 */ 111 96 uint_t last_index; 112 97 113 98 /* 114 * ã¿ã¤ãã¢ã¸ã¥ã¼ã«ã®åæå99 * タイマモジュールの初期化 115 100 */ 116 101 void … … 129 114 130 115 /* 131 * ã¿ã¤ã ã¤ãã³ãã®æ¿å 132 ¥ä½ç½®ãä¸åãã«æ¢ç´¢ 133 * 134 * æå»timeã«çºçããã¿ã¤ã ã¤ãã³ããæ¿å 135 ¥ãããã¼ãã空ããããã«ï¼ 136 * ãã¼ãã®ä¸ã«åãã£ã¦ç©ºãã¼ãã移åãããï¼ç§»ååã®ç©ºãã¼ãã®ä½ç½®ã 137 * indexã«æ¸¡ãã¨ï¼ç§»åå¾ã®ç©ºãã¼ãã®ä½ç½®ï¼ããªãã¡æ¿å 138 ¥ä½ç½®ï¼ãè¿ãï¼ 116 * タイムイベントの挿入位置を上向きに探索 117 * 118 * 時刻timeに発生するタイムイベントを挿入するノードを空けるために, 119 * ヒープの上に向かって空ノードを移動させる.移動前の空ノードの位置を 120 * indexに渡すと,移動後の空ノードの位置(すなわち挿入位置)を返す. 139 121 */ 140 122 #ifdef TOPPERS_tmeup … … 147 129 while (index > 1) { 148 130 /* 149 * 親ãã¼ãã®ã¤ãã³ãçºçæå»ã®æ¹ãæ©ãï¼ã¾ãã¯åãï¼ãªãã°ï¼ 150 * indexãæ¿å 151 ¥ä½ç½®ãªã®ã§ã«ã¼ããæããï¼ 131 * 親ノードのイベント発生時刻の方が早い(または同じ)ならば, 132 * indexが挿入位置なのでループを抜ける. 152 133 */ 153 134 parent = PARENT(index); … … 157 138 158 139 /* 159 * 親ãã¼ããindexã®ä½ç½®ã«ç§»åãããï¼140 * 親ノードをindexの位置に移動させる. 160 141 */ 161 142 TMEVT_NODE(index) = TMEVT_NODE(parent); … … 163 144 164 145 /* 165 * index ã親ãã¼ãã®ä½ç½®ã«æ´æ°ï¼146 * indexを親ノードの位置に更新. 166 147 */ 167 148 index = parent; … … 173 154 174 155 /* 175 * ã¿ã¤ã ã¤ãã³ãã®æ¿å 176 ¥ä½ç½®ãä¸åãã«æ¢ç´¢ 177 * 178 * æå»timeã«çºçããã¿ã¤ã ã¤ãã³ããæ¿å 179 ¥ãããã¼ãã空ããããã«ï¼ 180 * ãã¼ãã®ä¸ã«åãã£ã¦ç©ºãã¼ãã移åãããï¼ç§»ååã®ç©ºãã¼ãã®ä½ç½®ã 181 * indexã«æ¸¡ãã¨ï¼ç§»åå¾ã®ç©ºãã¼ãã®ä½ç½®ï¼ããªãã¡æ¿å 182 ¥ä½ç½®ï¼ãè¿ãï¼ 156 * タイムイベントの挿入位置を下向きに探索 157 * 158 * 時刻timeに発生するタイムイベントを挿入するノードを空けるために, 159 * ヒープの下に向かって空ノードを移動させる.移動前の空ノードの位置を 160 * indexに渡すと,移動後の空ノードの位置(すなわち挿入位置)を返す. 183 161 */ 184 162 #ifdef TOPPERS_tmedown … … 191 169 while ((child = LCHILD(index)) <= last_index) { 192 170 /* 193 * å·¦å³ã®åãã¼ãã®ã¤ãã³ãçºçæå»ãæ¯è¼ãï¼æ©ãæ¹ã®åãã¼ã194 * ã®ä½ç½®ãchildã«è¨å®ããï¼ä»¥ä¸ã®åãã¼ãã¯ï¼ããã§é¸ã°ããæ¹195 * ã®åãã¼ãã®ãã¨ï¼171 * 左右の子ノードのイベント発生時刻を比較し,早い方の子ノード 172 * の位置をchildに設定する.以下の子ノードは,ここで選ばれた方 173 * の子ノードのこと. 196 174 */ 197 175 if (child + 1 <= last_index … … 202 180 203 181 /* 204 * åãã¼ãã®ã¤ãã³ãçºçæå»ã®æ¹ãé 205 ãï¼ã¾ãã¯åãï¼ãªãã°ï¼ 206 * indexãæ¿å 207 ¥ä½ç½®ãªã®ã§ã«ã¼ããæããï¼ 182 * 子ノードのイベント発生時刻の方が遅い(または同じ)ならば, 183 * indexが挿入位置なのでループを抜ける. 208 184 */ 209 185 if (EVTTIM_LE(time, TMEVT_NODE(child).time)) { … … 212 188 213 189 /* 214 * åãã¼ããindexã®ä½ç½®ã«ç§»åãããï¼190 * 子ノードをindexの位置に移動させる. 215 191 */ 216 192 TMEVT_NODE(index) = TMEVT_NODE(child); … … 218 194 219 195 /* 220 * index ãåãã¼ãã®ä½ç½®ã«æ´æ°ï¼196 * indexを子ノードの位置に更新. 221 197 */ 222 198 index = child; … … 228 204 229 205 /* 230 * ã¿ã¤ã ã¤ãã³ããã¼ãã¸ã®ç»é²231 * 232 * p_tmevtb ã§æå®ããã¿ã¤ã ã¤ãã³ããããã¯ãï¼timeã§æå®ããæéãçµ233 * éå¾ã«ã¤ãã³ããçºçããããã«ï¼ã¿ã¤ã ã¤ãã³ããã¼ãã«ç»é²ããï¼206 * タイムイベントヒープへの登録 207 * 208 * p_tmevtbで指定したタイムイベントブロックを,timeで指定した時間が経 209 * 過後にイベントが発生するように,タイムイベントヒープに登録する. 234 210 */ 235 211 #ifdef TOPPERS_tmeins … … 241 217 242 218 /* 243 * last_indexãã¤ã³ã¯ãªã¡ã³ããï¼ããããä¸ã«æ¿å 244 ¥ä½ç½®ãæ¢ãï¼ 219 * last_indexをインクリメントし,そこから上に挿入位置を探す. 245 220 */ 246 221 index = tmevt_up(++last_index, time); 247 222 248 223 /* 249 * ã¿ã¤ã ã¤ãã³ããindexã®ä½ç½®ã«æ¿å 250 ¥ããï¼ 224 * タイムイベントをindexの位置に挿入する. 251 225 */ 252 226 TMEVT_NODE(index).time = time; … … 258 232 259 233 /* 260 * ã¿ã¤ã ã¤ãã³ããã¼ãããã®åé¤234 * タイムイベントヒープからの削除 261 235 */ 262 236 #ifdef TOPPERS_tmedel … … 270 244 271 245 /* 272 * åé¤ã«ããã¿ã¤ã ã¤ãã³ããã¼ãã空ã«ãªãå ´åã¯ä½ãããªãï¼246 * 削除によりタイムイベントヒープが空になる場合は何もしない. 273 247 */ 274 248 if (--last_index == 0) { … … 277 251 278 252 /* 279 * åé¤ãããã¼ãã®ä½ç½®ã«æå¾ã®ãã¼ãï¼last_index+1ã®ä½ç½®ã®ãã¼ãï¼ 280 * ãæ¿å 281 ¥ãï¼ãããé©åãªä½ç½®ã¸ç§»åãããï¼å®éã«ã¯ï¼æå¾ã®ãã¼ã 282 * ãå®éã«æ¿å 283 ¥ããã®ã§ã¯ãªãï¼åé¤ãããã¼ãã®ä½ç½®ã空ãã¼ãã«ãª 284 * ãã®ã§ï¼æå¾ã®ãã¼ããæ¿å 285 ¥ãã¹ãä½ç½®ã¸åãã¦ç©ºãã¼ãã移åãã 286 * ãï¼ 287 * æå¾ã®ãã¼ãã®ã¤ãã³ãçºçæå»ãï¼åé¤ãããã¼ãã®è¦ªãã¼ãã®ã¤ 288 * ãã³ãçºçæå»ããåã®å ´åã«ã¯ï¼ä¸ã«åãã£ã¦æ¿å 289 ¥ä½ç½®ãæ¢ãï¼ã 290 * ãã§ãªãå ´åã«ã¯ï¼ä¸ã«åãã£ã¦æ¢ãï¼ 253 * 削除したノードの位置に最後のノード(last_index+1の位置のノード) 254 * を挿入し,それを適切な位置へ移動させる.実際には,最後のノード 255 * を実際に挿入するのではなく,削除したノードの位置が空ノードにな 256 * るので,最後のノードを挿入すべき位置へ向けて空ノードを移動させ 257 * る. 258 * 最後のノードのイベント発生時刻が,削除したノードの親ノードのイ 259 * ベント発生時刻より前の場合には,上に向かって挿入位置を探す.そ 260 * うでない場合には,下に向かって探す. 291 261 */ 292 262 if (index > 1 && EVTTIM_LT(event_time, 293 263 TMEVT_NODE(parent = PARENT(index)).time)) { 294 264 /* 295 * 親ãã¼ããindexã®ä½ç½®ã«ç§»åãããï¼265 * 親ノードをindexの位置に移動させる. 296 266 */ 297 267 TMEVT_NODE(index) = TMEVT_NODE(parent); … … 299 269 300 270 /* 301 * åé¤ãããã¼ãã®è¦ªãã¼ãããä¸ã«åãã£ã¦æ¿å 302 ¥ä½ç½®ãæ¢ãï¼ 271 * 削除したノードの親ノードから上に向かって挿入位置を探す. 303 272 */ 304 273 index = tmevt_up(parent, event_time); … … 306 275 else { 307 276 /* 308 * åé¤ãããã¼ãããä¸ã«åãã£ã¦æ¿å 309 ¥ä½ç½®ãæ¢ãï¼ 277 * 削除したノードから下に向かって挿入位置を探す. 310 278 */ 311 279 index = tmevt_down(index, event_time); … … 313 281 314 282 /* 315 * æå¾ã®ãã¼ããindexã®ä½ç½®ã«æ¿å 316 ¥ããï¼ 283 * 最後のノードをindexの位置に挿入する. 317 284 */ 318 285 TMEVT_NODE(index) = TMEVT_NODE(last_index + 1); … … 323 290 324 291 /* 325 * ã¿ã¤ã ã¤ãã³ããã¼ãã®å 326 é ã®ãã¼ãã®åé¤ 292 * タイムイベントヒープの先頭のノードの削除 327 293 */ 328 294 Inline void … … 333 299 334 300 /* 335 * åé¤ã«ããã¿ã¤ã ã¤ãã³ããã¼ãã空ã«ãªãå ´åã¯ä½ãããªãï¼301 * 削除によりタイムイベントヒープが空になる場合は何もしない. 336 302 */ 337 303 if (--last_index == 0) { … … 340 306 341 307 /* 342 * ã«ã¼ããã¼ãã«æå¾ã®ãã¼ãï¼last_index + 1 ã®ä½ç½®ã®ãã¼ãï¼ã 343 * æ¿å 344 ¥ãï¼ãããé©åãªä½ç½®ã¸ç§»åãããï¼å®éã«ã¯ï¼æå¾ã®ãã¼ãã 345 * å®éã«æ¿å 346 ¥ããã®ã§ã¯ãªãï¼ã«ã¼ããã¼ãã空ãã¼ãã«ãªãã®ã§ï¼æ 347 * å¾ã®ãã¼ããæ¿å 348 ¥ãã¹ãä½ç½®ã¸åãã¦ç©ºãã¼ãã移åãããï¼ 308 * ルートノードに最後のノード(last_index + 1 の位置のノード)を 309 * 挿入し,それを適切な位置へ移動させる.実際には,最後のノードを 310 * 実際に挿入するのではなく,ルートノードが空ノードになるので,最 311 * 後のノードを挿入すべき位置へ向けて空ノードを移動させる. 349 312 */ 350 313 index = tmevt_down(1, event_time); 351 314 352 315 /* 353 * æå¾ã®ãã¼ããindexã®ä½ç½®ã«æ¿å 354 ¥ããï¼ 316 * 最後のノードをindexの位置に挿入する. 355 317 */ 356 318 TMEVT_NODE(index) = TMEVT_NODE(last_index + 1); … … 359 321 360 322 /* 361 * ã¿ã¤ã ã¤ãã³ãã¾ã§ã®æ®ãæéã®è¨ç®323 * タイムイベントまでの残り時間の計算 362 324 */ 363 325 #ifdef TOPPERS_tmeltim … … 371 333 if (EVTTIM_LE(time, next_time)) { 372 334 /* 373 * 次ã®ã¿ã¤ã ãã£ãã¯ã§å¦çãããå ´åã«ã¯0ãè¿ãï¼335 * 次のタイムティックで処理される場合には0を返す. 374 336 */ 375 337 return(0U); … … 383 345 384 346 /* 385 * ã¿ã¤ã ãã£ãã¯ã®ä¾çµ¦347 * タイムティックの供給 386 348 */ 387 349 #ifdef TOPPERS_sigtim … … 398 360 399 361 /* 400 * current_time ãæ´æ°ããï¼362 * current_timeを更新する. 401 363 */ 402 364 current_time = next_time; 403 365 404 366 /* 405 * next_time ï¼next_subtimeãæ´æ°ããï¼367 * next_time,next_subtimeを更新する. 406 368 */ 407 369 #if TIC_DENO == 1U … … 417 379 418 380 /* 419 * current_time ããã¤ãã³ãçºçæå»ã®æ©ãï¼ã¾ãã¯åãï¼ã¿ã¤ã ã¤ã420 * ã³ããï¼ã¿ã¤ã ã¤ãã³ããã¼ãããåé¤ãï¼ã³ã¼ã«ããã¯é¢æ°ãå¼ã³421 * åºãï¼381 * current_timeよりイベント発生時刻の早い(または同じ)タイムイベ 382 * ントを,タイムイベントヒープから削除し,コールバック関数を呼び 383 * 出す. 422 384 */ 423 385 while (last_index > 0 && EVTTIM_LE(TMEVT_NODE(1).time, current_time)) { … … 428 390 429 391 /* 430 * min_time ãæ´æ°ããï¼392 * min_timeを更新する. 431 393 */ 432 394 min_time = current_time; -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.