Ignore:
Timestamp:
Aug 23, 2017, 9:27:43 AM (7 years ago)
Author:
coas-nagasima
Message:

文字コードを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/asp3_dcre/kernel/task_manage.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r279 r321  
    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
     
    6752
    6853/*
    69  *  トレースログマクロのデフォルト定義
     54 *  トレースログマクロのデフォルト定義
    7055 */
    7156#ifndef LOG_ACRE_TSK_ENTER
     
    134119
    135120/*
    136  *  タスクの生成
     121 *  タスクの生成
    137122 *
    138  *  pk_ctsk->exinfは,エラーチェックをせず,一度しか参ç
    139 §ã—ないため,ロー
    140  *  カル変数にコピーするå¿
    141 è¦ãŒãªã„(途中で書き換わっても支障がない).
     123 *  pk_ctsk->exinfは,エラーチェックをせず,一度しか参照しないため,ロー
     124 *  カル変数にコピーする必要がない(途中で書き換わっても支障がない).
    142125 */
    143126#ifdef TOPPERS_acre_tsk
    144127
    145128#ifndef TARGET_MIN_STKSZ
    146 #define TARGET_MIN_STKSZ        1U              /* 未定義の場合は0でないことをチェック */
     129#define TARGET_MIN_STKSZ        1U              /* 未定義の場合は0でないことをチェック */
    147130#endif /* TARGET_MIN_STKSZ */
    148131
     
    223206
    224207/*
    225  *  タスクの削除[NGKI1100ï¼½
     208 *  タスクの削除[NGKI1100]
    226209 */
    227210#ifdef TOPPERS_del_tsk
     
    235218
    236219        LOG_DEL_TSK_ENTER(tskid);
    237         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI1101][NGKI1102ï¼½*/
    238         CHECK_ID(VALID_TSKID(tskid));                           /*ï¼»NGKI1103ï¼½*/
     220        CHECK_TSKCTX_UNL();                                                     /*[NGKI1101][NGKI1102]*/
     221        CHECK_ID(VALID_TSKID(tskid));                           /*[NGKI1103]*/
    239222        p_tcb = get_tcb(tskid);
    240223
    241224        lock_cpu();
    242225        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    243                 ercd = E_NOEXS;                                                 /*ï¼»NGKI1104ï¼½*/
     226                ercd = E_NOEXS;                                                 /*[NGKI1104]*/
    244227        }
    245228        else if (tskid <= tmax_stskid || !TSTAT_DORMANT(p_tcb->tstat)) {
    246                 ercd = E_OBJ;                                                   /*ï¼»NGKI1106][NGKI1107ï¼½*/
     229                ercd = E_OBJ;                                                   /*[NGKI1106][NGKI1107]*/
    247230        }
    248231        else {
     
    251234                term_tskinictxb(&(p_tinib->tskinictxb));
    252235#else /* USE_TSKINICTXB */
    253                 if ((p_tinib->tskatr & TA_MEMALLOC) != 0U) {    /*ï¼»NGKI1109ï¼½*/
     236                if ((p_tinib->tskatr & TA_MEMALLOC) != 0U) {    /*[NGKI1109]*/
    254237                        kernel_free(p_tinib->stk);
    255238                }
    256239#endif /* USE_TSKINICTXB */
    257                 p_tinib->tskatr = TA_NOEXS;                             /*ï¼»NGKI1108ï¼½*/
     240                p_tinib->tskatr = TA_NOEXS;                             /*[NGKI1108]*/
    258241                queue_insert_prev(&free_tcb, &(p_tcb->task_queue));
    259242                ercd = E_OK;
     
    269252
    270253/*
    271  *  タスクの起動[NGKI3529ï¼½
     254 *  タスクの起動[NGKI3529]
    272255 */
    273256#ifdef TOPPERS_act_tsk
     
    280263
    281264        LOG_ACT_TSK_ENTER(tskid);
    282         CHECK_UNL();                                                            /*ï¼»NGKI1114ï¼½*/
     265        CHECK_UNL();                                                            /*[NGKI1114]*/
    283266        if (tskid == TSK_SELF && !sense_context()) {
    284                 p_tcb = p_runtsk;                                               /*ï¼»NGKI1121ï¼½*/
    285         }
    286         else {
    287                 CHECK_ID(VALID_TSKID(tskid));                   /*ï¼»NGKI1115ï¼½*/
     267                p_tcb = p_runtsk;                                               /*[NGKI1121]*/
     268        }
     269        else {
     270                CHECK_ID(VALID_TSKID(tskid));                   /*[NGKI1115]*/
    288271                p_tcb = get_tcb(tskid);
    289272        }
     
    291274        lock_cpu();
    292275        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    293                 ercd = E_NOEXS;                                                 /*ï¼»NGKI1116ï¼½*/
     276                ercd = E_NOEXS;                                                 /*[NGKI1116]*/
    294277        }
    295278        else if (TSTAT_DORMANT(p_tcb->tstat)) {
    296                 make_active(p_tcb);                                             /*ï¼»NGKI1118ï¼½*/
     279                make_active(p_tcb);                                             /*[NGKI1118]*/
    297280                if (p_runtsk != p_schedtsk) {
    298281                        if (!sense_context()) {
     
    306289        }
    307290        else if ((p_tcb->p_tinib->tskatr & TA_NOACTQUE) != 0U || p_tcb->actque) {
    308                 ercd = E_QOVR;                                                  /*ï¼»NGKI3528ï¼½*/
    309         }
    310         else {
    311                 p_tcb->actque = true;                                   /*ï¼»NGKI3527ï¼½*/
     291                ercd = E_QOVR;                                                  /*[NGKI3528]*/
     292        }
     293        else {
     294                p_tcb->actque = true;                                   /*[NGKI3527]*/
    312295                ercd = E_OK;
    313296        }
     
    322305
    323306/*
    324  *  タスク起動要求のキャンセル[NGKI1138ï¼½
     307 *  タスク起動要求のキャンセル[NGKI1138]
    325308 */
    326309#ifdef TOPPERS_can_act
     
    333316
    334317        LOG_CAN_ACT_ENTER(tskid);
    335         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI1139][NGKI1140ï¼½*/
     318        CHECK_TSKCTX_UNL();                                                     /*[NGKI1139][NGKI1140]*/
    336319        if (tskid == TSK_SELF) {
    337                 p_tcb = p_runtsk;                                               /*ï¼»NGKI1146ï¼½*/
    338         }
    339         else {
    340                 CHECK_ID(VALID_TSKID(tskid));                   /*ï¼»NGKI1141ï¼½*/
     320                p_tcb = p_runtsk;                                               /*[NGKI1146]*/
     321        }
     322        else {
     323                CHECK_ID(VALID_TSKID(tskid));                   /*[NGKI1141]*/
    341324                p_tcb = get_tcb(tskid);
    342325        }
     
    344327        lock_cpu();
    345328        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    346                 ercd = E_NOEXS;                                                 /*ï¼»NGKI1142ï¼½*/
    347         }
    348         else {
    349                 ercd = p_tcb->actque ? 1 : 0;                   /*ï¼»NGKI1144ï¼½*/
    350                 p_tcb->actque = false;                                  /*ï¼»NGKI1144ï¼½*/
     329                ercd = E_NOEXS;                                                 /*[NGKI1142]*/
     330        }
     331        else {
     332                ercd = p_tcb->actque ? 1 : 0;                   /*[NGKI1144]*/
     333                p_tcb->actque = false;                                  /*[NGKI1144]*/
    351334        }
    352335        unlock_cpu();
     
    360343
    361344/*
    362  *  タスク状æ
    363 ‹ã®å‚ç
    364 §ï¼»NGKI3613ï¼½
     345 *  タスク状態の参照[NGKI3613]
    365346 */
    366347#ifdef TOPPERS_get_tst
     
    374355
    375356        LOG_GET_TST_ENTER(tskid, p_tskstat);
    376         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI3614][NGKI3615ï¼½*/
     357        CHECK_TSKCTX_UNL();                                                     /*[NGKI3614][NGKI3615]*/
    377358        if (tskid == TSK_SELF) {
    378                 p_tcb = p_runtsk;                                               /*ï¼»NGKI3621ï¼½*/
    379         }
    380         else {
    381                 CHECK_ID(VALID_TSKID(tskid));                   /*ï¼»NGKI3616ï¼½*/
     359                p_tcb = p_runtsk;                                               /*[NGKI3621]*/
     360        }
     361        else {
     362                CHECK_ID(VALID_TSKID(tskid));                   /*[NGKI3616]*/
    382363                p_tcb = get_tcb(tskid);
    383364        }
     
    386367        tstat = p_tcb->tstat;
    387368        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    388                 ercd = E_NOEXS;                                                 /*ï¼»NGKI3617ï¼½*/
    389         }
    390         else {
    391                 if (TSTAT_DORMANT(tstat)) {                             /*ï¼»NGKI3620ï¼½*/
     369                ercd = E_NOEXS;                                                 /*[NGKI3617]*/
     370        }
     371        else {
     372                if (TSTAT_DORMANT(tstat)) {                             /*[NGKI3620]*/
    392373                        *p_tskstat = TTS_DMT;
    393374                }
     
    421402
    422403/*
    423  *  タスクのベース優å
    424 ˆåº¦ã®å¤‰æ›´ï¼»NGKI1183ï¼½
     404 *  タスクのベース優先度の変更[NGKI1183]
    425405 */
    426406#ifdef TOPPERS_chg_pri
     
    434414
    435415        LOG_CHG_PRI_ENTER(tskid, tskpri);
    436         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI1184][NGKI1185ï¼½*/
     416        CHECK_TSKCTX_UNL();                                                     /*[NGKI1184][NGKI1185]*/
    437417        if (tskid == TSK_SELF) {
    438                 p_tcb = p_runtsk;                                               /*ï¼»NGKI1198ï¼½*/
    439         }
    440         else {
    441                 CHECK_ID(VALID_TSKID(tskid));                   /*ï¼»NGKI1187ï¼½*/
     418                p_tcb = p_runtsk;                                               /*[NGKI1198]*/
     419        }
     420        else {
     421                CHECK_ID(VALID_TSKID(tskid));                   /*[NGKI1187]*/
    442422                p_tcb = get_tcb(tskid);
    443423        }
    444424        if (tskpri == TPRI_INI) {
    445                 newbpri = p_tcb->p_tinib->ipriority;    /*ï¼»NGKI1199ï¼½*/
    446         }
    447         else {
    448                 CHECK_PAR(VALID_TPRI(tskpri));                  /*ï¼»NGKI1188ï¼½*/
     425                newbpri = p_tcb->p_tinib->ipriority;    /*[NGKI1199]*/
     426        }
     427        else {
     428                CHECK_PAR(VALID_TPRI(tskpri));                  /*[NGKI1188]*/
    449429                newbpri = INT_PRIORITY(tskpri);
    450430        }
     
    452432        lock_cpu();
    453433        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    454                 ercd = E_NOEXS;                                                 /*ï¼»NGKI1189ï¼½*/
     434                ercd = E_NOEXS;                                                 /*[NGKI1189]*/
    455435        }
    456436        else if (TSTAT_DORMANT(p_tcb->tstat)) {
    457                 ercd = E_OBJ;                                                   /*ï¼»NGKI1191ï¼½*/
     437                ercd = E_OBJ;                                                   /*[NGKI1191]*/
    458438        }
    459439        else if ((p_tcb->p_lastmtx != NULL || TSTAT_WAIT_MTX(p_tcb->tstat))
    460440                                                && !((*mtxhook_check_ceilpri)(p_tcb, newbpri))) {
    461                 ercd = E_ILUSE;                                                 /*ï¼»NGKI1201ï¼½*/
    462         }
    463         else {
    464                 p_tcb->bpriority = newbpri;                             /*ï¼»NGKI1192ï¼½*/
     441                ercd = E_ILUSE;                                                 /*[NGKI1201]*/
     442        }
     443        else {
     444                p_tcb->bpriority = newbpri;                             /*[NGKI1192]*/
    465445                if (p_tcb->p_lastmtx == NULL || !((*mtxhook_scan_ceilmtx)(p_tcb))) {
    466                         change_priority(p_tcb, newbpri, false);         /*ï¼»NGKI1193ï¼½*/
     446                        change_priority(p_tcb, newbpri, false);         /*[NGKI1193]*/
    467447                        if (p_runtsk != p_schedtsk) {
    468448                                dispatch();
    469                         }                                                                       /*ï¼»NGKI1197ï¼½*/
     449                        }                                                                       /*[NGKI1197]*/
    470450                }
    471451                ercd = E_OK;
     
    481461
    482462/*
    483  *  タスク優å
    484 ˆåº¦ã®å‚ç
    485 §ï¼»NGKI1202ï¼½
     463 *  タスク優先度の参照[NGKI1202]
    486464 */
    487465#ifdef TOPPERS_get_pri
     
    494472
    495473        LOG_GET_PRI_ENTER(tskid, p_tskpri);
    496         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI1203][NGKI1204ï¼½*/
     474        CHECK_TSKCTX_UNL();                                                     /*[NGKI1203][NGKI1204]*/
    497475        if (tskid == TSK_SELF) {
    498                 p_tcb = p_runtsk;                                               /*ï¼»NGKI1211ï¼½*/
    499         }
    500         else {
    501                 CHECK_ID(VALID_TSKID(tskid));                   /*ï¼»NGKI1205ï¼½*/
     476                p_tcb = p_runtsk;                                               /*[NGKI1211]*/
     477        }
     478        else {
     479                CHECK_ID(VALID_TSKID(tskid));                   /*[NGKI1205]*/
    502480                p_tcb = get_tcb(tskid);
    503481        }
     
    505483        lock_cpu();
    506484        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    507                 ercd = E_NOEXS;                                                 /*ï¼»NGKI1206ï¼½*/
     485                ercd = E_NOEXS;                                                 /*[NGKI1206]*/
    508486        }
    509487        else if (TSTAT_DORMANT(p_tcb->tstat)) {
    510                 ercd = E_OBJ;                                                   /*ï¼»NGKI1209ï¼½*/
    511         }
    512         else {
    513                 *p_tskpri = EXT_TSKPRI(p_tcb->priority);        /*ï¼»NGKI1210ï¼½*/
     488                ercd = E_OBJ;                                                   /*[NGKI1209]*/
     489        }
     490        else {
     491                *p_tskpri = EXT_TSKPRI(p_tcb->priority);        /*[NGKI1210]*/
    514492                ercd = E_OK;
    515493        }
     
    524502
    525503/*
    526  *  自タスクの拡張æƒ
    527 å ±ã®å‚ç
    528 §ï¼»NGKI1212ï¼½
     504 *  自タスクの拡張情報の参照[NGKI1212]
    529505 */
    530506#ifdef TOPPERS_get_inf
     
    536512
    537513        LOG_GET_INF_ENTER(p_exinf);
    538         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI1213][NGKI1214ï¼½*/
    539 
    540         lock_cpu();
    541         *p_exinf = p_runtsk->p_tinib->exinf;            /*ï¼»NGKI1216ï¼½*/
     514        CHECK_TSKCTX_UNL();                                                     /*[NGKI1213][NGKI1214]*/
     515
     516        lock_cpu();
     517        *p_exinf = p_runtsk->p_tinib->exinf;            /*[NGKI1216]*/
    542518        ercd = E_OK;
    543519        unlock_cpu();
Note: See TracChangeset for help on using the changeset viewer.