Ignore:
Timestamp:
Mar 8, 2016, 8:37:45 PM (7 years ago)
Author:
coas-nagasima
Message:

MIMEにSJISを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • UsbWattMeter/trunk/asp_dcre/kernel/time_event.c

    • Property svn:mime-type changed from text/x-csrc to text/x-csrc; charset=SHIFT_JIS
    r164 r167  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    12  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    13  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    14  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    15  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    16  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    17  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    18  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    19 ƒƒ“ƒgi—˜—p
    20  *      ŽÒƒ}ƒjƒ
    21 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    22  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    23  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    24  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    25  *      ‚ƁD
    26  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    27 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    28 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    29  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    30  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    31  *        •ñ‚·‚邱‚ƁD
    32  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    33  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    34  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    35  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    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 *      免責すること.
    3733 *
    38  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    39  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    40  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    41  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    42  *  ‚̐ӔC‚𕉂í‚È‚¢D
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    4339 *
    4440 *  $Id$
     
    4642
    4743/*
    48  *              ƒ^ƒCƒ€ƒCƒxƒ“ƒgŠÇ—ƒ‚ƒWƒ
    49 [ƒ‹
     44 *              タイムイベント管理モジュール
    5045 */
    5146
     
    5449
    5550/*
    56  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‘€ìƒ}ƒNƒ
    57  */
    58 #define PARENT(index)           ((index) >> 1)          /* eƒm[ƒh‚ð‹‚ß‚é */
    59 #define LCHILD(index)           ((index) << 1)          /* ¶‚ÌŽqƒm[ƒh‚ð‹‚ß‚é */
     51 *  タイムイベントヒープ操作マクロ
     52 */
     53#define PARENT(index)           ((index) >> 1)          /* 親ノードを求める */
     54#define LCHILD(index)           ((index) << 1)          /* 左の子ノードを求める */
    6055#define TMEVT_NODE(index)       (tmevt_heap[(index) - 1])
    6156
    6257/*
    63  *  ƒCƒxƒ“ƒg”­¶Žž”äŠrƒ}ƒNƒ
    64  *
    65  *  ƒCƒxƒ“ƒg”­¶Žž‚́Cmin_time‚©‚ç‚Ì‘Š‘Î’l‚Å”äŠr‚·‚éD‚·‚È‚í‚¿C
    66  *  min_time‚ðÅ¬’liÅ‚à‹ß‚¢ŽžjCmit_time-1‚ªÅ‘å’liÅ‚à‰“‚¢Žžj
    67  *  ‚Æ‚Ý‚È‚µ‚Ä”äŠr‚·‚éD
     58 *  イベント発生時刻比較マクロ
     59 *
     60 *  イベント発生時刻は,min_timeからの相対値で比較する.すなわち,
     61 *  min_timeを最小値(最も近い時刻),mit_time-1が最大値(最も遠い時刻)
     62 *  とみなして比較する.
    6863 */
    6964#define EVTTIM_LT(t1, t2) (((t1) - min_time) < ((t2) - min_time))
     
    7368
    7469/*
    75  *  Œ»Ý‚̃VƒXƒeƒ€Žži’PˆÊ: 1ƒ~ƒŠ•bj
    76  *
    77  *  Œµ–§‚ɂ́C‘O‚̃^ƒCƒ€ƒeƒBƒbƒN‚̃VƒXƒeƒ€ŽžD
     70 *  現在のシステム時刻(単位: 1ミリ秒)
     71 *
     72 *  厳密には,前のタイムティックのシステム時刻.
    7873 */
    7974EVTTIM  current_time;
    8075
    8176/*
    82  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv’†‚Å—LŒø‚ȍŏ¬‚̃VƒXƒeƒ€Žži’PˆÊ: 1ƒ~ƒŠ•bj
     77 *  タイムイベントヒープ中で有効な最小のシステム時刻(単位: 1ミリ秒)
    8378 */
    8479EVTTIM  min_time;
    8580
    8681/*
    87  *  ŽŸ‚̃^ƒCƒ€ƒeƒBƒbƒN‚̃VƒXƒeƒ€Žži’PˆÊ: 1ƒ~ƒŠ•bj
     82 *  次のタイムティックのシステム時刻(単位: 1ミリ秒)
    8883 */
    8984EVTTIM  next_time;
    9085
    9186/*
    92  *  ƒVƒXƒeƒ€ŽžÏŽZ—p•Ï”i’PˆÊ: 1/TIC_DENOƒ~ƒŠ•bj
     87 *  システム時刻積算用変数(単位: 1/TIC_DENOミリ秒)
    9388 */
    9489#if TIC_DENO != 1U
     
    9792
    9893/*
    99  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‚̍Ōã‚ÌŽg—p—̈æ‚̃Cƒ“ƒfƒbƒNƒX
     94 *  タイムイベントヒープの最後の使用領域のインデックス
    10095 */
    10196uint_t  last_index;
    10297
    10398/*
    104  *  ƒ^ƒCƒ}ƒ‚ƒWƒ
    105 [ƒ‹‚̏‰Šú‰»
     99 *  タイマモジュールの初期化
    106100 */
    107101void
     
    120114
    121115/*
    122  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒg‚Ì‘}“üˆÊ’u‚ðãŒü‚«‚É’Tõ
    123  *
    124  *  Žžtime‚É”­¶‚·‚éƒ^ƒCƒ€ƒCƒxƒ“ƒg‚ð‘}“ü‚·‚éƒm[ƒh‚ð‹ó‚¯‚邽‚߂ɁC
    125  *  ƒq[ƒv‚̏ã‚ÉŒü‚©‚Á‚Ä‹óƒm[ƒh‚ðˆÚ“®‚³‚¹‚éDˆÚ“®‘O‚Ì‹óƒm[ƒh‚̈ʒu‚ð
    126  *  index‚É“n‚·‚ƁCˆÚ“®Œã‚Ì‹óƒm[ƒh‚̈ʒui‚·‚È‚í‚¿‘}“üˆÊ’uj‚ð•Ô‚·D
     116 *  タイムイベントの挿入位置を上向きに探索
     117 *
     118 *  時刻timeに発生するタイムイベントを挿入するノードを空けるために,
     119 *  ヒープの上に向かって空ノードを移動させる.移動前の空ノードの位置を
     120 *  indexに渡すと,移動後の空ノードの位置(すなわち挿入位置)を返す.
    127121 */
    128122#ifdef TOPPERS_tmeup
     
    135129        while (index > 1) {
    136130                /*
    137                  *  eƒm[ƒh‚̃Cƒxƒ“ƒg”­¶Žž‚Ì•û‚ª‘‚¢i‚Ü‚½‚Í“¯‚¶j‚È‚ç‚΁C
    138                  *  index‚ª‘}“üˆÊ’u‚Ȃ̂Ń‹[ƒv‚𔲂¯‚éD
     131                 *  親ノードのイベント発生時刻の方が早い(または同じ)ならば,
     132                 *  indexが挿入位置なのでループを抜ける.
    139133                 */
    140134                parent = PARENT(index);
     
    144138
    145139                /*
    146                  *  eƒm[ƒh‚ðindex‚̈ʒu‚Ɉړ®‚³‚¹‚éD
     140                 *  親ノードをindexの位置に移動させる.
    147141                 */
    148142                TMEVT_NODE(index) = TMEVT_NODE(parent);
     
    150144
    151145                /*
    152                  *  index‚ðeƒm[ƒh‚̈ʒu‚ɍXVD
     146                 *  indexを親ノードの位置に更新.
    153147                 */
    154148                index = parent;
     
    160154
    161155/*
    162  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒg‚Ì‘}“üˆÊ’u‚ð‰ºŒü‚«‚É’Tõ
    163  *
    164  *  Žžtime‚É”­¶‚·‚éƒ^ƒCƒ€ƒCƒxƒ“ƒg‚ð‘}“ü‚·‚éƒm[ƒh‚ð‹ó‚¯‚邽‚߂ɁC
    165  *  ƒq[ƒv‚̉º‚ÉŒü‚©‚Á‚Ä‹óƒm[ƒh‚ðˆÚ“®‚³‚¹‚éDˆÚ“®‘O‚Ì‹óƒm[ƒh‚̈ʒu‚ð
    166  *  index‚É“n‚·‚ƁCˆÚ“®Œã‚Ì‹óƒm[ƒh‚̈ʒui‚·‚È‚í‚¿‘}“üˆÊ’uj‚ð•Ô‚·D
     156 *  タイムイベントの挿入位置を下向きに探索
     157 *
     158 *  時刻timeに発生するタイムイベントを挿入するノードを空けるために,
     159 *  ヒープの下に向かって空ノードを移動させる.移動前の空ノードの位置を
     160 *  indexに渡すと,移動後の空ノードの位置(すなわち挿入位置)を返す.
    167161 */
    168162#ifdef TOPPERS_tmedown
     
    175169        while ((child = LCHILD(index)) <= last_index) {
    176170                /*
    177                  *  ¶‰E‚ÌŽqƒm[ƒh‚̃Cƒxƒ“ƒg”­¶Žž‚ð”äŠr‚µC‘‚¢•û‚ÌŽqƒm[ƒh
    178                  *  ‚̈ʒu‚ðchild‚ɐݒ肷‚éDˆÈ‰º‚ÌŽqƒm[ƒh‚́C‚±‚±‚Å‘I‚΂ꂽ•û
    179                  *  ‚ÌŽqƒm[ƒh‚Ì‚±‚ƁD
     171                 *  左右の子ノードのイベント発生時刻を比較し,早い方の子ノード
     172                 *  の位置をchildに設定する.以下の子ノードは,ここで選ばれた方
     173                 *  の子ノードのこと.
    180174                 */
    181175                if (child + 1 <= last_index
     
    186180
    187181                /*
    188                  *  Žqƒm[ƒh‚̃Cƒxƒ“ƒg”­¶Žž‚Ì•û‚ª’x‚¢i‚Ü‚½‚Í“¯‚¶j‚È‚ç‚΁C
    189                  *  index‚ª‘}“üˆÊ’u‚Ȃ̂Ń‹[ƒv‚𔲂¯‚éD
     182                 *  子ノードのイベント発生時刻の方が遅い(または同じ)ならば,
     183                 *  indexが挿入位置なのでループを抜ける.
    190184                 */
    191185                if (EVTTIM_LE(time, TMEVT_NODE(child).time)) {
     
    194188
    195189                /*
    196                  *  Žqƒm[ƒh‚ðindex‚̈ʒu‚Ɉړ®‚³‚¹‚éD
     190                 *  子ノードをindexの位置に移動させる.
    197191                 */
    198192                TMEVT_NODE(index) = TMEVT_NODE(child);
     
    200194
    201195                /*
    202                  *  index‚ðŽqƒm[ƒh‚̈ʒu‚ɍXVD
     196                 *  indexを子ノードの位置に更新.
    203197                 */
    204198                index = child;
     
    210204
    211205/*
    212  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‚Ö‚Ì“o˜^
    213  *
    214  *  p_tmevtb‚ÅŽw’肵‚½ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒuƒƒbƒN‚ðCtime‚ÅŽw’肵‚½ŽžŠÔ‚ªŒo
    215  *  ‰ßŒã‚ɃCƒxƒ“ƒg‚ª”­¶‚·‚é‚悤‚ɁCƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‚É“o˜^‚·‚éD
     206 *  タイムイベントヒープへの登録
     207 *
     208 *  p_tmevtbで指定したタイムイベントブロックを,timeで指定した時間が経
     209 *  過後にイベントが発生するように,タイムイベントヒープに登録する.
    216210 */
    217211#ifdef TOPPERS_tmeins
     
    223217
    224218        /*
    225          *  last_index‚ðƒCƒ“ƒNƒŠƒƒ“ƒg‚µC‚»‚±‚©‚çã‚É‘}“üˆÊ’u‚ð’T‚·D
     219         *  last_indexをインクリメントし,そこから上に挿入位置を探す.
    226220         */
    227221        index = tmevt_up(++last_index, time);
    228222
    229223        /*
    230          *  ƒ^ƒCƒ€ƒCƒxƒ“ƒg‚ðindex‚̈ʒu‚É‘}“ü‚·‚éD
     224         *  タイムイベントをindexの位置に挿入する.
    231225         */
    232226        TMEVT_NODE(index).time = time;
     
    238232
    239233/*
    240  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‚©‚ç‚̍폜
     234 *  タイムイベントヒープからの削除
    241235 */
    242236#ifdef TOPPERS_tmedel
     
    250244
    251245        /*
    252          *  íœ‚É‚æ‚èƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‚ª‹ó‚É‚È‚éê‡‚͉½‚à‚µ‚È‚¢D
     246         *  削除によりタイムイベントヒープが空になる場合は何もしない.
    253247         */
    254248        if (--last_index == 0) {
     
    257251
    258252        /*
    259          *  íœ‚µ‚½ƒm[ƒh‚̈ʒu‚ɍŌã‚̃m[ƒhilast_index+1‚̈ʒu‚̃m[ƒhj
    260          *  ‚ð‘}“ü‚µC‚»‚ê‚ð“KØ‚Ȉʒu‚ÖˆÚ“®‚³‚¹‚éDŽÀÛ‚ɂ́CÅŒã‚̃m[ƒh
    261          *  ‚ðŽÀÛ‚É‘}“ü‚·‚é‚Ì‚Å‚Í‚È‚­Cíœ‚µ‚½ƒm[ƒh‚̈ʒu‚ª‹óƒm[ƒh‚É‚È
    262          *  ‚é‚̂ŁCÅŒã‚̃m[ƒh‚ð‘}“ü‚·‚ׂ«ˆÊ’u‚ÖŒü‚¯‚Ä‹óƒm[ƒh‚ðˆÚ“®‚³‚¹
    263          *  ‚éD
    264          *  ÅŒã‚̃m[ƒh‚̃Cƒxƒ“ƒg”­¶Žž‚ªCíœ‚µ‚½ƒm[ƒh‚̐eƒm[ƒh‚̃C
    265          *  ƒxƒ“ƒg”­¶Žž‚æ‚è‘O‚̏ꍇ‚ɂ́Cã‚ÉŒü‚©‚Á‚Ä‘}“üˆÊ’u‚ð’T‚·D‚»
    266          *  ‚¤‚Å‚È‚¢ê‡‚ɂ́C‰º‚ÉŒü‚©‚Á‚Ä’T‚·D
     253         *  削除したノードの位置に最後のノード(last_index+1の位置のノード)
     254         *  を挿入し,それを適切な位置へ移動させる.実際には,最後のノード
     255         *  を実際に挿入するのではなく,削除したノードの位置が空ノードにな
     256         *  るので,最後のノードを挿入すべき位置へ向けて空ノードを移動させ
     257         *  る.
     258         *  最後のノードのイベント発生時刻が,削除したノードの親ノードのイ
     259         *  ベント発生時刻より前の場合には,上に向かって挿入位置を探す.そ
     260         *  うでない場合には,下に向かって探す.
    267261         */
    268262        if (index > 1 && EVTTIM_LT(event_time,
    269263                                                                TMEVT_NODE(parent = PARENT(index)).time)) {
    270264                /*
    271                  *  eƒm[ƒh‚ðindex‚̈ʒu‚Ɉړ®‚³‚¹‚éD
     265                 *  親ノードをindexの位置に移動させる.
    272266                 */
    273267                TMEVT_NODE(index) = TMEVT_NODE(parent);
     
    275269
    276270                /*
    277                  *  íœ‚µ‚½ƒm[ƒh‚̐eƒm[ƒh‚©‚çã‚ÉŒü‚©‚Á‚Ä‘}“üˆÊ’u‚ð’T‚·D
     271                 *  削除したノードの親ノードから上に向かって挿入位置を探す.
    278272                 */
    279273                index = tmevt_up(parent, event_time);
     
    281275        else {
    282276                /*
    283                  *  íœ‚µ‚½ƒm[ƒh‚©‚牺‚ÉŒü‚©‚Á‚Ä‘}“üˆÊ’u‚ð’T‚·D
     277                 *  削除したノードから下に向かって挿入位置を探す.
    284278                 */
    285279                index = tmevt_down(index, event_time);
     
    287281
    288282        /*
    289          *  ÅŒã‚̃m[ƒh‚ðindex‚̈ʒu‚É‘}“ü‚·‚éD
     283         *  最後のノードをindexの位置に挿入する.
    290284         */
    291285        TMEVT_NODE(index) = TMEVT_NODE(last_index + 1);
     
    296290
    297291/*
    298  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‚̐擪‚̃m[ƒh‚̍폜
     292 *  タイムイベントヒープの先頭のノードの削除
    299293 */
    300294Inline void
     
    305299
    306300        /*
    307          *  íœ‚É‚æ‚èƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‚ª‹ó‚É‚È‚éê‡‚͉½‚à‚µ‚È‚¢D
     301         *  削除によりタイムイベントヒープが空になる場合は何もしない.
    308302         */
    309303        if (--last_index == 0) {
     
    312306
    313307        /*
    314          *  ƒ‹[ƒgƒm[ƒh‚ɍŌã‚̃m[ƒhilast_index + 1 ‚̈ʒu‚̃m[ƒhj‚ð
    315          *  ‘}“ü‚µC‚»‚ê‚ð“KØ‚Ȉʒu‚ÖˆÚ“®‚³‚¹‚éDŽÀÛ‚ɂ́CÅŒã‚̃m[ƒh‚ð
    316          *  ŽÀÛ‚É‘}“ü‚·‚é‚Ì‚Å‚Í‚È‚­Cƒ‹[ƒgƒm[ƒh‚ª‹óƒm[ƒh‚É‚È‚é‚̂ŁCÅ
    317          *  Œã‚̃m[ƒh‚ð‘}“ü‚·‚ׂ«ˆÊ’u‚ÖŒü‚¯‚Ä‹óƒm[ƒh‚ðˆÚ“®‚³‚¹‚éD
     308         *  ルートノードに最後のノード(last_index + 1 の位置のノード)を
     309         *  挿入し,それを適切な位置へ移動させる.実際には,最後のノードを
     310         *  実際に挿入するのではなく,ルートノードが空ノードになるので,最
     311         *  後のノードを挿入すべき位置へ向けて空ノードを移動させる.
    318312         */
    319313        index = tmevt_down(1, event_time);
    320314
    321315        /*
    322          *  ÅŒã‚̃m[ƒh‚ðindex‚̈ʒu‚É‘}“ü‚·‚éD
     316         *  最後のノードをindexの位置に挿入する.
    323317         */
    324318        TMEVT_NODE(index) = TMEVT_NODE(last_index + 1);
     
    327321
    328322/*
    329  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒg‚Ü‚Å‚ÌŽc‚莞ŠÔ‚ÌŒvŽZ
     323 *  タイムイベントまでの残り時間の計算
    330324 */
    331325#ifdef TOPPERS_tmeltim
     
    339333        if (EVTTIM_LE(time, next_time)) {
    340334                /*
    341                  *  ŽŸ‚̃^ƒCƒ€ƒeƒBƒbƒN‚ŏˆ—‚³‚ê‚éê‡‚É‚Í0‚ð•Ô‚·D
     335                 *  次のタイムティックで処理される場合には0を返す.
    342336                 */
    343337                return(0U);
     
    351345
    352346/*
    353  *  ƒ^ƒCƒ€ƒeƒBƒbƒN‚Ì‹Ÿ‹‹
     347 *  タイムティックの供給
    354348 */
    355349#ifdef TOPPERS_sigtim
     
    366360
    367361        /*
    368          *  current_time‚ðXV‚·‚éD
     362         *  current_timeを更新する.
    369363         */
    370364        current_time = next_time;
    371365
    372366        /*
    373          *  next_timeCnext_subtime‚ðXV‚·‚éD
     367         *  next_time,next_subtimeを更新する.
    374368         */
    375369#if TIC_DENO == 1U
     
    385379
    386380        /*
    387          *  current_time‚æ‚èƒCƒxƒ“ƒg”­¶Žž‚Ì‘‚¢i‚Ü‚½‚Í“¯‚¶jƒ^ƒCƒ€ƒCƒx
    388          *  ƒ“ƒg‚ðCƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv‚©‚çíœ‚µCƒR[ƒ‹ƒoƒbƒNŠÖ”‚ðŒÄ‚Ñ
    389          *  o‚·D
     381         *  current_timeよりイベント発生時刻の早い(または同じ)タイムイベ
     382         *  ントを,タイムイベントヒープから削除し,コールバック関数を呼び
     383         *  出す.
    390384         */
    391385        while (last_index > 0 && EVTTIM_LE(TMEVT_NODE(1).time, current_time)) {
     
    396390
    397391        /*
    398          *  min_time‚ðXV‚·‚éD
     392         *  min_timeを更新する.
    399393         */
    400394        min_time = current_time;
Note: See TracChangeset for help on using the changeset viewer.