Changeset 429 for EcnlProtoTool/trunk/asp3_dcre/kernel/task.c
- Timestamp:
- Jul 3, 2020, 7:19:17 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/asp3_dcre/kernel/task.c
r321 r429 6 6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory 7 7 * Toyohashi Univ. of Technology, JAPAN 8 * Copyright (C) 2005-201 4by Embedded and Real-Time Systems Laboratory8 * Copyright (C) 2005-2017 by Embedded and Real-Time Systems Laboratory 9 9 * Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 * … … 113 113 p_tcb->actque = false; 114 114 make_dormant(p_tcb); 115 p_tcb->p_lastmtx = NULL; 115 116 if ((p_tcb->p_tinib->tskatr & TA_ACT) != 0U) { 116 117 make_active(p_tcb); … … 232 233 * 233 234 * 実行すべきタスクを更新するのは,実行できるタスクがなかった場合と, 234 * p_tcbの優先度が実行すべきタスクの優先度よりも高い場合である. 235 * p_tcbで指定されるタスクの優先度が実行すべきタスクの優先度よりも高 236 * い場合である. 235 237 */ 236 238 #ifdef TOPPERS_tskrun … … 256 258 * 実行できる状態から他の状態への遷移 257 259 * 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が一致するときは,必ずタスクディスパッチ可能状態である. 262 269 */ 263 270 #ifdef TOPPERS_tsknrun … … 325 332 * タスクの優先度の変更 326 333 * 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)の場合には,レディキューをサーチする必要がある. 335 344 */ 336 345 #ifdef TOPPERS_tskpri … … 367 376 } 368 377 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); 372 380 } 373 381 }
Note:
See TracChangeset
for help on using the changeset viewer.