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/task_term.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
     
    6651
    6752/*
    68  *  トレースログマクロのデフォルト定義
     53 *  トレースログマクロのデフォルト定義
    6954 */
    7055#ifndef LOG_EXT_TSK_ENTER
     
    117102
    118103/*
    119  *  自タスクの終了[NGKI1162ï¼½
     104 *  自タスクの終了[NGKI1162]
    120105 */
    121106#ifdef TOPPERS_ext_tsk
     
    128113
    129114        LOG_EXT_TSK_ENTER();
    130         CHECK_TSKCTX();                                                 /*ï¼»NGKI1164ï¼½*/
     115        CHECK_TSKCTX();                                                 /*[NGKI1164]*/
    131116
    132117        if (sense_lock()) {
    133118                /*
    134                  *  CPUロック状æ
    135 ‹ã§ext_tskが呼ばれた場合は,CPUロックを解除し
    136                  *  てからタスクを終了する.実è£
    137 ä¸Šã¯ï¼Œã‚µãƒ¼ãƒ“スコールå†
    138 ã§ã®CPU
    139                  *  ロックを省略すればよいだけ.[NGKI1168ï¼½
     119                 *  CPUロック状態でext_tskが呼ばれた場合は,CPUロックを解除し
     120                 *  てからタスクを終了する.実装上は,サービスコール内でのCPU
     121                 *  ロックを省略すればよいだけ.[NGKI1168]
    140122                 */
    141123        }
     
    148130                if (!enadsp) {
    149131                        /*
    150                          *  ディスパッチ禁止状æ
    151 ‹ã§ext_tskが呼ばれた場合は,ディスパッ
    152                          *  チ許可状æ
    153 ‹ã«ã—てからタスクを終了する.[NGKI1168ï¼½
     132                         *  ディスパッチ禁止状態でext_tskが呼ばれた場合は,ディスパッ
     133                         *  チ許可状態にしてからタスクを終了する.[NGKI1168]
    154134                         */
    155135                        enadsp = true;
     
    157137                if (intpri != TIPM_ENAALL) {
    158138                        /*
    159                          *  割込み優å
    160 ˆåº¦ãƒžã‚¹ã‚¯ï¼ˆIPM)がTIPM_ENAALL以外の状æ
    161 ‹ã§
    162                          *  ext_tskが呼ばれた場合は,IPMをTIPM_ENAALLにしてからタス
    163                          *  クを終了する.[NGKI1168ï¼½
     139                         *  割込み優先度マスク(IPM)がTIPM_ENAALL以外の状態で
     140                         *  ext_tskが呼ばれた場合は,IPMをTIPM_ENAALLにしてからタス
     141                         *  クを終了する.[NGKI1168]
    164142                         */
    165143                        t_set_ipm(TIPM_ENAALL);
     
    169147        }
    170148
    171         task_terminate(p_runtsk);                               /* ï¼»NGKI3449ï¼½*/
    172         exit_and_dispatch();                                    /* ï¼»NGKI1169ï¼½*/
    173         ercd = E_SYS;                                                   /* ï¼»NGKI1163ï¼½*/
     149        task_terminate(p_runtsk);                               /* [NGKI3449]*/
     150        exit_and_dispatch();                                    /* [NGKI1169]*/
     151        ercd = E_SYS;                                                   /* [NGKI1163]*/
    174152
    175153  error_exit:
     
    181159
    182160/*
    183  *  タスクの終了要求[NGKI3469ï¼½
     161 *  タスクの終了要求[NGKI3469]
    184162 */
    185163#ifdef TOPPERS_ras_ter
     
    192170
    193171        LOG_RAS_TER_ENTER(tskid);
    194         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI3470][NGKI3471ï¼½*/
    195         CHECK_ID(VALID_TSKID(tskid));                           /*ï¼»NGKI3472ï¼½*/
     172        CHECK_TSKCTX_UNL();                                                     /*[NGKI3470][NGKI3471]*/
     173        CHECK_ID(VALID_TSKID(tskid));                           /*[NGKI3472]*/
    196174        p_tcb = get_tcb(tskid);
    197         CHECK_ILUSE(p_tcb != p_runtsk);                         /*ï¼»NGKI3475ï¼½*/
     175        CHECK_ILUSE(p_tcb != p_runtsk);                         /*[NGKI3475]*/
    198176
    199177        lock_cpu();
    200178        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    201                 ercd = E_NOEXS;                                                 /*ï¼»NGKI3473ï¼½*/
     179                ercd = E_NOEXS;                                                 /*[NGKI3473]*/
    202180        }
    203181        else if (TSTAT_DORMANT(p_tcb->tstat)) {
    204                 ercd = E_OBJ;                                                   /*ï¼»NGKI3476ï¼½*/
     182                ercd = E_OBJ;                                                   /*[NGKI3476]*/
    205183        }
    206184        else if (p_tcb->enater) {
    207                 task_terminate(p_tcb);                                  /*ï¼»NGKI3477ï¼½*/
     185                task_terminate(p_tcb);                                  /*[NGKI3477]*/
    208186                if (p_runtsk != p_schedtsk) {
    209187                        dispatch();
     
    212190        }
    213191        else {
    214                 p_tcb->raster = true;                                   /*ï¼»NGKI3478ï¼½*/
     192                p_tcb->raster = true;                                   /*[NGKI3478]*/
    215193                if (!TSTAT_RUNNABLE(p_tcb->tstat)) {
    216194                        if (TSTAT_WAITING(p_tcb->tstat)) {
    217                                 wait_dequeue_wobj(p_tcb);               /*ï¼»NGKI3479ï¼½*/
     195                                wait_dequeue_wobj(p_tcb);               /*[NGKI3479]*/
    218196                                wait_dequeue_tmevtb(p_tcb);
    219                                 p_tcb->p_winfo->wercd = E_RASTER;       /*ï¼»NGKI3480ï¼½*/
     197                                p_tcb->p_winfo->wercd = E_RASTER;       /*[NGKI3480]*/
    220198                        }
    221                         p_tcb->tstat = TS_RUNNABLE;                     /*ï¼»NGKI3606ï¼½*/
     199                        p_tcb->tstat = TS_RUNNABLE;                     /*[NGKI3606]*/
    222200                        LOG_TSKSTAT(p_tcb);
    223201                        make_runnable(p_tcb);
     
    238216
    239217/*
    240  *  タスク終了の禁止[NGKI3482ï¼½
     218 *  タスク終了の禁止[NGKI3482]
    241219 */
    242220#ifdef TOPPERS_dis_ter
     
    248226
    249227        LOG_DIS_TER_ENTER();
    250         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI3483][NGKI3484ï¼½*/
     228        CHECK_TSKCTX_UNL();                                                     /*[NGKI3483][NGKI3484]*/
    251229
    252230        lock_cpu();
    253         p_runtsk->enater = false;                                       /*ï¼»NGKI3486ï¼½*/
     231        p_runtsk->enater = false;                                       /*[NGKI3486]*/
    254232        ercd = E_OK;
    255233        unlock_cpu();
     
    263241
    264242/*
    265  *  タスク終了の許可[NGKI3487ï¼½
     243 *  タスク終了の許可[NGKI3487]
    266244 */
    267245#ifdef TOPPERS_ena_ter
     
    273251
    274252        LOG_ENA_TER_ENTER();
    275         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI3488][NGKI3489ï¼½*/
     253        CHECK_TSKCTX_UNL();                                                     /*[NGKI3488][NGKI3489]*/
    276254
    277255        lock_cpu();
     
    282260        }
    283261        else {
    284                 p_runtsk->enater = true;                                /*ï¼»NGKI3491ï¼½*/
     262                p_runtsk->enater = true;                                /*[NGKI3491]*/
    285263                ercd = E_OK;
    286264        }
     
    295273
    296274/*
    297  *  タスク終了禁止状æ
    298 ‹ã®å‚ç
    299 §ï¼»NGKI3494ï¼½
     275 *  タスク終了禁止状態の参照[NGKI3494]
    300276 */
    301277#ifdef TOPPERS_sns_ter
     
    308284        LOG_SNS_TER_ENTER();
    309285        /*
    310          *  enaterを変更できるのは自タスクのみであるため,排他制御せずに読
    311          *  んでも問題ない.
     286         *  enaterを変更できるのは自タスクのみであるため,排他制御せずに読
     287         *  んでも問題ない.
    312288         */
    313289        state = (p_runtsk != NULL && p_runtsk->enater) ? false : true;
    314                                                                                                 /*ï¼»NGKI3495][NGKI3496ï¼½*/
     290                                                                                                /*[NGKI3495][NGKI3496]*/
    315291        LOG_SNS_TER_LEAVE(state);
    316292        return(state);
     
    320296
    321297/*
    322  *  タスクの強制終了[NGKI1170ï¼½
     298 *  タスクの強制終了[NGKI1170]
    323299 */
    324300#ifdef TOPPERS_ter_tsk
     
    331307
    332308        LOG_TER_TSK_ENTER(tskid);
    333         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI1171][NGKI1172ï¼½*/
    334         CHECK_ID(VALID_TSKID(tskid));                           /*ï¼»NGKI1173ï¼½*/
     309        CHECK_TSKCTX_UNL();                                                     /*[NGKI1171][NGKI1172]*/
     310        CHECK_ID(VALID_TSKID(tskid));                           /*[NGKI1173]*/
    335311        p_tcb = get_tcb(tskid);
    336         CHECK_ILUSE(p_tcb != p_runtsk);                         /*ï¼»NGKI1176ï¼½*/
     312        CHECK_ILUSE(p_tcb != p_runtsk);                         /*[NGKI1176]*/
    337313
    338314        lock_cpu();
    339315        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    340                 ercd = E_NOEXS;                                                 /*ï¼»NGKI1174ï¼½*/
     316                ercd = E_NOEXS;                                                 /*[NGKI1174]*/
    341317        }
    342318        else if (TSTAT_DORMANT(p_tcb->tstat)) {
    343                 ercd = E_OBJ;                                                   /*ï¼»NGKI1177ï¼½*/
     319                ercd = E_OBJ;                                                   /*[NGKI1177]*/
    344320        }
    345321        else {
    346                 task_terminate(p_tcb);                                  /*ï¼»NGKI3450ï¼½*/
     322                task_terminate(p_tcb);                                  /*[NGKI3450]*/
    347323                if (p_runtsk != p_schedtsk) {
    348324                        dispatch();
Note: See TracChangeset for help on using the changeset viewer.