(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>