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_manage.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
     
    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
     
    226209
    227210/*
    228  *  タスクの削除[NGKI1100ï¼½
     211 *  タスクの削除[NGKI1100]
    229212 */
    230213#ifdef TOPPERS_del_tsk
     
    238221
    239222        LOG_DEL_TSK_ENTER(tskid);
    240         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI1101][NGKI1102ï¼½*/
    241         CHECK_ID(VALID_TSKID(tskid));                           /*ï¼»NGKI1103ï¼½*/
     223        CHECK_TSKCTX_UNL();                                                     /*[NGKI1101][NGKI1102]*/
     224        CHECK_ID(VALID_TSKID(tskid));                           /*[NGKI1103]*/
    242225        p_tcb = get_tcb(tskid);
    243226
    244227        lock_cpu();
    245228        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    246                 ercd = E_NOEXS;                                                 /*ï¼»NGKI1104ï¼½*/
     229                ercd = E_NOEXS;                                                 /*[NGKI1104]*/
    247230        }
    248231        else if (tskid <= tmax_stskid || !TSTAT_DORMANT(p_tcb->tstat)) {
    249                 ercd = E_OBJ;                                                   /*ï¼»NGKI1106][NGKI1107ï¼½*/
     232                ercd = E_OBJ;                                                   /*[NGKI1106][NGKI1107]*/
    250233        }
    251234        else {
     
    254237                term_tskinictxb(&(p_tinib->tskinictxb));
    255238#else /* USE_TSKINICTXB */
    256                 if ((p_tinib->tskatr & TA_MEMALLOC) != 0U) {    /*ï¼»NGKI1109ï¼½*/
     239                if ((p_tinib->tskatr & TA_MEMALLOC) != 0U) {    /*[NGKI1109]*/
    257240                        kernel_free(p_tinib->stk);
    258241                }
    259242#endif /* USE_TSKINICTXB */
    260                 p_tinib->tskatr = TA_NOEXS;                             /*ï¼»NGKI1108ï¼½*/
     243                p_tinib->tskatr = TA_NOEXS;                             /*[NGKI1108]*/
    261244                queue_insert_prev(&free_tcb, &(p_tcb->task_queue));
    262245                ercd = E_OK;
     
    272255
    273256/*
    274  *  タスクの起動[NGKI3529ï¼½
     257 *  タスクの起動[NGKI3529]
    275258 */
    276259#ifdef TOPPERS_act_tsk
     
    283266
    284267        LOG_ACT_TSK_ENTER(tskid);
    285         CHECK_UNL();                                                            /*ï¼»NGKI1114ï¼½*/
     268        CHECK_UNL();                                                            /*[NGKI1114]*/
    286269        if (tskid == TSK_SELF && !sense_context()) {
    287                 p_tcb = p_runtsk;                                               /*ï¼»NGKI1121ï¼½*/
    288         }
    289         else {
    290                 CHECK_ID(VALID_TSKID(tskid));                   /*ï¼»NGKI1115ï¼½*/
     270                p_tcb = p_runtsk;                                               /*[NGKI1121]*/
     271        }
     272        else {
     273                CHECK_ID(VALID_TSKID(tskid));                   /*[NGKI1115]*/
    291274                p_tcb = get_tcb(tskid);
    292275        }
     
    294277        lock_cpu();
    295278        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    296                 ercd = E_NOEXS;                                                 /*ï¼»NGKI1116ï¼½*/
     279                ercd = E_NOEXS;                                                 /*[NGKI1116]*/
    297280        }
    298281        else if (TSTAT_DORMANT(p_tcb->tstat)) {
    299                 make_active(p_tcb);                                             /*ï¼»NGKI1118ï¼½*/
     282                make_active(p_tcb);                                             /*[NGKI1118]*/
    300283                if (p_runtsk != p_schedtsk) {
    301284                        if (!sense_context()) {
     
    309292        }
    310293        else if ((p_tcb->p_tinib->tskatr & TA_NOACTQUE) != 0U || p_tcb->actque) {
    311                 ercd = E_QOVR;                                                  /*ï¼»NGKI3528ï¼½*/
    312         }
    313         else {
    314                 p_tcb->actque = true;                                   /*ï¼»NGKI3527ï¼½*/
     294                ercd = E_QOVR;                                                  /*[NGKI3528]*/
     295        }
     296        else {
     297                p_tcb->actque = true;                                   /*[NGKI3527]*/
    315298                ercd = E_OK;
    316299        }
     
    325308
    326309/*
    327  *  タスク起動要求のキャンセル[NGKI1138ï¼½
     310 *  タスク起動要求のキャンセル[NGKI1138]
    328311 */
    329312#ifdef TOPPERS_can_act
     
    336319
    337320        LOG_CAN_ACT_ENTER(tskid);
    338         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI1139][NGKI1140ï¼½*/
     321        CHECK_TSKCTX_UNL();                                                     /*[NGKI1139][NGKI1140]*/
    339322        if (tskid == TSK_SELF) {
    340                 p_tcb = p_runtsk;                                               /*ï¼»NGKI1146ï¼½*/
    341         }
    342         else {
    343                 CHECK_ID(VALID_TSKID(tskid));                   /*ï¼»NGKI1141ï¼½*/
     323                p_tcb = p_runtsk;                                               /*[NGKI1146]*/
     324        }
     325        else {
     326                CHECK_ID(VALID_TSKID(tskid));                   /*[NGKI1141]*/
    344327                p_tcb = get_tcb(tskid);
    345328        }
     
    347330        lock_cpu();
    348331        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    349                 ercd = E_NOEXS;                                                 /*ï¼»NGKI1142ï¼½*/
    350         }
    351         else {
    352                 ercd = p_tcb->actque ? 1 : 0;                   /*ï¼»NGKI1144ï¼½*/
    353                 p_tcb->actque = false;                                  /*ï¼»NGKI1144ï¼½*/
     332                ercd = E_NOEXS;                                                 /*[NGKI1142]*/
     333        }
     334        else {
     335                ercd = p_tcb->actque ? 1 : 0;                   /*[NGKI1144]*/
     336                p_tcb->actque = false;                                  /*[NGKI1144]*/
    354337        }
    355338        unlock_cpu();
     
    363346
    364347/*
    365  *  タスク状æ
    366 ‹ã®å‚ç
    367 §ï¼»NGKI3613ï¼½
     348 *  タスク状態の参照[NGKI3613]
    368349 */
    369350#ifdef TOPPERS_get_tst
     
    377358
    378359        LOG_GET_TST_ENTER(tskid, p_tskstat);
    379         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI3614][NGKI3615ï¼½*/
     360        CHECK_TSKCTX_UNL();                                                     /*[NGKI3614][NGKI3615]*/
    380361        if (tskid == TSK_SELF) {
    381                 p_tcb = p_runtsk;                                               /*ï¼»NGKI3621ï¼½*/
    382         }
    383         else {
    384                 CHECK_ID(VALID_TSKID(tskid));                   /*ï¼»NGKI3616ï¼½*/
     362                p_tcb = p_runtsk;                                               /*[NGKI3621]*/
     363        }
     364        else {
     365                CHECK_ID(VALID_TSKID(tskid));                   /*[NGKI3616]*/
    385366                p_tcb = get_tcb(tskid);
    386367        }
     
    389370        tstat = p_tcb->tstat;
    390371        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    391                 ercd = E_NOEXS;                                                 /*ï¼»NGKI3617ï¼½*/
    392         }
    393         else {
    394                 if (TSTAT_DORMANT(tstat)) {                             /*ï¼»NGKI3620ï¼½*/
     372                ercd = E_NOEXS;                                                 /*[NGKI3617]*/
     373        }
     374        else {
     375                if (TSTAT_DORMANT(tstat)) {                             /*[NGKI3620]*/
    395376                        *p_tskstat = TTS_DMT;
    396377                }
     
    424405
    425406/*
    426  *  タスクのベース優å
    427 ˆåº¦ã®å¤‰æ›´ï¼»NGKI1183ï¼½
     407 *  タスクのベース優先度の変更[NGKI1183]
    428408 */
    429409#ifdef TOPPERS_chg_pri
     
    437417
    438418        LOG_CHG_PRI_ENTER(tskid, tskpri);
    439         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI1184][NGKI1185ï¼½*/
     419        CHECK_TSKCTX_UNL();                                                     /*[NGKI1184][NGKI1185]*/
    440420        if (tskid == TSK_SELF) {
    441                 p_tcb = p_runtsk;                                               /*ï¼»NGKI1198ï¼½*/
    442         }
    443         else {
    444                 CHECK_ID(VALID_TSKID(tskid));                   /*ï¼»NGKI1187ï¼½*/
     421                p_tcb = p_runtsk;                                               /*[NGKI1198]*/
     422        }
     423        else {
     424                CHECK_ID(VALID_TSKID(tskid));                   /*[NGKI1187]*/
    445425                p_tcb = get_tcb(tskid);
    446426        }
    447427        if (tskpri == TPRI_INI) {
    448                 newbpri = p_tcb->p_tinib->ipriority;    /*ï¼»NGKI1199ï¼½*/
    449         }
    450         else {
    451                 CHECK_PAR(VALID_TPRI(tskpri));                  /*ï¼»NGKI1188ï¼½*/
     428                newbpri = p_tcb->p_tinib->ipriority;    /*[NGKI1199]*/
     429        }
     430        else {
     431                CHECK_PAR(VALID_TPRI(tskpri));                  /*[NGKI1188]*/
    452432                newbpri = INT_PRIORITY(tskpri);
    453433        }
     
    455435        lock_cpu();
    456436        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    457                 ercd = E_NOEXS;                                                 /*ï¼»NGKI1189ï¼½*/
     437                ercd = E_NOEXS;                                                 /*[NGKI1189]*/
    458438        }
    459439        else if (TSTAT_DORMANT(p_tcb->tstat)) {
    460                 ercd = E_OBJ;                                                   /*ï¼»NGKI1191ï¼½*/
     440                ercd = E_OBJ;                                                   /*[NGKI1191]*/
    461441        }
    462442        else if ((p_tcb->p_lastmtx != NULL || TSTAT_WAIT_MTX(p_tcb->tstat))
    463443                                                && !((*mtxhook_check_ceilpri)(p_tcb, newbpri))) {
    464                 ercd = E_ILUSE;                                                 /*ï¼»NGKI1201ï¼½*/
    465         }
    466         else {
    467                 p_tcb->bpriority = newbpri;                             /*ï¼»NGKI1192ï¼½*/
     444                ercd = E_ILUSE;                                                 /*[NGKI1201]*/
     445        }
     446        else {
     447                p_tcb->bpriority = newbpri;                             /*[NGKI1192]*/
    468448                if (p_tcb->p_lastmtx == NULL || !((*mtxhook_scan_ceilmtx)(p_tcb))) {
    469                         change_priority(p_tcb, newbpri, false);         /*ï¼»NGKI1193ï¼½*/
     449                        change_priority(p_tcb, newbpri, false);         /*[NGKI1193]*/
    470450                        if (p_runtsk != p_schedtsk) {
    471451                                dispatch();
    472                         }                                                                       /*ï¼»NGKI1197ï¼½*/
     452                        }                                                                       /*[NGKI1197]*/
    473453                }
    474454                ercd = E_OK;
     
    484464
    485465/*
    486  *  タスク優å
    487 ˆåº¦ã®å‚ç
    488 §ï¼»NGKI1202ï¼½
     466 *  タスク優先度の参照[NGKI1202]
    489467 */
    490468#ifdef TOPPERS_get_pri
     
    497475
    498476        LOG_GET_PRI_ENTER(tskid, p_tskpri);
    499         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI1203][NGKI1204ï¼½*/
     477        CHECK_TSKCTX_UNL();                                                     /*[NGKI1203][NGKI1204]*/
    500478        if (tskid == TSK_SELF) {
    501                 p_tcb = p_runtsk;                                               /*ï¼»NGKI1211ï¼½*/
    502         }
    503         else {
    504                 CHECK_ID(VALID_TSKID(tskid));                   /*ï¼»NGKI1205ï¼½*/
     479                p_tcb = p_runtsk;                                               /*[NGKI1211]*/
     480        }
     481        else {
     482                CHECK_ID(VALID_TSKID(tskid));                   /*[NGKI1205]*/
    505483                p_tcb = get_tcb(tskid);
    506484        }
     
    508486        lock_cpu();
    509487        if (p_tcb->p_tinib->tskatr == TA_NOEXS) {
    510                 ercd = E_NOEXS;                                                 /*ï¼»NGKI1206ï¼½*/
     488                ercd = E_NOEXS;                                                 /*[NGKI1206]*/
    511489        }
    512490        else if (TSTAT_DORMANT(p_tcb->tstat)) {
    513                 ercd = E_OBJ;                                                   /*ï¼»NGKI1209ï¼½*/
    514         }
    515         else {
    516                 *p_tskpri = EXT_TSKPRI(p_tcb->priority);        /*ï¼»NGKI1210ï¼½*/
     491                ercd = E_OBJ;                                                   /*[NGKI1209]*/
     492        }
     493        else {
     494                *p_tskpri = EXT_TSKPRI(p_tcb->priority);        /*[NGKI1210]*/
    517495                ercd = E_OK;
    518496        }
     
    527505
    528506/*
    529  *  自タスクの拡張æƒ
    530 å ±ã®å‚ç
    531 §ï¼»NGKI1212ï¼½
     507 *  自タスクの拡張情報の参照[NGKI1212]
    532508 */
    533509#ifdef TOPPERS_get_inf
     
    539515
    540516        LOG_GET_INF_ENTER(p_exinf);
    541         CHECK_TSKCTX_UNL();                                                     /*ï¼»NGKI1213][NGKI1214ï¼½*/
    542 
    543         lock_cpu();
    544         *p_exinf = p_runtsk->p_tinib->exinf;            /*ï¼»NGKI1216ï¼½*/
     517        CHECK_TSKCTX_UNL();                                                     /*[NGKI1213][NGKI1214]*/
     518
     519        lock_cpu();
     520        *p_exinf = p_runtsk->p_tinib->exinf;            /*[NGKI1216]*/
    545521        ercd = E_OK;
    546522        unlock_cpu();
Note: See TracChangeset for help on using the changeset viewer.