(toppers-users 1719) make_runnable関数について

Hojyo hojyo @ holonic-systems.com
2004年 11月 1日 (月) 16:34:31 JST


TOPPERSユーザ各位殿

お世話になります。
北條と申します。


JSP1.4 karnel/task.c : make_runnable関数について疑問点があります。
お手数ですが下記の疑問点に回答をお願い致します。

make_runnable関数のコードは、以下となっています。

--------------------------------------------------------
/*
 *  実行できる状態への移行
 *
 *  最高優先順位のタスクを更新するのは,実行できるタスクがなかった場合
 *  と,tcb の優先度が最高優先順位のタスクの優先度よりも高い場合である.
 */
#ifdef __tskrun

BOOL
make_runnable(TCB *tcb)
{
    UINT    pri = tcb->priority;

    tcb->tstat = TS_RUNNABLE;
    LOG_TSKSTAT(tcb);
    queue_insert_prev(&(ready_queue[pri]), &(tcb->task_queue));
    ready_primap |= PRIMAP_BIT(pri);

    if (schedtsk == (TCB *) NULL || pri < schedtsk->priority) {
        schedtsk = tcb;
        return(enadsp);
    }
    return(FALSE);
}

#endif /* __tskrun */
--------------------------------------------------------


疑問点)

「tcb の優先度が最高優先順位のタスクの優先度よりも高い場合」という
ことであれば、

    if (schedtsk == (TCB *) NULL || pri < schedtsk->priority) {
というコードは

    if (schedtsk == (TCB *) NULL || pri > schedtsk->priority) {
  または、
    if (schedtsk == (TCB *) NULL || pri >= schedtsk->priority) {

となるべきではないでしょうか?

それとも、”タスクの優先度”とは、例えば、”3”と、”8”では、
”3”の方が優先度が高いということでしょうか?、


以上

-- 
Hojyo <hojyo @ holonic-systems.com>