Ignore:
Timestamp:
May 22, 2019, 10:03:37 PM (5 years ago)
Author:
coas-nagasima
Message:

ビルドが通るよう更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub/trunk/asp3_dcre/kernel/time_event.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r388 r389  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    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 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              タイムイベント管理モジュール
     44 *              タイムイベント管理モジュール
    6045 */
    6146
     
    6449
    6550/*
    66  *  TSTEP_HRTCNTの範囲チェック
     51 *  TSTEP_HRTCNTの範囲チェック
    6752 */
    6853#if TSTEP_HRTCNT > 4000U
     
    7156
    7257/*
    73  *  HRTCNT_BOUNDの範囲チェック
     58 *  HRTCNT_BOUNDの範囲チェック
    7459 */
    7560#if HRTCNT_BOUND >= 4294000000U
     
    8469
    8570/*
    86  *  タイムイベントヒープ操作マクロ
     71 *  タイムイベントヒープ操作マクロ
    8772 */
    8873#define PARENT(p_tmevtn)        (tmevt_heap + (((p_tmevtn) - tmevt_heap) >> 1))
    89                                                                                                         /* 親ノードを求める */
     74                                                                                                        /* 親ノードを求める */
    9075#define LCHILD(p_tmevtn)        (tmevt_heap + (((p_tmevtn) - tmevt_heap) << 1))
    91                                                                                                         /* 左の子ノードを求める */
    92 /*
    93  *  タイムイベントヒープ中のå
    94 ˆé ­ã®ãƒŽãƒ¼ãƒ‰
     76                                                                                                        /* 左の子ノードを求める */
     77/*
     78 *  タイムイベントヒープ中の先頭のノード
    9579 */
    9680#define p_top_tmevtn    (&(tmevt_heap[1]))
    9781#define top_evttim              (tmevt_heap[1].p_tmevtb->evttim)
    98                                                                                 /* å
    99 ˆé ­ã®ã‚¿ã‚¤ãƒ ã‚¤ãƒ™ãƒ³ãƒˆã®ç™ºç”Ÿæ™‚刻 */
    100 /*
    101  *  タイムイベントヒープ中の最後のノード
     82                                                                                /* 先頭のタイムイベントの発生時刻 */
     83/*
     84 *  タイムイベントヒープ中の最後のノード
    10285 */
    10386#define p_last_tmevtn   (tmevt_heap[0].p_last)
    10487
    10588/*
    106  *  イベント時刻の前後関係の判定[ASPD1009ï¼½
     89 *  イベント時刻の前後関係の判定[ASPD1009]
    10790 *
    108  *  イベント時刻は,boundary_evttimからの相対値で比較する.すなわち,
    109  *  boundary_evttimを最も早い時刻,boundary_evttim-1が最もé
    110 ã„時刻とみ
    111  *  なして比較する.
     91 *  イベント時刻は,boundary_evttimからの相対値で比較する.すなわち,
     92 *  boundary_evttimを最も早い時刻,boundary_evttim-1が最も遅い時刻とみ
     93 *  なして比較する.
    11294 */
    11395#define EVTTIM_ADVANCE(t)       ((t) - boundary_evttim)
     
    118100
    119101/*
    120  *  境界イベント時刻[ASPD1008ï¼½
     102 *  境界イベント時刻[ASPD1008]
    121103 */
    122104EVTTIM  boundary_evttim;
    123105
    124106/*
    125  *  最後に現在時刻を算出した時点でのイベント時刻[ASPD1012ï¼½
     107 *  最後に現在時刻を算出した時点でのイベント時刻[ASPD1012]
    126108 */
    127109EVTTIM  current_evttim;
    128110
    129111/*
    130  *  最後に現在時刻を算出した時点での高分解能タイマのカウント値[ASPD1012ï¼½
     112 *  最後に現在時刻を算出した時点での高分解能タイマのカウント値[ASPD1012]
    131113 */
    132114HRTCNT  current_hrtcnt;
    133115
    134116/*
    135  *  最も進んでいた時のイベント時刻[ASPD1041ï¼½
     117 *  最も進んでいた時のイベント時刻[ASPD1041]
    136118 */
    137119EVTTIM  monotonic_evttim;
    138120
    139121/*
    140  *  システム時刻のオフセット[ASPD1043ï¼½
     122 *  システム時刻のオフセット[ASPD1043]
    141123 */
    142124SYSTIM  systim_offset;
    143125
    144126/*
    145  *  高分解能タイマ割込みの処理中であることを示すフラグ[ASPD1032ï¼½
     127 *  高分解能タイマ割込みの処理中であることを示すフラグ[ASPD1032]
    146128 */
    147129bool_t  in_signal_time;
    148130
    149131/*
    150  *  タイムイベント管理モジュールの初期化[ASPD1061ï¼½
     132 *  タイムイベント管理モジュールの初期化[ASPD1061]
    151133 */
    152134void
    153135initialize_tmevt(void)
    154136{
    155         current_evttim = 0U;                                                    /*ï¼»ASPD1047ï¼½*/
     137        current_evttim = 0U;                                                    /*[ASPD1047]*/
    156138        boundary_evttim = current_evttim - BOUNDARY_MARGIN;
    157                                                                                                         /*ï¼»ASPD1048ï¼½*/
    158         monotonic_evttim = 0U;                                                  /*ï¼»ASPD1046ï¼½*/
    159         systim_offset = 0U;                                                             /*ï¼»ASPD1044ï¼½*/
    160         in_signal_time = false;                                                 /*ï¼»ASPD1033ï¼½*/
     139                                                                                                        /*[ASPD1048]*/
     140        monotonic_evttim = 0U;                                                  /*[ASPD1046]*/
     141        systim_offset = 0U;                                                             /*[ASPD1044]*/
     142        in_signal_time = false;                                                 /*[ASPD1033]*/
    161143        p_last_tmevtn = tmevt_heap;
    162144}
     
    165147
    166148/*
    167  *  タイムイベントの挿å
    168 ¥ä½ç½®ã‚’上向きに探索
     149 *  タイムイベントの挿入位置を上向きに探索
    169150 *
    170  *  時刻evttimに発生するタイムイベントを挿å
    171 ¥ã™ã‚‹ãƒŽãƒ¼ãƒ‰ã‚’空けるために,
    172  *  ヒープの上に向かって空ノードを移動させる.移動前の空ノードの位置を
    173  *  p_tmevtnに渡すと,移動後の空ノードの位置(すなわち挿å
    174 ¥ä½ç½®ï¼‰ã‚’返す.
     151 *  時刻evttimに発生するタイムイベントを挿入するノードを空けるために,
     152 *  ヒープの上に向かって空ノードを移動させる.移動前の空ノードの位置を
     153 *  p_tmevtnに渡すと,移動後の空ノードの位置(すなわち挿入位置)を返す.
    175154 */
    176155#ifdef TOPPERS_tmeup
     
    183162        while (p_tmevtn > p_top_tmevtn) {
    184163                /*
    185                  *  親ノードのイベント発生時刻の方が早い(または同じ)ならば,
    186                  *  p_tmevtnが挿å
    187 ¥ä½ç½®ãªã®ã§ãƒ«ãƒ¼ãƒ—を抜ける.
     164                 *  親ノードのイベント発生時刻の方が早い(または同じ)ならば,
     165                 *  p_tmevtnが挿入位置なのでループを抜ける.
    188166                 */
    189167                p_parent = PARENT(p_tmevtn);
     
    193171
    194172                /*
    195                  *  親ノードをp_tmevtnの位置に移動させる.
     173                 *  親ノードをp_tmevtnの位置に移動させる.
    196174                 */
    197175                *p_tmevtn = *p_parent;
     
    199177
    200178                /*
    201                  *  p_tmevtnを親ノードの位置に更新.
     179                 *  p_tmevtnを親ノードの位置に更新.
    202180                 */
    203181                p_tmevtn = p_parent;
     
    209187
    210188/*
    211  *  タイムイベントの挿å
    212 ¥ä½ç½®ã‚’下向きに探索
     189 *  タイムイベントの挿入位置を下向きに探索
    213190 *
    214  *  時刻evttimに発生するタイムイベントを挿å
    215 ¥ã™ã‚‹ãƒŽãƒ¼ãƒ‰ã‚’空けるために,
    216  *  ヒープの下に向かって空ノードを移動させる.移動前の空ノードの位置を
    217  *  p_tmevtnに渡すと,移動後の空ノードの位置(すなわち挿å
    218 ¥ä½ç½®ï¼‰ã‚’返す.
     191 *  時刻evttimに発生するタイムイベントを挿入するノードを空けるために,
     192 *  ヒープの下に向かって空ノードを移動させる.移動前の空ノードの位置を
     193 *  p_tmevtnに渡すと,移動後の空ノードの位置(すなわち挿入位置)を返す.
    219194 */
    220195#ifdef TOPPERS_tmedown
     
    227202        while ((p_child = LCHILD(p_tmevtn)) <= p_last_tmevtn) {
    228203                /*
    229                  *  左右の子ノードのイベント発生時刻を比較し,早い方の子ノード
    230                  *  の位置をp_childに設定する.以下の子ノードは,ここで選ばれた
    231                  *  方の子ノードのこと.
     204                 *  左右の子ノードのイベント発生時刻を比較し,早い方の子ノード
     205                 *  の位置をp_childに設定する.以下の子ノードは,ここで選ばれた
     206                 *  方の子ノードのこと.
    232207                 */
    233208                if (p_child + 1 <= p_last_tmevtn
     
    238213
    239214                /*
    240                  *  子ノードのイベント発生時刻の方がé
    241 ã„(または同じ)ならば,
    242                  *  p_tmevtnが挿å
    243 ¥ä½ç½®ãªã®ã§ãƒ«ãƒ¼ãƒ—を抜ける.
     215                 *  子ノードのイベント発生時刻の方が遅い(または同じ)ならば,
     216                 *  p_tmevtnが挿入位置なのでループを抜ける.
    244217                 */
    245218                if (EVTTIM_LE(evttim, p_child->p_tmevtb->evttim)) {
     
    248221
    249222                /*
    250                  *  子ノードをp_tmevtnの位置に移動させる.
     223                 *  子ノードをp_tmevtnの位置に移動させる.
    251224                 */
    252225                *p_tmevtn = *p_child;
     
    254227
    255228                /*
    256                  *  p_tmevtnを子ノードの位置に更新.
     229                 *  p_tmevtnを子ノードの位置に更新.
    257230                 */
    258231                p_tmevtn = p_child;
     
    264237
    265238/*
    266  *  タイムイベントヒープへの追加
     239 *  タイムイベントヒープへの追加
    267240 *
    268  *  p_tmevtbで指定したタイムイベントブロックを,タイムイベントヒープに
    269  *  追加する.
     241 *  p_tmevtbで指定したタイムイベントブロックを,タイムイベントヒープに
     242 *  追加する.
    270243 */
    271244Inline void
     
    275248
    276249        /*
    277          *  p_last_tmevtnをインクリメントし,そこから上に挿å
    278 ¥ä½ç½®ã‚’探す.
     250         *  p_last_tmevtnをインクリメントし,そこから上に挿入位置を探す.
    279251         */
    280252        p_tmevtn = tmevt_up(++p_last_tmevtn, p_tmevtb->evttim);
    281253
    282254        /*
    283          *  タイムイベントをp_tmevtnの位置に挿å
    284 ¥ã™ã‚‹ï¼Ž
     255         *  タイムイベントをp_tmevtnの位置に挿入する.
    285256         */
    286257        p_tmevtn->p_tmevtb = p_tmevtb;
     
    289260
    290261/*
    291  *  タイムイベントヒープからの削除
     262 *  タイムイベントヒープからの削除
    292263 */
    293264Inline void
     
    299270
    300271        /*
    301          *  削除によりタイムイベントヒープが空になる場合は何もしない.
     272         *  削除によりタイムイベントヒープが空になる場合は何もしない.
    302273         */
    303274        if (--p_last_tmevtn < p_top_tmevtn) {
     
    306277
    307278        /*
    308          *  削除したノードの位置に最後のノード(p_last_tmevtn + 1 の位置の
    309          *  ノード)を挿å
    310 ¥ã—,それを適切な位置へ移動させる.実際には,最後
    311          *  のノードを実際に挿å
    312 ¥ã™ã‚‹ã®ã§ã¯ãªãï¼Œå‰Šé™¤ã—たノードの位置が空ノー
    313          *  ドになるので,最後のノードを挿å
    314 ¥ã™ã¹ãä½ç½®ã¸å‘けて空ノードを移
    315          *  動させる.
     279         *  削除したノードの位置に最後のノード(p_last_tmevtn + 1 の位置の
     280         *  ノード)を挿入し,それを適切な位置へ移動させる.実際には,最後
     281         *  のノードを実際に挿入するのではなく,削除したノードの位置が空ノー
     282         *  ドになるので,最後のノードを挿入すべき位置へ向けて空ノードを移
     283         *  動させる.
    316284         *
    317          *  最後のノードのイベント発生時刻が,削除したノードの親ノードのイ
    318          *  ベント発生時刻より前の場合には,上に向かって挿å
    319 ¥ä½ç½®ã‚’探す.そ
    320          *  うでない場合には,下に向かって探す.
     285         *  最後のノードのイベント発生時刻が,削除したノードの親ノードのイ
     286         *  ベント発生時刻より前の場合には,上に向かって挿入位置を探す.そ
     287         *  うでない場合には,下に向かって探す.
    321288         */
    322289        event_evttim = (p_last_tmevtn + 1)->p_tmevtb->evttim;
     
    325292                                                (p_parent = PARENT(p_tmevtn))->p_tmevtb->evttim)) {
    326293                /*
    327                  *  親ノードをp_tmevtnの位置に移動させる.
     294                 *  親ノードをp_tmevtnの位置に移動させる.
    328295                 */
    329296                *p_tmevtn = *p_parent;
     
    331298
    332299                /*
    333                  *  削除したノードの親ノードから上に向かって挿å
    334 ¥ä½ç½®ã‚’探す.
     300                 *  削除したノードの親ノードから上に向かって挿入位置を探す.
    335301                 */
    336302                p_tmevtn = tmevt_up(p_parent, event_evttim);
     
    338304        else {
    339305                /*
    340                  *  削除したノードから下に向かって挿å
    341 ¥ä½ç½®ã‚’探す.
     306                 *  削除したノードから下に向かって挿入位置を探す.
    342307                 */
    343308                p_tmevtn = tmevt_down(p_tmevtn, event_evttim);
     
    345310
    346311        /*
    347          *  最後のノードをp_tmevtnの位置に挿å
    348 ¥ã™ã‚‹ï¼Ž
     312         *  最後のノードをp_tmevtnの位置に挿入する.
    349313         */
    350314        *p_tmevtn = *(p_last_tmevtn + 1);
     
    353317
    354318/*
    355  *  タイムイベントヒープのå
    356 ˆé ­ã®ãƒŽãƒ¼ãƒ‰ã®å‰Šé™¤
     319 *  タイムイベントヒープの先頭のノードの削除
    357320 */
    358321Inline TMEVTB *
     
    364327
    365328        /*
    366          *  削除によりタイムイベントヒープが空になる場合は何もしない.
     329         *  削除によりタイムイベントヒープが空になる場合は何もしない.
    367330         */
    368331        if (--p_last_tmevtn >= p_top_tmevtn) {
    369332                /*
    370                  *  ルートノードに最後のノード(p_last_tmevtn + 1 の位置のノー
    371                  *  ド)を挿å
    372 ¥ã—,それを適切な位置へ移動させる.実際には,最後
    373                  *  のノードを実際に挿å
    374 ¥ã™ã‚‹ã®ã§ã¯ãªãï¼Œãƒ«ãƒ¼ãƒˆãƒŽãƒ¼ãƒ‰ãŒç©ºãƒŽãƒ¼ãƒ‰
    375                  *  になるので,最後のノードを挿å
    376 ¥ã™ã¹ãä½ç½®ã¸å‘けて空ノードを
    377                  *  移動させる.
     333                 *  ルートノードに最後のノード(p_last_tmevtn + 1 の位置のノー
     334                 *  ド)を挿入し,それを適切な位置へ移動させる.実際には,最後
     335                 *  のノードを実際に挿入するのではなく,ルートノードが空ノード
     336                 *  になるので,最後のノードを挿入すべき位置へ向けて空ノードを
     337                 *  移動させる.
    378338                 */
    379339                event_evttim = (p_last_tmevtn + 1)->p_tmevtb->evttim;
     
    381341
    382342                /*
    383                  *  最後のノードをp_tmevtnの位置に挿å
    384 ¥ã™ã‚‹ï¼Ž
     343                 *  最後のノードをp_tmevtnの位置に挿入する.
    385344                 */
    386345                *p_tmevtn = *(p_last_tmevtn + 1);
     
    391350
    392351/*
    393  *  現在のイベント時刻の更新
     352 *  現在のイベント時刻の更新
    394353 */
    395354#ifdef TOPPERS_tmecur
     
    401360        EVTTIM  previous_evttim;
    402361
    403         new_hrtcnt = target_hrt_get_current();                  /*ï¼»ASPD1013ï¼½*/
    404         hrtcnt_advance = new_hrtcnt - current_hrtcnt;   /*ï¼»ASPD1014ï¼½*/
     362        new_hrtcnt = target_hrt_get_current();                  /*[ASPD1013]*/
     363        hrtcnt_advance = new_hrtcnt - current_hrtcnt;   /*[ASPD1014]*/
    405364#ifdef TCYC_HRTCNT
    406365        if (new_hrtcnt < current_hrtcnt) {
     
    410369
    411370        previous_evttim = current_evttim;
    412         current_evttim += (EVTTIM) hrtcnt_advance;              /*ï¼»ASPD1015ï¼½*/
    413         current_hrtcnt = new_hrtcnt;                                    /*ï¼»ASPD1016ï¼½*/
    414         boundary_evttim = current_evttim - BOUNDARY_MARGIN;     /*ï¼»ASPD1011ï¼½*/
     371        current_evttim += (EVTTIM) hrtcnt_advance;              /*[ASPD1015]*/
     372        current_hrtcnt = new_hrtcnt;                                    /*[ASPD1016]*/
     373        boundary_evttim = current_evttim - BOUNDARY_MARGIN;     /*[ASPD1011]*/
    415374
    416375        if (monotonic_evttim - previous_evttim < (EVTTIM) hrtcnt_advance) {
    417376#ifdef UINT64_MAX
    418377                if (current_evttim < monotonic_evttim) {
    419                         systim_offset += 1LLU << 32;                    /*ï¼»ASPD1045ï¼½*/
     378                        systim_offset += 1LLU << 32;                    /*[ASPD1045]*/
    420379                }
    421380#endif /* UINT64_MAX */
    422                 monotonic_evttim = current_evttim;                      /*ï¼»ASPD1042ï¼½*/
     381                monotonic_evttim = current_evttim;                      /*[ASPD1042]*/
    423382        }
    424383}
     
    427386
    428387/*
    429  *  現在のイベント時刻をé
    430 ã„方に丸めたイベント時刻の算出[ASPD1027ï¼½
     388 *  現在のイベント時刻を遅い方に丸めたイベント時刻の算出[ASPD1027]
    431389 *
    432  *  現在のイベント時刻を更新した後に呼ぶことを想定している.
     390 *  現在のイベント時刻を更新した後に呼ぶことを想定している.
    433391 */
    434392Inline EVTTIM
     
    439397
    440398/*
    441  *  高分解能タイマ割込みの発生タイミングの設定
     399 *  高分解能タイマ割込みの発生タイミングの設定
    442400 */
    443401#ifdef TOPPERS_tmeset
     
    449407
    450408        if (p_last_tmevtn < p_top_tmevtn) {
    451                 target_hrt_set_event(HRTCNT_BOUND);                     /*ï¼»ASPD1007ï¼½*/
     409                target_hrt_set_event(HRTCNT_BOUND);                     /*[ASPD1007]*/
    452410        }
    453411        else if (EVTTIM_LE(top_evttim, current_evttim)) {
    454                 target_hrt_raise_event();                                       /*ï¼»ASPD1017ï¼½*/
     412                target_hrt_raise_event();                                       /*[ASPD1017]*/
    455413        }
    456414        else {
    457415                hrtcnt = (HRTCNT)(top_evttim - current_evttim);
    458416                if (hrtcnt > HRTCNT_BOUND) {
    459                         target_hrt_set_event(HRTCNT_BOUND);             /*ï¼»ASPD1006ï¼½*/
     417                        target_hrt_set_event(HRTCNT_BOUND);             /*[ASPD1006]*/
    460418                }
    461419                else {
    462                         target_hrt_set_event(hrtcnt);                   /*ï¼»ASPD1002ï¼½*/
     420                        target_hrt_set_event(hrtcnt);                   /*[ASPD1002]*/
    463421                }
    464422        }
     
    468426
    469427/*
    470  *  タイムイベントブロックのヒープへの挿å
    471 ¥
     428 *  タイムイベントブロックのヒープへの挿入
    472429 */
    473430#ifdef TOPPERS_tmereg
     
    482439
    483440/*
    484  *  相対時間指定によるタイムイベントの登録
     441 *  相対時間指定によるタイムイベントの登録
    485442 * 
    486443 */
     
    491448{
    492449        /*
    493          *  現在のイベント時刻とタイムイベントの発生時刻を求める[ASPD1026].
     450         *  現在のイベント時刻とタイムイベントの発生時刻を求める[ASPD1026].
    494451         */
    495452        update_current_evttim();
     
    497454
    498455        /*
    499          *  タイムイベントブロックをヒープに挿å
    500 ¥ã™ã‚‹ï¼»ASPD1030].
     456         *  タイムイベントブロックをヒープに挿入する[ASPD1030].
    501457         */
    502458        tmevtb_insert(p_tmevtb);
    503459
    504460        /*
    505          *  高分解能タイマ割込みの発生タイミングを設定する[ASPD1031ï¼½
    506          *  ï¼»ASPD1034].
     461         *  高分解能タイマ割込みの発生タイミングを設定する[ASPD1031]
     462         *  [ASPD1034].
    507463         */
    508464        if (!in_signal_time && p_tmevtb->p_tmevtn == p_top_tmevtn) {
     
    514470
    515471/*
    516  *  タイムイベントの登録解除
     472 *  タイムイベントの登録解除
    517473 */
    518474#ifdef TOPPERS_tmedeq
     
    524480
    525481        /*
    526          *  タイムイベントブロックをヒープから削除する[ASPD1039].
     482         *  タイムイベントブロックをヒープから削除する[ASPD1039].
    527483         */
    528484        p_tmevtn = p_tmevtb->p_tmevtn;
     
    530486
    531487        /*
    532          *  高分解能タイマ割込みの発生タイミングを設定する[ASPD1040].
     488         *  高分解能タイマ割込みの発生タイミングを設定する[ASPD1040].
    533489         */
    534490        if (!in_signal_time && p_tmevtn == p_top_tmevtn) {
     
    541497
    542498/*
    543  *  システム時刻の調整時のエラーチェック
     499 *  システム時刻の調整時のエラーチェック
    544500 */
    545501#ifdef TOPPERS_tmechk
     
    549505{
    550506        if (adjtim > 0) {
    551                 return(p_last_tmevtn >= p_top_tmevtn    /*ï¼»NGKI3588ï¼½*/
     507                return(p_last_tmevtn >= p_top_tmevtn    /*[NGKI3588]*/
    552508                                        && EVTTIM_LE(top_evttim, current_evttim - TMAX_ADJTIM));
    553509        }
    554         else if (adjtim < 0) {                                          /*ï¼»NGKI3589ï¼½*/
     510        else if (adjtim < 0) {                                          /*[NGKI3589]*/
    555511                return(monotonic_evttim - current_evttim >= -TMIN_ADJTIM);
    556512        }
     
    561517
    562518/*
    563  *  タイムイベントが発生するまでの時間の計算
     519 *  タイムイベントが発生するまでの時間の計算
    564520 */
    565521#ifdef TOPPERS_tmeltim
     
    571527
    572528        /*
    573          *  現在のイベント時刻をé
    574 ã„方に丸めた時刻を求める[ASPD1050].
     529         *  現在のイベント時刻を遅い方に丸めた時刻を求める[ASPD1050].
    575530         */
    576531        update_current_evttim();
     
    578533
    579534        /*
    580          *  タイムイベント発生までの相対時間を求める[ASPD1049].
     535         *  タイムイベント発生までの相対時間を求める[ASPD1049].
    581536         */
    582537        evttim = p_tmevtb->evttim;
    583538        if (EVTTIM_LE(evttim, current_evttim_ub)) {
    584539                /*
    585                  *  タイムイベントの発生時刻を過ぎている場合には0を返す[NGKI0552].
     540                 *  タイムイベントの発生時刻を過ぎている場合には0を返す[NGKI0552].
    586541                 */
    587542                return(0U);
     
    595550
    596551/*
    597  *  高分解能タイマ割込みの処理
     552 *  高分解能タイマ割込みの処理
    598553 */
    599554#ifdef TOPPERS_sigtim
     
    609564
    610565        lock_cpu();
    611         in_signal_time = true;                                                  /*ï¼»ASPD1033ï¼½*/
     566        in_signal_time = true;                                                  /*[ASPD1033]*/
    612567
    613568        do {
    614569                /*
    615                  *  コールバック関数を呼び出さなければループを抜ける[ASPD1020].
     570                 *  コールバック関数を呼び出さなければループを抜ける[ASPD1020].
    616571                 */
    617572                callflag = false;
    618573
    619574                /*
    620                  *  現在のイベント時刻を求める[ASPD1022].
     575                 *  現在のイベント時刻を求める[ASPD1022].
    621576                 */
    622577                update_current_evttim();
    623578
    624579                /*
    625                  *  発生時刻がcurrent_evttim以前のタイムイベントがあれば,タイ
    626                  *  ムイベントヒープから削除し,コールバック関数を呼び出す
    627                  *  ï¼»ASPD1018][ASPD1019].
     580                 *  発生時刻がcurrent_evttim以前のタイムイベントがあれば,タイ
     581                 *  ムイベントヒープから削除し,コールバック関数を呼び出す
     582                 *  [ASPD1018][ASPD1019].
    628583                 */
    629584                while (p_last_tmevtn >= p_top_tmevtn
     
    633588                        callflag = true;
    634589                }
    635         } while (callflag);                                                             /*ï¼»ASPD1020ï¼½*/
    636 
    637         /*
    638          *  高分解能タイマ割込みの発生タイミングを設定する[ASPD1025].
     590        } while (callflag);                                                             /*[ASPD1020]*/
     591
     592        /*
     593         *  高分解能タイマ割込みの発生タイミングを設定する[ASPD1025].
    639594         */
    640595        set_hrt_event();
    641596
    642         in_signal_time = false;                                                 /*ï¼»ASPD1033ï¼½*/
     597        in_signal_time = false;                                                 /*[ASPD1033]*/
    643598        unlock_cpu();
    644599}
Note: See TracChangeset for help on using the changeset viewer.