Ignore:
Timestamp:
Jul 3, 2020, 7:19:17 PM (4 years ago)
Author:
coas-nagasima
Message:

ASP3, TINET, mbed を更新

File:
1 edited

Legend:

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

    r321 r429  
    66 *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
    77 *                              Toyohashi Univ. of Technology, JAPAN
    8  *  Copyright (C) 2005-2014 by Embedded and Real-Time Systems Laboratory
     8 *  Copyright (C) 2005-2017 by Embedded and Real-Time Systems Laboratory
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
     
    113113                p_tcb->actque = false;
    114114                make_dormant(p_tcb);
     115                p_tcb->p_lastmtx = NULL;
    115116                if ((p_tcb->p_tinib->tskatr & TA_ACT) != 0U) {
    116117                        make_active(p_tcb);
     
    232233 *
    233234 *  実行すべきタスクを更新するのは,実行できるタスクがなかった場合と,
    234  *  p_tcbの優先度が実行すべきタスクの優先度よりも高い場合である.
     235 *  p_tcbで指定されるタスクの優先度が実行すべきタスクの優先度よりも高
     236 *  い場合である.
    235237 */
    236238#ifdef TOPPERS_tskrun
     
    256258 *  実行できる状態から他の状態への遷移
    257259 *
    258  *  実行すべきタスクを更新するのは,p_tcbが実行すべきタスクであった場合
    259  *  である.p_tcbと同じ優先度のタスクが他にある場合は,p_tcbの次のタス
    260  *  クが実行すべきタスクになる.そうでない場合は,レディキューをサーチ
    261  *  する必要がある.
     260 *  実行すべきタスクを更新するのは,p_tcbで指定されるタスクが実行すべ
     261 *  きタスクであった場合である.p_tcbで指定されるタスクと同じ優先度の
     262 *  タスクが他にある場合は,そのタスクの次のタスクが実行すべきタスクに
     263 *  なる.そうでない場合は,レディキューをサーチする必要がある.
     264 *
     265 *  自タスクに対してこの関数が呼ばれるのは,タスクディスパッチ可能状態
     266 *  に限られる.またこの関数は,非タスクコンテキストから呼ばれることは
     267 *  ないため,p_runtskとp_schedtskは必ず一致している.そのため,p_tcb
     268 *  とp_schedtskが一致するときは,必ずタスクディスパッチ可能状態である.
    262269 */
    263270#ifdef TOPPERS_tsknrun
     
    325332 *  タスクの優先度の変更
    326333 *
    327  *  タスクが実行できる状態の場合には,レディキューの中での位置を変更す
    328  *  る.オブジェクトの待ちキューの中で待ち状態になっている場合には,待
    329  *  ちキューの中での位置を変更する.
    330  *
    331  *  実行すべきタスクを更新するのは,(1) p_tcbが実行すべきタスクであって,
    332  *  その優先度を下げた場合,(2) p_tcbが実行すべきタスクではなく,変更後
    333  *  の優先度が実行すべきタスクの優先度よりも高い場合である.(1)の場合に
    334  *  は,レディキューをサーチする必要がある.
     334 *  p_tcbで指定されるタスクが実行できる状態の場合には,レディキューの
     335 *  中での位置を変更する.オブジェクトの待ちキューの中で待ち状態になっ
     336 *  ている場合には,待ちキューの中での位置を変更する.
     337 *
     338 *  実行すべきタスクを更新するのは,(1) p_tcbで指定されるタスクが実行
     339 *  すべきタスクであった場合には,優先度を下げた(または優先度が変わら
     340 *  なかった)時,(2) p_tcbで指定されるタスクが実行すべきタスクでなかっ
     341 *  た場合には,変更後の優先度が実行すべきタスクの優先度よりも高いか同
     342 *  じ時(同じ場合に更新が必要になるのは,実際には,mtxmodeがtrueの場
     343 *  合のみ)である.(1)の場合には,レディキューをサーチする必要がある.
    335344 */
    336345#ifdef TOPPERS_tskpri
     
    367376                        }
    368377                        else {
    369                                 if (mtxmode ? newpri <= p_schedtsk->priority
    370                                                         : newpri < p_schedtsk->priority) {
    371                                         p_schedtsk = p_tcb;
     378                                if (newpri <= p_schedtsk->priority) {
     379                                        p_schedtsk = (TCB *)(ready_queue[newpri].p_next);
    372380                                }
    373381                        }
Note: See TracChangeset for help on using the changeset viewer.