Ignore:
Timestamp:
Jun 2, 2015, 3:39:53 PM (9 years ago)
Author:
nmir-saito
Message:

ファイルの mime-type 変更

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ssp_qb_r5f100le_cs/trunk/extension/time_event.c

    • Property svn:mime-type set to text/plain; charset=shift_jis
    r93 r95  
    55 *  Copyright (C) 2011 by Meika Sugimoto
    66 *
    7  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì (1)`(4) ‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    8  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü•ÏE
    9  *  Ä”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    10  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ìŒ 
    11  *      •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[ƒX
    12  *      ƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    13  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    14  *      ‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    15 ƒƒ“ƒgi—˜—pŽÒƒ}
    16  *      ƒjƒ
    17 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•Û
    18  *      Ø‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    19  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg—p
    20  *      ‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±‚ƁD
    21  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    22 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ì
    24  *        Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É•ñ
    26  *        ‚·‚邱‚ƁD
    27  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹ŠQ
    28  *      ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD‚Ü‚½C
    29  *      –{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝—R‚ÉŠî‚Ã
    30  *      ‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
     7 *  上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ
     8 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・
     9 *  再配布(以下,利用と呼ぶ)することを無償で許諾する.
     10 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権
     11 *      表示,この利用条件および下記の無保証規定が,そのままの形でソース
     12 *      コード中に含まれていること.
     13 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用
     14 *      できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ
     15 *      ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保
     16 *      証規定を掲載すること.
     17 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用
     18 *      できない形で再配布する場合には,次のいずれかの条件を満たすこと.
     19 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作
     20 *        権表示,この利用条件および下記の無保証規定を掲載すること.
     21 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報
     22 *        告すること.
     23 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害
     24 *      からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また,
     25 *      本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ
     26 *      く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
    3127 *
    32  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨‚æ
    33  *  ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I‚ɑ΂·
    34  *  ‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p
    35  *  ‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»‚̐ӔC‚ð•‰
    36  *  ‚í‚È‚¢D
     28 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者およ
     29 *  びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す
     30 *  る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用
     31 *  により直接的または間接的に生じたいかなる損害に関しても,その責任を負
     32 *  わない.
    3733 *
    3834 */
     
    4440
    4541/*
    46  *  Œ»Ý‚̃VƒXƒeƒ€Žži’PˆÊ: 1ƒ~ƒŠ•bj
     42 *  現在のシステム時刻(単位: 1ミリ秒)
    4743 *
    48  *  Œµ–§‚ɂ́C‘O‚̃^ƒCƒ€ƒeƒBƒbƒN‚̃VƒXƒeƒ€ŽžD
     44 *  厳密には,前のタイムティックのシステム時刻.
    4945 */
    5046EVTTIM  current_time;
    5147
    5248/*
    53  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒq[ƒv’†‚Å—LŒø‚ȍŏ¬‚̃VƒXƒeƒ€Žži’PˆÊ: 1ƒ~ƒŠ•bj
     49 *  タイムイベントヒープ中で有効な最小のシステム時刻(単位: 1ミリ秒)
    5450 */
    5551EVTTIM  min_time;
     
    5753
    5854/*
    59  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒLƒ
    60 [‚̃Lƒ
    61 [ƒwƒbƒ_
     55 *  タイムイベントキューのキューヘッダ
    6256 *
    63  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒLƒ
    64 [ƒuƒƒbƒN‚̏I’[‚ÉŠm•Û‚·‚éD
     57 *  タイムイベントキューブロックの終端に確保する.
    6558 */
    6659#define TMEVT_HEAD()    (tmevt_queue[tnum_tmevt_queue])
     
    6861
    6962/*
    70  *  ƒCƒxƒ“ƒg”­¶Žž”äŠrƒ}ƒNƒ
     63 *  イベント発生時刻比較マクロ
    7164 *
    72  *  ƒCƒxƒ“ƒg”­¶Žž‚́Cmin_time‚©‚ç‚Ì‘Š‘Î’l‚Å”äŠr‚·‚éD‚·‚È‚í‚¿C
    73  *  min_time‚ðÅ¬’liÅ‚à‹ß‚¢ŽžjCmit_time-1‚ªÅ‘å’liÅ‚à‰“‚¢Žžj
    74  *  ‚Æ‚Ý‚È‚µ‚Ä”äŠr‚·‚éD
     65 *  イベント発生時刻は,min_timeからの相対値で比較する.すなわち,
     66 *  min_timeを最小値(最も近い時刻),mit_time-1が最大値(最も遠い時刻)
     67 *  とみなして比較する.
    7568 */
    7669#define EVTTIM_LT(t1, t2) (((t1) - min_time) < ((t2) - min_time))
     
    7871
    7972/*
    80  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒg‚̏‰Šú‰»
     73 *  タイムイベントの初期化
    8174 */
    8275
     
    8679initialize_time_event(void)
    8780{
    88         /* •Ï”‚̏‰Šú‰» */
     81        /* 変数の初期化 */
    8982        current_time = 0U;
    9083        min_time = 0U;
    9184       
    92         /* ƒ^ƒCƒ€ƒCƒxƒ“ƒgƒLƒ
    93 [‚̏‰Šú‰» */
     85        /* タイムイベントキューの初期化 */
    9486        queue_initialize(&TMEVT_HEAD() , (QUEIDX)tnum_tmevt_queue);
    9587}
     
    9890
    9991/*
    100  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒg‚Ì“o˜^
     92 *  タイムイベントの登録
    10193 */
    10294
     
    108100        QUEIDX pos = TMEVT_HEAD().next;
    109101       
    110         /* ‘}“üˆÊ’u‚ðŒŸõ */
     102        /* 挿入位置を検索 */
    111103        while((pos != TMEVT_NULL)
    112104                        && (EVTTIM_LE(tmevt_time[pos] , evttim))) {
     
    114106        }
    115107       
    116         /* ƒLƒ
    117 [‚É‘}“ü */
     108        /* キューに挿入 */
    118109        queue_insert_prev(&(tmevt_queue[0]) , pos , (QUEIDX)tmevtid);
    119110        tmevt_callback[tmevtid] = (CBACK)callback;
     
    125116
    126117/*
    127  *  ƒ^ƒCƒ€ƒCƒxƒ“ƒg‚̍폜
     118 *  タイムイベントの削除
    128119 */
    129120
     
    133124time_event_dequeue(ID tmevtid)
    134125{
    135         /* ƒLƒ
    136 [‚©‚çíœ */
     126        /* キューから削除 */
    137127        (void)queue_delete_next(&(tmevt_queue[0]) , (QUEIDX)tmevtid);
    138128}
     
    141131
    142132/*
    143  *  ƒVƒXƒeƒ€Žž‚Ì’Ê’m
     133 *  システム時刻の通知
    144134 */
    145135
     
    153143        i_lock_cpu();
    154144       
    155         /* Œ»ÝŽž‚̍XV */
     145        /* 現在時刻の更新 */
    156146        current_time += (EVTTIM)TIC_NUME;
    157147       
    158         /* ƒR[ƒ‹ƒoƒbƒN‚ÌŽÀs */
     148        /* コールバックの実行 */
    159149        while((pos != TMEVT_NULL)
    160150                        && EVTTIM_LT(tmevt_time[pos] , current_time)) {
     
    165155        }
    166156
    167         /* min_time‚̍XV */
     157        /* min_timeの更新 */
    168158        min_time = current_time;
    169159       
Note: See TracChangeset for help on using the changeset viewer.